CIS 554 Programming Paradigms
Fall 2013, David Matuszek

Got a question? Ask it here!

This is a placeholder schedule, copied from last year. Numerous changes will be made, mostly minor, with little or no advance warning.

Date Announcements
Older Previous announcements

Meeting times
Lecture MW 10:30-12:00 Towne 303
 Office hours
Ask questions about the course in Piazza Always open, 24/7  

Whenever my door is open.
Specific office hours: 3:00-4:30 Tuesdays and Thursdays
Levine 162
TA Siyu Song, TBD Moore 207
TA Chris Manchester, TBD Moore 207
Search Dave's web sites:
Last year's CIS 554
Academic Integrity Policy
MCIT schedule
Academic resources

Date Lectures Readings, Assignments, etc.
Aug 28 PowerPoint Introduction to CIS 554 (3)
PowerPoint Prolog 1, Programming in Logic (21)
Assignment Prolog 1: Logic puzzles
Example Notes on It's a Tie
Read Concise Guide to Prolog
Read Language Flamewars and the Blub Paradox external link
Sept 2 Labor Day--no class  
Sept 4 PowerPoint Prolog 2, Nonmonotonic Logic (28)
PowerPoint Prolog 3, Unification (19)
Assignment Prolog 2: Adventure Game
Read Tiobe Index external link (skim)
Read 99 Bottles of Beer external link (just know this site exists)
Sept 9 PowerPoint Prolog 4, Lists (18)
PowerPoint Prolog 5, Resolution Condensed (15)
Example (Starter file)
Sept 11 PowerPoint Prolog 5, Resolution (41)
PowerPoint Important concepts from Prolog (not presented in lecture)
Assignment Prolog 3: Maze
If you need help understanding recursion,
Read All About Recursion (Python version)
PowerPoint Recursion
Sept 16 Quiz Prolog quiz
PowerPoint Lisp, Then and Now (8)
PowerPoint Thinking in Clojure (26)
Read Basic Clojure Functions
Resolution Practice Problems (not to be turned in) with solutions
Sept 18 PowerPoint Clojure: Lisp Reloaded (36) Assignment Clojure 1: Exercises
More information Unit tests for last year's Clojure exercises (.clj.txt) -- feel free to reuse what you can; it's not exactly the same
Concise Guide to Clojure (under construction!)
Read Browse either the Clojure cheat sheet external link or the Clojure reference external link
Sept 23 PowerPoint Recursion in Clojure (28)
PowerPoint Clojure Sequences (27)
Assignment Clojure 2: Sudoku
Sept 25 PowerPoint Clojure and Java (14) Read The Free Lunch is Over external link
Sept 30 PowerPoint Clojure Concurrency (40) Read Clojure STM - What? Why? How?
Read Clojure - Functional Programming for the JVM (Concurrency) external link
Oct 2 PowerPoint Clojure Macros (9)
PowerPoint Clojure--Summary of Concepts (12)
Assignment Clojure 3: Traveling Salesman
Read Can Your Programming Language Do This? external link (short)
Read Functional Programming For The Rest of Us external link (long)
Oct 7 Quiz Clojure quiz
PowerPoint Haskell 1 (30)

Read A Concise Guide to Haskell
Read Learn Haskell in 10 Minutes external link

Oct 9 PowerPoint Haskell 2, Functions and Patterns (32)
PowerPoint Haskell 3, Examples (12)
Read (and pay attention to!) Haskell Style Guide external link
Assignment Haskell 1: Exercises
Read Concise Guide to Haskell
Oct 14 PowerPoint Haskell 4, More Functions (15)
PowerPoint Haskell 5, Dealing with Impurity (22)
Read Land of Lisp: Functional Programming is Beautiful external link (A gut-level comparison of Clojure and Haskell)
Oct 16 PowerPoint REBOL (17) Read Learn REBOL external link
Read A Concise Guide to REBOL
Read A Concise Guide to REBOL/View
Assignment REBOL 1
Oct 21 Quiz Haskell quiz
PowerPoint REBOL 2, Lists
PowerPoint REBOL 3, Writing Functions

Example flash-cards.r (folder of JPGs)

Oct 23 PowerPoint Forth
Assignment Forth: Lunar Lander
Forth Tutorial external link(pforth)
Oct 28 PowerPoint Scala Apologia (16)
PowerPoint Reading the Scala API (4)
PowerPoint Getting Started in Scala (26)
Read Scala: The Static Language that Feels Dynamic external link
Read Understanding the Scala API
Oct 30 Quiz REBOL quiz (plus just a little about Forth)
PowerPoint Scala Lists (19)
PowerPoint Scalatest
Assignment Scala 1: Twenty-one
Read A Concise Guide to Scala
Read Scala Tutorial external link (at tutorialspoint external link)
Nov 4 PowerPoint Getting Functional in Scala (22)  
Nov 6 PowerPoint Scala's Classes, Objects, Traits (21) Assignment Scala 2: Playfair Cipher
Nov 11 PowerPoint The Scala API Read Tail-Recursion Basics in Scala external link (Note: Scala now has @tailrec)
Nov 13 PowerPoint More About Scala Functions (12)
PowerPoint Java and Scala Threads (22)
Assignment Scala 3: Jigsaw Puzzle Competition
Nov 18 Quiz Scala quiz 1
PowerPoint Pattern Matching in Scala
Read Java 8 vs Scala: a Feature Comparison external link
Nov 20 PowerPoint Actors in Scala (30) Assignment Scala 4: Site Downloader
Nov 25 PowerPoint Regular Expressions  
Nov 27 Day before Thanksgiving (no class)  
Dec 2 PowerPoint Cryptograms
PowerPoint Monads
Read A Concise Introduction to Scala GUIs
Dec 4 Quiz Scala quiz 2
Assignment Graphviz
Dec 9

PowerPoint Review

Dec 20 Final Exam, 9am-11am, Towne 311  

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