mirror of
https://github.com/prakhar1989/awesome-courses.git
synced 2024-12-17 20:14:22 -05:00
List of awesome university courses for learning Computer Science
ecd7a9256f
Add UNIX System Programming (formerly UNIX Tools) to the list |
||
---|---|---|
README.md |
List of awesome Computer Science courses scoured from university pages across the web
Systems
- 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
- Assignments
- 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
- 15-440 Distributed Systems Carnegie-Mellon University
- Introduction to distributed systems with a focus on teaching concepts via projects implemented in the Go programming language.
- Assignments
- 6.824 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 - Just do
git clone git://g.csail.mit.edu/6.824-golabs-2014 6.824
- Lectures
- 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 Engineering Distributed Systems Carnegie-Mellon University
- A project focused course on Distributed Systems with an awesome list of readings
- Readings
- PODC 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
- Assignments and Solutions
- CS5412 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 is also a gem and recommended as a must read in Google's tutorial on Distributed System Design
- Slides
- CSCI 360 Computer Architecture 3 CUNY Hunter College
- CSCI 493.66 UNIX System Programming (formerly UNIX Tools) CUNY Hunter College
- CSCI 493.75 Parallel Computing CUNY Hunter College
Programming Languages / Compilers
- COS326 Functional Programming Princeton University
- Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language
- Lectures
- Assignments
- 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 semester also available, with more exercices
- Assignments & Lectures
- CS240h Functional Systems in Haskell Stanford University
- Building software systems in Haskell
- Lecture Slides
- 3 Assignments: Lab1, Lab2, Lab3
- CS164 Hack your language! UC Berkeley
- Introduction to programming languages by designing and implementing domain-specific languages.
- Lecture Videos
- Code for Assignments
- CS3110 Data Structures and Functional Programming Cornell University
- Another course that uses OCaml to teach alternative programming paradigms, especially functional and concurrent programming.
- Lecture Slides
- Assignments
- CS173 Programming Languages Brown University
- Course by Prof. Krishnamurthi (author of HtDP) and numerous other awesome books on programming languages. Uses a custom designed Pyret programming language to teach the concepts. There was an online class hosted in 2012, which includes all lecture videos for you to enjoy.
- Videos
- Assignments
Algorithms
- COS226 Data Structures and Algorithms Princeton University
- The popular algorithms class covering most important algorithms and data structures in use on computers taught by Robert Sedgewick.
- Assignments
- CS61B 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
- Lecture Videos on Youtube
- CSCI 235 Software Design and Analysis II CUNY Hunter College
- CSCI 335 Software Design and Analysis III CUNY Hunter College
Misc
- CS 5150 Software Engineering Cornell University
- Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems
- Lectures
- 15-781 Machine Learning Carnegie Mellon University
- Taught by one of the leading experts on Machine Learning - Tom Mitchell
- Lectures
- Project Ideas and Datasets
- ESM 296-4F GIS & Spatial Analysis UC Santa Barbara
- Taught by James Frew, Ben Best, and 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 (includes lecture materials and labs)