<Back to Z-Degrees
Computer Science Curriculum
Little #96D7AF Books
A Free Computer Science Curriculum using OER (free textbooks) and OCW (free lectures)
Index
- Index
- Why You Shouldn't Spend a Cent on Learning How to Program
- Unschooling
- Financial Independence and Frugality
- Browser-based Programming
- Cloud Programming
- Raspberry Pi
- Beginning Programming
- Harvard's CS50 as an introduction to C, Python, and Javascript
- Further investigation of C, Python, and JS
- Data Structures in C, Python, and JavaScript
- TypeScript as a segue into Java
- Java Programming
- Algorithms
- Discrete Mathematics
- Computer Architecture
- HTML/CSS
- Databases
- College Mathematics
- Web Development
- Introduction to Functional Programming
- Networking
- Machine Learning
- Linear Algebra
- Security
- Software Design/Architecture
- Operating Systems
- Sociology of Programming
- Functional Programming (optional)
- Programming Languages
- Django
- Compilers
- Rust (optional)
- Computation
- AI
- Go (optional)
- Robotics (optional)
- Software Engineering
- Natural Language Processing
- Statistics
- Data Science
- Computer Vision
- Information Theory
- Scientific Computing
- Further Studies
- Cheap Accredited Computer Science Degrees
Why You Shouldn't Spend a Cent on Learning How to Program
Why is technology on Moore's Law but the cost of college rises many times faster than inflation? Because private university is a scam.
A computer science professor teaches a 4-course load each semester for $100,000 a year salary. A simple breakdown means a single class costs $13,000 to make. If that class is recorded and put on YouTube, 50 million people can watch the video. $13,000 / 50,000,000 = 0.00026. That means each viewing of the video costs the Professor 0.03% of a cent. This fee is easily covered by ad revenue for each viewing on YouTube. That is to say, by watching an ad before each class's video, you are paying the professor for the cost of producing that class. What used to cost hundreds of dollars (per class) in brick and mortar university now costs 0.03% of a cent. That is an example of how higher education is on Moore's Law, in which computer advances mean logarithmic changes to pricing. Computer Science college is now free, distributed amongst millions of online learners instead of amongst just a couple dozen students in a brick and mortar classroom. The lessons are the same, the materials and class content are the same, the only difference is instead of paying thousands of dollars per class you are watching an ad for five seconds before each lecture. There is no going back from this reality. Computer science education is now free by the very existence of the internet that computer science education created. If you pay for expensive college given this reality (especially with the mandatorily non-bankruptable student loans), you are squandering away money that could rather compound in your interest for 40+ years if invested in total stock market index funds while still college-aged. The redistribution of wealth, from your own net worth to the college's own net worth, is one of the reasons my generation faces having millions of dollars removed from our net worth. The next generation of students doesn't have to make that choice anymore, though. They can study online through free open source or affordable digital educational resources.
Since many computer scientists contribute to open source, there are many computer scientists who also use open source licenses on the textbooks they write. Because open source is so prominent in computer science, it is foolish to pay money at this point to learn how to program when there is such a ubiquity of free self-guided tutorials. People are literally pouring out free computer science educational resources at an staggering rate because they love to volunteer their time towards CS education. To ignore these resources would come at a great opportunity cost to you, because student loans at a young age actually cost 64 times the sticker price in lost retirement savings/net worth. Little #96D7AF Books teaches CS students in Topeka, KS to be frugal in regards to their education and exploit all the free resources Topeka has to offer before spending any money on learning to program. The rewards are immense: Maxing out your 401k and IRA on index funds can be a means of attaining financial independence in just your thirties.

The graph above shows how many times the principal (i.e. paying tuition) is at a certain age when retiring at 65 versus investing that money in index funds. As you can see, your college actually costs you more than 100x the sticker cost when you're not allowed to invest the money you earn at your first job at 22 because you're paying your student loans, instead of investing your salary in index funds. A $60,000 student loan would mean losing out on $6,000,000 from your retirement versus if you had invested that $60,000 at age 22. Obviously, keeping your college costs as low as possible so you don't have student debt is worth more than any diploma, professional development, graduate degree, or advanced certification. The formula is f(age) = 2^((65-age)/(72/11.3)) (using the Rule of 72).
College is really expensive, but your public library and online open source education is free. There is no sacrifice to choosing the open source model. The textbooks and learning resources are just as good. You will still have to study computer science for four years and dedicate yourself to lot of hard work and long study hours everyday. You will have to learn just as much as the people who are spending money on their education; learning for free doesn't mean you can avoiding learning the same subjects that people spend tuition money to learn. The Little #96D7AF Books curriculum is not a fast track to a programming job, it's goal is to mimic a four year computer science college curriculum. I realize that may turn people away, but the goal is to develop competent programmers that prove free open source education is just as opportunity-rich as traditional brick and mortar universities. If you feel certain aspects are missing, you can use other free computer science curricula to build your own classes. The point is, the sooner you integrate your computer science life into the world of open source (a good starting place is purchasing a Raspberry Pi and learning Debian), the more successful your computer science career will be. However, I don't think open source involvement should only be limited to source code. I also feel the sooner your integrate your educational life into the world of open source, the more successful your computer science career will be too. Most people don't go "that far", in fact promoting minimizing one's involvement with non-free university classes is a bit taboo in the United States where university is viewed as the great equalizer in society. But just read a few books about the student debt crisis and you'll discover that taking on debt at a young age is anathema to financial freedom, it permanently damages your net worth. Considering how robust the open source computer science educational community is, I think it seriously minimizes risk to pursue free education with OER. Many people disagree, but I hope to show you through this website that "Educating Yourself" is a great way to find success in computer science. The notion that the only way you'll be a successful computer scientist is by going to an expensive private university is more likely to wind you in the same place professionally, but with the financial hangover of hundreds of thousands of dollars of debt at age 22 instead of zero debt. When your salary goes to paying down a university loan instead of your 401k and IRA, where 38+ years of compounding rewards youthful frugality quite impressively, you are making an explicit trade off between prestige (a degree) and financial freedom (a maxed out 401k and IRA every year starting at age 22). In just my small time as a computer scientist, I find my explorations of frugality via open source education as enabled by the Topeka Public Library to be immensely rewarding. So I create Little #96D7AF Books to share my research. I wrote my undergraduate art history senior thesis at Reed College on the sociology of higher education, and as I have pursued that line of research even after graduating and moving on to a computer science career, and all indicators point to combining Mr. Money Mustache-level frugality with using public libraries and OER/OCW as educational springboard to be a great strategy for building a great computer science career. I am confident enough in this theory to share it publicly through Little #96D7AF Books to anyone willing to listen. Little #96D7AF Books is about educating yourself enough to be able to educate yourself. It is possible now to get a university education for free through open source resources on the internet. That wasn't true in the past, but it is now.
Note: Perlego is $12 a month for a "Spotify for Textbooks." Since that is so affordable, I have included it on the curriculum, assuming getting access to a University library for $12 a month is a worthwhile tradeoff for the subscription cost. If you do not want to use Perlego, do everything but the Perlego books. Hopefully within a couple years every book ever written will be online for an affordable monthly subscription. Perlego is a good attempt at that. Otherwise use your public library stacks.
Unschooling
Financial Independence and Frugality
Fortunately, you can learn a lot about managing your money with open source/free simple investing explainers.
| Topic | Book |
|---|---|
| Little #96D7AF Books | Personal Finance/Investing for Computer Scientists |
| Frugality | JL Collins - Debt: The Unacceptable Burden |
| Financial Independence | J.L. Collins - The Simple Path to Wealth |
| Index Funds | Little #96D7AF Books/free-index-funds-books |
| Financial Independence | Mr. Money Mustache |
| Frugality | Mr. Money Mustache - Interview with a CEO: Ridiculous Student Loans vs. The Future of Education |
| Frugality | Ryan Carson - Your college degree will cost you $2m |
| Frugality | Ryan Carson - Educate Yourself Podcast - Mr. Money Mustache |
| Frugality | ChooseFI - 074 - Ryan Carson - Learn to Code - Treehouse |
Browser-based Programming
Don't have root access on your machine? Code in your browser! Great for high schoolers and beginners, as these sites usually have a community around them too!
Cloud Programming
In case you find yourself without a laptop and have to learn to code at the public library or at school (and can't install software or programming languages), you can sign up for a free cloud IDE and have it host (and run) your code in the browser.
| Topic | Book |
|---|---|
| Cloud IDE | Visual Studio Codespaces |
| Cloud IDE | CodeTasty |
| JS Cloud IDE | CodeSandBox |
| JS Cloud IDE | StackBlitz |
| Cloud IDE | Eclipse Che |
| Cloud Dev Env | repl.it |
| Github Cloud IDE | GitPod |
| Cloud Eclipse IDE | Orion |
| Cloud IDE | AWS Cloud9 (~$2 a month) |
| Cloud Docker | Codenvy |
| Cloud IDE | Theia |
Raspberry Pi
Rapsberry Pis are the cheapest access to a linux box. Learning linux is essential if you want to be a successful computer scientist.
| Topic | Book |
|---|---|
| Raspberry Pi | Gareth Halfacree - The Official Raspberry Pi Beginner's Guide |
| Raspberry Pi | The Official Raspberry Pi Beginner's Book |
| Raspberry Pi | Richard Smedley - Conquer the Command Line - The Raspberry Pi Terminal Guide |
| Raspberry Pi | Linux Basics: The Command Line Interface (edX) |
| Raspberry Pi | Introduction to Linux (edX) |
| Raspberry Pi | All RPI MagPi Books |
| Raspberry Pi | Introduction to the Command Line |
| Raspberry Pi | Malcolm Maclean - Just Enough Linux |
| Raspberry Pi | Mark Bates - Conquering the Command Line |
| Raspberry Pi | Unix and Linux Visual Quickstart Guide - Deborah Ray, Eric Ray (Sample Excerpt) |
| (optional) | CS 2043 Unix Tools & Scripting |
| (optional) | 15-131 – Great Practical Ideas in CS |
| (optional) | William Shotts - The Linux Command Line |
Beginning Programming
Fun, accessible (visual or auditory) computer programming tutorials for absolute beginners.
Harvard's CS50 as an introduction to C, Python, and Javascript
A popular Open Courseware class that can get you started on more hard-core computer science studies and languages.
Further investigation of C, Python, and JS
You can go deeper into the CS50 topics.
Data Structures in C, Python, and JavaScript
You often learn data structures in your third semester of CS in college.
| Topic | Book |
|---|---|
| C | Al Aho, Jeff Ullman - Foundations of Computer Science |
| Python | Allen B. Downey - Think Complexity |
| Python | Problem Solving with Algorithms and Data Structures using Python |
| JavaScript | Data Structures in JavaScript |
| JavaScript | trekhleb/javascript-algorithms |
| Data Structures | OpenDSA |
TypeScript as a segue into Java
Learn about typed JavaScript.
| Topic | Book |
|---|---|
| TypeScript | TypeScript docs |
| TypeScript | TypeScript Basics |
| TypeScript | Want to learn TypeScript? Here’s our free 22-part course. |
| TypeScript | TypeScript Accelerated |
| TypeScript | Introduction to TypeScript 2 |
| TypeScript | The Complete TypeScript Programming Guide for Web Developers |
| TypeScript | Derek Banas - TypeScript Tutorial |
| TypeScript | TypeScript Tutorial |
| TypeScript | TypeScript Succinctly |
| TypeScript | TypeScript Deep Dive |
| TypeScript | Clean Code concepts adapted for TypeScript |
| TypeScript | TypeScript Essentials |
Java Programming
Learn a strongly typed language.
Algorithms
Algorithms are the tofu and potatos of computer science.
| Topic | Book |
|---|---|
| Algorithsm | Algorithms - Jeff Erickson |
| Algorithms | Robert Sedgewick - Algorithms |
| Algorithms | Ibid, coursera part 1 |
| Algorithms | Ibid, part 2 |
| Algorithms | Ibid, Github |
| Algorithms | The Algorithm Design Manual |
| Algorithms | CSE 373 - Curriculum |
| Algorithms | CSE 373 - Videos |
| Algorithms | CSE 373 - OpenCourseWare |
| Algorithms | Analysis of Algorithms |
| Algorithms | Ibid, Coursera |
Discrete Mathematics
Discrete Math is a fun subject, so I'm going to load a lot on you, and through repetition make you a discrete math master!
Computer Architecture
Architecture focuses on the hardware, instead of the software for once! Learn how a computer works!
HTML/CSS
Essential if you want to make webpages.
Databases
Essential if you want to engineer software or websites.
| Topic | Book |
|---|---|
| SQL | Khan Academy SQL Tutorials |
| SQL | Introduction to SQL - Launch School |
| SQL | SQL Tutorial - Full course for beginners - freeCodeCamp |
| Databases | Database Design - Adrienne Watt |
| Databases | CS403: Introduction to Modern Database Systems |
| Databases | CS410: Advanced Databases |
| Databases | Stanford Online Databases |
| Databases | Computer Science 186, Spring 2015 - UC Berkeley |
| Databases | Readings in Database Systems |
| Databases | Database Systems - Jens Dittrich |
| Databases | Beginning database design : from novice to professional - Churcher, Clare |
| Postgres | PostgreSQL Tutorial - Part 1 |
| Postgres | Ibid, part 2 |
| Postgres | PostgreSQL Tutorial |
| Postgres | Learn PostgreSQL Tutorial - Full Course for Beginners - freeCodeCamp |
| Postgres | The Internals of PostgreSQL for database administrators and system developers |
| Databases | 15-445 Database Systems - CMU & Class Schedule |
| C | Let's Build a Simple Database |
College Mathematics
Brush up on college math.
| Topic | Book |
|---|---|
| Math | Khan Academy - Math |
| Calculus | Calculus I - OpenStax |
| Calculus | Calculus II - OpenStax |
| Calculus | Calculus III - OpenStax |
| Stats | Introductory Statistics - OpenStax |
| Stats | Probability and Statistics |
| Pure Math | An Infinite Descent into Pure Mathematics |
| Pure Math | Concrete Mathematics - Donald Knuth |
| Pure Math | CSE 547 - Discrete Mathematics - Curriculum |
| Pure Math | CSE 547 - Video Lectures |
| CS | 15-251 Great Theoretical Ideas in Computer Science - YouTube Playlist |
| CS | 15-251 Great Ideas in Theoretical Computer Science - Textbook & Notes |
| CS | Probability and Computing Lecture Notes |
| (optional) | 96D7AF/undergraduate-math-curriculum |
Web Development
Learn some backend web development!
Introduction to Functional Programming
It's nerdy, it's fun, it's functional programming. More and more OOP languages are heading towards functional paradigms.
Networking
Learn about connecting computers together and sending data back and forth.
| Topic | Book |
|---|---|
| Networking | An Introduction to Computer Networks - Peter L Dordal |
| Networking | CS402: Computer Communications and Networks |
| Networking | Computer Networking : Principles, Protocols and Practice - Olivier Bonaventure & 2nd source |
| Networking | Introduction to Computer Networking - Stanford Online |
| Networking | Introduction to Data Communications (2013) - Steven Gordon |
| Networking | Larry Peterson and Bruce Davie - Computer Networks: A Systems Approach |
| Networking | Ibid, solution manual |
| Networking | Ibid, Github |
| Networking | Wireshark Labs |
| Networking | The TCP/IP Guide - Charles Kozierok |
Machine Learning
Learn about neural networks.
Linear Algebra
Great for data analysis and machine learning.
| Topic | Book |
|---|---|
| Linear Algebra | Essence of linear algebra - 3Blue1Brown |
| Linear Algebra | Linear Algebra - Khan Academy |
| Linear Algebra | Mathematics for Machine Learning: Linear Algebra |
| Linear Algebra | Linear Algebra: Foundations to Frontiers - The University of Texas at Austin |
| Linear Algebra | Linear Algebra - Jimm Hefferon |
| Linear Algebra | Linear Algebra - As an Introduction to Abstract Mathematics |
| Linear Algebra | Linear Algebra - MIT |
| Linear Algebra | CS53 - Linear Algebra |
Security
Need to make your computer software safe and secure.
Software Design/Architecture
Learn about how to organize your programming business for highest efficiency.
| Topic | Book |
|---|---|
| Software Design | Software Architecture & Design - Georgia Tech |
| Software Design | Software Construction in Java - MIT - Part 1 |
| Software Design | Ibid, Part 2 |
| Software Design | CS3: Design in Computing - UNSW |
| Python | Clean Architectures in Python - Leonardo Giordani |
Systems Programming
How to engineer computer systems.
| Topic | Book |
|---|---|
| Systems | Computation Structures - MIT - part 1 |
| Systems | Ibid, Part 2 |
| Systems | Ibid, Part 3 |
| Systems | Computer System Engineering - MIT |
| Systems | The Hardware/Software Interface Class - Luis Ceze and Gaetano Borriello |
| Systems | 15-213 Intro to Computer Systems - CMU |
| Systems | Ibid, Video Lectures |
Operating Systems
How a computer runs its applications.
Sociology of Programming
What do programmer do? Who are programmers?
Functional Programming (optional)
| Topic | Book |
|---|---|
| Haskell | Learn Haskell Fast and Hard - Yann Esposito |
| Haskell | Learn You A Haskell For Great Good - Miran Lipovaca |
| Haskell | Real World Haskell - Bryan O'Sullivan, Don Stewart, John Goerzen |
| Haskell | Yet Another Haskell Tutorial - Hal Daume III |
| Haskell | Introduction to Functional Programming - Delft University of Technology |
| Haskell | Functional Programming in Haskell - IIT Madras |
| OCaml | Allen Downey and Nicholas Monje - How to Think Like a (Functional) Programmer |
| OCaml | CS3110 - Cornell |
| OCaml | Ibid, Textbook |
| OCaml (optional) | Real World OCaml |
| OCaml (optional) | Functional Data Structures |
Programming Languages
What makes you able to program code, exactly?
Django
Python backend web server.
Compilers
What makes your higher level code able to run on processors made up of circuits?
| Topic | Book |
|---|---|
| Compilers | Compilers - Stanford |
| Compilers | Compiler Design: Theory, Tools, and Examples - Seth D. Bergmann |
| Compilers | Compiler Building Tutorial - Jack W. Crenshaw |
| Compilers | CSE 131 - Compiler |
| Compilers | Ibid, Lectures |
Rust (optional)
Popular systems programming language.
| Topic | Book |
|---|---|
| Rust | [Rust Tutorial |
| Rust | [Rust Crash Course |
| Rust | Jim Blandy - Why Rust? |
| Rust | Rust by Example |
| Rust | Steve Klabnik & Carol Nichols - The Rust Programming Language |
| Rust | The Rust Programming Language - Nicholas Matsakis, Aaron Turon |
| Rust | The Rustonomicon |
| Rust | Implementing TCP in Rust |
Computation
The theory and math behind computing as a science.
AI
Go (optional)
Robotics (optional)
How to integrate computers with machines.
| Topic | Book |
|---|---|
| Robotics | Modern Robotics: Mechanics, Planning, and Control Specialization - Northwestern |
| Robotics | Ibid, Curriculum |
| Robotics | Elements of Robotics - Mordechai Ben-Ari and Francesco Mondada |
Software Engineering
How do companies get coding projects done successfully?
Natural Language Processing
Have a computer understand human language.
Statistics
Data Science
Computer Vision
Information Theory
| Topic | Book |
|---|---|
| Info Theory | Khan Academy - Information Theory |
| Info Theory | Introduction To Information Theory - Masud Mansuripur |
| Info Theory | mathematicalmonk - Information Theory (playlist) |
Scientific Computing
Further Studies
I hope by now you have a hunch of how to make your own curriculum for your independent, online, free studies. I have compiled all the sources I used in the creation of Little #96D7AF Books. Teach yourself how to teach yourself computer science!
Computer Science
- Little #96D7AF Books - Free OER-based computer science course
- functionalcs/curriculum - A Modern CompSci Curriculum
- OSSU/computer-science - Open Source Software University
- Teach Yourself CS
- EbookFoundation/free-programming-books
- aGupieWare - Online Learning: An Intensive Bachelor's Level Computer Science Program Curriculum, Part II
- Developer-Y/cs-video-courses - List of Computer Science courses with video lectures
- mikesprague/udacity-nanodegrees
- Quora - What are the best free online resources for learning computer science for a beginner? -> Thrilok Kandagatla
- BSinCS.xlsx
- UoPeople - Online Syllabus Repository (CS B.S.)
- P1xt/p1xt-guides
- Coding Train - YouTube
- AB1908/CS-Books
Machine Learning
Web Development
- freeCodeCamp - Learn to code for free
- The Odin Project
- bmorelli25/Become-A-Full-Stack-Web-Developer - 100+ Free resources for learning Full Stack Web Development
Cheap Accredited Computer Science Degrees
Get a junior dev job (without a degree) as quickly as possible by unschooling the above curriculum for free, then use your tuition reimbursement job benefit to earn these degrees at zero cost to you while you're working! Have a high savings rate (50-70%) and invest in index funds while working and studying as a programmer to reach financial independence in your thirities and retire early. It's kind of easy if you stay frugal as a student and as a employed programmer.
