This is a fun project. I want to revisit the Computer Science field after two years away from my graduate degree using free online materials from top universities worldwide. And I will share my journey on this blog.
Since I’m working part-time on this, I expect the duration of this project to be 1-2 years.
I initially considered the MIT curriculum but chose Open Source Society University (OSSU) since its curriculum has more engaging video lectures and practice problems than MIT's. The OSSU CS curriculum meets all of the requirements from the Curriculum Guidelines for Undergraduate Degree Programs in Computer Science 2013, matching up nicely to those found on MIT OpenCourseWare. Though there are three courses offered at MIT not available on OSSU: Software Construction, Design, and Analysis of Algorithms and Performance Engineering of software systems, I'll add them to my curriculum.
One course I'm not sure about adding is Computation structures because the Core Systems section covers the course material. However, I will add it as a recap, or I might skip it altogether.
Optional books I might read
They are not in the curriculum but are recommended reads:
- Data-intensive applications
- Readings in database systems (5th edition)
- Transaction Processing: Concepts and Techniques
- Computer systems a programmer's perspective
- Refactoring by Martin Fowler
- Code Complete 2nd edition
Optional courses I might take
- Constructive Computer Architecture (Re-validate after taking the Advanced programming section)
- Great Ideas in Computer Architecture (Machine Structures) (Re-validate after taking the Core systems section)
- Artificial intelligence (Re-validate after taking Sec: Core applications section)
- Computer architecture (advanced) (Maybe consider after taking the Advanced systems section)
The curriculum
This is the curriculum as of now (the content updates frequently as new courses are discovered/created), I’ve marked courses I personally added as (Personal)
CS Core
- Core Programming
- Core Math
- Core Tools
- Core Systems
- Core Theory
- Divide and Conquer, Sorting and Searching, and Randomized Algorithms
- Graph Search, Shortest Paths, and Data Structures
- Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
- Shortest Paths Revisited, NP-Complete Problems and What To Do About Them
- Design and analysis of algorithms (Personal)
- Core Security
- Core Applications
- Core Ethics
Advanced programming
- Parallel Programming
- Compilers
- Introduction to Haskell
- Learn Prolog Now! (alt)*
- Software Debugging
- Software Testing
- Performance Engineering Of Software Systems (Personal)
(*) book by Blackburn, Bos, and Striegnitz (compiled from source, redistributed under CC license)
Final project
If I include the curriculum and optional courses, I will exceed the undergraduate degree requirements according to Curriculum Guidelines for Undergraduate Degree Programs in Computer Science 2013, but this is a fun project, so why not?
Throughout the curriculum, I will post weekly updates about my progress and notes from the books and courses I will take.
I will update the status on my blog as I go through the material.
Top comments (0)