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.

Build my CS 131 study plan

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.

  5. 5

    Pace the paradigm-hopping with Fennie

    Upload the CS 131 syllabus and Fennie's Daily Plans schedule each language and concept with time to absorb it across the quarter, generating type-inference and evaluation quizzes from your actual course materials. Free to start.

    Start my CS 131 plan free

How Fennie helps with CS 131

Fennie's Daily Plans pace CS 131's parade of languages and paradigms so each gets real absorption time across the ten-week quarter. Chat through what a language feature actually means — why type inference works, how scoping rules differ — and drill generated quizzes on the type-inference and evaluation questions the precise exams favor.

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.

Pass CS 131 with a plan, not a cram

Upload your CS 131 materials and Fennie generates a Daily Plan paced to your deadline — plus chat, flashcards, and quizzes built from the actual course content.

Get started free

More UCLA courses