awesome-courses
by prakhar1989
List of awesome university courses for learning Computer Science!
AI summary
Course catalog
Lists and describes various computer science courses with their resources and topics.
- stars
- 58K
- forks
- 8.2K
- watching
- 2.3K
- awesome lists
- 11
- entries
- 702
What's in the list
702 links in 377 sections, with live GitHub stats.activeno commit in 2y
Courses / Systems
Courses / Systems / CS 61C
Courses / Systems
Courses / Systems / CS 107
Courses / Systems
Courses / Systems / CS 140
Courses / Systems
Courses / Systems / 6.004
Courses / Systems
Courses / Systems / CS 162 / 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
- David Culler
Operating Systems course by the Chair of EECS, UC Berkeley
- Lecture Videos
Spring 2015 lectures
- Lecture Notes
Spring 2015 lectures
Courses / Systems
Courses / Systems / CS 168
Courses / Systems
Courses / Systems / CS 179
Courses / Systems
Courses / Systems / CS 186
Courses / Systems
Courses / Systems / CS 241
Courses / Systems
Courses / Systems / CS 425
Courses / Systems
Courses / Systems / CS 452
Courses / Systems
Courses / Systems / CS 2043
Courses / Systems
Courses / Systems / CS 3410
Courses / Systems
Courses / Systems / CS 4410
Courses / Systems
Courses / Systems / CS 4414
Courses / Systems
Courses / Systems / CS 5412
- book
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 is also a gem and recommended as a must read in Google's tutorial on
Courses / Systems
- CSCE 3613
An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies
Courses / Systems / CSCE 3613
Courses / Systems
Courses / Systems / CSCI-UA.0202: Operating Systems (Undergrad)
Courses / Systems
Courses / Systems / Hack the Kernel
- Dr.Geoffrey Challen
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
Courses / Systems
Courses / Systems / ECE 459
Courses / Systems
Courses / Systems / ECGR4101/5101
Courses / Systems
Courses / Systems / PODC
Courses / Systems
Courses / Systems / 6.824
- Assignments
Just do
Courses / Systems
Courses / Systems / 6.828
- 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
Courses / Systems
Courses / Systems / CSEP 552
- Lectures
of a previous session are available to watch
Courses / Systems
Courses / Systems / 15-213
Courses / Systems
Courses / Systems / 15-319/619
Courses / Systems
Courses / Systems / 15-410
Courses / Systems
Courses / Systems / 15-418
Courses / Systems
Courses / Systems / 15-440
Courses / Systems
Courses / Systems / 15-721
Courses / Systems
Courses / Systems / 15-445/645
Courses / Systems
Courses / Systems / 15-749
Courses / Systems
Courses / Systems / 18-447
- Onur Mutlu
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
- Homeworks
7 HWs with answer set as well
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 75
- incremental approach to compiler design
Modelled after the influential paper on , this course teaches how to build a compiler in OCaml
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 91
- Pyret
Uses the programming language & book to understand the fundamentals of programming languages
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CIS 194
- Previous
semester also available, with more exercises
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CIS 198
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CMSC 430
Courses / Programming Languages / Compilers
- Corsopl
Lecture Notes - Readings
Courses / Programming Languages / Compilers / COS 326
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 143
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 164
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 173
- HtDP
Course by Prof. Krishnamurthi (author of ) and numerous other on programming languages. Uses a custom designed programming language to teach the concepts. There was an hosted in 2012, which includes all lecture videos for you to enjoy
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 223
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 240h
- Lab1
3 Assignments: , ,
Courses / Programming Languages / Compilers
- CS 421
Course that uses OCaml to teach functional programming and programming language design
Courses / Programming Languages / Compilers / CS 421
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 3110
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 4120
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 4400
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 4610
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 5114
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 5142
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 5470
- fantastic blog
If you're a fan of Prof Matt's writing on his you ought to give this a shot. The course covers the design and implementation of compilers, and it explores related topics such as interpreters, virtual machines and runtime systems. Aside from the Prof's witty take on the page has tons of interesting links on programming languages, parsing and compilers
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CS 6118
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CSE 341
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / CSE P 501
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / DMFP
Courses / Programming Languages / Compilers
Courses / Programming Languages / Compilers / 6.945
- Assignments
: Extensive programming assignments, using MIT/GNU Scheme. Students should have significant programming experience in Scheme, Common Lisp, Haskell, CAML or other "functional" language
Courses / Programming Languages / Compilers
Courses / Algorithms
Courses / Algorithms / CS 61B
- 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
- Labs
The link to labs and projects is included in the website
Courses / Algorithms
Courses / Algorithms / CS 97SI
Courses / Algorithms
Courses / Algorithms / CS 224
Courses / Algorithms
Courses / Algorithms / CS 261
Courses / Algorithms
Courses / Algorithms / CS 473/573
Courses / Algorithms
Courses / Algorithms / CS 2150
Courses / Algorithms
Courses / Algorithms / CS 4820
Courses / Algorithms
Courses / Algorithms / CSCI 104
Courses / Algorithms
Courses / Algorithms / CSCI 135
Courses / Algorithms
Courses / Algorithms / CSCI 235
Courses / Algorithms
Courses / Algorithms / CSCI 335
Courses / Algorithms
Courses / Algorithms / CSE 331
Courses / Algorithms
Courses / Algorithms / CSE 373
- book
Prof Steven Skiena's no stranger to any student when it comes to algorithms. His seminal has been touted by many to be best for . In addition, he's also well-known for tutoring students in competitive . If you're looking to brush up your knowledge on Algorithms, you can't go wrong with this course
Courses / Algorithms
Courses / Algorithms / ECS 122A
- Dan Gusfield
Taught by in 2010, this course is an undergraduate introduction to algorithm design and analysis. It features traditional topics, such as Big Oh notation, as well as an importance on implementing specific algorithms. Also featured are sorting (in linear time), graph algorithms, depth-first search, string matching, dynamic programming, NP-completeness, approximation, and randomization
Courses / Algorithms
Courses / Algorithms / ECS 222A
- Dan Gusfield
This is the graduate level complement to the ECS 122A undergraduate algorithms course by in 2011. It assumes an undergrad course has already been taken in algorithms, and, while going over some undergraduate algorithms topics, focuses more on increasingly complex and advanced algorithms
Courses / Algorithms
Courses / Algorithms / 6.INT
Courses / Algorithms
Courses / Algorithms / 6.006
Courses / Algorithms
Courses / Algorithms / 6.046J/18.410J
- 6.006
This is an intermediate algorithms course with an emphasis on teaching techniques for the design and analysis of efficient algorithms, emphasizing methods of application. Topics include divide-and-conquer, randomization, dynamic programming, greedy algorithms, incremental improvement, complexity, and cryptography. This course assumes that students know how to analyze simple algorithms and data structures from having taken . It introduces students to the design of computer algorithms, as well as analysis of sophisticated algorithms
Courses / Algorithms
Courses / Algorithms / 6.851
- Advanced Algorithms
This is an advanced DS course, you must be done with the course before attempting this one
- Lectures
Contains videos from sp2012 version, but there isn't much difference
- Assignments
contains the calendar as well
Courses / Algorithms
Courses / Algorithms / 6.854/18.415J
- NB
on to access the
Courses / Algorithms
Courses / Algorithms / 6.854J/18.415J
Courses / Algorithms
Courses / Algorithms / 15-451/651
- Manuel Blum
The required algorithms class that go in depth into all basic algorithms and the proofs behind them. This is one of the heavier algorithms curriculums on this page. Taught by Avrim Blum and who has a Turing Award due to his contributions to algorithms. Course link includes a very comprehensive set of reference notes by Avrim Blum
Courses / Algorithms
Courses / Algorithms / 16s-4102
Courses / CS Theory
Courses / CS Theory / CIS 500
Courses / CS Theory
Courses / CS Theory / CS 173
- Textbook
Written by the professor. Includes Instructor's Guide
Courses / CS Theory
Courses / CS Theory / CS 374
Courses / CS Theory
Courses / CS Theory / CS 3110
Courses / CS Theory
Courses / CS Theory / CS 3220
Courses / CS Theory
Courses / CS Theory / CS 4300
Courses / CS Theory
Courses / CS Theory / CS 4810
Courses / CS Theory
Courses / CS Theory / CS 6810
Courses / CS Theory
Courses / CS Theory / CSCE 3193
Courses / CS Theory
Courses / CS Theory / 6.045
Courses / Introduction to CS
Courses / Introduction to CS / CS 10
- Snap*!*
(based on Scratch by MIT)
Courses / Introduction to CS
Courses / Introduction to CS / CS 50
Courses / Introduction to CS
Courses / Introduction to CS / CS 61A
Courses / Introduction to CS
Courses / Introduction to CS / CS 61AS
Courses / Introduction to CS
Courses / Introduction to CS / CS 106A
Courses / Introduction to CS
Courses / Introduction to CS / CS 106B
Courses / Introduction to CS
Courses / Introduction to CS / CS 107
Courses / Introduction to CS
Courses / Introduction to CS / CS 109
- http://otfried.org/courses/cs109/index.html
[Lectures] ( )
- http://otfried.org/courses/cs109/index.html
[Assignments] ( )
Courses / Introduction to CS
Courses / Introduction to CS / CS 1109
Courses / Introduction to CS
Courses / Introduction to CS / CS 1110
Courses / Introduction to CS
Courses / Introduction to CS / CS 1112
Courses / Introduction to CS
Courses / Introduction to CS / CS 1115
Courses / Introduction to CS
Courses / Introduction to CS / CS 1130
Courses / Introduction to CS
Courses / Introduction to CS / CS 1133
Courses / Introduction to CS
- CS 1410-2
and
Courses / Introduction to CS / CS 1410-2
- Professor Matthew Flatt
An intro course in the spirit of SICP designed by (one of the lead designers of Racket and author of HtDP). Mostly Racket and C, and a bit of Java, with explanations on how high level functional programming concepts relate to the design of OOP programs. Do this one before SICP if SICP is a bit too much
Courses / Introduction to CS
Courses / Introduction to CS / CS 2110
- lectures
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
Courses / Introduction to CS
Courses / Introduction to CS / CS 4302
Courses / Introduction to CS
Courses / Introduction to CS / CSCE 2004
Courses / Introduction to CS
Courses / Introduction to CS / CSCI E-1
Courses / Introduction to CS
Courses / Introduction to CS / CS-for-all
Courses / Introduction to CS
Courses / Introduction to CS / 6.001
- Textbook
( , )
Courses / Introduction to CS
Courses / Introduction to CS / 6.005
Courses / Machine Learning
Courses / Machine Learning / DEEPNLP
Courses / Machine Learning
Courses / Machine Learning / CS20si
Assignments
available on Github
Courses / Machine Learning
Courses / Machine Learning / COMS 4771
- Tony Jebara
Course taught by 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
Courses / Machine Learning
Courses / Machine Learning / CS 109
Courses / Machine Learning
Courses / Machine Learning / CS 156
Courses / Machine Learning
Courses / Machine Learning / CS 189
Courses / Machine Learning
Courses / Machine Learning / CS 224d
Courses / Machine Learning
Courses / Machine Learning / CS 229r
- Lectures
( )
Courses / Machine Learning
Courses / Machine Learning / CS 231n
Courses / Machine Learning
Courses / Machine Learning / CS 287
Courses / Machine Learning
Courses / Machine Learning / CS 395T
Courses / Machine Learning
Courses / Machine Learning / CS 4780
Courses / Machine Learning
Courses / Machine Learning / CS 4786
Courses / Machine Learning
Courses / Machine Learning / CVX 101
- Textbook
The course concentrates on recognizing and solving convex optimization problems that arise in applications. Topics addressed include the following. Convex sets, functions, and optimization problems. Basics of convex analysis. Least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems. Optimality conditions, duality theory, theorems of alternative, and applications. Interior-point methods. Applications to signal processing, statistics and machine learning, control and mechanical engineering, digital and analog circuit design, and finance. - -
Courses / Machine Learning
Courses / Machine Learning / DS-GA 1008
- Yann Lecun
This increasingly popular course is taught through the Data Science Center at NYU. Originally introduced by , it is now led by , although Prof. Lecun is rumored to still stop by from time to time. It covers the theory, technique, and tricks that are used to achieve very high accuracy for machine learning tasks in computer vision and natural language processing. The assignments are in Lua and hosted on Kaggle
Courses / Machine Learning
Courses / Machine Learning / EECS E6893 & EECS E6895
- Dr. Ching-Yung Lin
Taught by
Courses / Machine Learning
Courses / Machine Learning / EECS E6894
Courses / Machine Learning
Courses / Machine Learning / EE103
- Stephen Boyd
The course covers the basics of matrices and vectors, solving linear equations, least-squares methods, and many applications. It'll cover the mathematics, but the focus will be on using matrix methods in applications such as tomography, image processing, data fitting, time series prediction, finance, and many others. EE103 is based on a book that and are currently writing. Students will use a new language called to do computations with matrices and vectors
Courses / Machine Learning
Courses / Machine Learning / Fast.ai Introduction to Machine Learning for Coders
Courses / Machine Learning
Courses / Machine Learning / Info 290
Courses / Machine Learning
Courses / Machine Learning / Machine Learning: 2014-2015
Torch
The course focusses on neural networks and uses the deep learning library (implemented in Lua) for exercises and assignments. Topics include: logistic regression, back-propagation, convolutional neural networks, max-margin learning, siamese networks, recurrent neural networks, LSTMs, hand-writing with recurrent neural networks, variational autoencoders and image generation and reinforcement learning
Courses / Machine Learning
Courses / Machine Learning / StatLearning
- An Introduction to Statistical Learning, with Applications in R
The lectures cover all the material in which is a more approachable version of the (or ESL) book
Courses / Machine Learning
Courses / Machine Learning / 10-601
Courses / Machine Learning
Courses / Machine Learning / 10-708
Courses / Machine Learning
Courses / Machine Learning / CS246
Courses / Machine Learning
Courses / Machine Learning / CS276
Courses / Machine Learning
Courses / Machine Learning / Practical_RL
Courses / Machine Learning
Courses / Machine Learning / UvA DEEP LEARNING
Courses / Security
Courses / Security / CIS 4930 / CIS 5930
- W. Owen Redwood
Course taught by and . 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
Courses / Security
Courses / Security / CS 5430
Courses / Security
Courses / Security / CSCI 4968
- RPISEC
This repository contains the materials as developed and used by to teach Modern Binary Exploitation at in Spring 2015. This was a university course developed and run solely by students to teach skills in vulnerability research, reverse engineering, and binary exploitation
Courses / Security
Courses / Security / CSCI 4976
- RPISEC
This repository contains the materials as developed and used by to teach Malware Analysis at in Fall 2015. This was a university course developed and run solely by students, primarily using the
Courses / Security
Courses / Security / EECS 588
- J. Alex Halderman
Taught by who has analyzed the security of Electronic Voting Machines in the and
- Readings
book by Michael Sikorski and Andrew Honig, to teach skills in reverse engineering, malicious behaviour, malware, and anti-analysis techniques
Courses / Security
Courses / Security / 6.857
- Lecture Notes
Emphasis on applied cryptography and may include: basic notion of systems security, cryptographic hash functions, symmetric cryptography (one-time pad, stream ciphers, block ciphers), cryptanalysis, secret-sharing, authentication codes, public-key cryptography (encryption, digital signatures), public-key attacks, web browser security, biometrics, electronic cash, viruses, electronic voting, Assignments include a group final project. Topics may vary year to year
Courses / Security
Courses / Security / 6.858
- James Mickens
Taught by and
Courses / Security
Courses / Artificial Intelligence
Courses / Artificial Intelligence / CS 188
Courses / Artificial Intelligence
Courses / Artificial Intelligence / CS 4700
Courses / Artificial Intelligence
Courses / Artificial Intelligence / CS 6700
Courses / Artificial Intelligence
Courses / Artificial Intelligence / 6.868J
- Marvin Minsky
This course is an introduction, by Prof. , 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
Courses / Computer Graphics
Courses / Computer Graphics / CAP 5415
Courses / Computer Graphics
Courses / Computer Graphics / CIS 581
Courses / Computer Graphics
Courses / Computer Graphics / CMU 462
Courses / Computer Graphics
Courses / Computer Graphics / CS 378
Courses / Computer Graphics
Courses / Computer Graphics / CS 4620
Courses / Computer Graphics
Courses / Computer Graphics / CS 4670
Courses / Computer Graphics
Courses / Computer Graphics / CS 6670
Courses / Computer Graphics
Courses / Computer Graphics / CSCI 1230
Courses / Computer Graphics
Courses / Computer Graphics / CSCI-GA.2270-001
Courses / Misc
Courses / Misc / AM 207
Courses / Misc
Courses / Misc / CS 75
- Ming Y. Chow
The course taught by teaches game development initially in PyGame through Python, before moving on to addressing all facets of game development. Topics addressed include game physics, sprites, animation, game development methodology, sound, testing, MMORPGs and online games, and addressing mobile development in Android, HTML5, and iOS. Most to all of the development is focused on PyGame for learning principles
Courses / Misc
Courses / Misc / CS 50
- CS50
This course picks up where Harvard College’s 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 , 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
Courses / Misc
Courses / Misc / CS 100
Courses / Misc
Courses / Misc / CS 193a
Courses / Misc
Courses / Misc / CS 193p
- Programming Abstractions
Recommended:
Courses / Misc
Courses / Misc / CS 262a
- UCB's CS162
Prerequisites: The historical prerequisite was to pass an entrance exam in class, which covered undergraduate operating systems material (similar to ). 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)
Courses / Misc
Courses / Misc / CS 3152
Courses / Misc
Courses / Misc / CS 4152
Courses / Misc
Courses / Misc / CS 4154
Courses / Misc
Courses / Misc / CS 4812
Courses / Misc
Courses / Misc / CS 4860
- www.nuprl.org
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 ). We will also spend two weeks on constructive type theory, the language used by the Coq and Nuprl proof assistants
Courses / Misc
Courses / Misc / CS 5150
Courses / Misc
Courses / Misc / CS 5220
Courses / Misc
Courses / Misc / CS 5540
Courses / Misc
Courses / Misc / CS 5724
Courses / Misc
Courses / Misc / CS 6452
Courses / Misc
Courses / Misc / CS 6630
Courses / Misc
Courses / Misc / CS 6640
Courses / Misc
Courses / Misc / CS 6840
Courses / Misc
Courses / Misc / CSE 154
Courses / Misc
Courses / Misc / ESM 296-4F
- James Frew
Taught by , , and
- GitHub
(includes lecture materials and labs)
Courses / Misc
Courses / Misc / ICS 314
- Philip Johnson
Taught by
- "Athletic Software Engineering" pedagogy
Introduction to software engineering using the
Courses / Misc
Courses / Misc / I485 / H400
- Luis Rocha
Course taught by about the multi-disciplinary field algorithms inspired by naturally occurring phenomenon. This course provides introduces the following areas: L-systems, Cellular Automata, Emergence, Genetic Algorithms, Swarm Intelligence and Artificial Immune Systems. It's aim is to cover the fundamentals and enable readers to build up a proficiency in applying various algorithms to real-world problems
Courses / Misc
Courses / Misc / Open Sourced Elective: Database and Rails
Courses / Misc
Courses / Misc / SCICOMP
- Oliver Serang
This is a graduate course in scientific computing created and taught by 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
- Lecture videos on Youtube
and for direct
Courses / Misc
Nothing in this list matches your filter.
Featured in 11 awesome lists
Each link jumps to the spot where the list mentions awesome-courses.