Spring 2027

Introduction to the Theory and Design of Programming Languages

Introduction to the theory and design of programming languages, covering procedural, object-oriented, functional, and logic paradigms, serial and concurrent programming, execution models, and formal specification techniques.

no offering record for this termCredits unavailable
Recorded instructors · Spring 2027 No instructors listed

Summary

1 / 7

Past student reviews · Justin Hsu, Kaiser Pister

Programming projects were described as the hardest in a student's CS experience, while Kaiser Pister's homework was criticized for being complex and unprepared for due to surface-level lectures.

What you’ll be able to do

  • Read, write, and transform functional programs using key paradigms such as lazy evaluation, eager evaluation, and monads.

  • Apply lambda calculus as a formal foundation for understanding and reasoning about functional programming languages.

  • Reason about and analyze program behavior through type checking, type inference, and static analysis techniques.

  • Construct and reason about control flow in programs using techniques such as continuation-passing style (CPS) and monadic control structures.

  • Evaluate the role of type systems, polymorphism, and abstraction mechanisms in enforcing program correctness and expressiveness.

  • Analyze how programming language features influence program security, with a focus on reasoning about memory management and control flow vulnerabilities.

  • Apply formal reasoning techniques to construct correctness proofs of programs.

Source: UW Guide

Grade history

↗
average GPA
letter grades
A
AB
B
BC
C
D
F

All recorded terms · compare terms & instructors

Prerequisites

Course map

E C E/​COMP SCI 354 and (COMP SCI 367 or 400) or graduate/professional standing or declared in the Capstone Certificate in Computer Sciences for Professionals

    • take all
    • graduate/professional standing
    • declared in the Capstone Certificate in Computer Sciences for Professionals
    take one
COMPSCI 538

This is a best-effort interpretation; check the catalog requirements above.

Prerequisite text tree
  • Any of
    • All of
    • graduate/professional standing
    • declared in the Capstone Certificate in Computer Sciences for Professionals

Professors

Spring 2027

No instructors recorded for this selection.

Historical instructors & teaching patterns

JUSTIN HSU is recorded teaching in Spring 2019, Spring 2020. Recorded history may be incomplete and does not establish a future schedule.

KAISER PISTER is recorded teaching in Fall 2022, Spring 2023, Fall 2023, Spring 2024, Fall 2024, Spring 2025, Fall 2025, Spring 2026. Recorded history may be incomplete and does not establish a future schedule.

Recorded history may be incomplete and does not establish a future schedule.

Calendar & sections

Spring 2027

Schedule loads here as you scroll.

SectionModeEnrolled / capacityWaitlist

Times are Central. Select a meeting for details; export includes recorded dates for the selected sections.

Meeting source records

Student experience

the class

Past student reviews · Justin Hsu

Students found the content on programming languages and paradigms interesting and valuable for software engineering, with Justin Hsu described as helpful and caring.

Recent recorded grades — Spring 2025: 2.96 GPA, 40.5% A/AB (n=42 letter grades); Fall 2025: 3.43 GPA, 76.3% A/AB (n=38 letter grades); Spring 2026: 2.97 GPA, 37.5% A/AB (n=16 letter grades).

difficulty & workload

Past student reviews · Justin Hsu, Kaiser Pister

Programming projects were described as the hardest in a student's CS experience, while Kaiser Pister's homework was criticized for being complex and unprepared for due to surface-level lectures.

Past student reviews · Kaiser Pister

Kaiser Pister was considered engaging and understanding, with exams resembling practice tests and helpful office hours available for difficult homework assignments.

Topics

  • Programming language paradigms (procedural, object-oriented, functional, logic)
  • Serial and concurrent programming
  • Execution models and formal specification techniques
  • Lambda calculus and functional programming foundations

Skills

  • Analyze programming language paradigms including procedural, object-oriented, functional, and logic approaches.
  • Write and transform functional programs using lazy evaluation, eager evaluation, and monads.
  • Analyze program behavior via type checking, type inference, and static analysis.
  • Construct correctness proofs of programs using formal reasoning techniques.

Grades

Latest available · Spring 2026— not enough history to project Spring 2027.

average GPA
A / AB grades
letter grades
Instructor

Grade distribution · % of letter grades

A
AB
B
BC
C
D
F

Grades over time

Through Spring 2026

More grade details Grade mix, volume & source data

Not enough comparable courses for Spring 2027 in UW–Madison.

Sources & history

UW–Madison

Catalog & offerings

Descriptions, prerequisites, and recorded course offerings.

Catalog observation history

Observations at scan time; dates do not imply when a catalog change took effect.

Selected offering source records

No offering records for the selected term.

Raw records
[]
Rate My Professors

Student reviews

Original comments behind the course and instructor summaries.

Read original reviews
Madgrades

Grade history

Recorded grade distributions by term, section, and instructor.

Explore recorded grades
Model outputs & technical records
Qwen/Qwen3.8-27B
LLM outputs across runs
Full model traces

Recorded model configuration, reasoning, and tool conversations.

Model & dataset provenance
{
  "model": "Qwen/Qwen3.8-27B",
  "model_revision": "1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0",
  "task_version": "17",
  "output_id": "a55cec337d91cec63c5eb6b3199b7287cc8f9201d75ca14b8fabe1ea000f6e35",
  "requirements_status": "needs_review",
  "dataset_revision": "fc1811fa52e581ea57a35c0cf3343f8740a8ffbf",
  "observed_at": "2026-10-14 17:50:09.728220+00:00"
}