Skip to content | Change text size

M O N A T A R

InfoTech Unit Avatar

CSE3397 Functional Programming 1.

Chief Examiner

This field records the Chief Examiner for unit approval purposes. It does not publish, and can only be edited by Faculty Office staff

To update the published Chief Examiner, you will need to update the Faculty Information/Contact Person field below.

NB: This view restricted to entries modified on or after 19990401000000

Unit Code, Name, Abbreviation

CSE3397 Functional Programming 1. (27 Feb 2004, 09:47am) [FP1 (27 Feb 2004, 09:47am)]

Reasons for Introduction

Reasons for Introduction (26 Oct 2004, 2:31pm)

For students (of the BCS and BSE in particular) to learn the concepts of functional programming (reduction rules, lazy evaluation, high-order functions, type-classes, parametric polymorphic types, research in types and in parallel evaluation, relationship to denotational semantics), gain programming experience with a modern lazy, functional programming language (such as Haskell), and learn the relevance of lambda calculus to computing today. As of 2004 many of CSSE's students are mono-lingual (C/C++), and most are certainly mono-paradigm-al. Few of our students at any level have ever programmed in a lazy functional language.

(Note, that CSE3322 "programming languages and implementation" (see later) touches on the applicative (not functional) language SML, at the lecturer's discretion, and this is the closest that some of our students come to true FP. e.g.There is some overlap of this new unit with points #3, #4 and #5(b) out of points #1 to #10 of "Knowledge and Understanding" for CSE3322 as in the avatar June 2004, however overall this seems no more significant than compared with CSE2305. I would argue for neither an exclusion nor a prereuisite relationship between CSE3322 and CSE3397.

It may be argues that there should be 6-points of functional programming somewhere between level-2 and level-4 inclusive for computer science graduates. A compromise is this 3-point unit that has a quota due to resource limitations (staff availability) and is not available through the WES automated enrolment system so as to allow the lecturer the opportunity to give appropriate course advice and to manually manage the quota.

There is scope for a follow-on advanced functional programming unit should this unit be successful.

Role of Unit (10 Sep 2004, 10:36pm)

To show students another programming paradigm (FP) that is radically different from the one(!) that most of them are familiar with (imperative / OO). To teach the lambda calculus, its relationship to programming languages (not just FP languages) and their semantics, and to program specification and verification. To present modern developments in the design and implementation of FP languages including active topics in e.g. type-classes and parallel evaluation.

And very importantly, to impart a reasonable level of competence in programming techniques for a modern, still evolving, lazy functional programming language such as Haskell.

Relationship of Unit (26 Oct 2004, 2:46pm)

CSE3322 Programming languages and implementation tries to cover four programming paradigms but is known to be over-streched in trying to cover multiple paradigms and also implementations. The degree of overlap is not large.

The proposed FP unit would complement CSE3395 Perl Programming (3pts), CSE3393 Prolog Programming (3pts), CSE3394 Lisp Programming (3pts). A variety of paradigm/language units would be one way to offer variety in this area to BCS and BSE.

Relevance of Unit (10 Sep 2004, 10:40pm)

As a topic "functional programming" is proper, core, computer science material. The lambda calculus is the prototype programming language; its influence is pervasive but most of our graduates do not know what it really is. Functional programming is one of the most active and exciting research areas in computer science, influencing type theory, and the semantics of sequential, concurrent and distributed computing.

Objectives

Knowledge and Understanding (Cognitive Domain Objectives) (10 Sep 2004, 11:22pm)

Facts: lambda calculus syntax, conversion rules, semantics, expression evaluation strategies strict- (eager-, greedy-), lenient-, speculative-, and lazy- (call by need, normal-order) -evaluation, result of Church Rosser theorem, representing ints bool and lists in pure lambda calculus, basic-, parametric-polymorphic- and existential-types, type-classes, syntax, semantics and pragmatics of a modern lazy functional language (e.g. Haskell), functional input-output (e.g. monads); programming techniques (e.g. recursion, accumulating parameters, high-order functions), examples (e.g. trees, and operations on them, parser combinators, and "embedded languages" etc.), use in denotational semantics.

The student will understand the historic importance of the lambda calculus and its relationship to representative programming languages (functional and otherwise), and to models of computation. The student will be able to read, understand, evaluate and modify existing expressions in lambda calculus and programs in a functional programming language. The student will be able to solve programming problems using a functional programming language. The student will be able to analyse the time and space complexity of functional programs. The student will also be able to apply techniques that come from functional programming to solutions in non functional languages.

Attitudes, Values and Beliefs (Affective Domain Objectives) (26 Oct 2004, 2:47pm)

The student will appreciate the genius of Church and the economical beauty of the lambda calculus. The student will be impressed by the construction of correct and powerful software (e.g. in Haskell) on these sound mathematical foundations.

The student will have to accept a new way of thinking, when it comes to solving computing problems, if (s)he is to fully absorb the functional programming paradigm; such an adjustment can be difficult. Even if this process is incomplete, FP techniques can be absorbed and applied in non-FP languages.

Practical Skills (Psychomotor Domain Objectives) (10 Sep 2004, 10:50pm)

The student will be able to write a functional program (e.g. in Haskell) to solve a new programming problem, run the compiler (e.g. ghc), understand its error messages if any and fix the program, and produce a working program that solves the problem. The student will be able to use existing types and functions from the standard prelude and libraries, where appropriate. The student will be able to design new algebraic data-types, new type-classes and new functions as necessary. The student will be able to test and evaluate programs for correctness, and to estimate time- and space-complexity.

The student will be able to manipulate expressions in lambda calculus and formally prove things about them.

Relationships, Communication and TeamWork (Social Domain Objectives) (27 Feb 2004, 1:33pm)

not appropriate

Unit Content

Summary (26 Oct 2004, 2:49pm)

Facts: lambda calculus syntax, conversion rules, semantics, expression evaluation strategies strict- (eager-, greedy-), lenient-, speculative-, and lazy- (call by need, normal-order) -evaluation, result of Church Rosser theorem, representing ints bool and lists in pure lambda calculus, basic-, parametric-polymorphic- and existential-types, type-classes, syntax, semantics and pragmatics of a modern lazy functional language (e.g. Haskell), functional input-output (e.g. monads); programming techniques (e.g. recursion, accumulating parameters, high-order functions), examples (e.g. trees, and operations on them, parser combinators, and "embedded languages" etc.), use in denotational semantics.

Recommended Reading (27 Feb 2004, 12:41pm)

Haskell 98 Language and Libraries, the Revised Report. (ed) S. Peyton Jones et al, CUP, 2003.

P. Hudak. The Haskell School of Expression: Learning Functional Programming through Multimedia. CUP, 2000.

Teaching Methods

Mode (10 Sep 2004, 10:54pm)

Lectures: 12 hours.

Practical work -- problem solving using a modern lazy functional programming language, e.g. Haskell and the ghc compiler.

Strategies of Teaching (27 Feb 2004, 12:46pm)

Presentation of formal material (syntax, theorems, semantics, ...), reinforcement with worked examples, student then works on similar problems.

There is an interactive lambda calculus interpreter here

http://www.csse.monash.edu.au/~lloyd/tildeFP/Lambda/Examples/
which can also be used.

Teaching Methods Relationship to Objectives (26 Oct 2004, 2:52pm)

Lectures will present the detailed factual material as detailed in the unit summary. The practical programming skills will be learned through programming exercises and tutorial style interaction with the lecturer.

Assessment

Strategies of Assessment (26 Oct 2004, 2:54pm)

50% examination for the formal material. 50% pracs/assignments for assessing practical functional programming skills.

Assessment Relationship to Objectives (27 Feb 2004, 12:50pm)

Exam will cover the formal mathematical aspects of the unit. The prac work and/or prac exam will cover the more practical skills and objectives.

Workloads

Credit Points (27 Feb 2004, 11:28am)

3

Workload Requirement (26 Oct 2004, 2:55pm)

6 hours per week comprising 1 hours lecture, 3 hours prac/assignment work, and 2 hours reading/private study.

Resource Requirements

Lecture Requirements (26 Oct 2004, 2:57pm)

1 hi-tech lecture theatre or tutorial room for 1 hours per week. 1 computer laboratory for 3 hours per week.

Tutorial Requirements (27 Feb 2004, 12:56pm)

Nil, except as may be bundled in the lectures or prac work.

Laboratory Requirements (26 Oct 2004, 2:58pm)

Haskell (ghc), is free but must be installed on laboratory computers.

Staff Requirements (26 Oct 2004, 3:11pm)

Lectures and marking of prac work and exam will be carried out by the lecturer. There is a quota of about 15 students due to staff limitations. This unit may be taught 'over-load'.

There would be some small load on technical staff because Haskell, say, would have to be installed on the student computers. This is quite straightforward.

Software Requirements (21 Oct 2005, 1:04pm)

Haskell compiler ghc (free) see http://haskell.org/

Ideally software to support automated (partial-)marking of pracs and/or prac/exam, but the proposal does not depend on this.

Library Requirements (26 Oct 2004, 3:00pm)

Suitable material available in recommended reading and on the web. No additional library resources required.

Teaching Responsibility (Callista Entry) (26 Oct 2004, 3:01pm)

100% CSSE

Interfaculty Involvement (27 Feb 2004, 1:03pm)

Nil.

Interschool Involvement (27 Feb 2004, 1:04pm)

Nil.

Prerequisites

Prerequisite Units (26 Oct 2004, 3:03pm)

CSE2303 Formal Methods I, and CSE2304 Algorithms and Data Structures.

Unit will not be available for enrolment through WES, so lecturer will be able to advise the students and select appropriate ones to fill the quota, initially set to 15 students.

Corequisites (26 Oct 2004, 3:03pm)

Level (26 Oct 2004, 3:05pm)

Level 3

Research Interest (26 Oct 2004, 3:06pm)

This unit has no research component

Proposed year of Introduction (for new units) (26 Oct 2004, 3:06pm)

2005, semester 1 or semester 2 depending on staff availability and student demand.

Frequency of Offering (26 Oct 2004, 3:07pm)

Once per year in either semester 1 or semester 2.

Enrolment (26 Oct 2004, 3:08pm)

Quota or approximately 15 students due to resource and staffing constraints.

Location of Offering (27 Feb 2004, 1:04pm)

Clayton.

Faculty Information

Proposer

Lloyd Allison

Approvals

School: 26 Oct 2004 (Ronald Pose)
Faculty Education Committee: 18 Nov 2004 (Geraldine D&quote;Costa)
Faculty Board:
ADT:
Faculty Manager:
Dean's Advisory Council:
Other:

Version History

27 Feb 2004 Lloyd Allison Initial Draft; modified UnitName; modified Abbreviation; modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RRole; modified ReasonsForIntroduction/RRelation; modified ReasonsForIntroduction/RRelevance; modified UnitObjectives/ObjCognitive; modified UnitObjectives/ObjCognitive; modified UnitObjectives/ObjAffective; modified UnitObjectives/ObjPsychomotor; modified UnitObjectives/ObjSocial; modified Classification; modified Workload/CreditPoints; modified UnitContent/RecommendedReading; modified Teaching/Mode; modified Teaching/Strategies; modified Assessment/Strategies; modified Assessment/Objectives; modified ResourceReqs/LectureReqs; modified ResourceReqs/TutorialReqs; modified ResourceReqs/LabReqs; modified ResourceReqs/StaffReqs; modified ResourceReqs/StaffReqs; modified ResourceReqs/SoftwareReqs; modified ResourceReqs/LibraryReqs; modified ResourceReqs/InterFaculty; modified ResourceReqs/IntraFaculty; modified LocationOfOffering; modified Enrolment; modified Frequency; modified DateOfIntroduction; modified Research; modified Level; modified Prerequisites/PreReqUnits; modified Prerequisites/PreReqKnowledge; modified Workload/WorkHours; modified Corequisites; modified Prerequisites/PreReqKnowledge; modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RRelevance; modified UnitObjectives/ObjCognitive; modified UnitObjectives/ObjPsychomotor; modified UnitObjectives/ObjSocial; modified UnitObjectives/ObjSocial; modified Classification; modified Assessment/Strategies; modified ResourceReqs/LectureReqs
25 Mar 2004 Lloyd Allison
10 Sep 2004 Lloyd Allison modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RRole; modified ReasonsForIntroduction/RRole; modified ReasonsForIntroduction/RRelation; modified ReasonsForIntroduction/RRelevance; modified UnitObjectives/ObjCognitive; modified UnitObjectives/ObjAffective; modified UnitObjectives/ObjPsychomotor; modified Teaching/Mode; modified Teaching/Mode; modified ResourceReqs/LabReqs; modified Assessment/Strategies; modified Workload/WorkHours; modified ResourceReqs/LectureReqs; modified ResourceReqs/SoftwareReqs; modified Prerequisites/PreReqKnowledge; modified Enrolment; modified Level; modified Prerequisites/PreReqUnits
10 Sep 2004 Lloyd Allison modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RIntro; modified UnitObjectives/ObjCognitive; modified Assessment/Strategies; modified ResourceReqs/StaffReqs; modified ReasonsForIntroduction/RIntro; modified Prerequisites/PreReqUnits; modified ResourceReqs/StaffReqs; modified ReasonsForIntroduction/RIntro
10 Sep 2004 Lloyd Allison
10 Sep 2004 Lloyd Allison modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RIntro; modified UnitObjectives/ObjCognitive; modified Assessment/Strategies; modified ResourceReqs/StaffReqs; modified ReasonsForIntroduction/RIntro; modified Prerequisites/PreReqUnits; modified ResourceReqs/StaffReqs; modified ReasonsForIntroduction/RIntro
10 Sep 2004 Lloyd Allison modified ReasonsForIntroduction/RIntro; modified ReasonsForIntroduction/RIntro; modified UnitObjectives/ObjCognitive; modified Assessment/Strategies; modified ResourceReqs/StaffReqs; modified ReasonsForIntroduction/RIntro; modified Prerequisites/PreReqUnits; modified ResourceReqs/StaffReqs; modified ReasonsForIntroduction/RIntro
26 Oct 2004 Ronald Pose Clean-up of initial unit description for CSSE and FEC approval
26 Oct 2004 John Hurst recoded from CSE3456 (q.v.) by John Hurst
26 Oct 2004 John Hurst
26 Oct 2004 Ronald Pose CSE School Approval, CSSE Education Committee meeting 7/04
18 Nov 2004 Geraldine DCosta FEC Approval
17 Oct 2005 David Sole Added Software requrirements template
21 Oct 2005 David Sole Updated requirements template to new format

This version: