CS 291 University of Puget Sound Spring, 2020
 
Programming Language Paradigms:
Explorations with Functional Problem Solving (supported by Scheme/Haskell)
and Declarative Prblem Solving (supported by Prolog)
 

Tentative Class Schedule



Primary Reading Sources

LanguageSchedule AbbreviationTitle, with Initial Link
Scheme Schedule gives individual daily links
Haskell LYH Learn You a Haskell for Great Good!
Prolog LPN Learn Prolog Now!
by Patrick Blackburn, Johan Bos, and Kristina Striegnitz
WHO Haskell: The Haskell Programming Language

Status Code Symbols for Readings and Labs:

# no content available
+ draft available
(blank) material ready (or nearly ready)



Monday Wednesday Friday
January 20

Martin
Luther
King,
Jr.
Day
January 22 Functional Problem Solving with Scheme
  • Preliminaries
    • Quick course overview
    • Home Page / Syllabus / Schedule
    • Clicker set up
Readings Labs
January 24 Functional Problem Solving with Scheme
  • Scheme Program Files
  • Simple Procedures
  • Conditionals (cond, if)
Readings Labs
January 27 Functional Problem Solving with Scheme
  • Simple lists
  • Structures
  • Procedures
    • Parameters
    • MAP
    • Append
    • Eval
  • Defining recursive procedures
Readings Labs
January 29
In-class Quiz
Functional Problem Solving with Scheme
  • Program correctness
  • Husk-and-kernel
Readings Labs
January 31 Functional Problem Solving with Scheme
  • Program efficiency
  • Tail recursion
Readings Labs
February 3 Functional Problem Solving with Scheme
  • Character data
  • Strings
Readings Labs Due: Lab on Program correctness and program design
February 5 Functional Problem Solving with Scheme
  • Procedures as first-class citizens
  • Local bindings
    • Variables and values
    • Local procedures
Readings Labs
February 7 Functional Problem Solving with Scheme
  • Higher-order procedures
Readings Labs
February 10 Functional Problem Solving with Scheme
  • Procedures as values
Readings Labs
February 12
In-class Quiz
Functional Problem Solving with Scheme
Assignment/Project
Due: Lab on Local procedures
February 14 Functional Problem Solving with Scheme
Open Lab (continued work on Scheme-based, Eliza project)
February 17 Functional Problem Solving with Haskell (Haskell Day 1)
  • Introduction to Haskell
    • Expressions
  • Using Haskell
    • Installation
    • The Haskell Environment
Readings Labs
February 19 Functional Problem Solving with Haskell (Haskell Day 2)
  • Functions and Function definitions
Readings Labs
Due: Eliza Project (Scheme Version)
February 21 Functional Problem Solving with Haskell (Haskell Day 3)
  • Lists
  • Texas Ranges
  • Tuples
Readings Labs
February 24 Functional Problem Solving with Haskell (Haskell Day 4)
  • Types
  • Type classes
Readings Labs
Due: Haskell Worksheet 1
February 26
In-class Quiz
Functional Problem Solving with Haskell (Haskell Day 5)
  • Function definitions with lists and patterns
Readings Labs
February 28 Functional Problem Solving with Haskell (Haskell Day 6)
  • Function definitions with guides
Readings Labs
March 2 Functional Problem Solving with Haskell (Haskell Day 7)
  • Let expressions
  • Where statements
  • Case expressions
Readings Labs
Due: Haskell Worksheet 2
March 4 Functional Problem Solving with Haskell (Haskell Day 8)
  • Higher-order functions
Readings Labs
March 6
In-class Quiz
Functional Problem Solving with Haskell (Haskell Day 9)
  • Maps
  • Filters
  • Lambdas
Readings Labs
March 9 Functional Problem Solving with Haskell (Haskell Day 10)
  • Folds
  • More higher-order Functions
Readings Labs
March 11 Functional Problem Solving with Haskell (Haskell Day 11)

Group Time for
March 13 Functional Problem Solving with Haskell (Test Day)

In-class Test
Due: Haskell Worksheet 3
March 16 Spring Recess
Monday, March 16
March 18 Spring Recess
Wednesday, March 18
March 20 Spring Recess
Friday, March 20
March 23

Course
Planning
and
Communication
March 25 Functional Problem Solving with Haskell (Haskell Day 12)
  • Reflections on Course/Status
  • Comments on Mid-semester Restart
  • Function application with $
Readings Labs
March 27 Functional Problem Solving with Haskell (Haskell Day 13)
  • Tuples in Haskell
Readings Labs
March 30 Functional Problem Solving with Haskell (Haskell Day 14)
  • Merge Sort
  • Lazy Evaluation
Readings Labs
April 1
In-class Quiz
Functional Problem Solving with Haskell (Haskell Day 15)
  • More examples with lazy evaluation
Readings Labs
April 3 Functional Problem Solving with Haskell (Haskell Day 16)
  • Wrap-up: Programming/Problem Solving with Haskell
  • Pause for Breath
  • Questions/Comments regarding the Eliza/Haskell Project

Due: Haskell Worksheet 4
April 6 Declarative Problem Solving with Prolog (Prolog Day 1)
  • Introduction to Prolog
  • Getting Started
  • Prolog Overview
Readings Examples Examples Lab
April 8 Declarative Problem Solving with Prolog (Prolog Day 2)
  • Introduction to Prolog
    • Prolog syntax
    • Matching
Readings Exercises/Assignment
Due: Eliza Project (Haskell Version)
April 10 Declarative Problem Solving with Prolog (Prolog Day 3)
  • An Introduction to Lists
  • append
Readings Exercises/Assignments
April 13 Declarative Problem Solving with Prolog (Prolog Day 4)
  • Proof search
Readings Exercises/Assignments
Due: Prolog Worksheet 1
April 15
In-class Quiz
Declarative Problem Solving with Prolog (Prolog Day 5)
  • Recursion
    • Recursive definition
Readings Exercises/Assignments
April 17 Declarative Problem Solving with Prolog (Prolog Day 6)
  • Recursion
    • Clause ordering
    • Goal ordering
    • Termination
Readings Exercises/Assignments
April 20 Declarative Problem Solving with Prolog (Prolog Day 7)
  • Negation
  • Flow of control
  • Cuts
Readings
Exercises/Assignments
April 22 Declarative Problem Solving with Prolog (Prolog Day 8)
  • Generalized lists
Readings Exercises/Assignments
Due: Prolog Worksheet 2
April 24 Declarative Problem Solving with Prolog (Prolog Day 9)
  • List examples
  • Lists and accumulators
Readings Exercises/Assignments
April 27 Declarative Problem Solving with Prolog (Prolog Day 10)
  • Terms
Readings Exercises/Assignments
April 29
In-class Quiz
Declarative Problem Solving with Prolog (Prolog Day 11)
  • Additional Elements of Prolog
Readings
Due: Prolog Worksheet 3
May 1 Declarative Problem Solving with Prolog (Prolog Day 12)
  • Project/Assignment
    • A simplified Eliza program
May 4 Declarative Problem Solving with Prolog (Prolog Day 13)
  • Questions, Administrivia
  • Prolog Notes
May 6 Last Day of Class
Semester wrap up!
  • Discussion of Prolog program for Eliza Project

Due: Eliza Project (Prolog Version)
(Absolute deadline: 10:00 am PDT
submissions with email timestamp 10:01 am PDT or later not accepted)
May 8 Reading Period
Friday, May 8
created 24 June 2019
revised Summer-Fall 2019
Haskell, Prolog materials refined: Winter-Spring, 2020
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.

Warning: require(footer.php): Failed to open stream: No such file or directory in /home/walker/public_html/courses/291.sp20-ups/schedule.php on line 220

Fatal error: Uncaught Error: Failed opening required 'footer.php' (include_path='.:/opt/cpanel/ea-php80/root/usr/share/pear') in /home/walker/public_html/courses/291.sp20-ups/schedule.php:220 Stack trace: #0 {main} thrown in /home/walker/public_html/courses/291.sp20-ups/schedule.php on line 220