The Self-Taught Degree¶

I've opted for a self-directed learning path over a traditional degree, aiming for a balance of practical software skills, computer science, and vital life skills like leadership and finance. I publish what I learn, providing a resource for both myself and others.
My curriculum features both structured and unstructured learning and will evolve with me as I learn. This approach ensures a tailored education aligned with my professional goals.
Legend/Key
Symbols used in the rest of this page.
- : Published Book
- : Open University Module
- : YouTube Playlist or Video
- : Other Online Resources
-
- : Unfinished Module/Resource
-
- : Finished Module/Resource
Stage 0: A Stage Unstructured¶
Every resource in this stage is independent and can be completed at any time.
Study Skills¶
-
A Mind for Numbers: How to Excel at Math and Science
-
How to Improve your Critical Thinking & Reflective Skills
-
How to Write Essays & Assignments
Personal Development¶
-
Atomic Habits
-
As a Man Thinketh
-
Maximum Achievement: Strategies and Skills That Will Unlock Your Hidden Powers to Succeed
-
How to Fail at Almost Everything and Still Win Big
-
The Pathless Path: Imagining a New Story For Work and Life
-
How to Win Friends and Influence People
Motivation¶
-
The Obstacle is the Way: The Ancient Art of Turning Adversity to Advantage
-
The 10X Rule: The Only Difference Between Success and Failure
-
The War of Art
-
Bounce: The of Myth of Talent and the Power of Practice
-
The Chimp Paradox
Agile¶
-
Scrum: The Art of Doing Twice the Work in Half the Time
-
Clean Agile: Back to Basics
-
Extreme Programming Explained: Embrace Change
-
Wild West to Agile: Adventures in Software Development Evolution and Revolution
-
Accelerate: The Science of Lean Software and Devops
Leadership¶
-
High Output Management
-
Turn The Ship Around!: A True Story of Turning Followers Into Leaders
-
Start With Why
-
Leaders Eat Last: Why Some Teams Pull Together and Others Don't
Finance¶
-
Money: Know More, Make More, Give More
-
Money: A User’s Guide
Business¶
-
GCSE Business
-
The E-Myth Contractor
-
The E-Myth Revisited
-
Million Dollar Consulting
-
Sell or Be Sold: How to Get Your Way in Business and in Life
-
Rich Dad Poor Dad
Misc¶
-
Lectures (MIT) The Missing Semester
-
Soft Skills: The Software Developer's Life Manual
-
Pro Git
-
Microsoft Azure AZ-900
-
Microsoft Azure AI-900
-
Touch Typing
-
Give Vim a chance
-
Joel on Software
-
The Mythical Man-Month: Essays on Software Engineering
Stage 1: Primarily Applied Skills¶
Introduction to Computing¶
-
Introduction to computing and information technology 1 (TM111)
-
CS50's Introduction to Computer Science
-
Think Like a Programmer: An Introduction to Creative Problem Solving
-
Code: The Hidden Language of Computer Hardware and Software
Programming¶
-
Learn Python Programming: An In-Depth Introduction to the Fundamentals of Python
-
Practices of the Python Pro
-
Publishing Python Packages
-
Automate the Boring Stuff with Python
-
Fluent Python
DevOps¶
-
Docker Deep Dive
-
Continuous Delivery
-
The Phoenix Project
-
Understanding Distributed Systems
Software Design¶
-
A Philosophy of Software Design
-
The Pragmatic Programmer: Your Journey to Mastery
-
The Software Craftsman: Professionalism, Pragmatism, Pride
-
Modern Software Engineering: Doing What Works to Build Better Software Faster
-
Clean Code: A Handbook of Agile Software Craftsmanship
-
Code Complete: A Practical Handbook of Software Construction
-
Designing Data-Intensive Applications
Software Testing¶
-
Python Testing with pytest: Simple, Rapid, Effective, and Scalable
-
Unit Testing Principles, Practices, and Patterns
-
Test-Driven Development: By Example
Stage 2¶
Mathematics¶
-
Discovering Mathematics (MU123)
-
Essential Mathematics 1 (MST124)
-
Introductory Discrete Mathematics
Algorithms & Data Structures¶
-
A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 1
-
Problem Solving with Algorithms and Data Structures Using Python 2nd Edition
-
Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People
-
Cracking the Coding Interview
-
LeetCode: Top Interview 150
Security¶
-
CS50's Introduction to Cybersecurity
-
Web Application Security: Exploitation and Countermeasures for Modern Web Applications
Object-Oriented Programming & Design Patterns¶
-
The Object-Oriented Thought Process
-
Head First Design Patterns
-
Patterns of Enterprise Application Architecture
Wrangling Existing Code¶
-
Refactoring: Improving the Design of Existing Code
-
Working Effectively with Legacy Code
Other OU Modules¶
-
Software engineering (TM354)
-
Communications technology (TM355)
Stage 3: Advanced Topics¶
Computer Programs¶
- Structure and Interpretation of Computer Programs: JavaScript Edition
Computer Architecture¶
-
The Elements of Computing Systems: Building a Modern Computer from First Principles
-
Companion Coursera Course: Building a Modern Computer from First Principles
Operating Systems¶
-
Operating Systems: Three Easy Pieces
-
How Linux Works: What Every Superuser Should Know
Computer Networking¶
-
Lectures (Stanford CS144): Introduction to Computer Networking
-
Computer Networking: A Top-Down Approach
Databases¶
-
Lectures (CMU) Intro to Database Systems
-
Architecture of a Database System
-
Readings in Database Systems
-
Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World
Languages and Compilers¶
- Crafting Interpreters
Distributed Systems¶
- Lectures (MIT 6.824): Distributed Systems