CSCE 330: Programming Language Structures
TTH 2:00PM-3:15PM SWGN 2A19
Prerequisites: CSCE 212, CSCE 245, MATH 374
Instructor: Marco Valtorta
Office: Swaeringen 3A55, 777-4641
E-mail:
mgv@cse.sc.edu
Office Hours: MWF 1030-1130 or by previous appointment.
Teaching Assistant: Ravi Katpelly
Office 3D11,
katpelly@cse.sc.edu
Office Hours: TTh 1300-1400,
Phone 777-8944
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
Student Presentations
Student presentation information
Lecture Notes
Homework, Tests, and Programs
Quizzes
Quiz 1 of 04-01-15
(in postscript format, with answer)
Quiz 2 of 04-01-22
(in postscript format, with answer)
Quiz 3 of 04-01-29
(in postscript format, with answer)
Quiz 4 of 04-02-05
(in postscript format, with answer)
Quiz 5 of 04-02-10
(in postscript format, with answer)
Quiz 6 of 04-02-12
(in postscript format, with answer)
Quiz 7 of 04-02-24
(in postscript format, with answer)
Quiz 8 of 04-03-04
(in postscript format, with answer)
Quiz 9 of 04-04-01
(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
Norman Matloff's Introduction to the vi Text editor
Norman Matloff's Unix Tutorial Center
John McCarthy, developer of LISP, wins the Franklin Medal