Skip to content

The Self-Taught Degree

A man hiking through the welsh countryside The Journey

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