CIS 554 Programming Paradigms
Fall 2016, David Matuszek

What this course is about
Grading policy

Meeting times
Lecture MW 1:30-3:00 Towne 321
 Office hours
Piazza (For fastest response, try here first!) Always open, 24/7  

Tuesdays 1:00-2:30 Levine 160
For TA office hours, check Piazza.
Search Dave's web sites:
Last year's CIS 554
Academic Integrity Policy
Resources (Note: Clickers are required)
Academic resources
Late day policy

Date Lectures Readings, Assignments, etc.
Aug 31 PowerPoint Introduction
PowerPoint Prolog 1
PowerPoint Prolog 2 - Unification Monotonic Reasoning
Assignment Logic Puzzles (Prolog)
 More information Comments on Logic Puzzles
Read A Concise Introduction to Prolog
Software SWI-Prolog external link
Sept 5 Labor Day (no classes)
Sept 7 PowerPoint Prolog 3 - Lists
 PowerPoint Prolog 4 - Nonmonotonic Reasoning
Assignment Adventure Game (Prolog)
Example This year's student games
Sept 12 PowerPoint Prolog 5 - Resolution  The projector went out during class.
I'm providing two versions of this talk; please study!
Sept 14 PowerPoint Prolog 5 - Resolution (condensed)
PowerPoint Prolog 6 - Conversion to Clause Form
PowerPoint Prolog 7 - Concepts
Read Four-Minute Guide to Resolution
Read Resolution in Monty Python
Assignment Language Proposal (English)
Sept 19 Quiz Prolog quiz and answers
PowerPoint Clojure 1 - Thinking in Clojure
Read Beating the Averages external link
Read Three tutorials (use as needed):
Sept 21 PowerPoint Clojure 2 - Lisp Reloaded

Assignment Exercises (Clojure) 
Read 1 year clicker rebate (PDF)
Read 4 year clicker rebate  (PDF)

Sept 26 PowerPoint Clojure 3 - Recursion
PowerPoint Functional Programming

Read Learn you Func Prog on five minute quick!
Sept 28 PowerPoint Clojure 4 - Sequences

Assignment Color Grid (Clojure) 
Oct 3 PowerPoint Clojure 6 - Concurrency  Read Clojure - Functional Programming for the JVM (Concurrency) external link
Example collatz.clj (example of agents and STM)
Oct 5 PowerPoint Clojure 5 - Calling Java
PowerPoint Clojure 7 - Macros
Clojure 8 - Loop
Assignment Sharks (Clojure)
Read The Free Lunch is Over external link

Read Clojure STM - What? Why? How? external link
Fall Term Break is October 6 to 9.
Oct 10 PowerPoint Clojure 9 - Concepts
PowerPoint Clojure Hacked
PowerPoint Clojure to Haskell
Read Concise Introduction to Haskell
Oct 12 Quiz Clojure quiz
PowerPoint Haskell 1

Oct 17   PowerPoint Functional Programming
PowerPoint Haskell 2 Functions and Patterns
Assignment Exercises (Haskell)
Oct 19 PowerPoint Haskell 3 Examples
PowerPoint Haskell 4 More Functions

Oct 24 PowerPoint Haskell 5 Monads

Oct 26 PowerPoint Haskell 6 Concepts Assignment Adventure game  (Haskell)
Oct 31 Quiz Haskell quiz
 PowerPoint Scala Apologia
PowerPoint Scaladoc
 Read From Java to Scala
Nov 2 PowerPoint Starting Scala Assignment Jotto (Scala)

Nov 7
PowerPoint Scala Lists
PowerPoint Scalatest
Read Concise Introduction to Scala
Nov 9 PowerPoint Functional Scala
PowerPoint Classes and Objects
Assignment n-Grams (Scala)
Nov 14 PowerPoint More about Functions
PowerPoint Scala API

Nov 16 PowerPoint Patterns Assignment NFA (Scala)
Nov 21 Quiz Scala  quiz
 PowerPoint Regular Expressions
Assignment Caesar Cipher (Scala)
Nov 23 Day before Thanksgiving (No class)
Nov 28 PowerPoint Using Java Threads
PowerPoint Actors
PowerPoint Akka

Nov 30 PowerPoint Easy Concurrency
PowerPoint Concurrent Algorithms
Assignment Languages
Assignment Jigsaw Puzzle

Dec 5 Quiz Scala quiz
PowerPoint Monads

Dec 7 Student presentations
Mandatory attendance
Dec 12 Student presentations Mandatory attendance

PowerPoint A PowerPoint document, usually one of my lectures Assignment An assignment Software Software that will be useful in this course
Tutorial A tutorial More information Additional information about the assignment or topic official spec Official specification (always external link offsite)
Read An article; external link indicates offsite Example Example Quiz Quiz or exam