Instructor: Tim Sheard
Office: FAB 120-04
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.
Monday September 28, 2015 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 Wednesday, September 30, 2015.
Wednesday September 30, 2015 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. 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.
Monday October 5, 2015 Due Today: The Excel Calendar due today. Announcements: 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.
Wednesday October 7, 2015 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:
Monday October 12, 2015 Due Today: Homework 2 is due today. Announcements: 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.
Wednesday October 14, 2015 Due Today: Announcements: 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:
Monday October 19, 2015 Due Today: Homework 3 due today. Announcements: 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.
Wednesday October 21, 2015 Due Today: Announcements: 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:
Monday October 26, 2015 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 Monday, November 2, 2015.
Wednesday October 28, 2015 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:
Monday November 2, 2015 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 Monday, November 9, 2015.
Wednesday November 4, 2015 Due Today: Announcements: Mid Term Exam Today Class Topic: How to write a proposal plan In-class exercise on laziness. Assigned today:
Monday November 9, 2015 Due Today: Final Project proposals are due today. Hand them in in class! Announcements: 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. IOActions.hs Webactions.hs Treedot.lhs In class exercise on using IO actions. Discuss this weeks homework. Assigned today: Homework 6, finite types. Due, Monday. November 16, 2015.
Wednesday November 11, 2015 Due Today: Announcements: No Class Veterans Day Assigned today:
Monday November 16, 2015 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.
Wednesday November 18, 2015 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.
Monday November 23, 2015 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. Discussion about the format of the final project Assigned today: Work on project.
Wednesday November 25, 2015 Due Today: Announcements: Class Topic: Thanksgiving Break Assigned today: Work on project.
Monday November 30, 2015 Due Today: Announcements: 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.
Wednesday December 2, 2015 Due Today: Final project reports are due today in D2L before class. Readings: Class Topic: Oral presentations of final projects start today, and continue Monday December 7, 2015, and Wednesday Dec 9 2015. See schedule below. Schedule. Assigned today:
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.
Wenesday December 9, 2015 Group 3 presentations, room TBA.