I. Preliminaries to the first meeting ------------------------------------------ WELCOME TO Com S 541 PROGRAMMING LANGUAGES 1 Professor Gary T. Leavens 229 Atanasoff Hall phone: 294-1580 email: leavens@cs.iastate.edu Office Hours: MW 1, TR 2 1. Pick up handouts ( of them) ------------------------------------------ A. staff introductions B. student introductions ------------------------------------------ INTRODUCE YOURSELF 1. Name 2. Graduate student in Com S? 3. Languages you know well? 4. Background in (a) programming languages (b) compilers 5. Reason for taking 541 ------------------------------------------ C. adjustments II. introduction A. prerequisites ------------------------------------------ PREREQUISITES Com S 440 + context-free grammars + compiler data structures + run-time costs of various features + large software programming experience OR Com S 342 + basic constructs of languages + interpreters + interpreter data structures + design alternatives for features + functional programming Com S 331 + formal language theory Com S 411 + software engineering practice + large software programming experience ------------------------------------------ B. plan for the course ------------------------------------------ PLAN FOR THE COURSE We will negotiate this. Beginning (see HW 0): - read 2 papers on language design, discuss next time. - presentations on overview topics - decide on syllabus. ------------------------------------------ 1. description ------------------------------------------ COURSE DESCRIPTION Survey of the goals and problems of language design. Formal and informal studies of a wide array of programming language features including type systems, naming, state, and control. Creative use of functional, object-oriented, declarative, concurrent and other programming paradigms. ------------------------------------------ 2. potential topics ------------------------------------------ POTENTIAL TOPICS I. paradigms A. object-oriented with Smalltalk, Java, or C++, ... OO design multi-methods formal semantics B. functional with Haskell, ML, or Scheme, ... streams and lazy data structures C. declarative with lambdaProlog, Prolog, or OBJ3 D. parallel pocessing distributed programs SR programming language II. Semantics A. Syntax B. Static semantics 1. axiomatic sematics 2. types (polymorphism, ...) C. Dynamic semantics 1. Operational semantics 2. Denotational semantics state, recursion, etc. D. Algebraic semantics E. Action semantics ------------------------------------------