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 11: see note of Day 10
Day 12: exam
Day 18 Question 3-8 Question 3-9
Day 19 exercise array support
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