List of University Courses for Learning Computer Science
github.com
github.com
Thanks to the contributors, the list has become quite huge and I'm open to any ideas that might help users navigate this better. There was a recommendation[0] made to add emojis and I'm looking for feedback on how it could be done better. If any of you have suggestions, I'm all ears! Thanks!
[0] - https://github.com/prakhar1989/awesome-courses/issues/29
If you're interested in C, thread synchronization, pipes and other system level programming concepts, then you might find the following freely-available and re-usable resources we created for UIUC's CS241 useful:
http://angrave.github.io/sys/# Includes: 1. 7 minute intro videos on C and POSIX calls 2. linux-in-the-browser programming+shell playground that runs in your laptop's browser
My course staff will be releasing a new version of this VM in the next semester with additional features and bug fixes (including embedded man-page and autocomplete)
We also built a crowd-sourced book that mirrors most of the lecture content https://github.com/angrave/SystemProgramming/wiki
Together, these items comprise a significant amount of the systems course CS241.
So that's why the existing links were showing a blank page. I think it makes sense to link to the 2014 course page for now and later update it to 2015 when the material is up.
> Together, these items comprise a significant amount of the systems course CS241.
I'll update the README with the above links. Thanks a lot Prof Angrave for make this available for free!
Numerical integration methods (for ODE solvers) and constraint solvers should probably be covered better too, these are the basis for all engineering and scientific simulations.
Unfortunately, I had to give up on the course last year because my math background is even more limited than yours (you'll need to know how to construct proofs). So time for me to learn calc, I guess. :)
Anyways, I've picked up "The Haskell Road to Logic, Maths, and Programming," so hopefully I can learn proofs alongside programming and logic, which is probably the best route for me at this time.
http://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebr...
http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-...
To be honest, I'm somewhat confused by the purpose of general lists like these. When they're small and focused, I can see them being useful (as the OP mentions here) but eventually they tend towards being a directory. At that stage I'd just use Google (edit: though it'd be hugely ironic if a Google search led me to an 'awesome-style' list - hasn't happened yet)
Course website: http://www.cs.berkeley.edu/~jrs/61b/
This isn't proctored and you wont have a proper instructor if that's what you're looking for, but I've found these lectures to be exceptionally good. They go throuh some basics on OOP, classes, data structures and basic algorithms. I found it very easy to follow through these lectures and complete some of the assignments. I went through these while I was a student at Georgia Tech when I was transitioning from Electrical and Industrial Engineering to CS, and I learned the material well enough to exempt their intro to OOP class and be bored to tears for the first 80% of the data structures class. I think it would be a great starter before you jump into anything else.
1. A comprehensive list of the topics covered in the fundamental CS classes (that is, the topics covered in data structures, algorithms, etc. as well as the required math), ideally with links to related online material. Actually, ACM's Joint Task Force on Computing Curricula publishes a report that is an excellent resource (starting on page 59)[1] for this kind of thing. This resource just need to be distilled down into a list of general topics, each with an associated list of the best online education materials for that particular topic.
2. A nice flashcard program to accompany each topic, ideally with SRS, that could help students learn the terms and other concrete facts related to those topics.
3. A way to systematically evaluate and analyze a learner's mastery of these topics. That is, tests. I'm sure there's a lot of great test material out there that could be auto-graded, but it's scattered about.
4. Oh yeah, and a pony.
Does anyone know of a resource like this? I've actually thought about building it, and have started on very minor parts of this vision [2]. But it's a big task, and I'm not sure if there's any demand for this kind of thing.
* 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
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
http://morea-framework.github.io/
Here's the Morea-based site for the software engineering class I'm teaching starting on Monday:
http://philipmjohnson.github.io/ics613s15/
One could imagine a wrapper around a set of courses structured using Morea that would get close to what you desire.
Philip
Otherwise it's a nice list, kudos for the effort.
I took it when it was first offered online in 2011, and really liked it. My review of it is here: http://henrikwarne.com/2011/12/18/introduction-to-databases-...
Here's a listing of all the different classes and their archives: http://inst.eecs.berkeley.edu/classes-eecs.html
I have a bachelors in math. I've taken a data structures and algo course at a local university. I'm currently taking software engineering grad class on udacity through Georgia Tech.
Any other paid online cs courses from universities? Some of the other Georgie Tech classes require too much since they're grad classes. I'm looking for BS level paid online classes.
Gives basic idea of computer science courses and level they might be at a US university
I think this is just a list of resources that make self-studying easier by providing different resources for each topic.