CS 457/557 - Functional Languages- Daily Record - Winter Term 2013
Back to the class web-page.

    Below this line, course schedules and assignments are tentative.
  1. Tuesday January 8, 2013
    Due Today:
    Announcements:
            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 January 10, 2013.
    

  2. Thursday January 10, 2013
    Due Today:
            A working copy of the Haskell Platform on your machine due today.
    Announcements:
            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.
    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.
            Excell Tables
                    The Excell library
                    The Excell crib sheet
                    The CSV library (needed for the Excell library)
            In class exercises Naming values and Using types.
    Assigned today:
            Homework 1, Create an Excel-like Calendar. Due Tuesday Jan 15.
    

  3. Tuesday January 15, 2013
    Due Today:
            The Excel Calendar due today.
    Announcements:
    Class Topic:
            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 Jan 22.
    

  4. Thursday January 17, 2013
    Due Today:
    Announcements:
    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. Tuesday January 22, 2013
    Due Today:
            Homework 2 due today.
    Announcements:
            Tim will be attending POPL 2013 this week. Todays guest lecture by Mark Jones
    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.
            Notes on folds.
    Assigned today:
            Homework 3, binary numbers. Due Jan. 29.
    

  6. Thursday January 24, 2013
    Due Today:
    Announcements:
            Tim will be attending POPL 2013 this week. Todays guest lecture by Nathan Collins.
    Class Topic:
            Notes on Homework 2
            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. Tuesday January 29, 2013
    Due Today:
            Homework 3 due today.
    Announcements:
    Class Topic:
            Powerpoint Haskore notes (pdf).
                    Haskell source of examples from notes
            Some sample music.
            Get the haskore-vintage package from Hackage.
                            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 Feb. 5.
    

  8. Thursday January 31, 2013
    Due Today:
    Announcements:
            Mid term exam tentatively set for Tuesday Feb. 14th, 2013.
    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.)
            In class exercise using HUnit and QuickCheck.
    Assigned today:
    

  9. Tuesday February 5, 2013
    Due Today:
            Homework 4 due today.
    Announcements:
    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 Tuesday, February 12, 2013.
    

  10. Thursday February 7, 2013
    Due Today:
    Announcements:
            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. Tuesday February 12, 2013
    Due Today:
            Home work 5: proving things about programs due today, uploaded to D2L.
    Announcements:
            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 Tuesday, Feb. 19, 2013.
    

  12. Thursday February 14, 2013
    Due Today:
    Announcements:
            Mid Term Exam Today
    Class Topic:
            How to write a proposal plan
    
            In-class exercise on laziness.
    Assigned today:
    

  13. Tuesday February 19, 2013
    Due Today:
            Final Project proposals are due today. Hand them in in class!
    Announcements:
    Class Topic:
            Slides about Leveraging laziness, also available in 6-up for printing.
                    code for the rush hour problem.
                    Play Rush Hour
            Why Functional programming Matters, a paper about the power of laziness.
            Some thoughts on laziness in Haskell (a blog post).
            KnotWorksheet.lhs: Some exercises in knot tying
    Assigned today:
            Homework 6, finite types. Due, Tuesday. Feb 26, 2013.
    

  14. Thursday February 21, 2013
    Due Today:
    Announcements:
    Class Topic:
            Go over exam. results.
            Slides about IO Actions, also available in 6-up for printing.
                    IOActions.hs
                    Webactions.hs
                    Treedot.lhs
            In class exercise on using IO actions.
    Assigned today:
    

  15. Tuesday February 26, 2013
    Due Today:
            Homework 6, finite types. Due today.
    Announcements:
            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. Thursday February 28, 2013
    Due Today:
    Announcements:
    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. Tuesday March 5, 2013
    Due Today:
    Announcements:
    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.
    Assigned today:
            Work on project.
    

  18. Thursday March 7, 2013
    Due Today:
    Announcements:
            Spring course on Computed Assisted Theorem Proving.
    Class Topic:
            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.
            Discussion about the format of the final project
    Assigned today:
            Work on project.
    

  19. Tuesday March 12, 2013
    Due Today:
    Announcements:
    Class Topic:
            Programming a multi-core machines.
                    Slides about Control.Parallel, also available in 6-up for printing.
                    Using SMP parallelism on GHC
                    Parallel programing library documentation.
                    Documentation for Control.Parallel and Control.Parallel.Strategies
                    Haskell code for SillyPar.hs a simple program using parallel annotations, and
                            a version of the fractal generator  that uses Control.Parallel annotations.
                    Examples from Real World Haskell, Chapter 24.
            Sign up for oral project presentations.
            Notes on profiling Haskell (6-up for printing).
            Please answer the end of semester survey questions.
    Assigned today:
            Work on project.
    

  20. Thursday March 14, 2013
    Due Today:
            Final project reports are due today.
    Announcements:
    Class Topic:
            Oral presentations of final projects begins.
    Assigned today:
    

  21. Tuesday March 19, 2013
    Final Exam period 17:30 -> 19:20 (5:30 -> 7:20 PM)
    Oral presentations of final projects continues.
    End of quarter celebration (small snack potluck?)
    

Back to the class web-page.