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

  1. Tuesday January 4, 2011
    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.
    
    	MCECS Innovation Program proposals.
    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 7, 2011.
    

  2. Thursday January 6, 2011
    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!
    
    	I have set up a class email address  
    	This is a Cat sponsored, archived mailing list. You can find out
    	more about it at https://mailhost.cecs.pdx.edu/mailman/listinfo/funprog.
    	If you added your name to the list we circulated in class, you don't need
    	to do anything to sign up for the list, as I will add you to the list.
    
    	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.
    

    Below this line, course schedules and assignments are tentative.
  3. Tuesday January 11, 2011
    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
    	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.
    

  4. Thursday January 13, 2011
    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 18, 2011
    Due Today:
    	Homework 2 due today.
    Announcements:
    	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. 26.
    

  6. Thursday January 20, 2011
    Due Today:
    Announcements:
    Class Topic:
    	Powerpoint Haskore notes (pdf).
    	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).
    	Haskore Lecture of Iavor Diatchki.
    	In class exercise, Creating music worksheet.
    	A familiar round ...
    Assigned today:
    
    

  7. Tuesday January 25, 2011
    Due Today:
    	Homework 3 due today.
    Announcements:
    	Tim will be attending POPL 2011 this week. There will be a guest lecture by TBA.
    Class Topic:
    	Notes on Homework 2
    	Creating bit mapped graphics. Code discussed.
    		Download the Colour library
    		Download the PPM6 library
    		A viewer that can display ppm files IrfanView (for the Mac?)
    Assigned today:
    	Homework 4, do something creative, make a graphics picture, or create music.
    

  8. Thursday January 27, 2011
    Due Today:
    Announcements:
    	Tim will be attending POPL 2011 this week. There will be a guest lecture by TBA.
    
    	Mid term exam tentatively set for Tuesday Feb. 8th, 2011.
    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 1, 2011
    Due Today:
    	Homework 4 due today.
    Announcements:
    	Mid term exam set for THursday Feb. 10!
    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 9. 2011.
    

  10. Thursday February 3, 2011
    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 8, 2011
    Due Today:
    	Home work 5: proving things about programs due today, uploaded to Blackboard.
    Announcements:
    	Midterm exam next class meeting!
    Class Topic:
    	What might be on the exam?
    	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. 16, 2011.
    

  12. Thursday February 10, 2011
    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 15, 2011
    Due Today:
    	Final Project proposals are due today. Hand them in in class!
    Announcements:
    Class Topic:
    	Go over exam
    	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 24, 2011.
    

  14. Thursday February 17, 2011
    Due Today:
    Announcements:
    Class Topic:
    	Feedback on Final Project Proposals returned.
    	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 23, 2011
    Due Today:
    	Homework 6, finite types. Due today.
    Announcements:
    	A copy of IOExercises we created in class last class meeting.
    Class Topic:
    	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 25, 2011
    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 1, 2011
    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 3, 2011
    Due Today:
    Announcements:
    Class Topic:
    	Discussion about the exercise on a language with mutable variables.
    	Notes on higher order type constuctors and classes.
    	Code to go with notes.
    	Discussion about the format of the final project
    Assigned today:
    	Work on project.
    

  19. Tuesday March 8, 2011
    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 10, 2011
    Due Today:
    	Final Project reports are due today.
    Announcements:
    Class Topic:
    	Oral presentations of final projects begins.
    Assigned today:
    

  21. Tuesday March 15, 2011
    Final Exam Period. 10:15 am -> 12:05 PM.
    Oral presentations of final projects continues.
    End of quarter celebration (small snack potluck?)
    	in the CS Tutor space outside the lab.
    
    

Back to the class web-page.