Functional Programming

Subject 433-631 (2009)

Note: This is an archived Handbook entry from 2009. Search for this in the current handbook

Credit Points: 12.50
Level: 9 (Graduate/Postgraduate)
Dates & Locations:

This subject is not offered in 2009.

Time Commitment: Contact Hours: Twenty-four hours of lectures, 11 hours of workshops
Total Time Commitment: Not available
Prerequisites:

Knowledge of functional programming, and study at level 3 in at least four of the following areas: artificial intelligence, computer design, database systems, graphics, interactive system design, networks and communications, operating systems, programming languages, software engineering, and theory of computation.

Corequisites: None
Recommended Background Knowledge: None
Non Allowed Subjects: None
Core Participation Requirements:

For the purposes of considering request for Reasonable Adjustments under the Disability Standards for Education (Cwth 2005), and Student Support and Engagement Policy, academic requirements for this subject are articulated in the Subject Overview, Learning Outcomes, Assessment and Generic Skills sections of this entry.

It is University policy to take all reasonable steps to minimise the impact of disability upon academic study, and reasonable adjustments will be made to enhance a student's participation in the University's programs. Students who feel their disability may impact on meeting the requirements of this subject are encouraged to discuss this matter with a Faculty Student Adviser and Student Equity and Disability Support: http://services.unimelb.edu.au/disability

Subject Overview:

Functional programming is an appealing programming language paradigm that all programmers should be aware of. Functional programming languages are generally simple and powerful and enjoy clean sematics. To learn a functional language, there are few rules to remember, and even fewer exceptions.

Topics covered include functional programming languages: pattern matching, list comprehension, higher-order functions, strict and lazy evaluation; functional programming techniques: accumulators, higher-order programming, continuations, monads; functional data structures and algorithms; declarative input/output; types: polymorphism, type classes; computational models: evaluation of functional programs, lambda calculus, combinators, and graph reduction; implementation: translation to lambda expression and combinator form, abstract machines, strictness analysis, parallel evaluation.

Objectives: On successful completion, students should:
  • be able to develop solutions to problems of high complexity, requiring either symbolic or numeric solutions;
  • have mastered sophisticated abstraction in implementing those solutions in a functional programming language, using higher-order functional, polymorphic, and monadic abstraction;
  • be able to explain the role of lambda calculus, combinatory logic and type theory in the foundation of functional programming;
  • be able to research a technical topic and give an informal oral presentation of the topic;
  • be able to undertake problem identification, formulation and solution;
  • have a capacity for independent critical thought, rational inquiry and self-directed learning; and
  • have a profound respect for truth and intellectual integrity, and for the ethics of scholarship.
Assessment:

Project work during semester, expected to take about 36 hours (40%) and a 2-hour end of semester written examination (60%).

Prescribed Texts: None
Breadth Options:

This subject is not available as a breadth subject.

Fees Information: Subject EFTSL, Level, Discipline & Census Date
Generic Skills:

On completion of this subject students should:

  • be able to undertake problem identification, formulation and solution.
Notes:

Credit may not be gained for both 433-431 Functional Programming and 433-631 Functional Programming.

Download PDF version.