UW, COSC 3015, Fall 2014

Department of Computer Science
University of Wyoming

COSC 3015:
Functional Programming

Fall 2014

NOTE: This page is no longer maintained. Please refer to:
This page
Instructor: PohlE-mail: jpohl@cs.uwyo.edu
Office: 4082 Engineering BuildingPhone:760-0830
Office hours: Tuesday and Thursday: 1:30-2:30.

Grader: TBA E-mail:
Office: Phone:
Office hours: TBD

Class: meets Tuesday and Thursday from 2:45 -- 4:00 in Classroom Building room 306.
Web Page: http://www.cs.uwyo.edu/~jlc/courses/3015/

Prerequisites: COSC 2030


  • Required:
    Learn You a Haskell for Great Good (LYAHFGG)
    by Miran Lipovaca, No Starch Press, 2012
    This is considered one of the best resources for learning the Haskell programming language and is available free online HERE.
  • Recommended:
    Programming in Haskell  
    by Graham Hutton Cambridge University Press, 2007
    A good introduction to the language.
    Introduction Functional Programming using Haskell
    by Richard Bird, Prentice Hall, 1998
    The classic text introducing functional programming in Haskell. Covers some sophisticated topics.
    errata sheet
    Purely Functional Data Structures
    by Chris Okasaki,Cambridge University Press, 1999
    An excellent reference on efficient data structures and algorithms in a functional setting. Not required but highly recommended.
    Higher-Order Perl: Transforming Programs with Programs
    by Mark Jason Dominus, Morgan Kaufmann, 2005
    This highly praised book applies techniques of function programming in the setting of the Perl programming language. It is available free online HERE.
    Real World Haskell
    by Bryan O'Sullivan, John Goerzen, Don Stewart, O'Reilly, 2009
    Another recent Haskell book with some more advanced material. Available free online HERE.

    Abstract: Functional programming languages are distinguished from the "ordinary" imperative programming languages you already know ( e.g. Java, C++) by

    In this course we will cover the techniques of functional programming and will discuss applications of these techniques in other contexts of programming and software design.

    Grading and Other Policies: Grades will be based on written homework, an in-class midterm exam and a final exam. A standard grading scale will be used, where an overall average of 90%-100% earns an A, 80%-89% a B, 70%-79% a C, 60%-69% a D and 0%-59% an F. Work is due at the beginning of class, and late work is accepted for a few days, or until a solution is distributed, at a substantial reduction in credit each day. Returned work should be kept for verification of records.

    Midterm Exam

    Final Exam


    The professor reserves the right to alter the grading scheme or to take extenuating circumstances into account when assigning grades. Discussion of the course material among students is encouraged, although students are expected to write up their own homeworks. Academic dishonesty will be treated in accordance with university standards. Students are urged to read University regulation 802 , section 3 defines academic dishonesty. .

    Class Notes:

    Sunil Kothari typed up lecture notes for a previous version of the course. They can be found on his web-page, here Class Notes


    No. Due Date Assignment Remarks
    1 Thursday: August 29 Read the following: To get a leg up, you should install The Haskell Platform on your own computer. Then, Try running the quicksort code given in class.   Some files from class: qsort.hs .
    Nothing to hand in.