CSCE 330: Programming Language Structures
TTH 09:30-1045 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: TBD
Teaching Assistant: Alexander Alexandrov
Office TBD,
aalexa@gmail.com
Office Hours: TTh 1300-1400,
Phone 387-3401
Syllabus
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 consists of exercises 1.9.2,
1.9.3, and 1.9.4 in Ghezzi and Jazayeri's book.
- Homework 2 on preliminaries and history (in
postscript format)
- Homework 3 on syntax consists of exercises 2.9.1, 2.9.2, and 2.9.11
in Ghezzi and Jazayeri's book. It is due on February 10.
- Old Test 1 (in
postscript format, with answer, to help you prepare for the first test)
- Program 1 on Simplesem (in
postscript format)
- Program 2 on FP (in
postscript format)
- Practice questions for the second
midterm
- Take-home final exam (in
postscript format)
Quizzes
Quiz 1 of 05-01-18
(in postscript format, with answer)
Quiz 2 of 05-01-20
(in postscript format, with answer)
Quiz 3 of 05-01-27
(in postscript format, with answer)
Quiz 4 of 05-02-01
(in postscript format, with answer)
Quiz 5 of 05-02-03
(in postscript format, with answer)
There is no correction guide to Quiz 6 of 05-02-08, which is in part
identical to Quiz 5.
Quiz 7 of 05-02-10
(in postscript format, with answer)
Quiz 8 of 05-02-22
(in postscript format, with answer)
Quiz 9 of 05-03-01
(in postscript format, with answer)
Quiz 10 of 05-03-03
(in postscript format, with answer)
Quiz 11 of 05-03-17
(in postscript format, with answer)
Quiz 12 of 05-03-29
(in postscript format, with answer)
Quiz 13 of 05-03-31
(in postscript format, with answer)
Quiz 14 of 05-04-14
(in postscript format, with answer)
Quiz 15 of 05-04-19
(in postscript format, with answer)
ML Information
Prolog Information
Some useful links:
In this class, we write dates according to
ISO Standard 8601.
The Ariane 5 launch disaster.
Local copy of paper for HW2: Rajlich, V., N. Wilde, M.
Buckellew. and H. Page. ``Software Cultures and Evolution.'' _Computer_,
34, 9 (September 2001), pp.24--28..
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.
FAQ for comp.lang.lisp.
AutoLISP is used in AutoCAD
How to view postscript in Windows:
Wim Sweldens's web page on GSview.
Carter Bays's FP interpreter
Norman Matloff's Introduction to the vi Text editor
Norman Matloff's Unix Tutorial Center
A site with a short program written in many languages, not including FP.
A site with onother short program written in several languages..
John McCarthy, developer of LISP, wins the Franklin Medal