Академический Документы
Профессиональный Документы
Культура Документы
(Updated)
Introduction
[Update: See also the follow-up post to this piece, An Intensive Bachelor's Level Computer
Science Curriculum Program.]
A few months back we took an in-depth look at MITs free online Introduction to Computer
Science course, and laid out a self-study time table to complete the class within four months,
along with a companion post providing learning benchmarks to chart your progress. In the
present article, I'll step back and take a much more broad look at com-sci course offerings
available for free on the internet, in order to answer a deceptively straightforward question: is
it possible to complete the equivalent of a college bachelors degree in computer science
through college and university courses that are freely available online? And if so, how does
one do so?
The former question is more difficult to answer than it may at first appear. There are, of
course, tons of resources relating to computer science and engineering, computer
programming, software engineering, etc. that can easily be found online with a few simple
searches. However, despite this fact, it is very unlikely that you would find a free, basic
computer science curriculum offered in one complete package from any given academic
source. The reason for this is fairly obvious. Why pay $50,000 a year to go to Harvard, for
example, if you could take all the exact same courses online for free?
Yet, this does not mean that all the necessary elements for such a curriculum are not freely
accessible. Indeed, today there are undoubtedly more such resources available at the click of
a button than any person could get through even in an entire lifetime of study. The problem is
that organizing a series of random lecture courses you find on the internet into a coherent
curriculum is actually rather difficult, especially when those courses are offered by different
institutions for different reasons and for considerably different programs of study, and so on.
Indeed, colleges themselves require massive advisory bureaucracies to help students
navigate their way through complicated degree requirements, even though those programs
already form a coherent curriculum and course of study. But, still, its not impossible to do it
yourself, with a little bit of help perhaps.
The present article will therefore attempt to sketch out a generic bachelors level curriculum
in computer science on the basis of program requirements distilled from a number of different
computer science departments at top universities from around the country. I will then provide
links to a set of specific college and university courses that are freely available online which, if
taken together, would satisfy the requirements of our generic computer science curriculum.
A Hypothetical Curriculum
So, what are the requirements of our hypothetical computer science program? Despite
overarching similarities, there are actually many differences between courses of study offered
at different colleges and universities, especially in computer science. Some programs are
more geared toward electrical engineering and robotics, others toward software development
and programming, or toward computer architecture and hardware design, or mathematics and
cryptography, or networking and applications, and on and on. Our curriculum will attempt to
integrate courses that would be common to all such programs, while also providing a
selection of electives that could function as an introduction to those various concentrations.
There are essentially four major parts to any bachelors level course of study, in any given
field: pre-requisites, core requirements, concentration requirements and electives.
Pre-requisites are what you need to know before you even begin. For many courses of study,
there are no pre-requisites, and no specialized prior knowledge is required or presumed on the
part of the student, since the introductory core requirements themselves provide students
Introductory Courses
Intro to Computer Science, pick two of three:
Core Courses
Data Structures and Algorithms, pick one of two:
Operating Systems:
Computer Architecture:
Networking:
Data Communications:
Electives
Web Development:
Data Structures:
Systems:
Programming Languages:
Security:
Cryptography:
App Development:
Artificial Intelligence:
Graphics:
Math:
The idea was not to provide a substitute for an actual college or university education (that
would typically also require a large amount of alcohol at the very least, which, unfortunately,
is not freely available online), but rather to aggregate resources that have been made freely
available online from disparate institutions and organize them into the sort of logical structure
one would likely find in a general bachelors level computer science program.
On the basis of the feedback from that post, weve put together a new list of course offerings
that covers a lot more ground. In the process, Ive also loosened up a number of implicit
strictures on resources for inclusion in the present listing. For example, some of these courses
require registration at a particular website and/or may not yet be available in full (ex.
Coursera), a couple others are actually compiled from other resources freely available online
(ex. Saylor). But all of them are still free.
Whereas the first post was intended to provide a general overview of the field along with a
generic curriculum and necessary resources suitable for an absolute beginner (containing 27
courses altogether), the present listing is much more extensive and intensive in scope
representing 72 courses from 30 different institutions. While we have added a number of new
introductory level courses, there is a lot more that may be of interest to intermediate level
folks and perhaps even some who are highly advanced and are considering a refresher course
or two.
The course listing is broken down into three major divisions: Introductory Courses, Core
Courses and Intermediate/Advanced Courses. Individual courses are then listed by category
within each division.
Last but not least, thanks to everyone who provided feedback and offered suggestions on how
to improve the original listing. Special thanks to Pablo Torre who provided a ton of links in the
comments to the first post, many of which are included here.
Introductory Courses
Intro to Computer Science:
Mathematics:
Programming:
Theory of Computation:
Core Courses
Theory:
Mathematics:
Operating Systems:
Computer Programming:
Software Engineering:
Computer Architecture:
Data Management:
Artificial Intelligence:
Systems:
Programming:
Compilers: Stanford
Software Engineering:
Web Development:
Security:
Cryptography:
Cryptography 1: Stanford
Cryptography 2: Stanford
Digital Media:
Here's a list of 120 free online programming/CS courses (MOOCs) with feedback(i.e.
exams/homeworks/assignments) that you can start this month (Jan 2015)
This is not the complete list of MOOCs starting in Jan 2015, just the ones relevant to this
community. The complete list of courses starting in Jan 2015 can be found over at Class
Central (273 courses). I maintain a much bigger list of these courses over at Class Central
BEGINNER(30)
Course Name
Start
Date
Lengt
h
Provider
Rating
Jan
5th
NA
edX
4.2 (6
reviews)
Jan
7th
9
weeks
edX
4.6 (18
reviews)
Jan
12th
16
weeks
Janux
NA
Usable Security
Jan
19th
6
weeks
Coursera
NA
Jan
26th
8
weeks
FutureLearn
NA
Self
Paced
7
weeks
Udacity
5 (33
reviews)
Self
Paced
NA
openHPI
4 (1
review)
Self
Paced
12
weeks
OpenLearning
NA
Self
Paced
NA
Others
4.5 (2
reviews)
Self
Paced
NA
Others
NA
Self
Paced
NA
openHPI
NA
Self
Paced
10
weeks
Udacity
3.8 (5
reviews)
Self
Paced
4
weeks
Open2Study
4 (2
reviews)
Self
Paced
2
weeks
Udacity
NA
Self
NA
Udacity
NA
Course Name
Start
Date
Lengt
h
Provider
Rating
Paced
DB: Introduction to Databases
Self
Paced
11
weeks
Stanford
OpenEdx
4.3 (3
reviews)
Self
Paced
3
weeks
Others
3.7 (6
reviews)
Self
Paced
NA
Udacity
1 (1
review)
Self
Paced
4
weeks
Udacity
4 (2
reviews)
Self
Paced
NA
openHPI
4 (1
review)
Self
Paced
4
weeks
openSAP
NA
Introduction to Programming in C
Self
Paced
NA
NPTEL
1 (1
review)
Self
Paced
NA
Cambridge
University Press
5 (1
review)
Self
Paced
3
weeks
Udacity
NA
JavaScript Basics
Self
Paced
3
weeks
Udacity
NA
Self
Paced
3
weeks
Udacity
4 (1
review)
Self
Paced
NA
edX
4.5 (10
reviews)
Self
Paced
NA
Coursera
4.8 (13
reviews)
Introduction to Databases
Self
Paced
NA
Coursera
4.8 (24
reviews)
Self
Paced
NA
Coursera
4.3 (8
reviews)
INTERMEDIATE(73)
Course Name
Start
Date
Lengt
h
Provider
Rating
Regression Models
Jan
5th
4
weeks
Coursera
NA
Course Name
Start
Date
Lengt
h
Provider
Rating
Jan
5th
4
weeks
Coursera
2 (1
review)
Jan
5th
4
weeks
Coursera
NA
Jan
5th
9
weeks
Coursera
3.7 (3
reviews)
Jan
5th
4
weeks
Coursera
2.7 (10
reviews)
Jan
5th
4
weeks
Coursera
2.8 (4
reviews)
Cryptography I
Jan
5th
6
weeks
Coursera
4.6 (14
reviews)
Jan
5th
4
weeks
Open2Study
4.1 (8
reviews)
Jan
5th
4
weeks
Coursera
2.3 (19
reviews)
R Programming
Jan
5th
4
weeks
Coursera
2.6 (43
reviews)
Jan
5th
4
weeks
Coursera
2.7 (10
reviews)
Jan
5th
4
weeks
Coursera
2.8 (4
reviews)
Reproducible Research
Jan
5th
4
weeks
Coursera
4 (2
reviews)
Statistical Inference
Jan
5th
4
weeks
Coursera
1.5 (2
reviews)
Jan
6th
6
weeks
edX
4.7 (3
reviews)
Jan
6th
7
weeks
MongoDB
University
4.5 (4
reviews)
Jan
6th
7
weeks
MongoDB
University
5 (2
reviews)
Jan
6th
7
weeks
MongoDB
University
NA
Jan
MongoDB
NA
Start
Date
Lengt
h
Provider
6th
weeks
University
Jan
6th
7
weeks
MongoDB
University
NA
Jan
7th
NA
Coursera
3.8 (5
reviews)
Jan
12th
16
weeks
Janux
NA
Information Visualization
Jan
13th
15
weeks
Others
NA
Jan
19th
6
weeks
Coursera
4.9 (18
reviews)
Jan
19th
5
weeks
edX
NA
Jan
21st
NA
openSAP
NA
Algorithms, Part I
Jan
23rd
6
weeks
Coursera
4.3 (12
reviews)
Analysis of Algorithms
Jan
23rd
6
weeks
Coursera
NA
Self
Paced
7
weeks
Udacity
3.8 (4
reviews)
Self
Paced
7
weeks
Udacity
4.7 (9
reviews)
Self
Paced
7
weeks
Udacity
4.2 (5
reviews)
Self
Paced
7
weeks
Udacity
NA
Self
Paced
7
weeks
Udacity
4.4 (5
reviews)
Self
Paced
7
weeks
Udacity
4 (2
reviews)
Self
Paced
NA
Others
NA
Self
Paced
7
weeks
Udacity
NA
Course Name
Rating
Start
Date
Lengt
h
Provider
Rating
Self
Paced
10
weeks
Udacity
NA
Self
Paced
7
weeks
Udacity
4 (2
reviews)
Self
Paced
NA
openHPI
NA
Self
Paced
10
weeks
Others
NA
Self
Paced
NA
CourseSites
NA
Self
Paced
NA
CourseSites
4 (3
reviews)
Self
Paced
NA
openSAP
NA
Self
Paced
NA
Udacity
5 (1
review)
Self
Paced
NA
Others
3 (1
review)
Self
Paced
NA
openSAP
5 (3
reviews)
Self
Paced
NA
openSAP
NA
Self
Paced
NA
Udacity
NA
Self
Paced
8
weeks
Udacity
4 (2
reviews)
Self
Paced
8
weeks
OpenCourseWo
rld
NA
Self
Paced
8
weeks
Udacity
4 (1
review)
Self
Paced
8
weeks
Udacity
4.6 (5
reviews)
Self
NA
openHPI
5 (1
Course Name
Problems
Course Name
Start
Date
Lengt
h
Provider
Paced
Rating
review)
Self
Paced
NA
openSAP
NA
Ada: Overview
Self
Paced
NA
Others
NA
Self
Paced
NA
Others
NA
Self
Paced
NA
Others
NA
Self
Paced
1
weeks
Udacity
NA
Self
Paced
4
weeks
Udacity
NA
Self
Paced
6
weeks
Udacity
NA
Self
Paced
NA
Universiteplus
NA
Self
Paced
8
weeks
Udacity
NA
Self
Paced
8
weeks
Udacity
NA
Self
Paced
12
weeks
Udacity
5 (1
review)
Self
Paced
NA
openHPI
NA
Object-Oriented JavaScript
Self
Paced
5
weeks
Udacity
5 (1
review)
Self
Paced
2
weeks
Udacity
NA
Self
Paced
7
weeks
Udacity
NA
Self
Paced
2
weeks
Udacity
NA
Self
Paced
4
weeks
Udacity
4.3 (3
reviews)
Course Name
Start
Date
Lengt
h
Provider
Rating
Self
Paced
1
weeks
Udacity
NA
Self
Paced
10
weeks
Udacity
NA
Self
Paced
6
weeks
Udacity
NA
Course Name
Start
Date
Lengt
h
Provid
er
Rating
Jan 5th
10
weeks
Course
ra
5 (2
reviews)
Hardware Security
Jan 5th
6
weeks
Course
ra
NA
Jan
12th
7
weeks
Course
ra
NA
Jan
12th
9
weeks
Course
ra
5 (1
review)
Self
Paced
7
weeks
Udacit
y
5 (5
reviews)
Self
Paced
7
weeks
Udacit
y
4 (2
reviews)
Self
Paced
7
weeks
openH
PI
5 (2
reviews)
CS344 - Introduction to Parallel Programming Using CUDA to Harness the Power of GPUs
Self
Paced
7
weeks
Udacit
y
3 (1
review)
Self
Paced
10
weeks
Udacit
y
5 (2
reviews)
Self
Paced
7
weeks
Udacit
y
NA
Self
Paced
NA
Udacit
y
NA
Self
Paced
NA
Udacit
y
NA
Self
Paced
4
weeks
Udacit
y
NA
ADVANCED(17)
Course Name
Start
Date
Lengt
h
Provid
er
Rating
Self
Paced
NA
openS
AP
NA
Self
Paced
NA
openS
AP
NA
Self
Paced
2
weeks
Udacit
y
NA
Self
Paced
NA
openS
AP
NA