I. Preliminaries for the first meeting A. staff introductions ------------------------------------------ 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 Class URL: http://www.cs.iastate.edu/ ~leavens/ComS541.html Pick up handouts: ( of them) ------------------------------------------ B. student introductions ------------------------------------------ INTRODUCE YOURSELF 1. On the board write your: a. name b. email address 2. Graduate student in Com S? 3. Programming Languages you know well? 4. Previous classes in this area? 5. Reason for taking 541? ------------------------------------------ II. the course 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 ------------------------------------------ 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 progamming 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 lambda Prolog, Prolog, OBJ3 or AKL, Prolog(R) D. parallel programming distributed programs SR programming language II. Semantics A. Syntax B. Static Semantics 1. Axiomatic Semantics 2. Types (polymorphism,...) C. Dynamic Semantics 1. Operational Semantics 2. Denotational Semantics state, recursion, etc. D. Algebraic semantics E. Action semantics ------------------------------------------