CSCE 330: Programming Language Structures

Prerequisites: CSCE 240 and MATH 374

TTh 1530-1645 SWGN 2A21

Instructor: Marco Valtorta
Office: Swearingen 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:

  • 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
  • Program 4 on FP, assigned 2011-10-25, due 2011-11-01
  • Homework 2 on syntax, assigned 2012-11-29, due 2011-12-06 Find the exercises here . Some of the grammars are in these slides. Exercises 2.1, 2.2, 2.3 (the grammar in figure 2.7, which is in the slides 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.
  • Review questions for the final exam.

    Prolog Information

    Haskell Information

    Student Presentation

    Quizzes (In-Class Exercises)
    Quiz 1 of 12-09-13 (in pdf format, with answer) (Note: date on answer form is incorrect.)

    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.
    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.