CS429 Functional Programming, Syllabus
• Introduction to Haskell and Lazy, Functional Programming
• tuples
• polymorphism
• higher order functions
• strings & characters
• lazy evaluation
• Datatypes
• Data-Type declarations
• Defining functions over datatypes using patterns,
• Enumerations,
• The Shape Datatype of the text.
• Programs and Proofs
• Program Manipulation
• Simple Graphics.
• Using the graphics primitives,
• Drawing Primitive Shapes,
• Sierpinski’s Triangle,
• Snow-flake,
• Coordinate Systems,
• Position independent shapes,
• Drawing the Shape Data-type.
• Polymorphism
• Polymorphic Functions,
• Polymorphic datatypes,
• Type Constructors define polymorphic Constructor functions,
• Recursive datatypes,
• Higher Order functions,
• Perimeters of Shapes.
• Trees
• Kinds of trees - branching factor,
• functions over trees,
• patterns of recursion - the fold for trees,
• Arithmetic expressions,
• Infinite trees.
• Regions
• Sets and characteristic functions,
• Regions,
• Is a point in a Region?,
• Currying,
• Sections,
• Anonymous functions,
• function composition.
• Pictures
• Low level graphics bit-maps: G.Region,
• From Region to G.Region,
• Shape to G.Region,
• Drawing G.Region,
• Reactive Pictures.
• Proofs by Induction
• Review of Proofs by calculation,
• Structure of Proofs by induction over lists,
• Proofs by induction with case analysis,
• Proofs by structural Induction,
• Proofs by induction over Trees.
• Prooving two functions are equal.
• Classes as predicates on types
• Instance declarations,
• Inheritance and dependent classes,
• Derived instances,
• The Show class,
• The Fix operator from homework #5.
• Simple Animations
• Buffered graphics,
• Complex animations,
• Lifting primitives to animations,
• Behaviors,
• Type classes animations and Behaviors,
• Time translation.
• Infinite Lists and Streams
• Infinite lists v.s. Streams,
• Normal order evaluation,
• Recursive streams,
• Stream Diagrams,
• Lazy patterns,
• Memoization,
• Inductive properties of infinite lists.
• Reactive Animations
• Simple Animations - Review.
• Reactive animations.
• Vocabulary for reactive animations
• Introduction by Examples.
• Implementation of behaviors and events.
• File IO, Channels and Concurrency
• Files, Channels, and Handles.
• IO exception handling.
• First Class Channels.
• Concurrency and ForkIO.
• Higher Order Types
• Type constructors that take types as arguments.
• Functor,
• Functional Music
• The Music datatype.
• MIDI Instruments.
• Pitch & absolute Pitch.
• Composing Music:
• Delay,
• Repeating,
• Transposing.
• Manipulating Music: Duration, Cutting, Reversing.
• Percussion.
• Presentation and the MIDI file format
• Interpreting Music
• Performance
• Linearizing music
• MidiFile structure