/open-source-cs

Open Source Computer Science Education

My Open Source CS Degree

Open Source Computer Science Degree

adapted from Stefan Luiken'sopen source CS curricukum

Content

Summary

OPENCS is an open source computer science curriculum adapted from Stefan Luiken's open source CS program with all credits to him for personally crafting the curriculum. This program is designed according to the degree requirements of undergraduate computer science majors from top universities. All courses included in this program, originate from the world's top educational institutions in the field of computer science, such as Harvard and University of Helsinki.

I decided to merge my ongoing learning with this curriculum so as to be able to track my learning and also to structure it appropiately. For context, in the previous 2 years, I had predominantly learnt Python and JavaScript. Before undertaking this OPENCS, I had also enrolled in a local diploma program in web and programming to solidify my application on Python and JavaScript (you can find my motivations here).

The curriculum is designed as follows:

  • Intro CS: giving a basic but broad overview of the computer science spectrum.
  • Core CS: classes that all computer science majors would require to take.
  • Specialization CS: a specialization in software engineering.

Program

Program version: 1.3.0_madifz (I've added a _madifz suffix to differentiate from the original)


Basics CS

Introduction to Computer Science

Topics covered: basic computer science basic programming basic data structures and algorithms

Progress Course(s) University Duration Effort
In Progress CS50's Introduction to Computer Science Harvard University 12 weeks 20 hours/week

Introduction to Programming

Topics covered: Java object-oriented design

Course(s) Progress University Duration Effort
In Progress Head First Java 3rd Edition O'Reilly Literature 5 weeks 10 hours/week
Assigned Java Programming Masterclass covering Java 11 & Java 17 Udemy 10 weeks 8 hours/week

Core CS

Core Programming

Topics covered: object-oriented design Java IDE

Course(s) Progress University Duration Effort
Assigned Computing Tools for Computer Science Studies University of Helsinki 1 week 8-10 hours/week
Assigned Java Programming I University of Helsinki 7 weeks 15-20 hours/week
Assigned Java Programming II University of Helsinki 7 weeks 15-20 hours/week

Core Systems and Security

Topics covered: computer architecture memory assembly operating systems secure design network security

Course(s) Progress University Duration Effort
Finished ! API and Web Service Introduction Udemy 1 week 8 hours/week
Assigned Introduction to Networking Stanford 4 weeks 7 hours/week
Assigned Cyber Security Base: Introduction to Cyber Security University of Helsinki 2 weeks 8 hours/week
Assigned Cyber Security Base: Securing Software University of Helsinki 2 weeks 8 hours/week
Assigned Build a Modern Computer from First Principles: From Nand to Tetris Hebrew University of Jerusalem 6 weeks 7-13 hours/week

Core Theory

Topics covered: sorting and searching O-notation data structures algorithms

Course(s) Progress University Duration Effort
Assigned Problem Solving with Algorithms and Data Structures Using Python Literature 10 weeks 12 hours/week
Assigned Design Patterns Second Edition Literature 4 weeks 6 hours/week
Assigned AlgoExpert AlgoExpert.io 12 weeks 10 hours/week
Assigned OCA: Oracle Certified Associate Java SE 8 Programmer Literature 8 weeks 20 hours/week

Databases and Core Applications

Topics covered: databases command line Git DevOps

Course(s) Progress University Duration Effort
Assigned The Git & Github Bootcamp Udemy 2 weeks 10 hours/week
Assigned The Command Line Bootcamp Udemy 2 weeks 10 hours/week
Assigned Docker Mastery: Complete toolset Udemy 2 weeks 10 hours/week
Assigned Apache Kafka Series: Kafka v2 for beginners Udemy 2 weeks 10 hours/week
Assigned Databases: Relational Databases and SQL Stanford 2 weeks 10 hours/week
Assigned Databases: Advanced Topics in SQL Stanford 2 weeks 10 hours/week
Assigned Databases: Semistructured Data Stanford 2 weeks 10 hours/week
Assigned SQL and PostgreSQL: The Complete Developer's Guide Udemy 2 weeks 20 hours/week

Core Additional Readings

Topics covered: software engineering design patterns best practices

Course(s) Progress University Duration Effort
Assigned The Pragmatic Programmer Literature 4 weeks 6 hours/week
Assigned Effective Java Third Edition Literature 4 weeks 6 hours/week
Assigned The Missing README Literature 3 months 2 hours/week
Assigned Software Engineering at Google Literature 3 months 2 hours/week
Assigned System Design Interview: An insider's guide Literature 4 weeks 6 hours/week
Assigned Clean Code Literature 4 weeks 6 hours/week
Assigned Cracking the Coding Interview Literature 12 weeks 20 hours/week
Finished ! The Coding Career Handbook Literature 2 weeks 2 hours/week

Specialization CS

Software Engineering

Topics covered: large-scale software architecture and design compilers debugging theory and practice

Course(s) Progress University Duration Effort
Assigned Software Engineering: Introduction The University of British Columbia 6 weeks 10 hours/week
Assigned Software Debugging Udacity 8 weeks 6 hours/week
Assigned Software Testing Udacity 4 weeks 6 hours/week
Assigned Software Architecture & Design Georgia Tech 8 weeks 12 hours/week
Assigned Software Construction in Java MIT 10 weeks 15 hours/week
Assigned Advanced Software Construction in Java MIT 15 weeks 10 hours/week

App and Web Development

Topics covered: Android development Java Gradle Fullstack web development JavaScript React

Course(s) Progress University Duration Effort
In Progress (Semester 1) Diploma (Conversion) in Web and Programming Singapore Polytechnic 52 weeks 8 hours/week
Assigned CSS for JavaScript Developers Josh Comeau Courses 12 weeks 10 hours/week
Assigned Bootcamp: Full stack open 2022 University of Helsinki 12 weeks 10 hours/week
Assigned Nanodegree: Android Basics Udacity 12 weeks 10 hours/week