Language design principles taught by building definitional interpreters — syntax, scope, state, types, objects, laziness and concurrency, using Scala, C and JavaScript.
Download course · 52 MBRenamed from CSE2120; moved from Quarter 3 to Quarter 2. Content unchanged.
Mandatory pass/fail lab assignments on WebLab, plus a heavily-weighted final computer exam also on WebLab. The exam mixes multiple-choice/open theory questions with Scala programming tasks (extending interpreters, desugarers, type checkers) — proper functional style is expected, with var and imperative loops typically disallowed unless the question says otherwise.