List of awesome university courses for learning Computer Science
Go to file
Robert (Robby) O'Connor ecd7a9256f Add UNIX System Programming (formerly UNIX Tools) to the list
Add UNIX System Programming (formerly UNIX Tools) to the list
2014-12-25 11:43:42 -05:00
README.md Add UNIX System Programming (formerly UNIX Tools) to the list 2014-12-25 11:43:42 -05:00

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
  • CS164 Hack your language! UC Berkeley
  • 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
  • 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)