INTRODUCTION TO THE THEORY AND DESIGN OF PROGRAMMING LANGUAGES
Design and theory of programming languages: procedural, object-oriented, functional and logic paradigms. Serial and concurrent programming. Execution models and formal specification techniques.
Prerequisites & course information
Requisites: 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 Course Designation: Core GenEd - Natural Science & Wellness Level - Advanced L&S Credit - L&S Liberal Arts and Science Repeatable for Credit: No Last Taught: Fall 2026 Learning Outcomes: 1. Read, write, and transform functional programs using key paradigms such as lazy evaluation, eager evaluation, and monads. Audience: Undergraduate 2. Apply lambda calculus as a formal foundation for understanding and reasoning about functional programming languages. Audience: Undergraduate 3. Reason about and analyze program behavior through type checking, type inference, and static analysis techniques. Audience: Undergraduate 4. Construct and reason about control flow in programs using techniques such as continuation-passing style (CPS) and monadic control structures. Audience: Undergraduate 5. Evaluate the role of type systems, polymorphism, and abstraction mechanisms in enforcing program correctness and expressiveness. Audience: Undergraduate 6. Analyze how programming language features influence program security, with a focus on reasoning about memory management and control flow vulnerabilities. Audience: Undergraduate 7. Apply formal reasoning techniques to construct correctness proofs of programs. Audience: Undergraduate Learning Outcomes: 1. Read, write, and transform functional programs using key paradigms such as lazy evaluation, eager evaluation, and monads. Audience: Undergraduate 2. Apply lambda calculus as a formal foundation for understanding and reasoning about functional programming languages. Audience: Undergraduate 3. Reason about and analyze program behavior through type checking, type inference, and static analysis techniques. Audience: Undergraduate 4. Construct and reason about control flow in programs using techniques such as continuation-passing style (CPS) and monadic control structures. Audience: Undergraduate 5. Evaluate the role of type systems, polymorphism, and abstraction mechanisms in enforcing program correctness and expressiveness. Audience: Undergraduate 6. Analyze how programming language features influence program security, with a focus on reasoning about memory management and control flow vulnerabilities. Audience: Undergraduate 7. Apply formal reasoning techniques to construct correctness proofs of programs. Audience: Undergraduate
Sources
- Course catalogue ↗2026-2027