CIS 554 Programming Paradigms
Fall 2015, David Matuszek

Different programming languages involve different concepts and different ways of thinking about problems. The intent of this course is to cover these concepts in a practical, rather than a purely theoretical, setting. That is, you will be given assignments that entail using most of these concepts.

The main languages I expect to cover are Prolog, Clojure (a Lisp variant), Haskell, Elm, and Scala, with brief mention of a few others. This list is subject to change; new languages are being developed at the rate of about one a week, and sometimes one catches my eye.

Got a question? Ask it on Piazza!

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

Tue 1:00-3:00pm
Wed 6:15-8:00pm
Levine 162
Mon 3-5 Weiss Tech House
Fri 1-3 Levine 5th floor

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 26 PowerPoint Introduction
PowerPoint Prolog 1 - Monotonic Reasoning

Read A Concise Introduction to Prolog
Software SWI-Prolog external link
Aug 31 PowerPoint Prolog 2 - Unification
PowerPoint Prolog 3 - Lists
Assignment Logic Puzzles (Prolog)
More information Comments on Logic Puzzles
Sept 2 PowerPoint Prolog 4 - Nonmonotonic Reasoning
Sept 7 Labor Day (no classes)  
Sept 9 PowerPoint Prolog 5 - Resolution Assignment Adventure Game (Prolog)
Read Four-Minute Guide to Resolution
Read Resolution in Monty Python
Sept 14 PowerPoint Prolog 6 - Conversion to Clause Form
PowerPoint Prolog 7 - Concepts
PowerPoint Functional Programming
Read Beating the Averages external link
Sept 16 Quiz Prolog quiz
PowerPoint Clojure 1 - Thinking in Clojure

Assignment Exercises (Clojure)
Read Three tutorials (use as needed):

Sept 21 PowerPoint Clojure 2 - Lisp Reloaded

Sept 23

PowerPoint Clojure 3 - Recursion

World Meeting of Families, Sept. 22-27
Pope in Philadelphia, Sept. 26-27
SEPTA schedule disrupted, Sept. 26-27

Assignment Resolution (Clojure)
Sept 28 No class
Sep 30 PowerPoint Clojure 4 - Sequences
Assignment Equal Piles (Clojure)
Read The Free Lunch is Over external link

Read Clojure STM - What? Why? How? external link
Oct 5 PowerPoint Clojure 6 - Concurrency

Read Clojure - Functional Programming for the JVM (Concurrency) external link
Oct 7

PowerPoint Clojure 5 - Calling Java

Example sharks.clj (example of structs)
Example collatz.clj (example of agents and STM)
Oct 12 PowerPoint Clojure 7 - Macros
PowerPoint Clojure 8 - Loop
PowerPoint Clojure 9 - Concepts

Assignment Match Macro (Clojure)
Oct 14

PowerPoint Clojure to Haskell
PowerPoint Haskell 1

Read Concise Introduction to Haskell
Oct 19 Quiz Clojure quiz
PowerPoint Haskell 2 Functions and Patterns
Assignment Exercises (Haskell)
Oct 21 PowerPoint Haskell 3 Examples
PowerPoint Haskell 4 More Functions

Oct 26 PowerPoint Haskell 5 Monads
Oct 28 PowerPoint Forth
PowerPoint REBOL
Assignment Sleepy Adventure (Haskell)
Example spider.hs
Nov 2 Quiz Haskell quiz
PowerPoint Haskell 6 Concepts
PowerPoint Elm 1
 Read Concise Introduction to Elm
Nov 4 PowerPoint Elm 2
PowerPoint Scala Apologia
Assignment Snipe Game (Elm)
Nov 9

PowerPoint Scaladoc
PowerPoint Starting Scala

Read Concise Introduction to Scala
Read From Java to Scala
Nov 11 PowerPoint Scala Lists
Assignment Spell Checker (Scala)
Nov 16 Quiz Elm quiz
PowerPoint Functional Scala
PowerPoint Scala API
Nov 18 PowerPoint Classes and Objects
Assignment Playfair Cipher (Scala)
Nov 23 PowerPoint More about Functions
PowerPoint Scala API
Nov 25 Day before Thanksgiving (No class)  
Nov 30 PowerPoint Patterns
PowerPoint Actors
Assignment Path Finding Puzzle (Scala)
My tests: puzzle1.txt, puzzle2.txt, puzzle3.txt
Dec 2 PowerPoint Regular Expressions

Dec 7 Quiz Scala quiz
PowerPoint Monads
Dec 17
Towne 311. This exam date/time is set by the Registrar and is non-negotiable. Example 2011 Final Exam
Example 2013 Final Exam
Example 2014 Final Exam
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