Syllabus
Initial version posted on 2024-08-19.
Version 2 posted on 2024-09-14, with corrected TA information.
Version 3 posted on 2024-12-05, with corrected final exam date: the final exam
will be on December 10 at 1230 in the classroom (300 Main B103).
Reference materials:
Homework, Tests, and Programs
See the lecture log for assignments not listed below.
Quizzes (In-Class Exercises)
Some useful links:
Quiz 1 of 24-09-19
(in pdf format, with answer)
Quiz 2 of 24-09-19
(in pdf format, with answer)
Quiz 3 of 24-10-19
(in pdf format, with answer)
Quiz 4 of 24-10-08
(in pdf format, with answer)
Quiz 5 of 24-10-03
(in pdf format, with answer).
Quiz 6 of 24-10-29
(in pdf format, with answer).
Quiz 7 of 24-11-14
(in pdf format, with answer).
In this class, we write dates according to
ISO Standard 8601.
Carolina ACM Information Flyer
Priestley, Mark. "Logic, Code, and the History of Programming."
IEEE Annals of the History of Computing, vol. 43 no. 4, 2021, p. 92-96.
.
Local copy, pdf.
A historian's view. The author fails to mention in the first paragraph that John
Backus is the developer of FORTRAN.
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."
Philip Wadler,
"Propositions as Types" (video, September 25-26, 2015).
Related paper:
Philip Wadler. "Propositions as Types."
Communications of the ACM, 58, 12, 75-84 (December 2015).
(
Long version from author's website
(pdf))
Functional
Programming in the Real World.
Repository
of Code for:
Cristina Videira Lopez. Exercises in Programming 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).
Derek Partridge and Yorick Wilks.
"Does AI Have a Methodology Different from Software Engineering?"
Technical Report MCCS-86-53 (1986),
Computing Research Laboratory,
University of New Mexico
(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
John Backus:
Function Level Programming and the FL Language: a 1987 lecture on FP by
John Backus.
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..
Examples of APL code
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).
Alain Colmerauer's obituary from _CACM_, 2017-05-22
Joe Armstrong. "Erlang."
Communications of the ACM, Vol. 53 No. 9 (September 2010), Pages 68-75.. This
article describes the notion of dynamic code upgrade.
Pascal
Rigaux's Diagrams of Programming Language History.
Eric Levenez's Genealogy of Programming Languages.