Declarative Programming

Subject COMP30020 (2015)

Note: This is an archived Handbook entry from 2015.

Credit Points: 12.5
Level: 3 (Undergraduate)
Dates & Locations:

This subject has the following teaching availabilities in 2015:

Semester 2, Parkville - Taught on campus.
Pre-teaching Period Start not applicable
Teaching Period 27-Jul-2015 to 25-Oct-2015
Assessment Period End 20-Nov-2015
Last date to Self-Enrol 07-Aug-2015
Census Date 31-Aug-2015
Last date to Withdraw without fail 25-Sep-2015


Timetable can be viewed here. For information about these dates, click here.
Time Commitment: Contact Hours: 36 hours, comprising of two 1-hour lectures and one 1-hour workshop per week
Total Time Commitment:

170 hours

Prerequisites:

One of the following:

Subject
Study Period Commencement:
Credit Points:
Semester 1, Semester 2
12.50
Corequisites:

None

Recommended Background Knowledge:
Subject
Study Period Commencement:
Credit Points:
Non Allowed Subjects:

Students cannot enrol in and gain credit for this subject and:

Subject
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

Coordinator

Dr Peter Schachte

Contact

email: schachte@unimelb.edu.au

Subject Overview:

AIMS

Declarative programming languages provide elegant and powerful programming paradigms and techniques that every programmer should know. This subject presents declarative programming languages and techniques.

INDICATIVE CONTENT

  • The dangers of destructive update
  • Functional programming
  • Recursion
  • Strong type systems
  • Parametric polymorphism
  • Algebraic types
  • Type classes
  • Defensive programming practice
  • Higher order programming
  • Currying and partial application
  • Lazy evaluation
  • Monads
  • Logic programming
  • Unification and resolution
  • Nondeterminism, search, and backtracking.
Learning Outcomes:

INTENDED LEARNING OUTCOMES (ILO)

On completion of this subject the student is expected to:

  1. Apply declarative programming techniques
  2. Write medium size programs in a declarative language
  3. Write programs in which different components use different languages
  4. Select appropriate languages for each component task in a project

Assessment:
  1. Project work during semester, requiring approximately 30 - 35 hours of work (30%)
  2. One 1-hour mid-semester test (10%)
  3. One 2-hour end-of-semester examination (60%).

Hurdle requirement: To pass the subject, students must obtain at least:

  • 50% overall
  • 15/30 in project work
  • And 35/70 in the mid-semester test and end-of-semester written examination combined.

Intended Learning Outcome (ILO) 1 is covered by all three assessment components, and ILO 2 is covered by the project work. ILO 3 and 4 are substantially less important, and are covered in lecture, but not explicitly assessed.

Prescribed Texts:

TBA

Breadth Options:

This subject potentially can be taken as a breadth subject component for the following courses:

You should visit learn more about breadth subjects and read the breadth requirements for your degree, and should discuss your choice with your student adviser, before deciding on your subjects.

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

On completion of this subject students should have developed the following skills:

  • Ability to undertake problem identification, formulation and solution
  • Ability to utilise a systems approach to design and operational performance
  • Intellectual curiosity and creativity, including understanding of the philosophical and methodological bases of research activity
  • Openess to new ideas and unconventional critiques of received wisdom
  • Capacity for independent critical thought, rational inquiry and self-directed learning.


Notes:

LEARNING AND TEACHING METHODS

This subject comprises 24 one-hour lectures plus 11 one-hour workshops combining group discussion and individual and small group programming work. Additionally, students develop two medium-size declarative programs for assessment.

INDICATIVE KEY LEARNING RESOURCES

At the beginning of the semester, the coordinator will propose a textbook on declarative programming, which will be made available through University Book Shop and library. The current suggested textbook is Bryan O'Sullivan, John Goerzen & Don Stewart: Real World Haskell, O’Reilly Media. This textbook can also be read online gratis. Lecture notes for the subject are also available online.

CAREERS / INDUSTRY LINKS

Over the last few years, the mainstream software industry has become quite interest in functional programming, as it promises more robust software by altogether avoiding many classes of problems common in non-declarative languages. Skills developed in this subject complement skills taught in other subjects, better equipping students for work in software design and implementation.

Related Majors/Minors/Specialisations: B-ENG Software Engineering stream
Computer Science
Computer Science
Computer Science
Master of Engineering (Software with Business)
Master of Engineering (Software)
Science-credited subjects - new generation B-SCI and B-ENG.
Selective subjects for B-BMED

Download PDF version.