Stanford University · on Stanford Online

CS107: Programming Paradigms

4.8(4,500) on Stanford Online·680K enrolled
Intermediate 45 hours EnglishFREE
SkillsCC++Memory managementSystems programmingAssembly basicsComputer architecture

Is this course right for you?

Our take
For programmers who want to understand what the machine is actually doing beneath their code, this is the course, and it is free through Stanford's open lectures.

Good for: programmers who want to understand C, C++ and how programs work at a low level.

Skip if: you are new to programming, or you want modern web or app development.

Jerry Cain teaches C and assembly to peel back the abstractions — memory, the stack and heap, pointers, compilation and linking, plus functional programming in Scheme — so you understand why a memory bug or a performance bottleneck happens, not just that it does. It is systems foundations taught with real depth.

It is not for beginners and not about modern web or app development, so if you are new to programming or want to ship apps, start elsewhere. There is no certificate. The lectures were recorded in 2008, but the systems concepts are still relevant.

Comparison · LBS

Compare alternatives for CS107: Programming Paradigms

Same topic, different options. We surface the trade-offs others hide so you can pick the course that actually fits your time, budget, and goals.
Stanford Online4.8(4,500)
CS107: Programming Paradigms
Price
Free
Free lecture materials available online
Duration
45 hrs
Level
Intermediate
Certificate
freeCodeCamp4.8(15,000)
JavaScript Algorithms and Data Structures Certification
Price
Free
Completely free, forever
Duration
300 hrs
Level
Intermediate
Certificate
Course Certificate
MIT OpenCourseWare4.9(8,000)
Introduction to Algorithms (6.006)
Price
Free
Completely free, openly licensed — no certificate
Duration
45 hrs
Level
Intermediate
Certificate
freeCodeCamp4.7(3,900)
Relational Database Certification
Price
Free
Completely free, forever
Duration
300 hrs
Level
Intermediate
Certificate
Course Certificate
Prices & availability can change — confirm on the provider's site. We're not affiliated with any single provider.

About this course

CS107 is Stanford's course that peels back the abstraction layers most programmers take for granted — it teaches C and assembly to show what the hardware is actually doing when you run your Python or JavaScript code. It covers C data types and memory, the stack and heap, compilation and linking, assembly language, functional programming paradigms in Scheme, and generic programming with polymorphism.

Instructor

JC
Jerry Cain
Stanford Online instructor
680K+ learners5 courses4.8 instructor rating

Taught by Jerry Cain, Stanford CS lecturer, known for accessible explanations of low-level systems concepts for an audience coming from higher-level languages.

Frequently asked questions

Mainly C and C++, going deep on how they manage memory, with excursions into assembly-level detail and other paradigms through languages like Scheme and Python. The languages are a vehicle for understanding how programs actually work, rather than the point in themselves.

Yes, for what it teaches. The lectures are from around 2008, so specific tools look dated, but the substance — how memory, pointers, the stack and different language paradigms really work under the hood — hasn't changed, and it's exactly the material modern, higher-level courses tend to skip.

Definitely — this is not a first course. It assumes you can already program, roughly at the level of a second university programming course, and are comfortable with recursion and data structures. Complete beginners will be lost, so start with something like CS50 first and come back to this.

It's demanding, but rewarding. The challenge is conceptual — genuinely understanding pointers, memory layout and how languages are implemented — rather than heavy maths. If you've only used higher-level languages, the C and memory material will stretch you, and that stretch is the whole value.

A much deeper understanding of what those languages hide from you: how memory is really managed, how data is laid out, and why languages behave the way they do. It's the course that turns someone who can use a language into someone who understands what's happening underneath — genuinely worthwhile even without a certificate.
Free
to audit
Enroll now