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:
Michael L. Scott. Programming Language Pragmatics, third edition, Morgan-Kaufmann, 2009 (required text, referred to as [S]).
Supplementary materials from the author, 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:
- 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
- Introduce a functional programming language (Haskell)
- Introduce a logic programming language (Prolog)
Lecture Log
Lecture Notes
Homework, Tests, and Programs
Grading policy per assignment
Homework 1 on preliminaries and history (in
pdf format), assigned 2010-08-20, due 2010-08-27
Note: hw1 was modified on 2010-08-23, to take into account a curricular
change at MIT.
Program 1 on Haskell: (1) Install either hugs or GHC on your computer; (2)
do all exercises at the end of Chs. 1 and 2 [H],
assigned 2010-08-30, due 2010-09-08
Program 2 on Haskell:
do all exercises at the end of Ch. 3 [H],
assigned 2010-09-08, due 2010-09-13
Program 3 on Haskell:
do all exercises at the end of Ch. 4 [H], assigned 2010-09-13, due 2010-09-20.
Program 4 on Haskell:
do exercises 3, 4, and 7 at the end of Ch. 5 [H], assigned 2010-09-13,
due 2010-09-22.
Program 5 on Haskell:
do exercises 1-5 at the end of Ch. 6 [H], assigned 2010-09-20, due 2010-10-01.
Program 6 on Haskell:
do exercises 1-5 and 8at the end of Ch. 7 [H], assigned 2010-10-01, due
2010-10-11.
Program 6b on Haskell:
do exercises 8 and 9 at the end of Ch. 7 [H], assigned 2010-10-20, due
2010-10-25. Note: This replaces Program 6; please turn in examples of use
as comments to the program, and either screen dumps or a scripts that
show me that you ran the program.
Program 7 on FP:
Assigned on 2010-10-22, due 2010-10-27.
Program 8 on Prolog:
Assigned on 2010-11-10, due 2010-11-17.
Homework 2 on syntax: do exercises 2.9,
2.12 (parts a and b; also show that there are two distinct
parse trees for part (b)),
2.13 (parts a and b only) from [S], assigned on 2010-11-19, due 2010-11-29.
(Note: [S] is the main textbook,
By Michael Scott.)
Haskell Information
Prolog Information
Student Presentation
Quizzes (In-Class Exercises)
Quiz 1 of 10-08-27
(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.
John McCarthy.
"A Micromanual for LISP---Not The Whole Truth."
ACM SIGPLAN Notices, Vol. 13, Issue 8 (August 1978), Pages 215-216 (local
copy)
Carter Bays's FP interpreter
Boyko Bantchev's List of Interviews with Programming Language Creators
from Computerworld's series "The A-Z of Programming Languages (pdf)