Advanced Computer Science Courses

Below I’ve collected some links to advanced computer science courses on-line. I’m concentrating on courses with good lecture notes, rather than video lectures, and I’m applying a rather arbitrary filter for quality (otherwise this becomes a directory with less semantic utility).

This is the good stuff! But only a subset of it – any recommendations for good courses are gratefully received. I’m mainly interested in systems, data-structures and mathematics, so reserve the right to choose topics at will.

Courses are organised by broad topic.


Graduate level operating systems courses don’t typically have notes – they all come with long reading lists taken from SOSP and other places. In this way, systems research is a bit more like a humanities subject: it’s vital to read the primary sources.


Distributed Algorithms

Data Structures and Algorithms

Discrete Mathematics and Probability

  • MIT 6.042J (OCW) – Elementary discrete maths, including graph theory and some combinatorics. Lecture slides are available, and good, but the real meat is in the readings.

29 thoughts on “Advanced Computer Science Courses

  1. I’d suggest adding a couple textbooks.
    Real Analysis and Abstract Algebra textbooks at

    Both textbooks were written by John Erdman under a creative commons non-commercial license. They were recommended to me by a math professor and both books are really high quality.

  2. Thank you for compiling this list, which will provide me with many hours of material, I hope 🙂

    I have one remark, though: the last link to the discrete maths lecture seems dead. Any chance you could repair it?

  3. I had taken Jon Kleinberg’s CS 6850 – Structure of Information Networks.

    Really brilliant course and very pertinent to today’s connected world.

  4. NLG course for ph.d students This course covers three topics that are usually taught in separate courses: the automatic construction of text starting from structured data, the automatic construction of summaries (not the full summarization system, just the text construction bit), and the text creation in the target language during machine translation.

  5. Do you have any links to course on methods on how to design/architect real systems and how that influences the implementation? Saying you are going to use OO or functional is pointless: What are the classes? Their names? Their relations? We were never taught how to actually design software. (You can not just slap together algorithms.)

  6. Wisc has sorts of grad level courses on areas your mentioned above.

    CS 736 Adv OS, CS739 Distributed Systems

    Prof. Mike Swift has precious notes:

    Prof. AnHai Doan says,

    CS 564 (Database Management Systems: Design And Implementation) is “everything you should know so that you can get an industrial job working with relational databases”

    CS 764 (Topics In Database Management Systems) is “all the gory details you may (or may not) want to know about relational data management systems”

    CS 784 (Data Models And Languages) is “all the stuff beyond relational data (e.g., Web, text, data mining, data integration, data extraction) that you should know to broaden your data management knowledge or to work in the field as an advanced developer/researcher”.

    You also may be interested in OS qual reading list ( at Wisc.

  7. Pingback: CS advance | winnun ~

Leave a Reply

Your email address will not be published. Required fields are marked *