CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including...

11
CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation of programming language features

Transcript of CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including...

Page 1: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

CS112: Structure of Programming Languages

A smorgasbord of topics inprogramming languages

including programming paradigmsand syntax, semantics, implementation

of programming language features

Page 2: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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

Page 3: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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.

Page 4: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, 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).

Page 5: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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”

Page 6: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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

Page 7: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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

Page 8: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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

Page 9: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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

Page 10: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

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

Page 11: CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.

CS112 Wish List

● See CC2001