List of awesome Computer Science courses scoured from university pages across the web ### Systems - [CS425](https://courses.engr.illinois.edu/cs425/) **Distributed Systems** *Univ of Illinois, Urbana-Champaign* - Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. - [Lectures](http://recordings.engineering.illinois.edu/ess/portal/section/11ae0191-49e2-4c34-95fd-fc65355262d4) - [Assignments](https://courses.engr.illinois.edu/cs425/assignments.html) - [CS241](https://courses.engr.illinois.edu/cs241/) **Systems Programming** *Univ of Illinois, Urbana-Champaign* - Learn how to write programs that take full advantage of operating system support in the C programming language - [Assignments](https://courses.engr.illinois.edu/cs241/mp.html) - [15-440](http://www.cs.cmu.edu/~dga/15-440/F12/index.html) **Distributed Systems** *Carnegie-Mellon University* - Introduction to distributed systems with a focus on teaching concepts via projects implemented in the Go programming language. - [Assignments](http://www.cs.cmu.edu/~dga/15-440/F12/assignments.html) - [SPAC](http://homes.cs.washington.edu/~djg/teachingMaterials/spac/) **Parallelism and Concurrency** *Univ of Washington* - Technically not a course nevertheless an awesome collection of materials used by Prof Dan Grossman to teach parallelism and concurrency concepts to sophomores at UWash - [15-749](http://www.andrew.cmu.edu/course/15-749/) **Engineering Distributed Systems** *Carnegie-Mellon University* - A project focused course on Distributed Systems with an awesome list of readings - [Readings](http://www.andrew.cmu.edu/course/15-749/READINGS/) - [PODC](http://dcg.ethz.ch/lectures/podc_allstars/) **Principles of Distributed Computing** *ETH-Zurich* - Explore essential algorithmic ideas and lower bound techniques, basically the "pearls" of distributed computing in an easy-to-read set of lecture notes, combined with complete exercises and solutions. - [Book](http://dcg.ethz.ch/lectures/podc_allstars/lecture/podc.pdf) - [Assignments and Solutions](http://dcg.ethz.ch/lectures/podc_allstars/) - [CS5412](http://www.cs.cornell.edu/Courses/CS5412/2014sp/) **Cloud Computing** *Cornell University* - Taught by one of the stalwarts of this field, Prof Ken Birman, this course has a fantastic set of slides that one can go through. The Prof's [book](http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154) is also a gem and recommended as a must read in Google's tutorial on [Distributed System Design](http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/lecture/h23/dsys/dsd-tutorial.html) - [Slides](http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm) ### Programming Languages / Compilers - [COS326](http://www.cs.princeton.edu/~dpw/courses/cos326-12/info.php) **Functional Programming** *Princeton University* - Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language - [Lectures](http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures.php) - [Assignments](http://www.cs.princeton.edu/~dpw/courses/cos326-12/assignments.php) - [CIS194](http://www.seas.upenn.edu/~cis194/) **Introduction to Haskell** *Penn Engineering* - Explore the joys of functional programming, using Haskell as a vehicle. The aim of the course will be to allow you to use Haskell to easily and conveniently write practical programs. - [Previous](http://www.seas.upenn.edu/~cis194/spring13/index.html) semester also available, with more exercices - [Assignments & Lectures](http://www.seas.upenn.edu/~cis194/lectures.html) - [CS240h](http://www.scs.stanford.edu/14sp-cs240h/) **Functional Systems in Haskell** *Stanford University* - Building software systems in Haskell - [Lecture Slides](http://www.scs.stanford.edu/14sp-cs240h/slides/) - 3 Assignments: [Lab1](http://www.scs.stanford.edu/14sp-cs240h/labs/lab1.html), [Lab2](http://www.scs.stanford.edu/14sp-cs240h/labs/lab2.html), [Lab3](http://www.scs.stanford.edu/14sp-cs240h/labs/lab3.html) - [CS164](https://sites.google.com/a/bodik.org/cs164/home) **Hack your language!** *UC Berkeley* - Introduction to programming languages by designing and implementing domain-specific languages. - [Lecture Videos](https://www.youtube.com/playlist?list=PL421867F00A53B833) - [Code for Assignments](https://bitbucket.org/cs164_overlord/) - [CS3110](http://www.cs.cornell.edu/Courses/cs3110/2014fa/course_info.php) **Data Structures and Functional Programming** *Cornell University* - Another course that uses OCaml to teach alternative programming paradigms, especially functional and concurrent programming. - [Lecture Slides](http://www.cs.cornell.edu/Courses/cs3110/2014fa/lecture_notes.php) - [Assignments](http://www.cs.cornell.edu/Courses/cs3110/2014fa/) - [CS173](http://cs.brown.edu/courses/cs173/2014/) **Programming Languages** *Brown University* - Course by Prof. Krishnamurthi (author of [HtDP](http://htdp.org/2003-09-26/Book/)) and numerous other [awesome](http://cs.brown.edu/courses/cs173/2012/book/) [books](http://papl.cs.brown.edu/2014/index.html) on programming languages. Uses a custom designed [Pyret](http://www.pyret.org/) programming language to teach the concepts. There was an [online class](http://cs.brown.edu/courses/cs173/2012/OnLine/) hosted in 2012, which includes all lecture videos for you to enjoy. - [Videos](http://cs.brown.edu/courses/cs173/2012/Videos/) - [Assignments](http://cs.brown.edu/courses/cs173/2014/assignments.html) ### Algorithms - [COS226](http://www.cs.princeton.edu/courses/archive/fall14/cos226/info.php) **Data Structures and Algorithms** *Princeton University* - The [popular](https://www.coursera.org/course/algs4partI) algorithms class covering most important algorithms and data structures in use on computers taught by Robert Sedgewick. - [Assignments](http://www.cs.princeton.edu/courses/archive/fall14/cos226/assignments.php) ### Misc - [CS 5150](http://www.cs.cornell.edu/courses/CS5150/2014fa/overview.html) **Software Engineering** *Cornell University* - Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems - [Lectures](http://www.cs.cornell.edu/courses/CS5150/2014fa/materials.html) - [15-781](http://www.cs.cmu.edu/~tom/10701_sp11/) **Machine Learning** *Carnegie Mellon University* - Taught by one of the leading experts on Machine Learning - **Tom Mitchell** - [Lectures](http://www.cs.cmu.edu/~tom/10701_sp11/lectures.shtml) - [Project Ideas and Datasets](http://www.cs.cmu.edu/~tom/10701_sp11/proj.shtml) - [ESM 296-4F](http://ucsb-bren.github.io/esm296-4f/) **GIS & Spatial Analysis** *UC Santa Barbara* - Taught by [James Frew](http://www.bren.ucsb.edu/people/Faculty/james_frew.htm), [Ben Best](http://mgel.env.duke.edu/people/ben-best/), and [Lisa Wedding](http://www.centerforoceansolutions.org/team/lisa-wedding) - Focuses on specific computational languages (e.g., Python, R, shell) and tools (e.g., GDAL/OGR, InVEST, MGET, ModelBuilder) applied to the spatial analysis of environmental problems - [GitHub ](http://ucsb-bren.github.io/esm296-4f/) (includes lecture materials and labs)