NB This curriculum is my modified version of the OSSU and Open Source Computer Degree syllabus with extra MIT OCW EECS courses.
Your path to a Open Source Computer Science Degree
This is a curated list of free courses from reputable universities like MIT, Stanford, and Princeton that satisfy the same requirements as an undergraduate Computer Science degree, minus general education.
The OSU curriculum is a complete education in computer science using online materials initially based on the OSSU, MIT OCW and OSCS syllabi. As per the OSSU's mandate, "The courses themselves are among the very best in the world, often coming from Harvard, Princeton, MIT, etc.". The aim being to take the best elements of these open source courses in order to provide the framework for a comprehensive Computer Science Degree syllabus.
Please note, this syllabus is initially forked from the OSSU and Forrest Knight OSCS syllabuses. I've taken what I consider to be the best elements of both and have added other courses from the MIT OCW courselist in alignment with my own interests e.g I replaced the Duke/ San Diego Java courses with MIT courses in Java, C and C++, based on my own interests. (Please note git commit messages for things I have changed and updated - at the moment I'm tweaking courses as I go through the syllabus i.e. I add new courses or swap courses if I feel there is a better or more pertinent version of a course eg swapping out University of San Diego's course on computer graphics for MIT's course or adding extra game development courses from MIT (including OCW notes as well as the lecture video's usually linked to both MIT OCW site and Youtube)).
After having sampled a good chunk of the courses from the afore-mentioned institutions, I ascertained that the content and structure of the MIT courses were the best fit for my educational needs. This was time consuming in the short-run but overall makes sure my time and effort is directed properly.
As such, these following courses/ modules are pertinent to how I want to shape my own syllabus. For example, I am particularly interested in AI, neuroscience, computational biology and mathematics in relation to the study of computer science. Where applicable, the MIT courses are done via edx etc, but please note that not all courses are certificate eligible (as they are sourced from the MIT OCW directory directly).
I've also looked at the 6-3 MIT catalog and the general MIT OCW course list and also this list in order to put together a curriculum that reflects my interests and educational needs (hence a lot of the graduate courses towards the end of the syllabus).
One way to appraoch this OSU Computer Science Degree syllabus, which I highly recommend, is to do what I have done and use an existing open source syllabus (or that of the OSSU or OSCS) that satisfies the demands of a full degree, and create your own Open Source Degree Syllabus and tailor it to your own needs!
Refer to Course Info for general details on what is involved in the syllabus.
Title | Overview |
---|---|
What Do computer Scientists Do | (from lecture 26 that goes over what Computer Scientists do and what careers CS students can go into.) |
Intro lecture to Computer Science | MIT |
Courses | School | Duration | Effort | Frequency | Notes |
---|---|---|---|---|---|
Computer Science 101 | Stanford | - | - | self-paced | introductory course |
Intro to Computer Science | Harvard | 10 weeks | 10-20 hours/week | self-paced | none |
Introduction to Computer Science and Programming using Python (Part 1) (alt) | MIT | 9 weeks | 15 hours/week | high school algebra | |
Computational thinking and problem solving | Penn | 4 weeks | 3-6 hours per week | self-paced | none |
Courses | School | Duration | Effort | Notes |
---|---|---|---|---|
Beyond CS50 | Harvardx | 1 week | 11 lectures | CS50 |
CS50 Web Programming with Python and Javascript | Harvardx | 12 weeks | 6-9 hours per week | CS50 |
CS50 Game Development | Harvardx | 12 weeks | 6-9 hours per week | CS50 |
CS50 Mobile Development with React-Native | Harvardx | 12 week/11 lectures | 6-9 hours per week | CS50 |
Courses | School | Duration | Effort | Frequency | Notes |
---|---|---|---|---|---|
Introduction to Computational thinking and data science (Part 2) (alt) | MIT | 9 weeks | 15 hours/week | high school algebra | |
Introduction to Programming in Java | MIT | 4 weeks | 2 sessions per week | 1 hour per session | Video Lectures, MIT lecture notes |
Introduction to C and C++ | MIT | 4 weeks | 2 sessions per week | 1 hour per session | none |
Effective programming in C and C++ | MIT | 10 lectures | 3 sessions per week | 2 hours per session | |
Practical programming in C | MIT weeks | 3 weeks | 5 sessions per week | 90 mins per session | none |
- Required to learn about monads, laziness, purity: Learn You a Haskell for a Great Good!
- Note: probably the best resource to learn Haskell: Haskell Programming from First Principles
paid
- Note: probably the best resource to learn Haskell: Haskell Programming from First Principles
- Required, to learn about logic programming, backtracking, unification: Learn Prolog Now!
Topics covered:
digital signaling
combinational logic
CMOS technologies
sequential logic
finite state machines
processor instruction sets
caches
pipelining
virtualization
parallel processing
virtual memory
synchronization primitives
system call interface
and more
These courses are part of my General Institute Requirements (GIRs) and Advanced Undergraduate Subjects (AUS)
Courses | School | Duration | Effort | Frequency | Notes |
---|---|---|---|---|---|
Reverse Engineering the Mind: Brain and Cognitive sciences (panel discussion) | MIT | 80 mins | 1 session | Panel discussion | none |
Introduction to Computational Neuroscience | MIT | 26 lectures | 8 problem sets | self-paced | Basic biology, chemistry, and physics. intro/ review YT playlist |
Foundations of Computational and Systems Biology | MIT | 22 sessions | 80 mins per session | self-paced | (AUS) see MIT OCW for additional paperwork/ coursework |
Computation Structures | MIT | 26 sessions | 45-60 mins per session | self-paced | (GIR) YT playlistCircuits and Electronics |
Automata, Computability and Complexity | MIT | 23 sessions | 90 mins per session | self-paced | none |
Theory of Computation | MIT | 6 assignments | - | self-paced | graduate level |
Mathematics for Computer Science | MIT 1 | 13 weeks | 5 hours/week | Self-paced | Calculus 1C |
Calculus 1A: Differentiation | MIT | 12 weeks | 6-10 hours/week | self-paced | pre-calculus |
Calculus 1B: Integration | MIT | 15 weeks | 6-10 hours/week | self-paced | Calculus 1A: Differentiation |
Calculus 1C: Coordinate Systems & Infinite Series | MIT | 8 weeks | 6-10 hours/week | self-paced | Calculus 1B: Integration |
1 Note: These courses assume knowledge of basic physics. (Why?) If you are struggling, you can find a physics MOOC or utilize the materials from Khan Academy: Khan Academy - Physics
1: Students struggling with MIT Math for CS can consider taking the Discrete Mathematics Specialization first. It is more interactive but less comprehensive, and it costs money to unlock full interactivity.
Courses | School | Duration | Effort | Frequency | Notes |
---|---|---|---|---|---|
Computer Science: Algorithms, Theory, and Machines | Princeton | 10 weeks | 2-5 hours/week | once a month | Calculus 1A (all), basic programming |
Multicore Programming Primer | MIT | 31 sessions | self-paced | - | MIT OCW lecture notes, YT video lectures |
Algorithms, Part I | Princeton | 6 weeks | 6-12 hours/week | once a month | Computer Science: Algorithms, Theory, and Machines |
Algorithms, Part II | Princeton | 6 weeks | 6-12 hours/week | once a month | Algorithms, Part I |
Courses | School | Duration | Effort | Notes |
---|---|---|---|---|
Databases | Stanford | 12 weeks | 8-12 hours/week | some programming, basic CS |
Machine Learning | Stanford | 11 weeks | 4-6 hours/week | linear algebra |
Creating Video Games | MIT | 45 sessions | self-paced | MIT OCW, YT video lectures |
Computer Graphics | MIT | self-paced | self-paced | video lectures/ MIT OCW lecture notes / C++ or Java, linear algebra |
Cryptography I | Stanford | 6 weeks | 5-7 hours/week | linear algebra, probability |
Courses | School | Duration | Effort | Frequency | Notes |
---|---|---|---|---|---|
Linux Command Line Basics | Udacity | 1 week | 5 hours/week | self-paced | none |
The Unix Workbench | JHU | 4 weeks | 4 hours/week | once a month | none |
Automated Software Testing(Alt) | TUDelft | 5 weeks | 3-5 hours per week | self-paced | none |
UML Class Diagrams for Software Engineering | Ku Leuven | 3 weeks | 4-5 hours per week | self-paced | none |
Kotlin for Java developers | Jetbrains | 19 hours | 7 hours per week | self-paced | Java basics |
Building Scalable Java Microservices with Spring Boot and Spring Cloud | Google Cloud | 15 hours | 6-8 hours per week | self-paced | Basic Java |
Parallel, Concurrent, and Distributed Programming in Java Specialization | Rice | 2 months | 10 hours per week | self-paced | Basic Java |
After completing every required course in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. But students should take every course that is relevant to the field they intend to go into.
The Advanced CS study should then end with one of the Specializations under Advanced applications. A Specialization's Capstone, if taken, may act as the Final project, if permitted by the Honor Code of the course. If not, or if a student chooses not to take the Capstone, then a separate Final project will need to be done to complete this curriculum.
Topics covered:
debugging theory and practice
goal-oriented programming
GPU programming
CUDA
parallel computing
object-oriented analysis and design
UML
large-scale software architecture and design
and more
Courses | School | Duration | Effort | Notes |
---|---|---|---|---|
Compilers | Stanford | 9 weeks | 6-8 hours/week | none |
Software Debugging | Udacity | 8 weeks | 6 hours/week | Python, object-oriented programming |
Software Testing | Udacity | 4 weeks | 6 hours/week | Python, programming experience |
LAFF - On Programming for Correctness | UT of Austin | 7 weeks | 6 hours/week | linear algebra |
Introduction to Parallel Programming (alt) | Udacity | 12 weeks | - | C, algorithms |
Software Architecture & Design | Udacity | 8 weeks | 6 hours/week | software engineering in Java |
Building scalable Java Microservices | Google Cloud | 3 weeks | 6-8 hours per week | Prior Java experience |
Courses | School | Duration | Effort | Frequency | Notes |
---|---|---|---|---|---|
Introduction to Mathemetical Thinking | Stanford | 9 Weeks | 23 hours | Self-paced | |
Precalculus | ASU | 15 weeks | 9-10 hours per week | - | high school math |
Essence of Calculus | YT | - | - | - | high school math |
Essence of Linear Algebra | YT | - | - | - | pre-calculus |
Linear Algebra - Foundations to Frontiers (alt) | UT of Austin | 15 weeks | 8 hours/week | - | Essence of Linear Algebra |
Mathematical Thinking in Computer Science | UC San Diego | 6 weeks | 2-5 hours/week | once a month | none |
Topics covered:
parametric equations
polar coordinate systems
multivariable integrals
multivariable differentials
probability theory
and more
Courses | School | Duration | Effort | Notes |
---|---|---|---|---|
Multivariable Calculus | MIT | 13 weeks | 12 hours/week | MIT Calculus 1C |
Introduction to Probability - The Science of Uncertainty | MIT | 18 weeks | 12 hours/week | Multivariable Calculus |
Topics covered:
formal languages
Turing machines
computability
event-driven concurrency
automata
distributed shared memory
consensus algorithms
state machine replication
computational geometry theory
propositional logic
relational logic
Herbrand logic
concept lattices
game trees
and more
Courses | School | Duration | Effort | Notes |
---|---|---|---|---|
Introduction to Logic | Stanford | 10 weeks | 4-8 hours/week | set theory |
Automata Theory | Stanford | 7 weeks | 10 hours/week | discrete mathematics, logic, algorithms |
Computational Geometry | TsingHau University | 16 weeks | 8 hours/week | algorithms, C++ |
Introduction to Formal Concept Analysis | NRU o HE | 6 weeks | 4-6 hours/week | logic, probability |
Game Theory | Stanford | 8 weeks | x hours/week | mathematical thinking, probability, calculus |
These Coursera Specializations all end with a Capstone project. Depending on the course, you may be able to utilize the Capstone as your Final Project for this Computer Science curriculum. Note that doing a Specialization with the Capstone at the end always costs money. So if you don't wish to spend money or use the Capstone as your Final, it may be possible to take the courses in the Specialization for free by manually searching for them, but not all allow this.
Refine this list once specialisation/ final year project is chosen NB: This list is a refelction of my own specialisation interests (please refer to EDX/ Coursera/ MIT OCW for more specialisations)
Courses | Duration | Effort | Notes |
---|---|---|---|
Machine Learning (Specialisation) | 8 months | 7 hours per week | Data clustering algorithms, machine learning, classification algorithms |
Deep Learning (Specialisation) | 3 months | 11 hours per week | tensorflow, convolutional neural network, artificial neural network, deep learning |
Advanced Data Science with IBM (Specialisation) | 2 months | 14 hours per week | data science, IOT, deep learning, Apache Spark |
IBM AI Engineering (Professional Certificate) | 2 months | 12 hours per week | data science, deep learning, artificial intelligence, machine learning |
IBM Applied Engineering (Professional Certificate) | 2 months | 13 hours per week | data science, deep learning, artificial intelligence, machine learning, Watson AI |
Advanced Machine Learning (Specialisation) | Flexible | set your own deadlines |
Courses | Duration | Effort | Notes |
---|---|---|---|
C# Programming for Unity Game Development (Specialisation) | 5 months | 6 hours per week | video game development, C#, Unity, game programming |
Unity 3D Artist (Specialisation) | 4 months | 4 hours per week | asset creation and management, light, reflection and post processing effects, scene interactions, character setup and animation |
Unity XR: How to build AR and VR apps | 4 months | 5 hours per week | xr, ar, vr, mr, mobile apps, hand-held ar |
Courses | Duration | Effort | Notes |
---|---|---|---|
Blockchain - University of California, Irvine | 2 months | 9 hours per week | Beginner level |
Blockchain - University of Buffalo | 2 months | 12 hours per week | smart contract , ethereum , blockchains , solidity |
Blockchain revolution for the enterprise | 2 months | 12 hours per week |