CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation of programming language features
Course Syllabus ● Course No. CS112 ● Title: Structure of Programming Languages ● Course Description: Selected topics in programming languages, including programming paradigms, and syntax, semantics, implementation of programming language features
Course Syllabus CS112: Struc of Prog Langs ● Course Objectives: The student should know the basics of lambda calculus, and its practical application to functional programming languages, write actual functional programs in Haskell, differentiate among the different programming paradigms: functional, imperative, declarative, and object-oriented, and study the syntax and semantics of imperative language features and their implementation.
Course Syllabus CS112: Struc of Prog Lang ● Course Outline & Time Frame: ● Lambda Calculus: expressions, reduction strategies, normalization theorem, Church's thesis. ● Functional programming as an implementation of Lambda Calculus: programming in Haskell, recursion. ● Declarative programming in Prolog. ● Imperative programming: memory map/segments of a running program, variables (scope, allocation, lifetime), parameter passing. Implementation of imperative features (in assembly language).
Course Syllabus CS112: Struc of Prog Lang ● Required readings: ● Michael Gordon, “Programming language theory and its implementation”, PH 1988 ● Gezzhi & Jazayerri, “Programming languages” ● Haskell online tutorial, ● Clocksin & Mellish, “Programming in Prolog”
CS112 Coverage of ACM Topics ● PL1. Overview of programming languages ● History of programming languages ● Brief survey of programming paradigms: Procedural, Object-oriented, Functional, Declarative (non-algorithmic), Scripting languages. ● The effects of scale on programming methodology ● PL2. Virtual machines ● concept of virtual machine, Hierarchy of virtual machines, Intermediate languages ● Security issues arising from running code on an alien machine
CS112 Coverage of ACM Topics ● PL3. Introduction to language translation ● Comparison of interpreters and compilers ● Language translation phases (lexical analysis, parsing, code generation, optimization) ● Machine-dependent and machine-independent aspects of translation
CS112 Coverage of ACM Topics ● PL4. Declarations and types ● The conception of types as a set of values with together with a set of operations ● Declaration models (binding, visibility, scope, and lifetime) ● Overview of type-checking ● Garbage collection
CS112 Coverage of ACM Topics ● PL5. Abstraction mechanisms ● Procedures, functions, and iterators as abstraction mechanisms ● Parameterization mechanisms (reference vs. value) ● Activation records and storage management ● Type parameters and parameterized types ● Modules in programming languages
CS112 Coverage of ACM Topics ● PL6. Object-oriented programming ● Object-oriented design, Encapsulation and information-hiding ● Separation of behavior and implementation ● Classes and subclasses, Inheritance (overriding, dynamic dispatch) ● Polymorphism (subtype polymorphism vs. inheritance) ● Class hierarchies, Collection classes and iteration protocols ● Internal representations of objects and method tables
CS112 Wish List ● See CC2001