October 14 CS 457/557 - Functional Languages- Daily Record - Fall Term 2015
CS 457/557 - Functional Languages- Daily Record - Fall Term 2015

Instructor: Tim Sheard
Office: FAB 120-04
phone: 503-725-2410
office hours: TBA
CRN 14766 CS 457 Functional Languages (4 cr) (undergraduate)
CRN 14767 CS 557 Functional Languages (3 cr) (graduate)
Time: Monday Wednesday 16:30-18:30
Room: FAB 40-06

The Haskell programming resource page.

Syllabus. A list of coures goals, and topics covered in the course.

Text books. A listing of pertinent information about the required textbooks and readings.

Below this line, course schedules and assignments are tentative.
  1. Monday September 28, 2015
    Due Today:
            I would like to acknowledge Mark Jones for help in preparing this course.
            Many of the notes, slides, exercises, and example programs were developed
            by Mark when we taught this class together in the Spring of 2009.
    Class Topic:
            Background questionaire
            Strategies for learning to program.
            Haskell Resource page
            Introductory notes (4 up pdf) (1 per page pdf)
                    Literate Haskell source code from slides
        Take a look at the Haskell Cheat Sheet by Justin Bailey.
        Some notes on using the machines in the lab.
        Learn You Haskell
    Assigned today:
            Get a working copy of the Haskell Platform that you can use.
                    see the notes on getting started with Haskell
                    Due by class time Wednesday, September 30, 2015.

  2. Wednesday September 30, 2015
    Due Today:
            A working copy of the Haskell Platform on your machine due today.
            Bring your laptop to the lab. We will have an in class exercise today!
            We will use D2L email to communicate in class.
            How to turn in assignments.
            Suggested topics from questionaire:
            	Monads, Higher order functions, internet interaction, graph algorithms, AI, comprehensions,
            	parraellism, currying, DSL design, co-monads, FRP, category theory, theorem provers,
            	recursion, polymorphism, monaoids.
    Class Topic:
            Planet Haskell is a compilation of blogs about Haskell.
            Notes (pptx) (pdf) about types and Type classes as type predicates.
                    effect on error messages.
            Programming outloud the stringToInt function.
                    The code we wrote in class in 2011.
                    The code we wrote in class in spring 2015.
                    The code we wrote today (Fall 2015).
            Excell Tables
                    The Excell library
                    The Excell crib sheet
                    The CSV library (needed for the Excell library)
                      A demo file.
            In class exercises Naming values and Using types.
    Assigned today:
            Homework 1, Create an Excel-like Calendar. Due Monday October 7, 2015.

  3. Monday October 5, 2015
    Due Today:
            The Excel Calendar due today.
    Class Topic:
            Work through Naming values and Using types as a class.
            Compositional programming -- Large data from small programs
                    Comprehensions and lists cribsheet
                    The Excell library revisited
                    Creating Lists work sheet
            Notes on creating functions (pptx) (pdf) in Haskell
                    The Haskell source code from the notes.
            Creating functions crib sheet
        In class exercise: Defining functions worksheet
            See the program design recipe
    Assigned today:
            Homework 2, writing simple functions. Due October 12.

  4. Wednesday October 7, 2015
    Due Today:
    Class Topic:
            Notes on strategies for fixing broken programs
                    Fixing errors worksheet
            Notes on lists and algebraic data types.
            In class exercise: matching on lists worksheet.
                    See the recursive function design recipe
            Example use of algebraic data types. Code for defining transformations and shapes.
    Assigned today:

  5. Monday October 12, 2015
    Due Today:
            Homework 2 is due today.
    Class Topic:
            Finding and using resources
                    The Haskell 98 report.
                    Justin Bailey's Haskell Cheat Sheet.
                    GHC users guide especially the pages on using GHCI.
                    GHC Standard Library Documentation
                    To get a local copy, go to the wiki, and download one of the *.tar.bz2 files.
                    In-class exercise,  using online documentation worksheet.
            The Hackage Package database web page..
                    Using Cabal to install a package from the Hackage Package database
                            into the GHC system (power point) (pdf).
                    In class exercise, install haskore-vintage on your machine.
            Notes about Trees as Haskell datatypes (pdf)
                    Haskell Code from the notes
            In class exercise, The defining trees worksheet.
    Assigned today:
            Homework 3, binary numbers. Due October 19.

  6. Wednesday October 14, 2015
    Due Today:
    Class Topic:
            Creating bit mapped graphics. Code discussed.
                            Examples. jpg format, ppm format.
                    Download the Colour library
                    Download the PPM6 library
                    A viewer that can display ppm files IrfanView (for the Mac?)
    Assigned today:

  7. Monday October 19, 2015
    Due Today:
            Homework 3 due today.
    Class Topic:
            Notes on folds.
            Powerpoint Haskore notes (pdf).
                    Haskell source of examples from notes
            Some sample music.
            Get the haskore-vintage (version 0.3) package from Hackage.
                        Install it with Cabal. You may have to do "cabal update" to see version 0.3
                            How to install a Hackage package using Cabal
                        (for users of the Haskell platform) (pdf).
            Get the music library, save in your programming work space.
            Timidity a linux midi player
            Haskore Lecture of Iavor Diatchki.
            In class exercise, Creating music worksheet.
            A familiar round ... listen to it.
    Assigned today:
            Homework 4, do something creative, make a graphics picture, or create music. Due October 26.

  8. Wednesday October 21, 2015
    Due Today:
            Mid term exam tentatively set for Weednesday Nov.4, 2015.
    Class Topic:
            Notes on testing in Haskell
                    HUnit users guide
                    The HUnit users guide on sourceforge.
                    Quickcheck homepage and Haskell wiki page.
            Using HUnit to develop programs. An example. (In class we produced this.)
                    A small program combining QuickCheck and HUnit.
            In class exercise using HUnit and QuickCheck.
    Assigned today:

  9. Monday October 26, 2015
    Due Today:
            Homework 4 due today.
    Class Topic:
            Students discuss their Homework 4 artifacts.
            Reasoning about programs in Haskell. (6 up format)
            In class exercise: Laws worksheet.
            Notes on proofs by induction
    Assigned today:
            Home work 5: proving things about programs. Due Monday, November 2, 2015.

  10. Wednesday October 28, 2015
    Due Today:
            Mid term exam set for 1 week from today!
    Class Topic:
            Notes on Type Classes, motivated by a discussion about Trees. (6-up for printing).
                    Code from the notes. On trees, On type classes.
            More information about graphviz.
            In class exercise - Using Graphviz to draw trees.
    Assigned today:

  11. Monday November 2, 2015
    Due Today:
            Home work 5: proving things about programs due today, uploaded to D2L.
            Midterm exam next class meeting!
    Class Topic:
            What might be on the exam?
            Sample midterm questions
            Notes on putting laziness to work (pdf)
                    Haskell Code for Lazy demos
                    Code for Depth First Search
            An extended example: A simple tree editor. notes,  haskell code
    Assigned today:
            Final Project proposals are due Monday, November 9, 2015.

  12. Wednesday November 4, 2015
    Due Today:
            Mid Term Exam Today
    Class Topic:
            How to write a proposal plan
            In-class exercise on laziness.
    Assigned today:

  13. Monday November 9, 2015
    Due Today:
            Final Project proposals are due today. Hand them in in class!
    Class Topic:
            Go over exam. Exam statistics.
            Slides about Leveraging laziness, also available in 6-up for printing.
            Why Functional programming Matters, a paper about the power of laziness.
            KnotWorksheet.lhs: Some exercises in knot tying
            Slides about IO Actions, also available in 6-up for printing.
            In class exercise on using IO actions.
    		Discuss this weeks homework.
    Assigned today:
            Homework 6, finite types. Due, Monday. November 16, 2015.

  14. Wednesday November 11, 2015
    Due Today:
    	No Class Veterans Day
    Assigned today:

  15. Monday November 16, 2015
    Due Today:
            Homework 6, finite types. Due today.
            A copy of IO Action examples we created in class.
            Another version of the same thing created in another class, compare them!
    Class Topic:
            Feedback on Final Project Proposals returned.
            Continue discussion of slides about IO Actions.
            Simple Parsers as Monads.
            In class exercise . Using the do notation.
            Some papers on Monadic IO.
                    Tackling the Awkward Squad. Simon Peyton Jones, 2005.
                    Imperative Functional Programming. Simon Peyton Jones and Philip Wadler, POPL 1993.
    Assigned today:
            No more weekly homeworks. Work on project.

  16. Wednesday November 18, 2015
    Due Today:
    Class Topic:
            Notes about more on monads.
            A simple reader library CSVReader.hs.
            A reader library with line and col information CSVReader2.hs.
            A third try at a reader with a simpler interface CSVReader3.hs.
            The Excell.hs Library
            The CSV.hs Library (comma separated values)
            In class exercise. Write a program to import an Excell table
                    Get the excell table DemoMajors.csv to practice on.
    Assigned today:
            Work on project.

  17. Monday November 23, 2015
    Due Today:
    Class Topic:
            Discussion about the exercise on monadic Readers for Excell.
            Notes on monads and interpreters.
            The haskell code with the examples
            An in class exercise. A language with mutable variables.
            Discussion about the format of the final project
    Assigned today:
            Work on project.

  18. Wednesday November 25, 2015
    Due Today:
    Class Topic:
    	Thanksgiving Break
    Assigned today:
            Work on project.

  19. Monday November 30, 2015
    Due Today:
    Class Topic:
    	Discussion of oral presentations starting on Wednesday..
            Discussion about the exercise on a language with mutable variables.
            Notes on higher order type constuctors and classes, Files, IOerrors, and Arrays.
            Code to go with notes.
    Assigned today:
            Work on project.

  20. Wednesday December 2, 2015
    Due Today:
            Final project reports are due today in D2L before class.
    Class Topic:
    	Oral presentations of final projects start today, and
    	continue Monday December 7, 2015, and Wednesday Dec 9 2015. See schedule below.
    Assigned today:

  21. Monday December 7, 2015
    Due Today:
    	Final project reports are due today in D2L at 5:00 PM
    	     regardless of the day of your presentation.
    Final Exam period 5:30-7:20 PM. This is not our normal class time!.
    See PSU Fall final exam schedule.
    We will use this time for Group 2 presentations.

  22. Wenesday December 9, 2015
    Group 3 presentations, room TBA.