UCLA CS 131: Programming Languages
CS 131 is UCLA's programming-languages course, surveying language paradigms and concepts (type systems, scoping, functional programming, concurrency, and memory models) through a rotating cast of languages such as OCaml, Prolog, Scheme, and Java or Python. It's a core upper-division requirement, also long associated with Professor Eggert.
Fennie is independent and not affiliated with UCLA. This is an unofficial study guide.
What makes it hard
The course makes you learn several unfamiliar languages quickly and think about what language features mean rather than just using them, a mental shift that catches students used to writing working code. The homeworks are concept-dense, and Eggert-style exams ask precise questions about type inference, evaluation order, and language semantics.
What you'll cover
- • Functional programming and higher-order functions
- • Type systems and type inference
- • Scoping and binding
- • Logic programming
- • Concurrency and memory models
- • Language evaluation and design tradeoffs
The CS 131 study guide
How to study for UCLA CS 131, step by step.
- 1
Learn each new language by writing in it, fast
CS 131 rotates through OCaml, Prolog, and others, and reading about a paradigm isn't enough. Write small programs in each new language the week it's introduced so the syntax stops blocking the concepts.
- 2
Focus on concepts behind the languages
The languages are vehicles for ideas: type inference, scoping, evaluation order. For each feature, ask what problem it solves and how languages differ, because that comparison is what exams test.
- 3
Trace evaluation and type inference by hand
Eggert-style exams ask precise questions about how an expression evaluates or what type is inferred. Work through these on paper for small examples until the rules are mechanical.
- 4
Start the concept-dense homeworks early
The assignments demand thinking in unfamiliar paradigms, which takes longer than ordinary coding. Begin the week they post so the mental shift has room to happen before the deadline.
Today
Today's CS 131 plan
What a Fennie Daily Plan looks like for CS 131. Yours is built from your own syllabus and adapts every day to your deadlines and progress.
First plan free, no card required. Fennie is independent and unaffiliated with your school.
FAQ
Is CS 131 hard at UCLA?
The difficulty is conceptual and breadth-based: you learn several unfamiliar languages and reason about language semantics, a shift from just writing working code. Students who write in each language early and focus on the concepts behind them do well.
What languages does CS 131 use?
It rotates through paradigm-representative languages: commonly OCaml for functional programming, Prolog for logic programming, Scheme, and a mainstream language for concurrency. The specific set varies by instructor and term.
How do I study for CS 131 exams?
Trace evaluation and type inference by hand on small examples until the rules are mechanical, and build comparisons of how languages handle scoping, types, and evaluation. The exams ask precise semantics questions, not just whether you can write code.
More UCLA courses
CS 31: Introduction to Computer Science I
CS 31 is UCLA's intro programming course, taught in C++, covering control flow, functions, arrays, pointers, and basic program design. It's the first required course for CS majors and a common choice for engineering and math students adding programming skills.
CS 32: Introduction to Computer Science II
CS 32 is UCLA's data structures course in C++, covering recursion, linked lists, stacks, queues, trees, hash tables, and algorithm analysis. Its multi-thousand-line projects, including the famous game-engine project, are a step change in scale from CS 31.
CS 33: Introduction to Computer Organization
CS 33 is UCLA's computer organization course, taking students below C into machine-level representation, x86-64 assembly, the memory hierarchy and caches, linking, and concurrency basics. It follows CS 32 and is where CS majors first see what their code becomes on real hardware.
CS 35L: Software Construction
CS 35L is UCLA's software-construction course, teaching the practical toolchain upper-division CS assumes: the Unix/Linux command line, shell scripting, Git, build systems, Python and scripting, and a collaborative software project. Long associated with Professor Eggert, it's the course that turns students into functional engineers.