awesome-courses/README.md
2014-12-25 15:43:33 -06:00

93 lines
11 KiB
Markdown

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)
- [6.824](http://css.csail.mit.edu/6.824/2014/index.html) **Distributed Systems** *MIT*
- MIT's graduate-level DS course with a focus on fault tolerance, replication, and consistency, all taught via awesome lab assignments in Golang!
- [Assignments](http://css.csail.mit.edu/6.824/2014/labs/) - Just do `git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824`
- [Lectures](http://css.csail.mit.edu/6.824/2014/schedule.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)
- [CSCI 360](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci360/csci360_f14.php) **Computer Architecture 3** *CUNY Hunter College*
- A course that covers cache design, buses, memory hierarchies, processor-peripheral interfaces, and multiprocessors, including GPUs.
- [CSCI 493.66](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php) **UNIX System Programming (formerly UNIX Tools)** *CUNY Hunter College*
- A course that is mostly about writing programs against the UNIX API, covering all of the basic parts of the kernel interface and libraries, including files, processes, terminal control, signals, and threading.
- [CSCI 493.75](http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/csci493.65_spr14.php) **Parallel Computing** *CUNY Hunter College*
- The course is an introduction to parallel algorithms and parallel programming in C and C++, using the Message Passing Interface (MPI) and the OpenMP application programming interface. It also includes a brief introduction to parallel architectures and interconnection networks. It is both theoretical and practical, including material on design methodology, performance analysis, and mathematical concepts, as well as details on programming using MPI and OpenMP.
- [CS 107](https://www.youtube.com/playlist?list=PL08D9FA018A965057&spfreload=10) **Computer Organization & Systems** *Stanford University*
- CS107 is the third course in Stanford's introductory programming sequence. The course will work from the C programming language down to the microprocessor to de-mystify the machine. With a complete understanding of how computer systems execute programs and manipulate data, you will become a more effective programmer, especially in dealing with issues of debugging, performance, portability, and robustness. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, optimization of memory and runtime performance, and memory organization and management.
- [Assignments](http://web.stanford.edu/class/cs107/assignments.html)
### 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)
- [CS61B](http://www.cs.berkeley.edu/~jrs/61b/) **Data Structures** *Berkeley*
- In this course, you will study advanced programming techniques including data structures, encapsulation, abstract data types, interfaces, and algorithms for sorting and searching, and you will get a taste of “software engineering”—the design and implementation of large programs.
- [Labs](http://www.cs.berkeley.edu/~jrs/61b/lab/index.html)
- [Lecture Videos on Youtube](http://www.youtube.com/watch?v=frxF7Vs96YU&list=PLMM0a7ZGnITrgfhOxMNP7bpP4hhhKNY9s)
- - [CSCI 235](http://compsci.hunter.cuny.edu/~sweiss/courses/csci235.php) **Software Design and Analysis II**
*CUNY Hunter College*
- Introduces algorithms for a few common problems such as sorting. Practically speaking, it furthers the students' programming skills with topics such as recursion, pointers, and exception handling, and provides a chance to improve software engineering skills and to give the students practical experience for more productive programming.
- [CSCI 335](http://compsci.hunter.cuny.edu/~sweiss/courses/csci335.php) **Software Design and Analysis III**
*CUNY Hunter College*
- This includes the introduction of hashes, heaps, various forms of trees, and graphs. It also revisits recursion and the sorting problem from a higher perspective than was presented in the prequels. On top of this, it is intended to introduce methods of algorithmic analysis.
### 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)