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

Notices

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.

Downloads


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.

Setups

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

Assignments

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.