2 ms·
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
by bcbrown 12y ago
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-algebra-fall-2011/Syllabus/ 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=PL62A66DDD3B3CC0B7 https://www.youtube.com/watch?v=XgQo4JkN4Bw&list=PL62A66DDD3...)
* Distributed Systems (I read Tanenbaum's book)
* Computability
- eric_bullington 12y agoI 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