CSCE 330: Programming Language Structures

Prerequisites: CSCE 240 and MATH 374

TTh 1005--1120 SWGN 2A07 and 2A19

Instructor: Marco Valtorta
Office: Swearingen 3A55, 777-4641
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.


Grading Policy

Reference materials:

  • Hector J. Levesque. Thinking as Computation. The MIT Press, 2012 (required text, referred to as [L]). Supplementary materials from the author 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 lists the following outcomes of instruction for this course:
  • Categorize a language as imperative (procedural), functional (applicative), or declarative (logic).
  • Generate and use syntax descriptions in EBNF.
  • Write code in a functional language (e.g, Haskell)
  • Write code in a logic language (e.g., Prolog)
  • Specific objectives of this course are:

    Lecture Log

    Lecture Notes

    Homework, Tests, and Programs

  • Grading policy per assignment
  • Midterm from 2012 edition of the course (MS-Word format). Note that questions 1, 2, and 5 are based on material from Chapter 7 [L] (Lists in Prolog) that we have not yet covered. This kind of question will not be used.
  • Program 5 on FP, assigned 2013-10-28, due 2013-11-05
  • Review questions for the final exam (with answers).
  • Fall 2012 exam Work out the questions to prepare for this year's exam.

    Prolog Information

    Haskell Information

    Student Presentation

    Quizzes (In-Class Exercises)
    Quiz 1 of 13-09-03 (in pdf format, with answer)
    Quiz 2 of 13-09-05 (in pdf format, with answer)
    Quiz 3 of 13-09-24 (in pdf format, with partial answer) (The student handout was incorrectly dated 13-09-17.)
    Quiz 4 of 13-10-30 (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.
    Parnas D.L. (December 1972). "On the Criteria To Be Used in Decomposing Systems into Modules" (PDF). Comm ACM 15 (12): 1053-1058 (local copy).
    Computer Language History web site by Eric Levenez
    The Ariane 5 launch disaster.
    Local copy of: Adrion, W.A., M.A. Branstad, and J.C. Cherniavsky. "Validation, Verification and Testing of Computer Software." ACM Computing Surveys, 14, 2 (June 1982), pp.159--192.
    Local copy of: 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)
    The Simplesem interpreter
    : unzip, and follow the instructions in readme.txt. This is a Java implementation that seems robust and will run in Windows.
    Carter Bays's FP interpreter
    John Backus. "Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs." Communications of the ACM, 21, 8 (August 1978), 613-641
    Boyko Bantchev's List of Interviews with Programming Language Creators from Computerworld's series "The A-Z of Programming Languages (pdf)
    A to Z of Programming Languages Index
    J.W. Backus. "The 701 Speedcoding System." Journal of the ACM, 1, 1, pp.4-6, 1954 (local copy).
    A site with a short program written in many languages, not including FP.
    A site with another short program written in several languages..
    John McCarthy, developer of LISP, wins the Franklin Medal
    John McCarthy's Obituary from the _New York Times_, 2011-10-25 (local copy).
    Dennis Ritchie's Obituary from the _New York Times_, 2011-10-13 (local copy).
    Joe Armstrong. "Erlang." Communications of the ACM, Vol. 53 No. 9, Pages 68-75.. This article describes the notion of dynamic code upgrade.