Computer science foundations
Build a solid base in computer science, from how machines run programs through algorithms, operating systems and networks, up to the limits of what computation can do.
Beginner 13 steps
Steps
Getting oriented
-
Map of the fieldSee which core subjects make up computer science and in what order to tackle them, so self-study stays focused instead of scattered.
-
Teach Yourself Computer Science
teachyourselfcs.comfree
A structured study guide outlining essential computer science subjects, recommended textbooks, and video lectures.
-
Teach Yourself Computer Science
teachyourselfcs.comfree
-
Working at the command lineGet comfortable with the shell, files and processes, since nearly every later topic is explored by running tools from a terminal.
-
The Linux Command Line (William Shotts)
linuxcommand.orgfree
A comprehensive free learning resource and complete textbook introducing shell scripting and Linux system administration.
-
The Linux Command Line (William Shotts)
linuxcommand.orgfree
-
Version controlTrack your exercises and experiments with Git, a habit that makes every project and course assignment easier to manage.
-
Git
git-scm.comfree
A free and open-source distributed version control system designed to handle everything from small to large software projects.
-
Git
git-scm.comfree
-
Where computing came from (optional)Learn the history of computing machines and ideas, which explains many design choices that still shape today's systems.
-
Computer History Museum
computerhistory.orgfree
A cultural and historical institution dedicated to preserving the stories, computing hardware, and software artifacts of the digital revolution.
-
Computer History Museum
computerhistory.orgfree
Algorithms and data structures
-
Core data structures and algorithmsStudy arrays, lists, trees, hashing, sorting and searching with working code, the toolkit behind efficient programs.
-
Algorithms, Part I
coursera.orgfree
Fundamental course on essential algorithms and data structures taught by Robert Sedgewick and Kevin Wayne.
-
Algorithms by Jeff Erickson
jeffe.cs.illinois.edufree
Free, open-access textbook covering recursion, dynamic programming, randomized algorithms, graph algorithms, and NP-hardness.
-
Algorithms, Part I
coursera.orgfree
-
Analysing and designing algorithmsLearn asymptotic analysis, recursion, greedy methods and dynamic programming so you can reason about cost before writing code.
-
Algorithms by Jeff Erickson
jeffe.cs.illinois.edufree
Free, open-access textbook covering recursion, dynamic programming, randomized algorithms, graph algorithms, and NP-hardness.
-
Introduction to Algorithms (CLRS)
mitpress.mit.edupaid
The definitive textbook on computer algorithms by Cormen, Leiserson, Rivest, and Stein covering data structures and complexity.
-
Design and Analysis of Algorithms (MIT OpenCourseWare)
ocw.mit.edufree
Advanced undergraduate course covering design and analysis paradigms, randomized algorithms, amortized analysis, and graph algorithms.
-
Algorithms by Jeff Erickson
jeffe.cs.illinois.edufree
How computers run programs
-
Computer systemsUnderstand data representation, machine code, memory hierarchy and linking to see what really happens when your program executes.
-
Computer Systems: A Programmer's Perspective (CS:APP)
csapp.cs.cmu.edufreemium
A foundational textbook by Bryant and O'Hallaron explaining how computer architecture, OS, and compilers work together.
-
Computer Systems: A Programmer's Perspective (CS:APP)
csapp.cs.cmu.edufreemium
-
Operating systemsLearn how an operating system virtualises CPU and memory, handles concurrency and stores data persistently on disk.
-
Operating Systems: Three Easy Pieces (OSTEP)
pages.cs.wisc.edufree
A free online textbook by Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau covering virtualization, concurrency, and persistence.
-
MIT 6.S081 / 6.1810: Operating System Engineering
pdos.csail.mit.edufree
Open educational course materials and hands-on laboratory exercises based on the xv6 teaching operating system kernel.
-
Operating Systems: Three Easy Pieces (OSTEP)
pages.cs.wisc.edufree
-
Experimenting with emulators (optional)Run and inspect systems inside an emulator or virtual machine, a safe way to try what you read about kernels and hardware.
-
QEMU
qemu.orgfree
A generic and open-source machine emulator and virtualizer used across computer systems research and operating system development.
-
VirtualBox
virtualbox.orgfree
A free and open-source hosted hypervisor for x86 virtualization suited for desktop and server deployment.
-
QEMU
qemu.orgfree
-
Networks and databases in practiceCapture real network traffic and query a small embedded database to connect protocol and storage theory with observable behaviour.
Theory of computation
-
Automata and formal languagesExperiment with finite automata, grammars and Turing machines to understand the formal models behind parsers and computation itself.
-
JFLAP
jflap.orgfree
Educational software for experimenting with formal languages and automata theory, including finite state machines, pushdown automata, and Turing machines.
-
JFLAP
jflap.orgfree
-
Complexity and its limits (optional)Get an introduction to complexity classes such as P and NP, which explain why some problems resist efficient solutions.
-
Complexity Zoo
complexityzoo.netfree
Comprehensive wiki cataloging computational complexity classes and their structural relationships.
-
Computational Complexity Blog
blog.computationalcomplexity.orgfree
Influential academic blog written by Lance Fortnow and Bill Gasarch exploring complexity theory, algorithms, and theory life.
-
Complexity Zoo
complexityzoo.netfree
-
Keep up with the fieldRead accessible summaries of research and the flagship magazine of the profession to see how foundations feed current work.
-
Communications of the ACM
cacm.acm.orgfree
The flagship open-access publication of the ACM covering critical developments in computing, distributed systems, and data.
-
The Morning Paper
blog.acolyer.orgfree
An archival review blog by Adrian Colyer providing practitioner summaries of data systems and algorithmic research papers.
-
Communications of the ACM
cacm.acm.orgfree
See also
External links, by their respective authors. This path is original IPL content.