CSc 335 Programming Language Paradigms

Spring Semester 2005

 

 

(New) Catalog Description  Aspects of the design and implementation of functional, imperative, logic and object-oriented programming languages, presented via a sequence of interpreters.  Topics include abstraction, parameter passing, type checking, inheritance, and continuations.  Substantial programming assignments. 

 

Course Goals (i) introduction of a modern wide-spectrum language supporting declarative functional programming; (ii) introduction of fundamental techniques of program verification; (iii) provision of a working knowledge of some of the essential concepts of programming languages, forming a basis for understanding future developments.

 

Required Texts: Friedman, Wand, Haynes: Essentials of Programming Languages, 2nd Edition

 

Recommended Text  Abelson and Sussman, The Structure and Interpretation of Computer Programs, Friedman and Felleisen, The Little Schemer

 

Required Software  Please download and install drscheme, available  for both Windows and Linux at http://www.plt-scheme.org.  The drscheme package is also available in our laboratories. 

 

Prerequisites by Topic  (i) discrete mathematics and data structures; (ii) algorithms; (iii) experience constructing programs of some size.  That is, CSc 220 and CSc 221.

 

Major Topics Covered in the Course  (i) foundations: introduction to scheme and the lambda calculus, inductive data specification and recursive programming, representational transformation; (ii) interpreters as mechanisms for explaining the run-time behavior of languags: developing an interpreter for a lexically scoped language with first-class procedures, recursion, and assignment; (iii) parameter-passing mechanisms: call-by-reference, call-by-need, call-by-name; (iv) types: checking and inference; (v) objects: basic concepts and an efficient run-time architecture; (vi) objects and types combined: abstract classes, abstract methods, and casting.  If time permits, we will also consider  (vii) continuation-passing style: from recursion to iteration, exception-handling, and multi-threading. 

 

Laboratory Project  Students,working in teams of 2, will complete a large project over the final weeks of the course.  Each team will make a professional presentation of its project to the class.

 

Homework  Programming problems and reading will be assigned in every class; some portion of (nearly) every class will be dedicated to going over homework problems.   One homework problem from each assignment – you will not know which one! – will be graded..

 

Grading  There will be two hour exams (20% each) and a final exam (25%); the project will count for 25% of the grade. Graded homework assignments will make up the remaining 10%.

 

Office Hours 

  Xiaowei Xu   2:00-3:30   Tuesdays     278 Shepard Bld.  Xuxw76@yahoo.com

  Yegor Bryukhov 2:30-3:30/4:45-5:45 Thursdays   7101/NAC   yegor@optonline.net

 

Notes:

Day 1

Day 2

Day 3

Day 4

Day 5

Day 6

Day 7

Day 8

Day 9

Day 10\

Day 11: see note of Day 10

Day 12: exam

Day 13

Day 14

Day 15 Question 3-5

Day 16 Question 3-7

Day 17

Day 18 Question 3-8 Question 3-9

Day 19 exercise array support

Day 20

Final Project: Exercise 3.62, 3.63, 3.64, 3.65 and write up a testing program using your own defined language.

Student's presentations:
Designing Programming Languages: Sunny Singh and Mubarak Abdella