Introduction
The resources of computer science courses (including electrical engineering) are extremely abundant, and perhaps it is the most resourceful subject in comparison to other disciplines on the Internet. In this article, I aim to compare some of the courses offered by several world-renowned universities and finally come up with certain practical summaries. I am not going to cover all of the CS courses, but instead focus on the most substantial core courses. There are already many awesome summary lists, and I will make more streamlined conclusions based on these lists.
Research Material
I mainly pay attention to a list (Awesome CS Courses) created by prakhar1989. The list does not include other online course platforms such as Coursera, Udacity, and Edx, but I may discuss the courses provided by these platforms in further articles.
In this list, there are above 50 universities worldwide, most of which are located in North America, especially the United States. I used to think that one of MIT, Standford, UC Berkeley or CMU would get the first place on the list. Unexpectedly, Cornell University is the real champion, and it provides nearly twice as many courses as the second one (although there are rare lecture videos offered by Cornell).
It seems impossible to discuss all of them, so I decided to pick ten of them and briefly introduce these universities as follows.
Top Universities Overview
Best Computer Science Schools
QS World University Rankings by Subject 2018: Computer Science & Information Systems.
Rank 10: University of Virginia
US News CS Rank: 30
Contributions: 4 (2 Videos of 4)
CS 2150 Program & Data Representation
16s-4102 Algorithms Video
CS 4414 Operating Systems Video
CS 4610 Programming Languages and Compilers
Rank 9: University of Washington
US News CS Rank: 6
Contributions: 5 (3 / 5)
CSE 154 Web Programming
CSE 331 Software Design and Implementation
CSE 341 Programming Languages Video
CSEP 501 Compiler Construction Video
CSEP 552 Distributed Systems Video
Rank 8: CUNY Hunter College
Contributions: 6 (0 / 6)
CSCI 135 Software Design and Analysis I
CSCI 235 Software Design and Analysis II
CSCI 335 Software Design and Analysis III
CSCI 360 Computer Architecture 3
CSCI 493.66 UNIX System Programming (formerly UNIX Tools)
CSCI 493.75 Parallel Computing
Rank 7: Harvard University
US News CS Rank: 16
Contributions: 6 (5 / 6)
CS 50 Introduction to Computer Science Video
CS 50 Intro to Game Developement Video
CS 109 Data Science
CS 224 Advanced Algorithms Video
CS 229r Algorithms for Big Data Video
AM 207 Monte Carlo Methods and Stochastic Optimization Video
Rank 6: Univ of Illinois, Urbana-Champaign
US News CS Rank: 5
Contributions: 6 (2 / 6)
CS 173 Discrete Structures
CS 241 Systems Programming (Spring 2016)
CS 374 Algorithms & Models of Computation (Fall 2014) Video
CS 421 Programming Languages and Compilers Video
CS 425 Distributed Systems
CS 473/573 Fundamental Algorithms
Rank 5: Carnegie Mellon University
US News CS Rank: 1
Contributions: 14 (9 / 14)
14-740 Fundamentals of Computer Networks Video
15-213 Introduction to Computer Systems (ICS) Video
15-319/619 Cloud Computing (ICS) Video
15-418 Parallel Computer Architecture and Programming Video
15-440 Distributed Systems
15-721 Database Systems Video
15-445/645 Database Systems Video
15-451/651 Algorithms
15-749 Engineering Distributed Systems
10-601 Machine Learning Video
10-708 Probabilistic Graphical Models Video
11-785 Deep Learning
CMU 462 Computer Graphics
18-447 Introduction to Computer Architecture Video
Rank 4: Massachusetts Institute of Technology
US News CS Rank: 1
Contributions: 16 (8 / 16)
6.001 Structure and Interpretation of Computer Programs Video
6.004 Computation Structures Video
6.005 Software Construction
6.006 Introduction to Algorithms Video
6.045 Great Ideas in Theoretical Computer Science Video
6.046J/18.410J Design and Analysis of Algorithms Video
6.824 Distributed Systems
6.828 Operating Systems
6.851 Advanced Data Structures Video
6.854/18.415J Advanced Algorithms Video
6.854J/18.415J Advanced Algorithms
6.857 Computer and Network Security
6.858 Computer Systems Security Video
6.868J The Society of Mind
6.945 Adventures in Advanced Symbolic Programming
6.INT Hacking a Google Interview
Rank 3: University of California--Berkeley
US News CS Rank: 1
Contributions: 20 (10 / 20)
CS 10 The Beauty and Joy of Computing Video
CS 61A Structure and Interpretation of Computer Programs [Python] Video
CS 61AS Structure & Interpretation of Computer Programs [Racket] Video
CS 61B Data Structures Video
CS 61C Great Ideas in Computer Architecture (Machine Structures) Video
CS 161 Computer Security
CS 162 Operating Systems and Systems Programming Video
CS 164 Hack your language! Video
CS 168 Introduction to the Internet: Architecture and Protocols
CS 168 Computer Networks
CS 186 Introduction to Database Systems Video
CS 188 Introduction to Artificial Intelligence Video
CS 189 Introduction To Machine Learning
CS 261 Internet/Network Security
CS 262a Advanced Topics in Computer Systems
CS 276 Foundations of Cryptography
CS 278 Complexity Theory
CS 287 Advanced Robotics
CS 294 Cutting-edge Web Technologies
Info 290 Analyzing Big Data with Twitter Video
Rank 2: Stanford University
US News CS Rank: 1
Contributions: 26 (14 / 26)
CS 101 Computer Science 101 Video
CS 103 Mathematical Foundations of Computing
CS 106A Programming Methodology Video
CS 106B Programming Abstractions Video
CS 107 Programming Paradigms Video
CS 107 Computer Organization & Systems Video
CS 108 Object Oriented System Design
CS 140 Operating Systems
CS 143 Compiler construction
CS 155 Computer and Network Security
CS 193a Android App Development, Spring 2016 Video
CS 193p Developing Applications for iOS Video
CS 223A Introduction to Robotics Video
CS 224d Deep Learning for Natural Language Processing Video
CS 231n Convolutional Neural Networks for Visual Recognition Video
CS 240h Functional Systems in Haskell
CS246 Mining Massive Data Sets Video
CS 259 Security Modeling and Analysis
CS 261 A Second Course in Algorithms Video
CS276 Information Retrieval and Web Search
18-636 Browser Security Video
EE103 Introduction to Matrix Methods
StatLearning Intro to Statistical Learning Video
CVX 101 Convex Optimization
CS20si Tensorflow for Deep Learning Research
CS 97SI Introduction to Competitive Programming
Rank 1: Cornell University
US News CS Rank: 6
Contributions: 44 (0 / 44)
CS 1109 Fundamental Programming Concepts
CS 1110 Introduction to Computing Using Python
CS 1112 Introduction to Computing Using Matlab
CS 1115 Introduction to CS and Engineering Using Matlab Graphical User Interfaces
CS 1130 Transition to OO Programming
CS 1133 Transition to Python
CS 2043 Unix Tools & Scripting
CS 2110 Object-Oriented Programming and Data Structures
CS 3110 Data Structures and Functional Programming
CS 3152 Introduction to Computer Game Development
CS 3220 Introduction to Scientific Computing
CS 3410 Computer System Organization and Programming
CS 4120 Introduction to Compilers
CS 4152 Advanced Topics in Computer Game Development
CS 4154 Analytics-driven Game Design
CS 4300 Information Retrieval
CS 4302 Web Information Systems
CS 4410 Operating Systems
CS 4620 Introduction to Computer Graphics
CS 4670 Introduction to Computer Vision
CS 4700 Foundations of Artificial Intelligence
CS 4780 Machine Learning
CS 4786 Machine Learning for Data Science
CS 4810 Introduction to Theory of Computing
CS 4812 Quantum Information Processing
CS 4820 Introduction to Analysis of Algorithms
CS 4860 Applied Logic
CS 5114 Network Programming Languages
CS 5142 Scripting Languages
CS 5150 Software Engineering
CS 5220 Applications of Parallel Computers
CS 5412 Cloud Computing
CS 5430 System Security
CS 5540 Computational Techniques for Analyzing Clinical Data
CS 5724 Evolutionary Computation
CS 6118 Types and Semantics
CS 6452 Evolutionary Computation
CS 6630 Realistic Image Synthesis
CS 6640 Computational Photography
CS 6650 Computational Motion
CS 6670 Computer Vision
CS 6700 Advanced Artificial Intelligence
CS 6810 Theory of Computing
CS 6840 Algorithmic Game Theory
Courses
-
CS Introduction and Programming
- Basic
- CS 10 The Beauty and Joy of Computing UC Berkeley
- CS 50 Introduction to Computer Science Harvard University
- CS 101 Computer Science 101 Stanford University
- CS 1109 Fundamental Programming Concepts Cornell University
- CSCE 2004 Programming Foundations I University of Arkansas (Fayetteville)
- 6.005 Software Construction, Fall 2016 MIT
- SICP (Structure & Interpretation of Computer Programs) and Languages (Python, Matlab, Scala, Clojure, Rust, Racket, Haskell)
- 6.001 Structure and Interpretation of Computer Programs MIT
- CS 1410-2 and CS2420-20 Computer Science I and II for Hackers Utah
- CS 61A Structure and Interpretation of Computer Programs [Python] Berkeley
- CS 1110 Introduction to Computing Using Python Cornell University
- CS 1133 Transition to Python Cornell University
- CS 61AS Structure & Interpretation of Computer Programs [Racket] Berkeley
- CS 109 Programming Practice Using Scala KAIST
- CS 1112 Introduction to Computing Using Matlab Cornell University
- CS 1115 Introduction to Computational Science and Engineering Using Matlab Graphical User Interfaces Cornell University
- CIS 198 Rust Programming UPenn
- CIS 194 Introduction to Haskell Penn Engineering
- CS 240h Functional Systems in Haskell Stanford University
- Methodology, Abstractions, Concepts, and Paradigms ( Object-Oriented Programming)
- Basic
-
Computer Structure
- Systems and Organization
- 15-213 Introduction to Computer Systems (ICS) Carnegie-Mellon University
- 6.004 Computation Structures
- CS 241 Systems Programming (Spring 2016) UIUC
- CS 3410 Computer System Organization and Programming Cornell University
- 6.945 Adventures in Advanced Symbolic Programming MIT
- 6.858 Computer Systems Security MIT
- CS 262a Advanced Topics in Computer Systems UC Berkeley
- CS 107 Computer Organization & Systems Stanford University
- Computer Architecture
- Systems and Organization
-
Internet and Networks
-
Data Structure and Algorithms
- CS 223 Purely Functional Data Structures In Elm University of Chicago
- CS 2110 Object-Oriented Programming and Data Structures Cornell University
- CS 3110 Data Structures and Functional Programming Cornell University
- CS 4820 Introduction to Analysis of Algorithms Cornell University
- CS 61B Data Structures UC Berkeley
- CS 224 Advanced Algorithms Harvard University
- CS 2150 Program & Data Representation University of Virginia
- 16s-4102 Algorithms University of Virginia
- CSCI 104 Data Structures and Object Oriented Design USC
- 6.006 Introduction to Algorithms MIT
- 6.046J/18.410J Design and Analysis of Algorithms MIT
- 6.851 Advanced Data Structures MIT
- 6.854J/18.415J Advanced Algorithms MIT
- CS 97SI Introduction to Competitive Programming Stanford University
- CS 261 A Second Course in Algorithms Stanford University
- CS 473/573 Fundamental Algorithms Univ of Illinois, Urbana-Champaign
- CSE 373 Analysis of Algorithms Stony Brook University
- ECS 122A Algorithm Design and Analysis UC Davis
- ECS 222A Graduate Level Algorithm Design and Analysis UC Davis
- 15-451/651 Algorithms Carnegie Mellon University
-
Component Deconstruction
-
Operating Systems
- CS 140 Operating Systems Stanford University
- CS 162 Operating Systems and Systems Programming UC Berkeley
- CS 4410 Operating Systems Cornell University
- CS 4414 Operating Systems University of Virginia
- CSCE 3613 Operating Systems University of Arkansas (Fayetteville)
- CSCI-UA.0202: Operating Systems NYU
- Hack the Kernel Introduction to Operating Systems SUNY University at Buffalo, NY
- 6.828 Operating Systems MIT
-
Compiler
- CS 75 Principles of Compiler Design Swathmore College
- CS 91 Introduction to Programming Languages Swathmore College
- CMSC 430 Introduction to Compilers Univ of Maryland
- CS 143 Compiler construction Stanford University
- CS 164 Hack your language! UC Berkeley
- CS 173 Programming Languages Brown University
- CS 421 Programming Languages and Compilers UIUC
- CS 4120 Introduction to Compilers Cornell University
- CS 4400 Programming Languages Northeastern University
- CS 4610 Programming Languages and Compilers University of Virginia
- CS 5142 Scripting Languages Cornell University
- CS 5470 Compilers University of Utah
- CS 6118 Types and Semantics Cornell University
- CSC 253 CPython internals: A ten-hour codewalk through the Python interpreter source code University of Rochester
- CSE 341 Programming Languages University of Washington
- CSE P 501 Compiler Construction University of Washington
- 6.945 Adventures in Advanced Symbolic Programming
-
Database System
- CS 186 Introduction to Database Systems UC Berkeley
- 15-721 Database Systems Carnegie-Mellon University
- 15-445/645 Database Systems Carnegie-Mellon University
- Open Sourced Elective: Database and Rails Intro to Ruby on Rails UT
-
-
Software engineering and Application
- Method and Foundations
- CS 108 Object Oriented System Design Stanford
- ECE 459 Programming for Performance University of Waterloo
- CSE 331 Software Design and Implementation University of Washington
- CS 5150 Software Engineering Cornell University
- CS 100 Open Source Software Construction UC Riverside
- CS 294 Cutting-edge Web Technologies Berkeley
- CS 411 Software Architecture Design Bilkent University
- ICS 314 Software Engineering University of Hawaii
- CS 5150 Software Engineering Cornell University
- CS 5220 Applications of Parallel Computers Cornell University
- CSE 154 Web Programming University of Washington
- IGME 582 Humanitarian Free & Open Source Software Development
- Game Development
- CS 75 Introduction to Game Development Tufts University
- CS 50 Intro to Game Developement Harvard University
- CS 3152 Introduction to Computer Game Development Cornell University
- CS 4152 Advanced Topics in Computer Game Development Cornell University
- CS 4154 Analytics-driven Game Design Cornell University
- Mobile App Development (Android and ios)
- Method and Foundations
-
Utilities, Tools, Skills and Computing
- C,UNIX, and Scripting
- CS 241 Systems Programming (Spring 2016) Univ of Illinois, Urbana-Champaign
- CS 2043 Unix Tools & Scripting Cornell University
- CSCI 493.66 UNIX System Programming (formerly UNIX Tools) CUNY
- CS 100 Open Source Software Construction UC Riverside
- 15-122 Principles of Imperative Computation CMU
- CS 5142 Scripting Languages Cornell University
- Functional Programming
- CIS 194 Introduction to Haskell Penn Engineering
- Clojure Functional Programming with Clojure University of Helsinki
- COS 326 Functional Programming Princeton University
- CS 223 Purely Functional Data Structures In Elm University of Chicago
- CS 240h Functional Systems in Haskell Stanford University
- CS 421 Programming Languages and Compilers UIUC
- CS 3110 Data Structures and Functional Programming Cornell University
- CS 4610 Programming Languages and Compilers University of Virginia
- DMFP Discrete Mathematics and Functional Programming Wheaton Video
- CS 696 Functional Design and Programming San Diego State University
- L28 Advanced Functional Programming University of Cambridge
- CIS 500 Software Foundations University of Pennsylvania
- CSCE 3193 Programming Paradigms University of Arkansas (Fayetteville)
- CS 61A SICP [Python] UC Berkeley Video
- CS 107 Programming Paradigms Stanford University Video
- CS 1410-2 and CS2420-20 Computer Science I and II for Hackers University of Utah
- 6.001 Structure and Interpretation of Computer Programs MIT Video
- 6.005 Software Construction, Fall 2016 MIT
- Parallel Programming and Concurrency
- GPU Programming
- Distributed Systems
- CS 425 Distributed Systems Univ of Illinois, Urbana-Champaign
- 6.824 Distributed Systems MIT
- CSEP 552 Distributed Systems University of Washington Video
- 15-440 Distributed Systems Carnegie-Mellon University
- 15-749 Engineering Distributed Systems Carnegie-Mellon University
- Info 290 Analyzing Big Data with Twitter Video
- CS 262a Advanced Topics in Computer Systems UC Berkeley
- Cloud Computing
- CS 5412 Cloud Computing Cornell University
- 15-319/619 Cloud Computing (ICS) Carnegie-Mellon University Video
- CS 6452 Evolutionary Computation Cornell University
- C,UNIX, and Scripting
-
Theory and Foundation (will be discussed in other articles)
- Logic
- Discrete Structures
- Computing or Computation
- Complexity Theory
Computer Vision and Graphics (will be discussed in other articles)
AI and Machine learning (will be discussed in other articles)
Conclusions
1.The actual number of courses that can be searched online is much larger than the courses provided by this list.
If we go to the official website of those top universities to search their computer science curriculums, generally we will find more comprehensive lists of courses.
2.Top universities pay much attention to the big picture of computer science (systems, architecutre, methodology ) as well as foundations (algorithms, compiler, logic, discrete structures).
It is not a bad thing for computer science students to learn a lot of mathematics; however, if we just study it purely but fail to know the applications, it will only be futile. World-class universities have already developed solid theoretical foundations for computer science. The graduates need to have a deep understanding of algorithms, principles of programming languages, operating systems and concurrency, networks and abstraction of layers, and computer architecture. More importantly, they will do a lot of valuable practice to get a firsthand experience. In comparison, even China's top universities still highly focus on mathematics and physics training in computer science. Some of their computer science students must study mathematical analysis, complex analysis, functional analysis, electromagnetic field theory, and even quantum mechanics. This seems to be fantastic, but the real consequence is that many graduates are seriously lacking in programming experience and are only half-baked about the mathematical foundations they have learned.
3.The top four universities in computer science are well deserved. (CMU, MIT, Stanford, UC Berkeley)
The four universities were tied to the US News list, more specifically, they are the best computer science schools in the United States. Although Cornell University has contributed many courses, several other universities have generously opened their lecture videos. If we rank these universities by their contribution of lecture videos, then the top four schools can be ranked highest.
4.Even if there is no lecture video, it does not affect students' thorough mastery of the course content. Good projects or labs may be more important than lectures.
Computer science places great emphasis on practice. Only by processes of constantly making mistakes and correcting, and creating components like compilers or operating systems by our own can we truly understand the content of lectures.
5.Universities that can keep pace with the times are the most vital.
Deep learning is a field that has only been developed on a large scale in recent years, but some universities have already opened many related courses. This shows that these schools are very adaptable to change, not only providing students with a long-lasting theoretical foundation, but also bringing students the latest knowledge. (Stanford > CMU > Berkeley > MIT)
Reference
Github: Awesome CS Courses
Github: Path to free self-taught education in Computer Science
Scott Young: MIT Challenge
34 门课改变人生
知乎: YouTube 上有哪些计算机方面的值得推荐的公开课
知乎:如何阅读《深入理解计算机系统》这本书?
c0 documentation
科學網: CMU计算机系的本科教学体系
UC Berkeley: CS Major Upper Division Degree Requirements
UC Berkeley: CS Courses
CMU: Bachelors Curriculum
CMU:15-129