Completing a CS Curriculum through Open Source Materials

In August 2023, I realized I was enjoying my programming hobby quite a lot and decided to take my interest further. As anyone who has looked into the area could agree, there is so much material available online, complete books, articles, tutorials, courses, guides, and more. However, one of the drawbacks of having so much free and available material is that choosing what to study, and when, poses a considerable challenge for anyone unfamiliar with the field as I was back then. I was fortunate to have started with two excellent courses: Python for Everybody from the University of Michigan (offered on Coursera) and CS50 by Harvard University (offered on EdX) but was not certain where to go next. Having had a formal education in another field, I was skeptical of bootcamps and cautious of not falling prey to “learn X/Y/Z in under 30 minutes” type guides.

Thankfully, I quickly found out about a promising curriculum proposed by the Open Source Society University (OSSU) later that year. Here’s how OSSU describes this curriculum:

The OSSU curriculum is a complete education in computer science using online materials. It’s not merely for career training or professional development. It’s for those who want a proper, well-rounded grounding in concepts fundamental to all computing disciplines, and for those who have the discipline, will, and (most importantly!) good habits to obtain this education largely on their own […]. It is designed according to the degree requirements of undergraduate computer science majors, minus general education (non-CS) requirements, as it is assumed most of the people following this curriculum are already educated outside the field of CS.

The curriculum is also designed to match the specifications by the Joint Task Force on Computing Curricula of the Association for Computing Machinery (ACM) and the Institute of Electrical and Electronics Engineers (IEEE).

Although the lecture materials for every suggested resources are free (one of the requirements to be included by OSSU), I found that having access to grading software and quizzes for some of these courses helped me stay on track and meet learning standards. In a few cases, I chose different courses that covered similar topics, mainly because of easier access to grading materials and assignments.

Here are the courses grouped by area of study

Introduction to Programming

Suggested Course Completed Date
CS50-P Introduction to Programming with Python August 2023
Harvard University  
Python for Everybody September 2023
University of Michigan  

Introduction to Computer Science

Completed Equivalent Completed Date
CS50 Introduction to Computer Science August 2023
Harvard University  

Core Programming

Suggested Course Completed Date
Systematic Program Design November 2024
UBC  
Programming Languages, Part A June 2024
University of Washington  
Programming Languages, Part B July 2024
University of Washington  
Programming Languages, Part C July 2024
University of Washington  
Object-Oriented Design August 2024
University of Alberta  
Design Patterns September 2024
University of Alberta  
Software Architecture September 2024
University of Alberta  

Core Theory

Completed Equivalents Date
Data Structures and Algorithms, Part I July 2024
Georgia Tech  
Data Structures and Algorithms, Part II July 2024
Georgia Tech  
Data Structures and Algorithms, Part III July 2024
Georgia Tech  
Data Structures and Algorithms, Part IV July 2024
Georgia Tech  

Core Security

Suggested Course Completed Date
Cybersecurity Fundamentals October 2024
Rochester Institute of Technology  
Principles of Secure Coding July 2024
University of California, Davis  
Identifying Security Vulnerabilities July 2024
University of California, Davis  
Identifying Security Vulnerabilities in C/C++ September 2024
University of California, Davis  

Core Ethics

Suggested Course Completed Date
Ethics, Technology, and Engineering September 2024
Eindhoven University of Technology  
Introduction to Intellectual Property September 2024
University of Pennsylvania  
Data Privacy Fundamentals August 2024
Northeastern University  

Core Systems

Suggested Course Completed Date
Build a Modern Computer from First Principles, Part I December 2023
University of Jerusalem  
Build a Modern Computer from First Principles, Part II November 2024
University of Jerusalem  
Operating Systems: Three Easy Pieces Not yet
Book  
Computer Networking: A Top-Down Approach November 2024
Book  

CS Tools

Suggested Course Completed Date
The Missing Semester of Your CS Education September 2024
MIT  

Core Math

Suggested Course Completed Date
Single Variable Calculus Not yet
MIT  
Mathematics for Computer Science Not yet
MIT  

Core Applications

Suggested Course Completed Date
Databases: Modeling and Theory October 2024
Stanford University  
Databases: Relational Databases and SQL October 2024
Stanford University  
Databases: Semistructured Data October 2024
Stanford University  
Machine Learning: Foundations May 2024
University of Washington  
Machine Learning: Regression October 2024
University of Washington  
Machine Learning: Classification Not yet
University of Washington  
Machine Learning: Clustering and Retrieval Not yet
University of Washington  
Computer Graphics October 2024
University of California San Diego  

Advanced CS

After completing the courses above, OSSU recommends that students choose one specialization based on interest and take every course within that subset. I am currently interested in the Advanced Systems track.

Advanced Systems

Suggested Course Completed Date
Computation Structures 1: Digital Circuits Not yet
MIT  
Computation Structures 2: Computer Architecture Not yet
MIT  
Computation Structures 3: Computer Organization Not yet
MIT  

Electives

These are not mandatory or listed by OSSU but they seemed interesting and informative to me at the time.

Electives Completed Date
PostgreSQL December 2023
University of Michigan  
Introduction to Mathematical Thinking October 2024
Stanford University  
Introduction to Artificial Intelligence with Python January 2024
Harvard University  
Algorithms, Part I February 2024
Stanford University  

Prospective Electives

The following courses are also not mandatory but look interesting and I would like to pursue them eventually. Starting these will not be a priority until most of the regular curriculum has been completed.

Courses
Rust Programming
Duke University
Programming Paradigms
Stanford
Theory of Computation
MIT
Automata Theory
Stanford
Functional Programming in Scala Specialization
University of Illinois Urbana-Champaign
Parallel Programming
École Polytechnique Fédérale de Lausanne
Compilers
Stanford
Introduction to Haskell
University of Pennsylvania
Learn Prolog Now!
Book

Recent posts