Skip to main content
UCLA
Computer Science
4 credits

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. 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. 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. 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. 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

Preview
65 min

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.

0 / 4 done~65m remaining
Keep this plan free

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