Winter 2010 - 457/557 - Functional Languages - Syllabus

  Instructor T.A.
name: Tim Sheard Dan Brown
office: FAB 120-04 Fish bowl, Mon. 1:00-2:30, Wed. 10:30-12:00
location: lecture
ED 202
CS Unix 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:

Course Description

Introduction to functional notation, recursion, higher-order functions, reasoning about functions, and models for the evaluation of applicative expressions. Use of functional languages.

Prerequisites: CS 202, 311.

Upon the successful completion of this course students will be able to:

  1. Describe the key characteristics of the functional paradigm.
  2. Use a functional language to write simple programs manipulating lists and trees.
  3. Use higher order functions, including maps, folds, and composition, to perform tasks on lists.
  4. Define algebraic datatypes to model useful domains.
  5. Define and use appropriate higher order functions on arbitrary algebraic data types.
  6. Illustrate how higher-order function values can be used to store data.
  7. Convert functional abstract data type specifications into implementations.
  8. Prove properties of simple functional programs using equational reasoning and induction.
  9. Explain and use polymorphic functions and data types, and interpret type error messages.
  10. Write functional programs that perform I/O, using either monadic or direct methods.
  11. Explain the differences between eager and lazy evaluation, and their significance.
  12. Write programs using simple infinite data structures.
  13. Explain the basic implementation considerations for a functional language.
  14. Design and implement a non-trivial application program in a functional language.

Major Topics:

Topics that we expect to cover include:

Texts for the Class


Course Website

The class web-page: 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 class.

Black Board

We will use the blackboard system to turn in assignments. Be sure you have access to the CS457-557 blackboard site when you login:

Things needed

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.

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.

Student Conduct/Plagiarism:

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 or Scholarly work resulting from plagiarism or cheating will receive no credit and all expectations of student conduct code will be strictly enforced in class.

Disability Resources


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 accomodations. For more information about the Disability Resource Center, see

Back to the class web-page.