CSCE 330: Programming Language Structures
TTH 2:00PM-3:15PM SWGN 2A27
Prerequisites: CSCE 212, CSCE 245, MATH 374
Instructor: Marco Valtorta
Office: Swaeringen 3A55, 777-4641
E-mail:
mgv@cse.sc.edu
Office Hours: M 1400-1530 W 1000-1100 or by previous appointment.
Teaching Assistant: Ravi Katpelly
Office 3D22,
katpelly@cse.sc.edu
Office Hours: MTh 1300-1400,
Phone 777-8944
Syllabus
Notes concerning the final exam
Grading Policy
Reference materials:
Ghezzi, Carlo and Mehdi Jazayeri. Programming Language
Concepts.
Wiley, 1998 (required text, referred to as [G]).
Supplementary materials from the authors, including an
errata list, are available. A local copy of the simplesem interpreter is
available as a zip archive (simple.zip) at
ftp://ftp.cse.sc.edu/pub/valtorta/.
Simplesem has also been installed on the departmental Sun workstations
(rivers and constellations): see /usr/local/etc/csce330.
See below for an introduction to Simplesem and its use.
Ullman, Jeffrey D. Elements of ML Programming: ML97 Edition.
Prentice-Hall, 1998 (required text, referred to as [U]).
Supplementary materials from the author, including an
errata list, are available.
The
current departmental syllabus and the
old departmental syllabus for CSCI 330 list the following goals for
the course:
- Categorize a language as imperative (procedural), functional
(applicative) or declarative (logic).
- Understand and use syntax descriptions in EBNF. {homework, tests}
- Explain the procedural semantics of procedural languages and the
denotational semantics of procedural languages.
- Write code in functional and logic languages (e.g., ML and Prolog).
- Introduce formal methods for the description of programming languages.
- Develop an understanding of the organization of programming languages
and the run-time behavior of programs.
- Introduce languages which illustrate a wide variety of approaches to
programming language design and implementation.
- Provide an opportunity to use a variety of different computer
environments.
Specific objectives of this course are:
- Introduce a functional and a logic programming language;
- Provide a comparative overview of programming languages and their
features;
- Describe (semi-)formally syntax and semantics of
programming language constructs.
- Study the run-time behavior of block-oriented, statically-typed imperative
languages.
Lecture Log
Lecture Notes
Student Presentations
Student presentation information
Homework, Tests, and Programs
- Grading policy per assignment
- Homework 1 on preliminaries and history (in
postscript format)
- Homework 2 on preliminaries history, and syntax,
including exercises 2.9.1 and 2.9.2 (in postscript format)
- Old Test 1 (in
postscript format, with answer, to help you prepare for the first test)
- Example of proving the correctness of an
iterative program (in postscript format)
- Program 1 on operational semantics (Simplesem) of
static languages (in postscript format)
- Program 2 on FP (in postscript format)
- Old Test 2 (in
postscript format, with answer, to help you prepare for the second test)
- HW3: 2.1.2, 2.2.2, 2.4.1, 2.4.3, 2.4.4, 2.4.5 [U], due Thursday, November
18
- PR3: 2.1.1, 3.1.1, 3.1.2, 3.2.1 [U], due Tuesday, November 23
- Program 4 on Prolog (in postscript format), due
Thursday, December 2
Quizzes
Quiz 1 of 04-08-31
(in postscript format, with answer)
Quiz 2 of 04-09-02
(in postscript format, with answer)
Quiz 3 of 04-09-07
(in postscript format, with answer)
Quiz 4 of 04-09-09
(in postscript format)
Quiz 5 of 04-09-14
(in postscript format, with answer)
Quiz 6 of 04-09-16
(in postscript format, with answer)
Quiz 7 of 04-09-21
(in postscript format, with answer)
Quiz 8 of 04-09-23
(in postscript format, with answer)
Quiz 9 of 04-09-29
(in postscript format, with answer)
Quiz 10 of 04-10-05
(in postscript format, with answer)
Quiz 11 of 04-10-07
(in postscript format, with answer)
Quiz 12 of 04-10-12
(in postscript format, with answer)
Quiz 13 of 04-10-19
(in postscript format, with answer)
Quiz 14 of 04-10-21
(in postscript format, with answer)
Quiz 15 of 04-10-28
(in postscript format, with answer)
Quiz 16 of 04-11-09
(in postscript format, with answer)
Quiz 17 of 04-11-11
(in postscript format, with answer)
Quiz 18 of 04-11-18
(in postscript format, with answer)
Quiz 19 of 04-11-23
(in postscript format, with answer)
ML Information
Prolog Information
Some useful links:
In this class, we write dates according to
ISO Standard 8601.
Introduction to Simplesem and its use.
Paper by Paul Graham on John McCarthy's original LISP interpreter.
Local copy of the paper on the original LISP interpreter:
postscript, two pages per sheet.
Note for lectures on the LISP interpreter (in postcript)
Paper by Paul Graham on a large application of LISP.
AutoLISP is used in AutoCAD
How to view postscript in Windows:
Wim Sweldens's web page on GSview.
Carter Bays's FP interpreter. This link does not lead to a working
interpreter as of October 2004.
Carter Bays's FP interpreter. This is a temporary link to a working
FP interpreter.
Help sheet for Carter Bays's FP interpreter. This is a temporary link.
Norman Matloff's Introduction to the vi Text editor
Norman Matloff's Unix Tutorial Center
John McCarthy, developer of LISP, wins the Franklin Medal