Prerequisites: CSCE 240 and MATH 374
Section 1: TTh 1450--1605 SWGN 2A27
Section 2: TTh 1800--1915 SWGN 2A27
Instructor (Section 1): Marco Valtorta
Office: Swearingen 3A55, 777-4641
Office Hours: MWF 1100-1200 and by appointment
Instructor (Section 2): Heath Carroll
Office Hours: Friday, 9-noon, and by appointment at Cool Beans Coffee Shop, 1217 College Street
Any student with a documented disability should contact the Office of Student Disability Services at (803)777-6142 to make arrangements for proper accommodations.
Homework, Tests, and Programs
Last year's test (2013)
The midterm exam will be on Thursday, October 2, 2014.
See the lecture log for assignments not listed below.
Quizzes (In-Class Exercises)
Some useful links:
Quiz 1 of 14-08-26 (in pdf format, with answer)
Quiz 2 of 13-09-18 (in pdf format, with answer)
Quiz 3 of 14-10-14 (16 for section 2) (in pdf format, with answer)
Quiz 4 of 14-11 25 (in pdf format, with answer)
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.
Philip Wadler, "Monads for Functional Programming" (pdf, local copy; bibliographical details at the bottom of the first page). Chapter 5 (especially starting with section 5.2) mirrors the presentation in Chapter 8 [H]. The beginning of Section 5.4 specifies the unit and * operations needed to define a monad. The discussion at the beginning of Section 5.12 explains that these operations have the monad properties, and therefore the parsers of Chapter 8 [H] are monads: "The empty parser and sequencing correspond directly to unit and *, and the monads laws reflect that sequencing is associative and has the empty parser as a unit. The failing parser and alternation correspond to zero and (XOR), which satisfy laws reflecting that alternation is associative and has the failing parser as a unit, and that sequencing distributes through alternation."
Repository of Code for: Cristina Videira Lopez. Exercises in Programmign Style. CRC Press, 2014.
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.
Some useful links: