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 |
|
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