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 1¶
Introduction to Computing¶
-
Introduction to computing and information technology 1 (TM111)
-
Introduction to computing and information technology 2 (TM112)
-
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¶
-
Composing Programs
-
Structure and Interpretation of Computer Programs: JavaScript Edition
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
Software Testing¶
-
Python Testing with pytest: Simple, Rapid, Effective, and Scalable
-
Unit Testing Principles, Practices, and Patterns
-
Test-Driven Development: By Example
-
Agile Testing: A Practical Guide for Testers and Agile Teams
Mathematics¶
-
Discovering Mathematics (MU123)
-
Essential Mathematics 1 (MST124)
-
Introductory Discrete Mathematics
Computer Architecture¶
-
The Elements of Computing Systems: Building a Modern Computer from First Principles
-
Companion Coursera Course: Building a Modern Computer from First Principles
Stage 2¶
Algorithms & Data Structures¶
-
Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People
-
A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 1
-
Algorithms, Data Structures and Computability (M269)
-
Cracking the Coding Interview
-
How to Solve It: A New Aspect of Mathematical Method
-
LeetCode: Top Interview 150
Security¶
-
CS50's Introduction to Cybersecurity
-
Web Application Security: Exploitation and Countermeasures for Modern Web Applications
Object-Oriented Programming¶
-
Python Object-Oriented Programming
-
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
Managing IT¶
-
Software Requirements Essentials: Core Practices for Successful Business Analysis
-
User Stories Applied: For Agile Software Development
-
The Mythical Man-Month: Essays on Software Engineering
Stage 3¶
Other OU Modules¶
-
Communication and information technologies (TM255)
-
Software engineering (TM354)
-
Communications technology (TM355)
Operating Systems¶
-
How Linux Works: What Every Superuser Should Know
-
Operating Systems: Three Easy Pieces
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
-
Understanding Distributed Systems
-
Designing Data-Intensive Applications
Stage 4 — 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¶
-
Docker Deep Dive
-
Lectures (MIT) The Missing Semester
-
Soft Skills: The Software Developer's Life Manual
-
Pro Git
-
Microsoft Azure AZ-900
-
Microsoft Azure AI-900