Programming Paradigms
Fall Semester, 2021
CoSc 450: Syllabus
Instructor: Stan Warford
Office: RAC 112
Office hours: Mon (11:00 - 11:50), Tues (9:00 - 9:50), Thurs (1:00 - 1:50), Fri (11:00 - 11:50),
and by appointment
Email: Message to Warford
A1,
A2,
A3,
A4,
A5,
A6,
A7,
Test 1
A8,
A9,
A10,
A11,
A12,
A13,
A14,
Test 2
A15,
A16,
A17,
A18,
A19,
A20,
A21,
A22,
A23,
A24,
Final
Lecture video recordings
Video recordings of all the lectures are posted on YouTube
here.
Required texts
Functional model: Hailperin, Kaiser, Knight, Concrete Abstractions
Brooks/Cole, 1999. This text is out of print. Fortunately, the authors have made
it avaialble free of charge online at
https://www.gustavus.edu/+max/concrete-abstractions.html.
We will only use the first eight chapters, which for your convenience are
reproduced on our local server here:
Contents,
Preface,
Chapter 1,
Chapter 2,
Chapter 3,
Chapter 4,
Chapter 5,
Chapter 6,
Chapter 7,
Chapter 8.
Declarative model: Bratko, PROLOG Programming for Artificial Intelligence,
Addison-Wesley, fourth edition, 2012.
Declarative model: Bratko, PROLOG Programming for Artificial Intelligence,
Addison-Wesley, third edition, Chapter 4.1 - 4.3.
Declarative model: Knight,
Unification: A Multidisciplinary Survey,
ACM Computing Surveys, Vol. 21, No. 1, March 1989.
Concurrent model (theory): Ben-Ari, Principles of Concurrent
and Distributed Programming, Addison-Wesley, 2006.
Concurrent model (practice): Peter Sestoft, Java Precisely,
Third Edition, The MIT Press, 2016.
Concurrent model: Warford, Vega, and Staley,
A Calculational Deductive System for Linear Temporal Logic,
ACM Computing Surveys, Vol. 53, No. 3, June 2020.
Concurrent model: Warford, Vega, and Staley,
Theorems from Warford, Vega, and Staley's CDS4LTL.
Concurrent model: Warford
Notes on Monitors.
Concurrent model: Warford
Notes on Readers Writers in C++17.
Concurrent model: Buhr, Fortier, and Coffin
Monitor Classification,
ACM Computing Surveys, Vol. 27, No. 1, March 1995.
Recommended readings
Yaron Minsky,
OCaml for the Masses,
Communications of the ACM, Vol. 54, No. 11, November 2011.
Clarke, Emerson, and Sifakis,
Model checking: Algorithmic Verification and Debugging,
Communications of the ACM, Vol. 52, No. 11, November 2009.
Mordechai Ben-Ari,
A Primer on Model Checking,
ACM Inroads, Vol. 1, No. 1, March 2010.
Mordechai Ben-Ari and Fatima Kaloti-Hallak,
Demonstrating Random and Parallel Algorithms with Spin,
ACM Inroads, Vol. 3, No. 3, September 2012.
Sarita V. Adve and Hans-J Boem,
Memory Models: A Case for Rethinking Parallel Languages and Hardware,
Communications of the ACM, Vol. 53, No. 8, August 2010.
Uzi Vishkin,
Using Simple Abstraction to Reinvent Computing for Parallelism,
Communications of the ACM, Vol. 54, No. 1, January 2010.
Hans-J Boem and Sarita V. Adve,
You Don't Know Jack About Shared Variables or Memory Models,
Communications of the ACM, Vol. 55, No. 2, February 2012.
Nir Shavit,
Data Structures in the Multicore Age,
Communications of the ACM, Vol. 54, No. 3, March 2011.
Bret Victor,
The Future of Programming,
YouTube video, July 2013 as if 1973.
Dr. Seuss (aka Geoffrey K. Pullum),
Scooping the Loop Snooper, A proof that the Halting Problem is undecidable.
Prolog testimonial
Here is an interesting
testimonial
from one of your predecessors.
Intellectual property
You are free to use the material I produce in this course without my explicit permission.
License: Creative Commons, Attribution-ShareAlike (CC BY-SA)
See: https://creativecommons.org/licenses/
for license details.
Slides
Download
Hailperin Chapter 1 slides.
Download
Hailperin Chapter 2 slides.
Download
Hailperin Chapter 3 slides.
Download
Hailperin Chapter 4 slides.
Download
Hailperin Chapter 5 slides.
Download
Hailperin Chapter 6 slides.
Download
Hailperin Chapter 7 slides.
Download
Hailperin Chapter 8 slides.
Download
Bratko Chapter 1 slides.
Download
Bratko Chapter 2 slides.
Download
Bratko Chapter 3 slides.
Download
Bratko Chapter 4 slides.
Download
Bratko Chapter 5 slides.
Download
Bratko Chapter 6 slides.
Download
Concurrency 01 slides.
Download
Concurrency 02 slides.
Download
Concurrency 03 slides.
Download
Concurrency 04a slides.
Download
Concurrency 04b slides.
Download
Concurrency 04c slides.
Download
Concurrency 06 slides.
Download
Concurrency 07 slides.
Notes
Download
Hailperin Chapter 1 notes.
Download
Hailperin Chapter 2 notes.
Download
Hailperin Chapter 3 notes.
Download
Hailperin Chapter 4 notes.
Download
Hailperin Chapter 5 notes.
Download
Hailperin Chapter 6 notes.
Download
Hailperin Chapter 7 notes.
Download
Hailperin Chapter 8 notes.
Download
Bratko Chapter 1 notes.
Download
Bratko Chapter 2 notes.
Download
Bratko Chapter 3 notes.
Download
Bratko Chapter 4 notes.
Download
Bratko Chapter 5 notes.
Download
Bratko Chapter 6 notes.
Code
Download
concabs.plt.
Download
quilt.txt.
Download
Bratko Chapter 1 code.
Download
Bratko Chapter 2 code.
Download
Bratko Chapter 3 code.
Download
Bratko Chapter 4 code.
Download
Bratko Chapter 5 code.
Download
Bratko Chapter 6 code.
Download
cosc450CppDistr.zip.
Download
cosc450JavaDistr.zip.
Programming language setups
The goal of this course is to learn three major programming models that complement the
procedural and object-oriented models: the functional, declarative/logic, and concurrent models.
Each of these models is based on a body of theory and each can be implemented in various
programming languages in this course Scheme, Prolog, and Java / C++ respectively. The following
links provide information on how to set up your computer for each of these programming
languages and how to hand in your programs electronically.
Set up for Scheme.
Set up for Prolog.
vi Summary.
Set up for Java.
Set up for C++.
Submit homework electronically
Programming homework policy
If your program does not compile (build)
Automatic 20% of total points for that assignment
No resubmission
Late submission
Accepted up to the time of the following assignment
Notify me via email
Automatic 50% of graded score
Late submission that does not compile
Automatic 10% of total points for that assignment
Complete assignment list
Assignment 1
Video lectures 1, 2, 3
Due Thursday, September 2
Notice
Monday, September 6, Labor Day holiday
Assignment 2
Video lectures 4, 5, 6
Due Monday, September 6
Assignment 3
Video lectures 7, 8
Due Thursday, September 9
Assignment 4
Video lectures 9, 10
Due Monday, September 13
Assignment 5
Video lectures 11, 12
Due Thursday, September 16
Assignment 6
Video lectures 13, 14, 15
Due Monday, September 20
Assignment 7
Video lectures 16, 17
Due Thursday, September 23
Test 1
Monday, September 27
Assignment 8
Video lectures 18, 19, 20
Due Thursday, September 30
Notice
Faculty conference, no class
Friday, October 1
Assignment 9
Video lectures 21, 22
Due Thursday, October 7
Assignment 10
Video lectures 23, 24
Due Monday, October 11
Assignment 11
Video lectures 25, 26
Due Thursday, October 14
Assignment 12
Video lectures 27, 28
Due Monday, October 18
Assignment 13
Video lectures 29, 30
Due Thursday, October 21
Notice
Monday, October 25, last day to withdraw with grade of W.
Assignment 14
Video lecture 31
Monday, October 25
Test 2
Due Thursday, October 28
Assignment 15
Video lectures 32, 33
Due Monday, November 1
Assignment 16
Video lectures 34, 35
Due Thursday, November 4
Assignment 17
Video lectures 36, 37
Due Monday, November 8
Assignment 18
Video lectures 38, 39
Due Thursday, November 11
Assignment 19
Video lectures 40, 41, 42
Due Monday, November 15
Assignment 20
Video lectures 43, 44
Due Thursday, November 18
Assignment 21
Video lectures 45, 46, 47
Due Monday, November 22
Notice
November 24 - 26, Thanksgiving holiday
Assignment 22
Video lectures 48, 49
Due Monday, November 29
Assignment 23
Video lectures 50, 51
Due Thursday, December 2
Notice
Friday, December 3, last day to withdraw with grade of WP/WF.
Assignment 24
Video lectures 52, 53
Due Monday, December 6
Final exam topics
Final
Tuesday, December 14, 7:30 a.m. - 10:00 a.m.