**CS 538: Theory and Design of Programming Languages** Kaiser Pister A UW Madison Computer Science course exploring an introduction to programming language theory and design. This course is intended for upper division computer science undergraduates with a strong background in programming. No specific prior programming language is needed. [Course Syllabus gdoc](https://docs.google.com/document/d/1fHPlwfnbsCGGVy0ex1bVEI_nOpSk6yTzBYt2Vnw9zpw/edit?usp=sharing) Schedule ============================================================== Topics and Schedule: * Introduction to Functional Programming * Basic functional paradigms * Using JavaScript * Introduction to Lambda Calculus * Understanding the Environment Model * Introduction to Type Systems * Using Haskell * Type Inference & Static Analysis * Polymorphism * Ad hoc through Type Classes * Object Oriented Design * Dynamic polymorphism through virtual pointers * Using Modern Smalltalk * Advanced Topics in PL * Control Flow * Using Continuation Passing Style * Writing Imperative Proofs * Solving Security Flaws at the Language Level * Intro to Program Synthesis Work load ============================================================== There will be a written homework and a programming assignment due each week. Expectations ============================================================== You do not need to have any prior experience with the languages used in this course, we will cover the relevant aspects of each. Links ============================================================== [Canvas](https://canvas.wisc.edu) has all the course info. [Gradescope](https://www.gradescope.com) is where you will submit assignments. [Piazza](https://piazza.com/class/k4j2q3q3q3q3q3) is where you can ask questions. [Old course website](https://cseweb.ucsd.edu/~kpister/cse130-summer19/) from when I was at UCSD.