R0KernelPath
roadmap/track 14
14

Programming Abstractions & Paradigms

How to think in abstractions — functional, OOP, interpreters.

0
cs2-01

Abstraction & Computational Thinking

Abstraction is the single most powerful idea in all of computer science — the art of hiding complexity behind clean interfaces so that each layer of a system can be understood, built, and reasoned about independently.

10 concepts~18h
cs2-02

Recursion & Recursive Data

Recursion is not just a programming trick — it is the natural language of self-referential structure, and mastering it means learning to see problems as they really are.

10 concepts~18h
cs2-03

Higher-Order Functions & Functional Programming

Functions are data too — mastering higher-order functions unlocks a way of thinking that transforms how you design, compose, and reason about programs.

9 concepts~18h
cs2-04

Data Abstraction & Abstract Data Types

Data abstraction is the art of drawing a clean boundary between what a type does and how it does it — the foundational discipline that makes large software possible.

12 concepts~12h
cs2-05

Object-Oriented Programming

Object-Oriented Programming is a paradigm that organizes computation around objects — bundled data and behavior — enabling modularity, reuse, and expressive modeling of complex systems.

11 concepts~18h
cs2-06

Generic Programming & Polymorphism

Generic programming lets you write code that is correct for all types at once — the closest thing computer science has to mathematical universality.

12 concepts~18h
cs2-07

Modularity, State & Environments

Master the environment model of evaluation, closures, and mutable state — the conceptual bedrock that explains how every function, variable, and module in every language actually works.

12 concepts~18h
cs2-08

Building an Interpreter

Build a language from scratch by writing an interpreter that evaluates itself — the metacircular evaluator reveals that a programming language is just a program.

12 concepts~18h