This repository hosts my journey into self-teaching myself a computer science degree.
The following is a curated list of free courses from reputable universities like Harvard, Stanford, and Princeton that I will be following to satisfy the same requirements as an undergraduate computer science degree. This repository has been based on others' work, which can be found here, here, and here. Additionally, this roadmap to computer science has been tweaked to my specific background and interests. For instance, all mathematics courses (calculus, linear algebra, statistics, etc) have not been included as they have been already covered by my previous studies (i.e. B.Sc. and M.Sc. in aerospace engineering).
ID | Course | University | Duration | Requirements | Status |
---|---|---|---|---|---|
CSB1 | CS50's Introduction to Computer Science | Harvard | 6-18 hours/week for 12 weeks | None | Completed |
Final project: Rebalance - a website for portfolio rebalancing. Check out the video demo
ID | Course | University | Duration | Requirements | Status |
---|---|---|---|---|---|
PC1 | Java Programming: Solving Problems with Software | Duke | 4 weeks | None | Started |
PC2 | Java Programming: Arrays, Lists, and Structured Data | Duke | 4 weeks | PC1 | Not started |
PC3 | Object Oriented Programming in Java | Duke | 6 weeks | PC2 | Not started |
PC4 | Data Structures and Performance | Duke | 6 weeks | PC3 | Not started |
PC5 | Java Programming: Principles of Software Design | Duke | 4 weeks | PC2 | Not started |
PC6 | Java Programming: Build a Recommendation System | Duke | 4 weeks | PC5 | Not started |
ID | Course | University | Duration | Requirements | Status |
---|---|---|---|---|---|
PO1 | Programming Languages, Part A | UW | 5 weeks | PC3 | Not started |
PO2 | Programming Languages, Part B | UW | 3 weeks | PO1 | Not started |
PO3 | Programming Languages, Part C | UW | 3 weeks | PO2 | Not started |
ID | Course | University | Duration | Requirements | Status |
---|---|---|---|---|---|
T1 | Computer Science: Algorithms, Theory, and Machines | Princeton | 10 weeks | CSB1 | Not started |
T2 | Algorithms, Part I | Princeton | 6 weeks | T1 | Not started |
T3 | Algorithms, Part II | Princeton | 6 weeks | T2 | Not started |
ID | Course | University | Duration | Requirements | Status |
---|---|---|---|---|---|
DS1 | 6.824: Distributed Systems | MIT | 12 weeks | To be determined | In progress |
ID | Course | University | Duration | Requirements | Status |
---|---|---|---|---|---|
AC1 | Machine Learning | Stanford | 11 weeks | CSB1 | Not started |
AC2 | Database Management Essentials | CU | 7 weeks | CSB1 | Not started |
ID | Course | University | Duration | Requirements | Status |
---|---|---|---|---|---|
AO1 | Software Engineering: Introduction | UBCx | 6 weeks | PC6 | Not started |
AO2 | Cryptography I | Stanford | 7 weeks | None | Not started |
Prerequisites: CSB1, PC1-PC6, PO1-PO3 and T1-T3.
Unlike many other programming languages, which are often picked up on the go, few are able to quickly pick up C++ without studying a well-written C++ book. It is way too big and complex for doing this. In fact, it is so big and complex, that there are very many very bad C++ books out there. The following is a small list of key books extracted from the Definitive C++ Book Guide and List:
- Introduction with programming experience: A Tour of C++, 2nd Ed.
- Best practices: Effective Modern C++