News for hackers. Stuff that matters.
Re:List of University Courses for Learning Computer Science by bcbrown on Friday January 09, 2015 @04:03PM (#8864488)
One approach to getting a list of topics is to look at the degree requirements for a couple of universities. I'm wrapping up a similar project, and here's what I included, along with some resources I used:

* Algorithms (CLRS, Skiena)

* Databases (db-class.org, any text by C.J. Date)

* Probability, Statistics, and Combinatorics

* Programming Languages (I liked Grossman's course on Coursera)

* Linear Algebra (http://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebr...)

* Natural Language Processing (Coursera has several courses)

* Machine Learning/Information Retrieval/Data Mining (I used a couple books, Mining Massive Datasets and Data-Intensive Text Processing with MapReduce being the two I'd recommend)

* Networking (Coursera has a good course)

* Operating Systems (https://www.youtube.com/watch?v=XgQo4JkN4Bw&list=PL62A66DDD3...)

* Distributed Systems (I read Tanenbaum's book)

* Computability

Re:List of University Courses for Learning Computer Science by eric_bullington on Friday January 09, 2015 @04:16PM (#8864569)
I appreciate the idea, and that's a good list of broad topics (I'm currently working off a similar one[1]).

But I'm actually talking about sub-topics within each of those broad topics. If you take a look at page 59 of the ACM pdf I linked to, you'll see the level of detail I'm hoping for. As just one example among many, see the algorithmic section, core tier 1 of 2 (followed by the corresponding learning objectives):

• Simple numerical algorithms, such as computing the average of a list of numbers, finding the min, max, and mode in a list, approximating the square root of a number, or finding the greatest common divisor

• Sequential and binary search algorithms

• Worst case quadratic sorting algorithms (selection, insertion)

• Worst or average case O(N log N) sorting algorithms (quicksort, heapsort, mergesort)

• Hash tables, including strategies for avoiding and resolving collisions

• Binary search trees o Common operations on binary search trees such as select min, max, insert, delete, iterate over tree

• Graphs and graph algorithms o Representations of graphs (e.g., adjacency list, adjacency matrix) o Depth- and breadth-first traversals

Learning Outcomes: [Core-Tier1]

1. Implement basic numerical algorithms. [Usage]

2. Implement simple search algorithms and explain the differences in their time complexities. [Assessment]

3. Be able to implement common quadratic and O(N log N) sorting algorithms. [Usage]

4. Describe the implementation of hash tables, including collision avoidance and resolution. [Familiarity]

5. Discuss the runtime and memory efficiency of principal algorithms for sorting, searching, and hashing. [Familiarity]

6. Discuss factors other than computational efficiency that influence the choice of algorithms, such as programming time, maintainability, and the use of application-specific patterns in the input data. [Familiarity]

7. Explain how tree balance affects the efficiency of various binary search tree operations. [Familiarity]

8. Solve problems using fundamental graph algorithms, including depth-first and breadth-first search. [Usage]

[1] And yes, I started Grossman's course on PL. It is excellent, and really regret having to drop it, but I was totally overloaded with work at the time