Top 50 Awesome List

prakhar1989/awesome-courses

Computer Science  11 months ago  38.4k
📚 List of awesome university courses for learning Computer Science!
View byDAY/WEEK/README
View on Github

Nov 29th, 2020

Courses

Misc

  • 14-740 Fundamentals of Computer Networks CMU Lecture Videos Assignments Readings Lecture Notes
    • This is an introductory course on Networking for graduate students. It follows a top-down approach to teaching Computer Networks, so it starts with the Application layer which most of the students are familiar with and as the course unravels we learn more about transport, network and link layers of the protocol stack.
    • As far as prerequisites are concerned - basic computer, programming and probability theory background is required.
    • The course site contains links to the lecture videos, reading material and assignments.
  • Oct 15th, 2019

    Courses

    Systems

  • ECGR4101/5101 Embedded Systems using the Renesas RX63N Processor University of North Carolina at Charlotte Lecture Videos Readings
    • Introduction to designing microcontroller-based embedded computer systems using assembly and C programs. Examination of Real-time Operating Systems and their impact on performance. Computer engineering applications will be emphasized.
    • The goal of this course is to solidify and build upon a student’s knowledge of computer organization by presenting hands-on experience with microcontrollers. Students will also examine a few sensors that are used in commercial and medical products and learn how to interface them in a microcontroller system.
    • Lecture Videos
    • Lecture Notes
  • Oct 27th, 2018

    Courses

    Misc

  • CS 4812 Quantum Information Processing Cornell University Lecture Notes Readings
    • Hardware that exploits quantum phenomena can dramatically alter the nature of computation. Though constructing a working quantum computer is a formidable technological challenge, there has been much recent experimental progress. In addition, the theory of quantum computation is of interest in itself, offering strikingly different perspectives on the nature of computation and information, as well as providing novel insights into the conceptual puzzles posed by the quantum theory. The course is intended both for physicists, unfamiliar with computational complexity theory or cryptography, and also for computer scientists and mathematicians, unfamiliar with quantum mechanics. The prerequisites are familiarity (and comfort) with finite dimensional vector spaces over the complex numbers, some standard group theory, and ability to count in binary.
    • Syllabus
    • Lectures
  • Courses

    Algorithms

  • CS 4820 Introduction to Analysis of Algorithms Cornell University Assignments Lecture Notes Readings
    • This course develops techniques used in the design and analysis of algorithms, with an emphasis on problems arising in computing applications. Example applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. This course covers four major algorithm design techniques (greedy algorithms, divide and conquer, dynamic programming, and network flow), computability theory focusing on undecidability, computational complexity focusing on NP-completeness, and algorithmic techniques for intractable problems, including identification of structured special cases, approximation algorithms, and local search heuristics.
    • Lectures
    • Syllabus
  • Courses

    CS Theory

  • CS 6810 Theory of Computing Cornell University Assignments Lecture Notes Readings
    • This graduate course gives a broad introduction to complexity theory, including classical results and recent developments. Complexity theory aims to understand the power of efficient computation (when computational resources like time and space are limited). Many compelling conceptual questions arise in this context. Most of these questions are (surprisingly?) difficult and far from being resolved. Nevertheless, a lot of progress has been made toward understanding them (and also why they are difficult). We will learn about these advances in this course. A theme will be combinatorial constructions with random-like properties, e.g., expander graphs and error-correcting codes. Some examples:
      • Is finding a solution inherently more difficult than verifying it?
      • Do more computational resources mean more computing power?
      • Is it easier to find approximate solutions than exact ones?
      • Are randomized algorithms more powerful than deterministic ones?
      • Is it easier to solve problems in the average case than in the worst case?
      • Are quantum computers more powerful than classical ones?
    • Syllabus
    • Lectures
    • Assignments
  • Jun 4th, 2018

    Courses

    Computer Graphics

  • CSCI 1230 Introduction to Computer Graphics Brown University Assignments Lecture Notes
    • This course offers an in-depth exploration of fundamental concepts in 2D and 3D computer graphics. It introduces 2D raster graphics techniques, including scan conversion, simple image processing, interaction techniques and user interface design. The bulk of the course is devoted to 3D modeling, geometric transformations, and 3D viewing and rendering.
    • Lectures
    • Labs
    • Demos
  • May 21st, 2018

    Courses

    Misc

  • CS 50 Intro to Game Developement Harvard University Lecture VideosAssignments Lecture Notes
    • This course picks up where Harvard College’s CS50 leaves off, focusing on the development of 2D and 3D interactive games. Students explore the design of such childhood games as Super Mario Bros., Legend of Zelda, and Portal in a quest to understand how video games themselves are implemented. Via lectures and hands-on projects, the course explores principles of 2D and 3D graphics, animation, sound, and collision detection using frameworks like Unity and LÖVE 2D, as well as languages like Lua and C#. By class’s end, students will have programmed several of their own games and gained a thorough understanding of the basics of game design and development.
    • Assignments
    • Lecture Videos
  • May 12th, 2018

    Courses

    Machine Learning

  • CS 189 Introduction To Machine Learning UC Berkeley Assignments Lecture Notes
    • Introductory ML course covering a wide range of topics: ranging from least squares to convolutional neural networks
    • Notes
    • Homework
  • Mar 20th, 2018

    Courses

    Security

  • CS 155 Computer and Network Security Stanford Lecture Notes Readings
    • Principles of computer systems security. Attack techniques and how to defend against them. Topics include: network attacks and defenses, operating system holes, application security (web, email, databases), viruses, social engineering attacks, privacy, and digital rights management. Course projects focus on building reliable code. Recommended: Basic Unix. Primarily intended for seniors and first-year graduate students.
  • Mar 2nd, 2018

    Courses

    Misc

  • CS 6452 Datacenter Networks and Services Cornell University Lecture Notes
    • CS6452 focuses on datacenter networks and services. The emerging demand for web services and cloud computing have created need for large scale data centers. The hardware and software infrastructure for datacenters critically determines the functionality, performance, cost and failure tolerance of applications running on that datacenter. This course will examine design alternatives for both the hardware (networking) infrastructure, and the software infrastructure for datacenters.
    • Syllabus
    • Lectures
  • Nov 29th, 2017

    Courses

    Misc

  • CS 223A Introduction to Robotics Stanford University Lecture Videos Assignments Lecture Notes
    • The purpose of this course is to introduce you to basics of modeling, design, planning, and control of robot systems. In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control.
  • Oct 29th, 2017

    Courses

    Systems

  • 15-319/619 Cloud Computing (ICS) Carnegie-Mellon University Lecture Videos Assignments
    • This project-based on-line course focuses on skill building across various aspects of cloud computing. We cover conceptual topics and provide hands-on experience through projects utilizing public cloud infrastructures (Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP)). The adoption of cloud computing services continues to grow across a variety of organizations and in many domains. Simply, cloud computing is the delivery of computing as a service over a network, whereby distributed resources and services are rented, rather than owned, by an end user as a utility.
    • For the projects, students will work with Amazon Web Services, Microsoft Azure and Google Cloud Platform, use them to rent and provision compute resources and then program and deploy applications that run on these resources. Students will develop and evaluate virtual machine (VM) and container scaling, elasticity and load balancing solutions. In addition, students will work with cloud storage systems and learn to develop different applications using batch, iterative and stream processing frameworks. 15-619 students will have to complete an extra project which entails designing and implementing a complete web-service solution for querying big data. For the extra project, the student teams are evaluated based on the cost and performance of their web service.
    • Lecture Notes
    • Videos
  • Sep 7th, 2017

    Courses

    Systems

  • 15-445/645 Database Systems Carnegie-Mellon University Lecture Videos Assignments Readings
  • Jul 21st, 2017

    Courses

    Introduction to CS

  • CS 109 Programming Practice Using Scala KAIST Assignments Lecture Notes
    • This course introduces basic concepts of programming and computer science, such as dynamic and static typing, dynamic memory allocation, objects and methods, binary representation of numbers, using an editor and compiler from the command line, running programs with arguments from the command line, using libraries, and the use of basic data structures such as arrays, lists, sets, and maps. We will use Scala for this course.
    • [Lectures] (http://otfried.org/courses/cs109/index.html)
    • [Assignments] (http://otfried.org/courses/cs109/index.html)
  • Mar 20th, 2017

    Courses

    Systems

  • 18-447 Introduction to Computer Architecture CMU Lecture Videos Assignments Readings
    • Very comprehensive material on Computer Architecture - definitely more than just "introduction". Online material is very user-friendly, even the recitation videos available online. This is the Spring'15 version by Prof. Onur Mutlu
    • Lectures and Recitation
    • Homeworks 7 HWs with answer set as well
    • Readings
  • Mar 18th, 2017

    Courses

    Systems

  • 15-418 Parallel Computer Architecture and Programming Carnegie-Mellon University Lecture Videos Assignments Lecture Notes Readings
    • The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems as well as to teach parallel programming techniques necessary to effectively utilize these machines. Because writing good parallel programs requires an understanding of key machine performance characteristics, this course will cover both parallel hardware and software design.
    • Assignments
    • Lecture Notes
    • Lecture Videos
    • Readings
  • CS 107 Computer Organization & Systems Stanford University Lecture Videos Assignments
    • 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.
    • Lecture Videos
    • Assignments
  • CS 5412 Cloud Computing Cornell University Lecture Notes Readings
    • 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 493.66 UNIX System Programming (formerly UNIX Tools) CUNY Hunter College Assignments Lecture Notes
    • 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 Parallel Computing CUNY Hunter College Assignments Lecture Notes
    • 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.
  • ECE 459 Programming for Performance University of Waterloo Lecture Notes Assignments
    • Learn techniques for profiling, rearchitecting, and implementing software systems that can handle industrial-sized inputs, and to design and build critical software infrastructure. Learn performance optimization through parallelization, multithreading, async I/O, vectorization and GPU programming, and distributed computing.
    • Lecture slides
  • Mar 15th, 2017

    Courses

    Programming Languages / Compilers

  • CS 223 Purely Functional Data Structures In Elm University of Chicago Assignments Lecture Notes
    • This course teaches functional reactive programming and purely functional data structures based on Chris Okazaki's book and using the Elm programming language.
    • Lectures
    • Assignments
  • Mar 12th, 2017

    Courses

    Machine Learning

  • CS20si Tensorflow for Deep Learning Research Stanford University Assignments Lecture Notes
    • This course will cover the fundamentals and contemporary usage of the Tensorflow library for deep learning research. We aim to help students understand the graphical computational model of Tensorflow, explore the functions it has to offer, and learn how to build and structure models best suited for a deep learning project. Through the course, students will use Tensorflow to build models of different complexity, from simple linear/logistic regression to convolutional neural network and recurrent neural networks with LSTM to solve tasks such as word embeddings, translation, optical character recognition. Students will also learn best practices to structure a model and manage research experiments.
    • Assignmentsstars10.1k available on Github.
  • Mar 10th, 2017

    Courses

    Systems

  • CS 425 Distributed Systems Univ of Illinois, Urbana-Champaign Assignments Readings
    • Brilliant set of lectures and reading material covering fundamental concepts in distributed systems such as Vector clocks, Consensus and Paxos. This is the 2016 version by Prof Indranil Gupta.
    • Lectures
    • Assignments
  • Feb 26th, 2017

    Courses

    Algorithms

  • CS 61B Data Structures UC Berkeley Lecture Videos Assignments Lecture Notes Readings
    • 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.
    • Full Lecture Materials Lecture of Spring 2016. This website contains full matrials including video links, labs, homeworks, projects. Very good for self-learner. Also a good start for Java. And it includes some other useful resources for Java Documentation, Data Structure Resources, Git/GitHub and Java Development Resources. Resources
    • Labs The link to labs and projects is included in the website.
    • Lecture Videos
  • Feb 7th, 2017

    Courses

    Systems

  • CSEP 552 Distributed Systems University of Washington Lecture Videos Assignments Lecture Notes
    • CSEP552 is a graduate course on distributed systems. Distributed systems have become central to many aspects of how computers are used, from web applications to e-commerce to content distribution. This course will cover abstractions and implementation techniques for the construction of distributed systems, including client server computing, the web, cloud computing, peer-to-peer systems, and distributed storage systems. Topics will include remote procedure call, maintaining consistency of distributed state, fault tolerance, high availability, and other topics. As we believe the best way to learn the material is to build it, there will be a series of hands-on programming projects.
    • Lectures of a previous session are available to watch.
  • Courses

    Machine Learning

  • DEEPNLP Deep Learning for Natural Language Processing University of Oxford Assignments Lecture Notes
    • This is an applied course focussing on recent advances in analysing and generating speech and text using recurrent neural networks. We introduce the mathematical definitions of the relevant machine learning models and derive their associated optimisation algorithms. The course covers a range of applications of neural networks in NLP including analysing latent dimensions in text, transcribing speech to text, translating between languages, and answering questions. This course is organised by Phil Blunsom and delivered in partnership with the DeepMind Natural Language Research Group.
    • Lecturesstars15.1k
    • Assignments are available on the organisation page titled as "practicals"
  • Feb 6th, 2017

    Courses

    Misc

  • CS 108 Object Oriented System Design Stanford Assignments Lecture Notes
    • Software design and construction in the context of large OOP libraries. Taught in Java. Topics: OOP design, design patterns, testing, graphical user interface (GUI) OOP libraries, software engineering strategies, approaches to programming in teams.
  • Jan 14th, 2017

    Courses

    Systems

  • CS 186 Introduction to Database Systems UC Berkeley Lecture Videos Assignments Readings Lecture Notes
    • In the project assignments in CS186, you will write a basic database management system called SimpleDB. For this project, you will focus on implementing the core modules required to access stored data on disk; in future projects, you will add support for various query processing operators, as well as transactions, locking, and concurrent queries.
    • Lecture Videos
    • Lecture Notes
    • Projects
  • Dec 19th, 2016

    Courses

    Programming Languages / Compilers

  • CS 91 Introduction to Programming Languages Swathmore College Lecture Notes Assignments
    • Uses the Pyret programming language & PAPL book to understand the fundamentals of programming languages.
    • Labs
  • CS 75 Principles of Compiler Design Swathmore College Lecture Videos Assignments Lecture Notes
  • Dec 8th, 2016

    Courses

    Systems

  • CS 241 Systems Programming (Spring 2016) Univ of Illinois, Urbana-Champaign Assignments Lecture Notes
    • System programming refers to writing code that tasks advantage of operating system support for programmers. This course is designed to introduce you to system programming. By the end of this course, you should be proficient at writing programs that take full advantage of operating system support. To be concrete, we need to fix an operating system and we need to choose a programming language for writing programs. We chose the C language running on a Linux/UNIX operating system (which implements the POSIX standard interface between the programmer and the OS).
    • Assignments
    • Labs
    • Github Page
    • Crowd Sourced Book
  • Nov 18th, 2016

    Courses

    Systems

  • 6.004 Computation Structures MIT Assignments Lecture Notes Lecture Videos
    • Introduces architecture of digital systems, emphasizing structural principles common to a wide range of technologies. Multilevel implementation strategies; definition of new primitives (e.g., gates, instructions, procedures, processes) and their mechanization using lower-level elements. Analysis of potential concurrency; precedence constraints and performance measures; pipelined and multidimensional systems. Instruction set design issues; architectural support for contemporary software structures. 4 Engineering Design Points. 6.004 offers an introduction to the engineering of digital systems. Starting with MOS transistors, the course develops of series of building blocks logic gates, combinational and sequential circuits, finite-state machines, computers and finally complete systems. Both hardware and software mechanisms are explored through a series of design examples.
    • Youtube Playlist
    • Lecture Notes
    • Labs-Assignments
  • Nov 14th, 2016

    Courses

    Introduction to CS

  • CSCI E-1 Understanding Computers and the Internet Harvard University Extension College
  • Oct 24th, 2016

    Courses

    Systems

  • CS 3410 Computer System Organization and Programming Cornell University Assignments Lecture NotesReadings
    • CS3410 provides an introduction to computer organization, systems programming and the hardware/software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, I/O devices, bus-based I/O systems, and multicore architectures. Students learn assembly language programming and design a pipelined RISC processor.
    • Lectures
    • Assignments
  • Oct 23rd, 2016

    Courses

    Systems

  • Hack the Kernel Introduction to Operating Systems SUNY University at Buffalo, NY Lecture Videos Assignments Lecture Notes
    • This course is an introduction to operating system design and implementation. We study operating systems because they are examples of mature and elegant solutions to a difficult design problem: how to safely and efficiently share system resources and provide abstractions useful to applications.
    • For the processor, memory, and disks, we discuss how the operating system allocates each resource and explore the design and implementation of related abstractions. We also establish techniques for testing and improving system performance and introduce the idea of hardware virtualization. Programming assignments provide hands-on experience with implementing core operating system components in a realistic development environment. Course by Dr.Geoffrey Challen
    • Syllabus
    • Slides
    • Video lectures
    • Assignments
    • Old Exams
  • Oct 4th, 2016

    Courses

    Systems

  • CSCI-UA.0202: Operating Systems (Undergrad) Operating Systems NYU Assignments Lecture Notes Readings
    • NYU's operating system course. It's a fundamental course focusing basic ideas of operating systems, including memory management, process shceduling, file system, ect. It also includes some recommended reading materials. What's more, there are a series of hands-on lab materials, helping you easily understand OS.
    • Assignments
    • Lectures
    • Old Exams
  • Courses

    Programming Languages / Compilers

  • CMSC 430 Introduction to Compilers Univ of Maryland Assignments Lecture Notes
    • The goal of CMSC 430 is to arm students with the ability to design, implement, and extend a programming language. Throughout the course, students will design and implement several related languages, and will explore parsing, syntax querying, dataflow analysis, compilation to bytecode, type systems, and language interoperation.
    • Lecture Notes
    • Assignments
  • CS 143 Compiler construction Stanford University Lecture NotesAssignments
  • Courses

    Algorithms

  • CS 97SI Introduction to Competitive Programming Stanford University Assignments Lecture Notes
    • Fantastic repository of theory and practice problems across various topics for students who are interested to participate in ACM-ICPC.
    • Lectures and Assignmentsstars1.4k
  • CS 224 Advanced Algorithms Harvard University Lecture Videos Assignments Lecture Notes
    • CS 224 is an advanced course in algorithm design, and topics we will cover include the word RAM model, data structures, amortization, online algorithms, linear programming, semidefinite programming, approximation algorithms, hashing, randomized algorithms, fast exponential time algorithms, graph algorithms, and computational geometry.
    • Lecture Videos (Youtube)
    • Assignments
  • CS 261 A Second Course in Algorithms Stanford University Lecture Videos Assignments Lecture Notes
    • Algorithms for network optimization: max-flow, min-cost flow, matching, assignment, and min-cut problems. Introduction to linear programming. Use of LP duality for design and analysis of algorithms. Approximation algorithms for NP-complete problems such as Steiner Trees, Traveling Salesman, and scheduling problems. Randomized algorithms. Introduction to online algorithms.
    • Lecture Notes, Videos & Assignments (Youtube)
  • Courses

    CS Theory

  • CS 3220 Introduction to Scientific Computing Cornell University Assignments Lecture NotesReadings
    • In this one-semester survey course, we introduce numerical methods for solving linear and nonlinear equations, interpolating data, computing integrals, and solving differential equations, and we describe how to use these tools wisely (we hope!) when solving scientific problems.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4300 Information Retrieval Cornell University Assignments Lecture NotesReadings
    • Studies the methods used to search for and discover information in large-scale systems. The emphasis is on information retrieval applied to textual materials, but there is some discussion of other formats.The course includes techniques for searching, browsing, and filtering information and the use of classification systems and thesauruses. The techniques are illustrated with examples from web searching and digital libraries.
    • Syllabus
    • Lectures
    • Assignments
  • Courses

    Introduction to CS

  • CS 1410-2 and CS2420-20 Computer Science I and II for Hackers University of Utah Assignments Lecture Notes Readings
  • Courses

    Machine Learning

  • COMS 4771 Machine Learning Columbia University Assignments Lecture Notes
    • Course taught by Tony Jebara introduces topics in Machine Learning for both generative and discriminative estimation. Material will include least squares methods, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models, hidden Markov models, support vector machines, and kernel methods.
    • Lectures and Assignments
  • CS 395T Statistical and Discrete Methods for Scientific Computing University of Texas Lecture Videos Lecture Notes Assignments
    • Practical course in applying modern statistical techniques to real data, particularly bioinformatic data and large data sets. The emphasis is on efficient computation and concise coding, mostly in MATLAB and C++.
  • Courses

    Security

  • CS 161 Computer Security UC Berkeley Lecture Notes
    • Introduction to computer security. Cryptography, including encryption, authentication, hash functions, cryptographic protocols, and applications. Operating system security, access control. Network security, firewalls, viruses, and worms. Software security, defensive programming, and language-based security. Case studies from real-world systems.
  • CS 259 Security Modeling and Analysis Stanford Lecture Notes Assignments Readings
    • The course will cover a variety of contemporary network protocols and other systems with security properties. The course goal is to give students hands-on experience in using automated tools and related techniques to analyze and evaluate security mechanisms. To understand security properties and requirements, we will look at several network protocols and their properties, including secrecy, authentication, key establishment, and fairness. In parallel, the course will look at several models and tools used in security analysis and examine their advantages and limitations. In addition to fully automated finite-state model checking techniques, we will also study other approaches, such as constraint solving, process algebras, protocol logics, probabilistic model checking, game theory, and executable models based on logic programming.
  • CS 261 Internet/Network Security UC Berkeley Lecture Notes Readings
    • This class aims to provide a thorough grounding in network security suitable for those interested in conducting research in the area, as well as students more generally interested in either security or networking. We will also look at broader issues relating to Internet security for which networking plays a role. Topics include: denial-of-service; capabilities; network intrusion detection; worms; forensics; scanning; traffic analysis / inferring activity; architecture; protocol issues; legality and ethics; web attacks; anonymity; honeypots; botnets; spam; the underground economy; research pitfalls. The course is taught with an emphasis on seminal papers rather than bleeding-edge for a given topic.
  • CSCI 4968stars4.6k Modern Binary Exploitation Rensselaer Polytechnic Institute Lecture NotesAssignments
    • This repository contains the materials as developed and used by RPISEC to
  • Courses

    Artificial Intelligence

  • 6.868J The Society of Mind MIT Lecture Notes Assignments Readings
    • This course is an introduction, by Prof. Marvin Minsky, to the theory that tries to explain how minds are made from collections of simpler processes. It treats such aspects of thinking as vision, language, learning, reasoning, memory, consciousness, ideals, emotions, and personality. It incorporates ideas from psychology, artificial intelligence, and computer science to resolve theoretical issues such as wholes vs. parts, structural vs. functional descriptions, declarative vs. procedural representations, symbolic vs. connectionist models, and logical vs. common-sense theories of learning.
    • Lectures
    • Assignments
    • Readings
  • Courses

    Computer Graphics

  • CSCI-GA.2270-001 Graduate Computer Graphics New York University Assignments Lecture Notes Readings
    • Step-by-step study computer graphics, with reading and homework at each lecture (Fall2015)
    • Lectures
  • Courses

    Misc

  • CS 168 Computer Networks UC BerkeleyAssignments Readings Lecture Notes
    • This is an undergraduate level course covering the fundamental concepts of networking as embodied in the Internet. The course will cover a wide range of topics; see the lecture schedule for more details. While the class has a textbook, we will not follow its order of presentation but will instead use the text as a reference when covering each individual topic. The course will also have several projects that involve programming (in Python).
    • You should know programming, data structures, and software engineering. In terms of mathematics, your algebra should be very solid, you need to know basic probability, and you should be comfortable with thinking abstractly. The TAs will spend very little time reviewing material that is not specific to networking. We assume that you either know the material covered in those courses, or are willing to learn the material as necessary. We won't cover any of this material in lecture.
  • CS 262a Advanced Topics in Computer Systems UC Berkeley Readings Lecture Notes
    • CS262a is the first semester of a year-long sequence on computer systems research, including operating systems, database systems, and Internet infrastructure systems. The goal of the course is to cover a broad array of research topics in computer systems, and to engage you in top-flight systems research. The first semester is devoted to basic thematic issues and underlying techniques in computer systems, while the second semester goes deeper into topics related to scalable, parallel and distributed systems. The class is based on a discussion of important research papers and a research project.
    • Parts: Some Classics, Persistent Storage, Concurrency, Higher-Level Models, Virtual Machines, Cloud Computing, Parallel and Distributed Computing, Potpourri.
    • Prerequisites: The historical prerequisite was to pass an entrance exam in class, which covered undergraduate operating systems material (similar to UCB's CS162). There is no longer an exam. However, if you have not already taken a decent undergrad OS class, you should talk with me before taking this class. The exam had the benefit of "paging in" the undergrad material, which may have been its primary value (since the pass rate was high).
    • Readings & Lectures
  • CS 294 Cutting-edge Web Technologies Berkeley Assignments Readings Lecture Notes
    • Want to learn what makes future web technologies tick? Join us for the class where we will dive into the internals of many of the newest web technologies, analyze and dissect them. We will conduct survey lectures to provide the background and overview of the area as well as invite guest lecturers from various leading projects to present their technologies.
  • Oct 2nd, 2016

    Courses

    Computer Graphics

  • CMU 462 Computer Graphics Carnegie Mellon University Lecture Notes Assignments Readings
    • This course provides a comprehensive introduction to computer graphics. Focuses on fundamental concepts and techniques, and their cross-cutting relationship to multiple problem domains in graphics (rendering, animation, geometry, imaging). Topics include: sampling, aliasing, interpolation, rasterization, geometric transformations, parameterization, visibility, compositing, filtering, convolution, curves & surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, ray tracing, radiometry, reflectance, light fields, geometric optics, Monte Carlo rendering, importance sampling, camera models, high-performance ray tracing, differential equations, time integration, numerical differentiation, physically-based animation, optimization, numerical linear algebra, inverse kinematics, Fourier methods, data fitting, example-based synthesis.
    • Lectures and Readings
    • Assignments and Quizes
  • Sep 29th, 2016

    Courses

    Machine Learning

  • CS 229r Algorithms for Big Data Harvard University Lecture Videos Assignments Lecture Notes
    • Big data is data so large that it does not fit in the main memory of a single machine, and the need to process big data by efficient algorithms arises in Internet search, network traffic monitoring, machine learning, scientific computing, signal processing, and several other areas. This course will cover mathematically rigorous models for developing such algorithms, as well as some provable limitations of algorithms operating in those models.
    • Lectures (Youtube)
    • Assignments
  • Sep 15th, 2016

    Courses

    Misc

  • AM 207 Monte Carlo Methods and Stochastic Optimization Harvard University Lecture Videos Lecture Notes Assignments
    • This course introduces important principles of Monte Carlo techniques and demonstrates the power of these techniques with simple (but very useful) applications. All of this in Python!
    • Lecture Videos
    • Assignments
    • Lecture Notes
  • Jul 8th, 2016

    Courses

    Systems

  • 15-721 Database Systems Carnegie-Mellon University Lecture Videos Assignments Readings
    • This course is a comprehensive study of the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in both high-performance transaction processing systems (OLTP) and large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas. All class projects will be in the context of a real in-memory, multi-core database system. The course is appropriate for graduate students in software systems and for advanced undergraduates with strong systems programming skills.
    • Assignments
    • Lecture Videos
    • Readings
  • 15-749 Engineering Distributed Systems Carnegie-Mellon University Readings
    • A project focused course on Distributed Systems with an awesome list of readings
    • Readings
  • Jun 14th, 2016

    Courses

    Systems

  • CS 179 GPU Programming Caltech Assignments Lecture Notes
    • This course will cover programming techniques for the GPU. The course will introduce NVIDIA's parallel computing language, CUDA. Beyond covering the CUDA programming model and syntax, the course will also discuss GPU architecture, high performance computing on GPUs, parallel algorithms, CUDA libraries, and applications of GPU computing.
    • Assignments
    • Lecture Notes
  • May 27th, 2016

    Courses

    Systems

  • 15-213 Introduction to Computer Systems (ICS) Carnegie-Mellon University Lecture Videos Assignments Lecture Notes
    • The ICS course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation.
    • This is the must-have course for everyone in CMU who wants to learn some computer science no matter what major are you in. Because it's CMU (The course number is as same as the zip code of CMU)!
    • Lecture Notes
    • Videos
    • Assignments
  • Courses

    Misc

  • CS 193a Android App Development, Spring 2016 Stanford University Lecture VideosAssignments Lecture Notes
    • Course Description: This course provides an introduction to developing applications for the Android mobile platform.
    • Prerequisite: CS 106B or equivalent. Java experience highly recommended. OOP highly recommmended.
    • Devices: Access to an Android phone and/or tablet recommended but not required.
    • Videos: Videos list can be found here
    • Other materials: Some codes, handsout, homework ..... and lecture notes are not downloadable on the site due to login requirement. Please head to my Github repo herestars109 to download them.
  • Mar 19th, 2016

    Courses

    Programming Languages / Compilers

  • CIS 198 Rust Programming UPenn Lecture Notes Assignments
    • This course covers what makes Rust so unique and applies it to practical systems programming problems. Topics covered include traits and generics; memory safety (move semantics, borrowing, and lifetimes); Rust’s rich macro system; closures; and concurrency.
    • Assignmentsstars144
  • Mar 17th, 2016

    Courses

    Misc

  • CS 6630 Realistic Image Synthesis Cornell University Assignments Lecture Notes Readings
    • CS6630 is an introduction to physics-based rendering at the graduate level. Starting from the fundamentals of light transport we will look at formulations of the Rendering Equation, and a series of Monte Carlo methods, from sequential sampling to multiple importance sampling to Markov Chains, for solving the equation to make pictures. We'll look at light reflection from surfaces and scattering in volumes, illumination from luminaries and environments, and diffusion models for translucent materials. We will build working implementations of many of the algorithms we study, and learn how to make sure they are actually working correctly. It's fun to watch integrals and probability distributions transform into photographs of a slightly too perfect synthetic world.
    • Syllabus
    • Lectures
    • Assignments
    • Readings
  • CS 6640 Computational Photography Cornell University Assignments Lecture Notes
    • A course on the emerging applications of computation in photography. Likely topics include digital photography, unconventional cameras and optics, light field cameras, image processing for photography, techniques for combining multiple images, advanced image editing algorithms, and projector-camera systems.cornell.edu/courses/CS6630/2012sp/about.stm)
    • Lectures
    • Assignments
  • Mar 12th, 2016

    Courses

    Computer Graphics

  • CS 378stars76 3D Reconstruction with Computer Vision UTexas Assignments Lecture Notes
    • In this lab-based class, we'll dive into practical applications of 3D reconstruction, combining hardware and software to build our own 3D environments from scratch. We'll use open-source frameworks like OpenCV to do the heavy lifting, with the focus on understanding and applying state-of-the art approaches to geometric computer vision
    • Lectures
  • CS 4620 Introduction to Computer Graphics Cornell University Assignments Lecture Notes Readings
    • The study of creating, manipulating, and using visual images in the computer.
    • Assignments
    • Exams
  • CS 4670 Introduction to Computer Vision Cornell University Assignments Lecture Notes Readings
    • This course will provide an introduction to computer vision, with topics including image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object and face detection and recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, automatic vehicle navigation, and mobile computer vision. This is a project-based course, in which you will implement several computer vision algorithms throughout the semester.
    • Assignments
    • Lectures
  • CS 6670 Computer Vision Cornell University Assignments Lecture Notes
    • Introduction to computer vision. Topics include edge detection, image segmentation, stereopsis, motion and optical flow, image mosaics, 3D shape reconstruction, and object recognition. Students are required to implement several of the algorithms covered in the course and complete a final project.
    • Syllabus
    • Lectures
    • Assignments
  • Mar 11th, 2016

    Courses

    Artificial Intelligence

  • CS 188 Introduction to Artificial Intelligence UC Berkeley Lecture Videos Assignments Lecture Notes
    • This course will introduce the basic ideas and techniques underlying the design of intelligent computer systems. A specific emphasis will be on the statistical and decision-theoretic modeling paradigm. By the end of this course, you will have built autonomous agents that efficiently make decisions in fully informed, partially observable and adversarial settings. Your agents will draw inferences in uncertain environments and optimize actions for arbitrary reward structures. Your machine learning algorithms will classify handwritten digits and photographs. The techniques you learn in this course apply to a wide variety of artificial intelligence problems and will serve as the foundation for further study in any application area you choose to pursue.
    • Lectures
    • Projects
    • Exams
  • CS 4700 Foundations of Artificial Intelligence Cornell University Assignments Lecture Notes
    • This course will provide an introduction to computer vision, with topics including image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object and face detection and recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, automatic vehicle navigation, and mobile computer vision. This is a project-based course, in which you will implement several computer vision algorithms throughout the semester.
    • Assignments
    • Lectures
  • CS 6700 Advanced Artificial Intelligence Cornell University Lecture Notes Readings
    • The design of systems that are among top 10 performers in the world (human, computer, or hybrid human-computer).
    • Syllabus
    • Lectures
    • Readings
  • Feb 24th, 2016

    Courses

    Machine Learning

  • CS 156 Learning from Data Caltech Lecture Videos Assignments Lecture NotesReadings
    • This is an introductory course in machine learning (ML) that covers the basic theory, algorithms, and applications. ML is a key technology in Big Data, and in many financial, medical, commercial, and scientific applications. It enables computational systems to adaptively improve their performance with experience accumulated from the observed data. ML has become one of the hottest fields of study today, taken up by undergraduate and graduate students from 15 different majors at Caltech. This course balances theory and practice, and covers the mathematical as well as the heuristic aspects.
    • Lectures
    • Homework
    • Textbook
  • Feb 16th, 2016

    Courses

    Machine Learning

  • CS 231n Convolutional Neural Networks for Visual Recognition Stanford University Assignments Lecture Notes Lecture Videos
    • Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision.
    • Lecture Notes
    • Lecture Videos
    • Github Page
  • Jan 11th, 2016

    Courses

    Machine Learning

  • CS 109 Data Science Harvard University Assignments Lecture Notes Readings
    • Learning from data in order to gain useful predictions and insights. This course introduces methods for five key facets of an investigation: data wrangling, cleaning, and sampling to get a suitable data set; data management to be able to access big data quickly and reliably; exploratory data analysis to generate hypotheses and intuition; prediction based on statistical methods such as regression and classification; and communication of results through visualization, stories, and interpretable summaries.
    • Lectures
    • Slides
    • Labs and Assignments
    • 2014 Lectures
    • 2013 Lectures (slightly better)
  • Oct 28th, 2015

    Courses

    Introduction to CS

  • CS 61A Structure and Interpretation of Computer Programs [Python] UC Berkeley Lecture Videos Assignments Lecture Notes
    • In CS 61A, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming. Mastery of a particular programming language is a very useful side effect of studying these general techniques. However, our hope is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days' work.
    • Lecture Resources by Type
    • Lecture Resources by Topic
    • Additional Resources
    • Practice Problems
    • Extra Lectures
  • CS 61AS Structure & Interpretation of Computer Programs [Racket] UC Berkeley Lecture Videos Assignments Lecture Notes
    • A self-paced version of the CS61 Course but in Racket / Scheme. 61AS is a great introductory course that will ease you into all the amazing concepts that future CS courses will cover, so remember to keep an open mind, have fun, and always respect the data abstraction
    • Lecture Videos
    • Assignments and Notes
  • Courses

    Machine Learning

  • CS 287 Advanced Robotics UC Berkeley Assignments Lecture Notes
    • The course introduces the math and algorithms underneath state-of-the-art robotic systems. The majority of these techniques are heavily based on probabilistic reasoning and optimization---two areas with wide applicability in modern Artificial Intelligence. An intended side-effect of the course is to generally strengthen your expertise in these two areas.
    • Lectures Notes
    • Assignments
  • Oct 25th, 2015

    Courses

    Security

  • CIS 4930 / CIS 5930 Offensive Computer Security Florida State University Lecture Videos Assignments Lecture Notes
    • Course taught by W. Owen Redwood and Xiuwen Liu. It covers a wide range of computer security topics, starting from Secure C Coding and Reverse Engineering to Penetration Testing, Exploitation and Web Application Hacking, both from the defensive and the offensive point of view.
    • Lectures and Videos
    • Assignments
  • CS 5430 System Security Cornell University Assignments Lecture Notes Readings
    • This course discusses security for computers and networked information systems. We focus on abstractions, principles, and defenses for implementing military as well as commercial-grade secure systems.
    • Syllabus
    • Lectures
    • Assignments
  • Oct 14th, 2015

    Courses

    Systems

  • CS 168 Introduction to the Internet: Architecture and Protocols UC Berkeley Lecture Notes Assignments
    • This course is an introduction to the Internet architecture. We will focus on the concepts and fundamental design principles that have contributed to the Internet's scalability and robustness and survey the various protocols and algorithms used within this architecture. Topics include layering, addressing, intradomain routing, interdomain routing, reliable delivery, congestion control, and the core protocols (e.g., TCP, UDP, IP, DNS, and HTTP) and network technologies (e.g., Ethernet, wireless).
    • Lecture Notes & Assignments
    • Discussion Notes
  • Jul 19th, 2015

    Courses

    Introduction to CS

  • CS 106A Programming Methodology Stanford University Lecture Videos Assignments Lecture Notes
    • This course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles.
    • Lecture Videos
    • Assignments
    • All materials in a zip file
  • CS 106B Programming Abstractions Stanford University Lecture Videos Assignments Lecture Notes
    • This course is the natural successor to Programming Methodology and covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java.
    • Lectures
    • Assignments
    • All materials in a zip file
  • CS 107 Programming Paradigms Stanford University Lecture Videos Assignments Lecture Notes
    • Topics: Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming (using C and C++)
    • Lectures
    • Assignments
  • May 22nd, 2015

    Courses

    Misc

  • SCICOMP An Introduction to Efficient Scientific Computation Universität Bremen Lecture Videos
    • This is a graduate course in scientific computing created and taught by Oliver Serang in 2014, which covers topics in computer science and statistics with applications from biology. The course is designed top-down, starting with a problem and then deriving a variety of solutions from scratch.
    • Topics include memoization, recurrence closed forms, string matching (sorting, hash tables, radix tries, and suffix tries), dynamic programming (e.g. Smith-Waterman and Needleman-Wunsch), Bayesian statistics (e.g. the envelope paradox), graphical models (HMMs, Viterbi, junction tree, belief propagation), FFT, and the probabilistic convolution tree.
    • Lecture videos on Youtube and for direct download
  • May 9th, 2015

    Courses

    Machine Learning

  • CS 224d Deep Learning for Natural Language Processing Stanford University Lecture Videos Assignments Lecture Notes
    • Natural language processing (NLP) is one of the most important technologies of the information age. Understanding complex language utterances is also a crucial part of artificial intelligence. Applications of NLP are everywhere because people communicate most everything in language: web search, advertisement, emails, customer service, language translation, radiology reports, etc. There are a large variety of underlying tasks and machine learning models powering NLP applications. Recently, deep learning approaches have obtained very high performance across many different NLP tasks. These models can often be trained with a single end-to-end model and do not require traditional, task-specific feature engineering. In this spring quarter course students will learn to implement, train, debug, visualize and invent their own neural network models. The course provides a deep excursion into cutting-edge research in deep learning applied to NLP.
    • Syllabus
    • Lectures and Assignments
  • Apr 7th, 2015

    Courses

    CS Theory

  • 6.045 Great Ideas in Theoretical Computer Science MIT Lecture Notes Lecture Videos Readings
    • This course provides a challenging introduction to some of the central ideas of theoretical computer science. Beginning in antiquity, the course will progress through finite automata, circuits and decision trees, Turing machines and computability, efficient algorithms and reducibility, the P versus NP problem, NP-completeness, the power of randomness, cryptography and one-way functions, computational learning theory, and quantum computing. It examines the classes of problems that can and cannot be solved by various kinds of machines. It tries to explain the key differences between computational models that affect their power.
    • Syllabus
    • Lecture Notes
    • Lecture Videos
  • Mar 18th, 2015

    Courses

    Systems

  • CS 61C Great Ideas in Computer Architecture (Machine Structures) UC Berkeley Lecture VideosLecture Notes Assignments Readings
    • The subjects covered in this course include: C and assembly language programming, translation of high-level programs into machine language, computer organization, caches, performance measurement, parallelism, CPU design, warehouse-scale computing, and related topics.
    • Lecture Videos
    • Lecture Notes
    • Resources
    • Old Exams
  • Mar 8th, 2015

    Courses

    Computer Graphics

  • CAP 5415 Computer Vision University of Central Florida Lecture Videos Lecture Notes Assignments
    • An introductory level course covering the basic topics of computer vision, and introducing some fundamental approaches for computer vision research.
    • Lectures and Videos
    • Assignments
  • Feb 10th, 2015

    Courses

    Systems

  • CS 2043 Unix Tools & Scripting Cornell University Assignments Lecture NotesReadings
    • UNIX-like systems are increasingly being used on personal computers, mobile phones, web servers, and many other systems. They represent a wonderful family of programming environments useful both to computer scientists and to people in many other fields, such as computational biology and computational linguistics, in which data is naturally represented by strings. This course provides an intensive training to develop skills in Unix command line tools and scripting that enable the accomplishment and automation of large and challenging computing tasks. The syllabus takes students from shell basics and piping, to regular-expression processing tools, to shell scripting and Python.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4410 Operating Systems Cornell University Lecture NotesReadings
    • CS 4410 covers systems programming and introductory operating system design and implementation. We will cover the basics of operating systems, namely structure, concurrency, scheduling, synchronization, memory management, filesystems, security and networking. The course is open to any undergraduate who has mastered the material in CS3410/ECE3140.
    • Syllabus
    • Lectures
  • Courses

    CS Theory

  • CS 3110 Data Structures and Functional Programming Cornell University Assignments Lecture NotesReadings
    • CS 3110 (formerly CS 312) is the third programming course in the Computer Science curriculum, following CS 1110/1112 and CS 2110. The goal of the course is to help students become excellent programmers and software designers who can design and implement software that is elegant, efficient, and correct, and whose code can be maintained and reused.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4810 Introduction to Theory of Computing Cornell University Assignments Lecture Notes Readings
    • This undergraduate course provides a broad introduction to the mathematical foundations of computer science. We will examine basic computational models, especially Turing machines. The goal is to understand what problems can or cannot be solved in these models.
    • Syllabus
    • Lectures
    • Assignments
  • Courses

    Introduction to CS

  • CS 1109 Fundamental Programming Concepts Cornell University Assignments Lecture Notes
    • This course provides an introduction to programming and problem solving using a high-level programming language. It is designed to increase your knowledge level to comfortably continue to courses CS111x. Our focus will be on generic programming concepts: variables, expressions, control structures, loops, arrays, functions, pseudocode and algorithms. You will learn how to analyze problems and convert your ideas into solutions interpretable by computers. We will use MATLAB; because it provides a productive environment, and it is widely used by all engineering communities.
    • Syllabus
    • Lectures
    • Assignments
  • CS 1110 Introduction to Computing Using Python Cornell University Assignments Lecture NotesReadings
    • Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming, and GUIs (graphical user interfaces). Weekly labs provide guided practice on the computer, with staff present to help. Assignments use graphics and GUIs to help develop fluency and understanding.
    • Syllabus
    • Lectures
    • Assignments
  • CS 1112 Introduction to Computing Using Matlab Cornell University Assignments Lecture NotesReadings
    • Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
    • Syllabus
    • Lectures
    • Assignments
    • Projects
  • CS 1115 Introduction to Computational Science and Engineering Using Matlab Graphical User Interfaces Cornell University Assignments Lecture NotesReadings
    • Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. NO programming experience is necessary; some knowledge of Calculus is required.
    • Syllabus
    • Lectures
    • Projects
  • CS 1130 Transition to OO Programming Cornell University Assignments Lecture NotesReadings
    • Introduction to object-oriented concepts using Java. Assumes programming knowledge in a language like MATLAB, C, C++, or Fortran. Students who have learned Java but were not exposed heavily to OO programming are welcome.
    • Syllabus
    • Lectures
    • Assignments
  • CS 1133 Transition to Python Cornell University Assignments Lecture NotesReadings
    • Introduction to the Python programming language. Covers the basic programming constructs of Python, including assignment, conditionals, iteration, functions, object-oriented design, arrays, and vectorized computation. Assumes programming knowledge in a language like Java, Matlab, C, C++, or Fortran.
    • Syllabus
    • Lectures
    • Assignments
  • CS 2110 Object-Oriented Programming and Data Structures Cornell University Assignments Lecture NotesReadings
    • CS 2110 is an intermediate-level programming course and an introduction to computer science. Topics include program design and development, debugging and testing, object-oriented programming, proofs of correctness, complexity analysis, recursion, commonly used data structures, graph algorithms, and abstract data types. Java is the principal programming language. The course syllabus can easily be extracted by looking at the link to lectures.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4302 Web Information Systems Cornell University Assignments Lecture NotesReadings
    • This course will introduce you to technologies for building data-centric information systems on the World Wide Web, show the practical applications of such systems, and discuss their design and their social and policy context by examining cross-cutting issues such as citizen science, data journalism and open government. Course work involves lectures and readings as well as weekly homework assignments, and a semester-long project in which the students demonstrate their expertise in building data-centric Web information systems.
    • Syllabus
    • Lectures
    • Assignments
  • Courses

    Misc

  • CS 3152 Introduction to Computer Game Development Cornell University Assignments Lecture NotesReadings
    • A project-based course in which programmers and designers collaborate to make a computer game. This course investigates the theory and practice of developing computer games from a blend of technical, aesthetic, and cultural perspectives. Technical aspects of game architecture include software engineering, artificial intelligence, game physics, computer graphics, and networking. Aesthetic and cultural include art and modeling, sound and music, game balance, and player experience.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4152 Advanced Topics in Computer Game Development Cornell University Assignments Lecture NotesReadings
    • Project-based follow-up course to CS/INFO 3152. Students work in a multidisciplinary team to develop a game that incorporates innovative game technology. Advanced topics include 3D game development, mobile platforms, multiplayer gaming, and nontraditional input devices. There is a special emphasis on developing games that can be submitted to festivals and competitions, or that can be commercialized.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4154 Analytics-driven Game Design Cornell University Assignments Lecture NotesReadings
    • A project-based course in which programmers and designers collaborate to design, implement, and release a video game online through popular game portals. In this course, students will use the internet to gather data anonymously from players. Students will analyze this data in order to improve their game over multiple iterations. Technical aspects of this course include programming, database architecture, and statistical analysis.
    • Syllabus
    • Lectures
    • Assignments
  • CS 4860 Applied Logic Cornell University Assignments Lecture Notes
    • In addition to basic first-order logic, when taught by Computer Science this course involves elements of Formal Methods and Automated Reasoning. Formal Methods is concerned with proving properties of algorithms, specifying programming tasks and synthesizing programs from proofs. We will use formal methods tools such as interactive proof assistants (see www.nuprl.org). We will also spend two weeks on constructive type theory, the language used by the Coq and Nuprl proof assistants.
    • Syllabus
    • Lectures
    • Assignments
  • CS 5220 Applications of Parallel Computers Cornell University Assignments Lecture Notes Readings
    • How do we solve the large-scale problems of science quickly on modern computers? How do we measure the performance of new or existing simulation codes, and what things can we do to make them run faster? How can we best take advantage of features like multicore processors, vector units, and graphics co-processors? These are the types of questions we will address in CS 5220, Applications of Parallel Computers. Topics include:
      • Single-processor architecture, caches, and serial performance tuning
      • Basics of parallel machine organization
      • Distributed memory programming with MPI
      • Shared memory programming with OpenMP
      • Parallel patterns: data partitioning, synchronization, and load balancing
      • Examples of parallel numerical algorithms
      • Applications from science and engineering
    • Lectures
    • Assignments
  • CS 5540 Computational Techniques for Analyzing Clinical Data Cornell University Assignments Lecture NotesReadings
    • CS5540 is a masters-level course that covers a wide range of clinical problems and their associated computational challenges. The practice of medicine is filled with digitally accessible information about patients, ranging from EKG readings to MRI images to electronic health records. This poses a huge opportunity for computer tools that make sense out of this data. Computation tools can be used to answer seemingly straightforward questions about a single patient's test results (“Does this patient have a normal heart rhythm?”), or to address vital questions about large populations (“Is there any clinical condition that affects the risks of Alzheimer”). In CS5540 we will look at many of the most important sources of clinical data and discuss the basic computational techniques used for their analysis, ranging in sophistication from current clinical practice to state-of-the-art research projects.
    • Syllabus
    • Lectures
    • Assignments
  • CS 5724 Evolutionary Computation Cornell University Assignments Lecture Notes
    • This course will cover advanced topics in evolutionary algorithms and their application to open-ended computational design. The field of evolutionary computation tries to address large-scale optimization and planning problems through stochastic population-based methods. It draws inspiration from evolutionary processes in nature and in engineering, and also serves as abstract models for these phenomena. Evolutionary processes are generally weak methods that require little information about the problem domain and hence can be applied across a wide variety of applications. They are especially useful for open-ended problem domains for which little formal knowledge exists and the number of parameters is undefined, such as for the general engineering design process. This course will provide insight to a variety of evolutionary computation paradigms, such as genetic algorithms, genetic programming, and evolutionary strategies, as well as governing dynamics of co-evolution, arms races and mediocre stable states. New methods involving symbiosis models and pattern recognition will also be presented. The material will be intertwined with discussions of representations and results for design problems in a variety of problem domains including software, electronics, and mechanics.
    • Syllabus
    • Lectures
    • Assignments
  • CS 6650 Computational Motion Cornell University Readings
    • Covers computational aspects of motion, broadly construed. Topics include the computer representation, modeling, analysis, and simulation of motion, and its relationship to various areas, including computational geometry, mesh generation, physical simulation, computer animation, robotics, biology, computer vision, acoustics, and spatio-temporal databases. Students implement several of the algorithms covered in the course and complete a final project. This offering will also explore the special role of motion processing in physically based sound rendering.
  • CS 6840 Algorithmic Game Theory Cornell University Assignments Lecture Notes Readings
    • Algorithmic Game Theory combines algorithmic thinking with game-theoretic, or, more generally, economic concepts. The course will study a range of topics at this interface
    • Syllabus
    • Lectures
    • Assignments
    • Readings
  • Feb 2nd, 2015

    Courses

    Systems

  • CSCE 3613 Operating Systems University of Arkansas (Fayetteville) Assignments Lecture NotesReadings - An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies.
  • CSCI 360 Computer Architecture 3 CUNY Hunter College Assignments Lecture Notes
    • A course that covers cache design, buses, memory hierarchies, processor-peripheral interfaces, and multiprocessors, including GPUs.
  • Courses

    Algorithms

  • CSCI 104 Data Structures and Object Oriented Design Assignments Lecture Notes University of Southern California (USC)
  • Jan 29th, 2015

    Introduction

    Legend

  • Lecture Videos - Lecture Videos
  • Lecture Notes - Lecture Notes
  • Assignments - Assignments / Labs
  • Readings - Readings
  • Courses

    Systems

  • CS 140 Operating Systems Stanford University Assignments Lecture Notes
    • This class introduces the basic facilities provided in modern operating systems. The course divides into three major sections. The first part of the course discusses concurrency. The second part of the course addresses the problem of memory management. The third major part of the course concerns file systems.
    • Lecture Notes
    • Assignments
  • CS 162 Operating Systems and Systems Programming UC Berkeley Lecture Videos Lecture Notes Assignments Readings
    • The purpose of this course is to teach the design of operating systems and operating systems concepts that appear in other advanced systems. Topics we will cover include concepts of operating systems, systems programming, networked and distributed systems, and storage systems, including multiple-program systems (processes, interprocess communication, and synchronization), memory allocation (segmentation, paging), resource allocation and scheduling, file systems, basic networking (sockets, layering, APIs, reliability), transactions, security, and privacy.
  • CS 452 Real-Time Programming University of Waterloo Assignments Lecture Notes
    • Write a real-time OS microkernel in C, and application code to operate a model train set in response to real-time sensor information. The communication with the train set runs at 2400 baud so it takes about 61 milliseconds to ask all of the sensors for data about the train's possible location. This makes it particularly challenging because a train can move about 3 centimeters in that time. One of the most challenging and time-consuming courses at the University of Waterloo.
    • Assignments
    • Lecture notes
  • CS 4414 Operating Systems University of Virginia Lecture Videos Assignments
    • A course (that) covers topics including: Analysis process communication and synchronization; resource management; virtual memory management algorithms; file systems; and networking and distributed systems. The primary goal of this course is to improve your ability to build scalable, robust and secure computing systems. It focuses on doing that by understanding what underlies the core abstractions of modern computer systems.
    • Syllabus
    • Lectures
  • PODC Principles of Distributed Computing ETH-Zurich Assignments Readings Lecture Notes
    • 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
  • SPAC Parallelism and Concurrency Univ of Washington Readings
    • 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
  • 6.824 Distributed Systems MIT Assignments Lecture Notes
    • 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
    • Readings
  • 6.828 Operating Systems MIT Assignments Lecture Notes
    • MIT's operating systems course focusing on the fundamentals of OS design including booting, memory management, environments, file systems, multitasking, and more. In a series of lab assignments, you will build JOS, an OS exokernel written in C.
    • Assignments
    • Lectures
    • Videos Note: These are student recorded cam videos of the 2011 course. The videos explain a lot of concepts required for the labs and assignments.
  • 15-440 Distributed Systems Carnegie-Mellon University Assignments Lecture Notes
    • Introduction to distributed systems with a focus on teaching concepts via projects implemented in the Go programming language.
    • Assignments
  • Courses

    Programming Languages / Compilers

  • CIS 194 Introduction to Haskell Penn Engineering Assignments Lecture Notes
    • 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 exercises
  • Clojure Functional Programming with Clojure University of Helsinki Assignments
    • The course is an introduction to functional programming with a dynamically typed language Clojure. We start with an introduction to Clojure; its syntax and development environment. Clojure has a good selection of data structures and we cover most of them. We also go through the basics of recursion and higher-order functions. The course material is in English.
    • Github Page
  • COS 326 Functional Programming Princeton University Assignments Lecture Notes
    • Covers functional programming concepts like closures, tail-call recursion & parallelism using the OCaml programming language
    • Lectures
    • Assignments
  • CS 164 Hack your language! UC Berkeley Lecture Videos