CIS 554 Programming Paradigms
Fall 2014, 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, and Scala, with 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 here!

Date Announcements
Older Previous announcements

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

Whenever my door is open.
Specific office hours:
Tue Thu 12-1:30
Levine 162
Pedro Samora Tue 3-5 Moore 207
Yuanfeng Peng Th 10-12 Levine 614
Search Dave's web sites:
Loading
Links
Last year's CIS 554
Academic Integrity Policy
Resources (Note: Clickers are required)
Academic resources
Piazza
Canvas

Date Lectures Readings, Assignments, etc.
Aug 27

PowerPoint Intro to CIS 554 (not shown in class)
PowerPoint Prolog (Programming in Logic)

Read A Concise Introduction to Prolog
Sept 1 Labor Day (no classes)  
Sept 3 PowerPoint Prolog (Unification) Assignment Logic Puzzles (Prolog)
More information Logic Puzzle Notes
Sept 8 PowerPoint Prolog (Lists)
PowerPoint Prolog (Nonmonotonic Logic)
 
Sept 10 PowerPoint Prolog (Resolution) Assignment Adventure Game (Prolog)
Games by students
Sept 15 Quiz Prolog quiz and answers
PowerPoint Erlang 1
Read Prolog cheat sheet
Read A Concise Introduction to Erlang
Read Don't forget about this course's Resources page!
Sept 17 PowerPoint Erlang 2 Assignment Erlang Exercises (Erlang)
Read Language Flamewars and the Blub Paradox external link
Sept 22 PowerPoint Erlang 3 Read The Free Lunch is Over external link
Sept 24 PowerPoint Functional programming Assignment Equal Piles (Erlang)
Sept 29 PowerPoint Concurrency
PowerPoint Clojure 2 (Lisp reloaded)
 
Oct 1 Quiz Erlang quiz
Read A Concise Introduction to Clojure
Assignment Clojure Exercises (Clojure)
Oct 6 PowerPoint Clojure 1 (thinking in Clojure)  
Oct 8 PowerPoint Clojure 3 (recursion, higher-order functions) Assignment Poker Hands (Clojure)
Oct 13 PowerPoint Clojure 4 (sequences)
PowerPoint Clojure 5 (calling Java)

 
Oct 15 PowerPoint Clojure 6 (concurrency) Assignment Vehicle Routing (Clojure)
Oct 20 PowerPoint Clojure 7 (macros) Read Clojure Macros for Beginnersexternal link
Example collatz.clj (STM example)
Oct 22 PowerPoint Clojure 8 (tail recursion)
PowerPoint Clojure 9 (concepts)
Assignment For loop macro (Clojure)
Oct 27 PowerPoint Clojure to Haskell
PowerPoint Haskell 2 (Functions and Patterns)
Read Concise Guide to Haskell
Oct 29 Quiz Clojure quiz
PowerPoint Haskell 1 (GHCi)
Assignment Percolation (Haskell)
Read Learn Haskell in 10 Minutes external link
Nov 3 PowerPoint Haskell 3 (examples)
PowerPoint Haskell 4 (more functions)
 
Nov 5 PowerPoint Haskell 5 (Monads) Assignment Adventure (Haskell)
Nov 10 PowerPoint Elm (references only)  
Nov 12 Quiz Haskell quiz
PowerPoint Scala Apologia
PowerPoint Starting Scala
Assignment Frogger (Elm) and images
Nov 17 PowerPoint Scala Lists Read Concise Introduction to Scala
Example Pig.scala
Nov 19 Quiz Elm quiz (short)
PowerPoint Scaladoc
PowerPoint Getting Functional in Scala
Assignment Animals Game (Scala)
Nov 24 PowerPoint Classes and Objects
PowerPoint More Functions
 
Nov 26 Day before Thanksgiving (No class)  
Dec 1 PowerPoint Scala API
PowerPoint Patterns
Read Scala API
Read Scala I/O code samples
Assignment KWIC index (Scala)
Dec 3 PowerPoint Swing
PowerPoint Actors
Read Scala Option type
Dec 8 PowerPoint Review
Quiz Scala quiz
 
Dec 12 Final Exam, 12m-2pm, David Rittenhouse Labs (DLRB), A4
This exam date/time is set by the Registrar and is non-negotiable.
Final Exam and Answer Key
Example 2011 Final Exam
Example 2013 Final Exam

Key
PowerPoint A PowerPoint document, usually one of my lectures AssignmentAn 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