|
Functional Programming (230.301)
6 points / Semester 1
Handbook Description
The official Handbook entry Unit Aims
cs301 aims to teach students about the use of functional
languages for programming; the implementation of functional
programming languages; and the analysis and optimisation
of programs written in the functional style.
cs301 addresses several generic attributes.
Students develop skills in the identification,
formulation and solution of problems;
they apply scientific principles and engineering process
in the development of software;
they gain in-depth technical competence in software development
and language implementation;
they develop an understanding of their professional responsibility
for producing reliable software;
they are encouraged to engage in lifelong learning vis-a-vis
other programming languages;
they develop the ability to perform effectively as an
individual and as part of a team;
and they develop the ability to communicate effectively with
other people and with the machine.
Teaching Staff
Textbook
There is no required text for cs301. Partial notes will be provided at lectures and on the web, and should be annotated by students during lectures.
Note, however, that the notes are not a substitute for lecture attendance.
Recommended Reading
Copies of these books are available for borrowing from Dr. Davies.
Davie, An Introduction to Functional Programming Systems using Haskell, Cambridge, 1992
Field and Harrison, Functional Programming, Addison-Wesley, 1988
Thompson, The Craft of Functional Programming, Addison-Wesley, 1999
Bird, Introduction to Functional Programming using Haskell, Prentice Hall, 1998
Bird and Wadler, Introduction to Functional Programming, Prentice Hall, 1988
Peyton Jones, The Implementation of Functional Programming Languages, Prentice Hall, 1987
Contact Hours
You are required to attend two one-hour lectures,
a one-hour tutorial and
a three-hour laboratory session each week.
Laboratories will be partly supervised.
Laboratories and tutorials will begin in week 2.
For the first four weeks of semester, lab sheets will be distributed
in cs301, and must be submitted by the end of the following week using the cssubmit
system. Your attempt at every lab sheet
must be passed by Dr. Davies, or you
will be declared to have made unsatisfactory progress in cs301.
Dr. Davies will be available in his office for consultation on academic
matters from 3-5pm on Mondays.
Dr. Davies will also maintain a web page
(http://undergraduate.cs.uwa.edu.au/courses/230.301/noticeboard.html)
that will be used to distribute information about cs301.
The web page will be used to make important announcements about all
aspects of cs301, including announcements about deadlines and assessment.
You should check the web page frequently for new announcements
(at least once each week).
A web-based help facility will operate in cs301. When you encounter
problems in cs301, send email to help301@cs.uwa.edu.au.
All messages sent to help301@cs.uwa.edu.au will be listed on www.cs.uwa.edu.au/cgi-bin/help301.
Feel free to reply to messages yourselves, but do not post code on the help301 page.
It is expected that you will need to
undertake additional study to make satisfactory progress in cs301.
An hour of additional study per formal contact hour is a reasonable estimate.
The times given in the table below are subject to change.
| Type |
Time |
Day |
Location |
| Lecture |
2-3pm |
Mon |
Blakers LT |
| Lab |
3-6pm |
Tue |
CS&SE Lab 2.1 |
| Lecture |
2-3pm |
Wed |
Blakers LT |
| Tutorial |
4-5pm |
Wed |
CS&SE Room 1.24 |
Lecture Details
The lecture material covered the following topics in 2004.
You should expect only minor changes in 2005.
| Topic |
Details |
| 1 |
Introduction to FP |
| 2 |
Review of Haskell |
| 3 |
Structured data |
| 4 |
Haskell types |
| 5 |
Higher-order functions |
| 6 |
Folding operators |
| 7 |
Recursive datatypes |
| 8 |
Laziness |
| 9 |
IO in Haskell |
| 10 |
The lambda-calculus |
| 11 |
Theory of FP |
| 12 |
Interpretation of Haskell |
| 13 |
Graph reduction |
| 14 |
Beta-reduction in graphs |
| 15 |
Super-combinators |
| 16 |
Optimising super-combinators |
| 17 |
Garbage collection |
| 18 |
Type inference |
| 19 |
The G-machine |
| 20 |
Induction techniques |
| 21 |
Fold/unfold transformation |
| 22 |
Datatype transformations |
Assessment
The assessment scheme for cs301 consists of
a three-hour programming test,
a programming project,
and a two-hour examination in June.
Before undertaking cs301, students should read the
Guidelines on Academic Assessment in the 2003 Interfaculty Handbook.
Students who do not pass every lab sheet (see "Contact Hours" above)
will be declared
to have made unsatisfactory progress in cs301.
The potential penalty for unsatisfactory progress is set out below.
Students who do not obtain a mark of at least 40% in the
programming test will be deemed to have failed cs301.
Students who do not obtain a mark of at least 40% in
the examination will be deemed to have failed cs301.
| Assessment |
% of final mark |
Assessment Due Dates |
| Programming test |
15% |
Lab sessions Week 6 |
| Project |
25% |
Week 11 |
| Examination |
60% |
June exam period |
Unsatisfactory Progress
Any student who does not demonstrate satisfactory progress in this
unit, as defined in the FECM
Policy on Assessment Practices and Procedures, may be refused admission to the
final examinations. The final deadline for notification of unsatisfactory progress is the
last day of Week 10.
Penalties
The School of Computer Science and Software Engineering has adopted a policy on
minimum penalties for late items of assessment.
This is the default policy of all units unless indicated otherwise, in writing, by the
specific unit coordinator.
This policy shall apply to all items of continuous assessment, whether
submitted either physically or electronically. Immediately after the submission deadline for an item of continuous
assessment, a penalty of 20 percent will be applied PER DAY or PART THEREOF.
The minimum mark possible for late submission is zero. The
percentage is based on the item´s total contribution to the unit´s
assessment. For example, a project contributing 40% to the unit´s
assessment will incur a penalty of 8 marks for each day late until it is submitted or
a mark of zero results.
A more detailed description is given in this School´s Policy on
Late Submission. The Faculty does have an appeals procedure, the details of which can found at the Policy for Appeals.
Plagiarism
Plagiarism is broadly defined to be when any portion
of the work presented for assessment, can be attributed
to another party. The student making the submission should acknowledge
what aspects of the presented work is not directly derived by
them. For the purposes of plagiarism it is irrelevant that you
have been given permission by someone to copy their work
and present it as your own.
You are directed to the School of Computer Science and Software Engineering Policy on Plagiarism and the Faculty of Engineering,Computing and Mathematics Policy on Plagiarism.
Faculty Scaling
Final assessment is subject to the Faculty Scaling Policy.
This information is correct as at 28-Feb-2005, but is subject
to change from time to time. In particular, The University
reserves the right to change the content and/or method of
presentation and/or the method of assessment of any unit of
study, to withdraw any unit of study or programme, and/or to
vary arrangements for any programme.
Copyright© 2005 School of Computer Science, & Software Engineering
The University of Western Australia
CRICOS Provider Code: 00126G
Last updated: 28-Feb-2005 |