CSCI 384 Fall 2021Foundations of Programming Languages“Giving lambda its legs since the year 2000.” ……………………. . . . . . . . . . . . . .This course examines the means for expression and execution of computer programs, focusing on programming systems geared towards checking programs. We’ll develop our own programming languages, and we’ll write parsers, interpreters, and checkers for the languages that we invent. Our goal is to go beyond languages like Python and C++ and learn approaches to study a wider variety of programming languages. We first examine functional programming languages. like Haskell and dialects of ML, because of their sophisticated type systems. These require us to look at Church’s lambda calculus which serves as their foundation. These languages’ type systems are tied very closely to mathematical logic. We will study this correspondence and how it relates to mathematical proof, seeing proof as a kind of programming. We’ll finish by modeling features found in C-like languages, especially side-effecting statements and exceptions, studying the use of monads, continuations, and control operations in functional programming languages. We’ll use the Agda programming language to express and prove properties of programs. We look more generally at these proof assistants and their dependant type systems. Prerequisites: MATH 112 or 113; you must be familiar with making mathematical arguments and giving mathematical proofs. CSCI 221 or the equivalent Meets: 3-4:20MW in Physics 240A. ……………………. . . . . . . . . . . . . . . . .Course ScheduleWeek 01: Syntactic specification and analysis. ……………………. . . . . . . . . . . . . . . . .Responsibilities and EvaluationThere will be regular homework assignments based on the lecture and reading material, roughly every week. These typically involve writing tricky programs in, or designing features of, the language systems we cover in lecture. Thus, they’ll be a mix of written work and programming work. In addition, there will be several projects where you will implement some component of a programming language system, including:
……………………. . . . . . . . . . . . . . . . .Learning OutcomesStudents will be able to ……………………. . . . . . . . . . . . . . . . .Bottom |