54-474 Programming Languages

Tentative Schedule Fall 2010

Date
Topic
Description
Aug 23,25
  
Programming Languages Overview

History

(Lectures available from Segue)
Become familiar with declarative and imperative  paradigms, and be able to classify most popular languages according to the applicable paradigm. Cite reasons for studying comparative programming languages.

Trace the ancestry of currently used languages. Recognize the features contributed to current languages by older languages and become familiar with the developers of significant languages and paradigms.

Reading  Sebesta Ch. 1 , Ch. 2 ; Guzdial's  blog  Aug 14, 2009
Assignment  Prepare for discussion Review Questions (RQ)Ch1 : 3, 4, 5, 7, 8, 19, 21, 26 , 29 (for Wednesday Aug 25 as quiz on Moodle)

Prepare to present the  language you are assigned (and show your examples
Aug 30, Sept. 1  Syntax and Semantics

 Attribute Grammars,
Operational Semantics, Denotational Semantics
Produce BNF grammars for expressions showing associativity and precedence, drawing of parse trees given grammars.  Be able to apply this technique to a variety of language constructs

Define tools for describing semantics: operational, axiomatic and denotational.  
Reading  Sebesta Ch. 3 
Assignment Due  Sept. 8  Expressions example
Due   Sept. 10  Chapter 3 Problem set:  7a, 8, 9, 13, 14,
  Sept. 6 Labor Day no class  
Sept. 8,13 Assertions, Pre- and Post-conditions, Program Proof Be able to find the weakest precondition for assignment statements, logical pretest loops through use of loop invariant..
Due   Sept. 13  Chapter 3 Problem set:  7a, 8, 9, 13, 14
Assignment Due  Sept. 15 Chapter 3 Problem set:21ae,  23ab, 24 
Sept.15 Lexical and Syntax Analysis Describe role of syntax analyzers.  Distinguish recursive descent parsers (LL) from shift reduce parsers(LR).
Due  Sept. 15 Chapter 3 Problem set:21ae,  23ab, 24 
Reading Chapter 4 
  
Assignment Chapter 4 homework
Sept. 20   Exam 1 Chapter 1-3
Sept. 22 Lexical and Syntax Analysis(cont)
Sept. 27,29 LISP Intro
Functional Languages
Scheme code
(Chapter 4 cont.)

Be able to apply simple list operations and trace recursive algorithms in  both Scheme and LISP.  Contrast these languages to  other functional languages such as Haskell or ML.

Brief into to LISP
(download for Windows)
Functional language paradigm
Due Problems Ch. 4 Due 9/23
Reading Sebesta Ch. 15
Assignment  Lisp problems     Scheme LISP intro

Sept. 29, Oct 4 LISP
Due Chapter 4 homework      Lisp problems and Scheme intro
Oct 6,13
 
Names, Bindings, Type Checking, Scope

Abstract Data Types

Discuss fundamental semantic issues of variables, and binding times
Be able to define and distinguish characteristics and implementation issues surrounding user-defined types, arrays, records, etc.
Assignment  Term Paper
Reading Sebesta Ch. 5,6,

Oct. 11 Fall Break  
 Oct 18,20 Expressions and Assignment Statement
Statement Level Control
Be able to describe precedence, evaluation order, associativity, complex assignment statements in a variety of languages.
Be able to discuss, distiguish and select  control mechanisms for selection and repetition, including implementation issues.
Assignment 
Reading Sebesta Ch 7,8
"GOTO Considered Harmful" from CACM,
Oct.  25, 27
 
Subprograms and Their Implementation


Be able to distinguish  between procedures and functions, flat files, parameter passing techniques--call be reference, call by value, call by value result, and call by name.

Be able to trace linkage with static scoped languages and dynamic scoped languages.    Be able to discuss and apply the notion of  activation records, techniques for implementation and control threads.
Reading Sebesta Chapter 9 and 10
 

Assignment 
Nov. 1 Exam 2
Nov 3
ADT and Encapsulation 
Support for Object-Oriented Programming 


Be able to articulate design issues for ADTs, use pararametrized ADTs, describe  encapsulation constructs and naming encapsulations.  

Be able to discuss elements of Object-oriented languages, recognize them in several languages and apply them in at least one language.
Reading Sebesta Ch. 11,12
Assignment  Objectives Test 2
 Nov. 8,10 Prolog



Reading Ch 16
Assignment 
Nov 15,17
Concurrency 
Concurrency in Java

Exception Handling 
 Be able to discuss the characteristics of Concurrency. and use them in at least two languages.

Discussion of built in features for exception handling and be able to apply them in at least two languages.
  Reading Sebesta Ch. 13,14
Java threads (from Ivor Horton Beginning Java 2)
Assignment 
Nov. 15 Term Paper Draft Due
Nov. 22 Term Paper Due
 Nov 28, Dec 1  Study topics for final


Be able to discuss the characteristics of logic Programming languages (on you own) and trace a simple Prolog program.
  Reading Reading: Self-Assessment Procedure XXIII: programming languages; Mitchell H.Clifton; Commun. ACM 38, 5 (May. 1995), Pages 89 - 97 

Presentations (15 minutes each)
 12/9
6-9  pm Final Exam Objectives for Final