Winter 2011 - 457/557 - Functional Languages - Syllabus
CS Lab, FAB 88-10
Please note that the syllabus will be adjusted during the quarter. I
reserve the right to change it at any time for any reason. You will see on
the Daily Record on the class homepage when a change has been made and are
expected to check the class Daily Record before every class:
Introduction to functional notation, recursion, higher-order functions, reasoning
about functions, and models for the evaluation of applicative expressions. Use of
Prerequisites: CS 202, 311.
Upon the successful completion of this course students will be able to:
- Describe the key characteristics of the functional paradigm.
- Use a functional language to write simple programs manipulating lists and trees.
- Use higher order functions, including maps, folds, and composition, to perform tasks on lists.
- Define algebraic datatypes to model useful domains.
- Define and use appropriate higher order functions on arbitrary algebraic data types.
- Illustrate how higher-order function values can be used to store data.
- Convert functional abstract data type specifications into implementations.
- Prove properties of simple functional programs using equational reasoning and induction.
- Explain and use polymorphic functions and data types, and interpret type error messages.
- Write functional programs that perform I/O, using either monadic or direct methods.
- Explain the differences between eager and lazy evaluation, and their significance.
- Write programs using simple infinite data structures.
- Explain the basic implementation considerations for a functional language.
- Design and implement a non-trivial application program in a functional language.
Topics that we expect to cover include:
- Introduction, basic concepts, expressions, comprehensions, the standard prelude
- Examples: fractals; Excell Tables
- More about lists -- Library
- Defining functions
- Pattern matching
- Recursive definintions
- Algebraic Datatypes
- More on pattertn matching
- Trees and graph visualization via Graph Viz
- Music (as an example of a combinator library)
- Possibly some interaction with music TeX or similar
- Testing and reasoning
- Quick check
- Equational Reasoning
- Higher order functions
- Church numerals (lambda calculator)
- Laziness, with possible examples including:
- arrays and finite functions
- prime sieve
- A rush hour puzzle solver
- Overloading and classes
- including a second look at the Excell and Quickcheck libraries
- Practical Applications, possibly including some of the following:
- Database and Internet applications (more combinators?)
- HTML combinators
- Graphics via OpenGL
- Lecture notes and other supplementary material will be posted
on-line via the daily record.
- Many documents will be formatted as Microsoft Word (*.doc) or in
Adobe Portable Document Format (*.pdf). Be sure you can access and
print these kinds of documents. Free resources for these
kinds of documents include Open Office, and Adobe Reader.
The class web-page: http://web.cecs.pdx.edu/~sheard/course/CS457-557/
is an invaluable resource. Be sure and learn how to use it effectively.
The class webpage maintains a "Daily Record" which catalogs every class activity.
Activities include lectures, reading assigments, writing assignments,
projects, etc. These are catalogued by day, both when they are assigned
and when they are due. You should check the daily record before every
Assignment submission procedure.
We will use some sort of electronic assignment submission procedure.
In the past we used blackboard, but we will probably use something else.
- PSU Odin account and registration in the course. These will give
you WebCT access, which is required for homework submission. If you donít have an account
you must get one immediately. You can do so online at:
https://www.account.pdx.edu/ After following those three steps you will
need to verify your identity at the help desk in the basement of Smith.
- Access to a computer with internet capability.
- Haskell Implmentation. A running implementation of Haskell. I recommend the Glasgow Haskell Compiler,
version 6.10.4 and use of the GHCI interface. You should get and install the Haskell Platform.
The Hugs interpreter will probably also work, but I would like for all students to use the same version
so we minimize compatibilty problems. I think the GHCI error messages are better.
- Text. There is no required text for this class, but we have provided pointers to useful books and other reading material on the resources page.
Grading and Assignments
The course grade will be based upon a number of factors including
short daily homeworks, weekly programming assignments, longer programming projects,
a midterm, class participation (see below), and a final exam.
- 15% Class participation, including
- Class Participation and Discussion (blackboard work, code reviews, team activitites)
- 35% Weekly programming assignments
- 30% Midterm
- 20% Project (be done as small teams of 2-3 persons)
Work not turned in, unacceptable work or an unexcused absence from class when
the work was done receives no credit. Excused absences requires that
students make arrangements with the instructor to turn in missed work be turned
in as soon as possible. It is your job to make arrangements with me.
Readiness to learn means that you will come to class with questions
and insights to offer to others and be prepared to discuss the
assigned reading. We will be learning from each other and your
voice is important. Your participation grade will include
attendance, participation in class discussions, participation in
online discussions, and group work in class on smaller design
problems and case studies.
We follow the standard guidelines for academic integrity. For
this course, it is perfectly acceptable for you to discuss
the general concepts and principles behind an assignment with
other students. In fact, you are encouraged to do this
whenever possible, because it is often a valuable way to
reinforce ideas, and to learn new perspectives. However, it
is not proper, without prior authorization of the instructor,
to arrive at collective solutions. In such a case, each
student is expected to develop, write up, and hand in an
individual solution and, in doing so, develop a sufficient
understanding of the problem and solution so as to be able to
explain it adequately to the instructor. Under no
circumstances should a student copy or consult the completed
solution of another student.
The following constitutes conduct proscribed by Portland State University for which a student or Recognized
Student Organization or group is subject to disciplinary action:
Academic dishonesty. Academic dishonesty is the act of knowingly or intentionally seeking to claim credit
for the work or effort of another person or participation in such acts. This includes, but is not limited to:
(a) cheating, (b) fraud, (c) plagiarism, such as word for word copying, using borrowed words or phrases from
original text into new patterns without attribution, or paraphrasing another writerís ideas; (d) The buying
or selling of all or any portion of course assignments and research papers; (e) Performing academic
assignments (including tests and examinations) for other persons; (f) Unauthorized disclosure or receipt of
academic information; (g) Falsification of research data; and (h) Unauthorized collaboration.
Source: Office of Student
Affairs at Portland State University, Code of Student Conduct and
Responsibility. A copy of the full code can be found at
A copy can be obtained from
The Office of Student Affairs at Smith Memorial Center Room 433.
The Writing Center at Portland State University has prepared
PLAGARISM: A Guide for Students to assist students in understanding
plagiarism and developing strategies on avoiding it. A copy of this
guide is available from Writing Center located in Cramer Hall 188F.
Please read it carefully. Or see
Scholarly work resulting from plagiarism or cheating will
receive no credit and all expectations of student conduct code will
be strictly enforced in class.
If you are a student with a document disability, who is
registered with the Disability Resource Center, please
contact the instructor to arrange any needed academic
For more information about the
Disability Resource Center,
Back to the class web-page.