CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including...
-
Upload
allan-morrison -
Category
Documents
-
view
216 -
download
0
Transcript of CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including...
CS112: Structure of Programming Languages
A smorgasbord of topics inprogramming languages
including programming paradigmsand 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 SyllabusCS112: 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 SyllabusCS112: 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 SyllabusCS112: Struc of Prog Lang
● Required readings:● Michael Gordon, “Programming language theory and
its implementation”, PH 1988● Gezzhi & Jazayerri, “Programming languages”● Haskell online tutorial, http://www.haskell.org/● 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