CSCE 330: Programming Language Structures
MWF 1010-1100 SWGN 2A21
Prerequisites: CSCE 240 and MATH 374
Instructor: Marco Valtorta
Office: Swaeringen 3A55, 777-4641
E-mail:
mgv@cse.sc.edu
Office Hours: MWF 1100-1200
Any student with a documented disability should contact the Office of
Student Disability Services at (803)777-6142 to make arrangements for proper
accommodations.
Syllabus
Grading Policy
Reference materials:
Allen B. Tucker and Robert E. Noonan. Programming Languages:
Principles and Paradigms, second edition,
McGraw-Hill, 2007 (required text, referred to as [T]).
Supplementary materials from the authors, including an
errata list, are available.
Graham Hutton. Programming in Haskell.
Cambridge University Press, 2007 (required text, referred to as [U]).
Supplementary materials from the author, including an
errata list, are available.
The
current departmental syllabus,
an old departmental syllabus (for historical information) and
an even older departmental syllabus (for historical information)
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 programming language (Haskell)
- Introduce a logic programming language (Prolog)
- 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
Homework, Tests, and Programs
Grading policy per assignment
Homework 1 on preliminaries and history (in
pdf format), assigned 2009-08-21, due 2009-08-28
Homework 2 on preliminaries and history (in
pdf format), assigned 2009-08-24, due 2009-08-28
Homework 3 on syntax,
assigned 2009-08-28, due 2009-09-02: Exercises 2.1, 2.2, 2.3 (the
grammar in figure 2.7 is EBNF, not BNF), 2.4 (same comment as for 2.3),
2.5(a), 2.6(a), 2.7(a), 2.8(a), 2.9(a), 2.10(a), 2.11
Homework 4 on syntax, assigned 2009-08-28, due 2009-09-09 (Wednesday):
Exercises
2.12, 2.13, 2.14, 2.16, 2.18, 2.19, 2.20 (for the parse tree of 2.5(a) only)
Homework 5 on axiomatic semantics, assigned 2009-10-16, due 2009-10-21 (Wednesday):
Exercise 18.2 [T]. Please note that there is an error in the program fragment
at the beginning of the exercise, and replace "n - - 1" with "n - 1".
Program 1 on Simplesem (operational semantics, in
pdf format), assigned 2009-09-26, due 2009-09-04; see
this document for information on
how to run Simplesem
Program 2 on Backus's fp (in
pdf format), assigned 2009-11-06, due 2009-09-11
Program 3 on Haskell: (1) Install either hugs or GHC on your computer; (2)
do all exercises at the end of Ch.2 [H],
assigned 2009-11-13, due 2009-11-20
Program 4 on Haskell: Do exercises 1,2,4,5,6, Ch.4 [H], assigned 2009-11-18, due 2009-11-30.
Program 5 on Haskell: Do exercises 4,5 Ch.6 [H], assigned 2009-11-23,
due 2009-12-04.
Program 6 on Prolog (in
pdf format), assigned 2009-11-23, due 2009-12-04
Old Test 1 (in
pdf format, with answer)
Old Test 2 (in
pdf format, with answer)
Old Test 3 (in pdf format, no answers)
Old Test 4 (in pdf format, no asnwers)
Haskell Information
Quizzes (In-Class Exercises)
Quiz 1 of 09-08-28
(in pdf format, with answer)
Quiz 2 of 09-09-02
(in pdf format, with answer)
Attendance at the guest lecture of 2009-09-14 counts as a successful quiz
(Quiz 3).
Quiz 4 of 09-09-18
(in pdf format, with answer)
Attendance at the video presentation of 2009-10-7 counts
as a successful quiz (Quiz 5).
Quiz 6 of 09-10-14
(in pdf format, with answer)
Quiz 7 of 09-10-16
(in pdf format, with answer)
Quiz 8 of 09-10-26
(in pdf format, with answer)
Quiz 9 of 09-11-02
(in pdf format, with answer)
Quiz 10 of 09-11-04
(in pdf format, with answer)
Quiz 11 of 09-11-09
(in pdf format, with answer)
Some useful links:
In this class, we write dates according to
ISO Standard 8601.
Brian Hayes. "The Semicolon Wars." _American Scientist_, July-August 2006,
pp.299-303.
Local copy, pdf.
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.
C.A.R.
Hoare. "Retrospective: An Axiomatic Basis for Computer Programming."
_Communications of the ACM_, 52, 10 (October 2009), pp.30-32.
C.A.R. Hoare. "An Axiomatic Basis for Computer Programming.
_Communications of the ACM_, 12, 10 (October 1969), 576-580.
The Simplesem interpreter: unzip, and follow the instructions in
readme.txt.
Carter Bays's FP interpreter