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
* 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