Declarative Programming (COMP90048)
Graduate courseworkPoints: 12.5On Campus (Parkville)
For information about the University’s phased return to campus and in-person activity in Winter and Semester 2, please refer to the on-campus subjects page.
About this subject
Contact information
Semester 1
Peter Schachte
Please refer to the LMS for up-to-date subject information, including assessment and participation requirements, for subjects being offered in 2020.
Overview
Availability | Semester 1 |
---|---|
Fees | Look up fees |
AIMS
Declarative programming languages provide elegant and powerful programming paradigms which 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
Intended learning outcomes
INTENDED LEARNING OUTCOMES (ILOs)
On completion of this subject the student is expected to:
- Apply declarative programming techniques
- Write medium size programs in a declarative language
- Write programs in which different components use different languages
- Select appropriate languages for each component task in a project
Generic skills
On completion of this subject, the student should have the following skills:
- Ability to utilise systematic thinking in problem solving
- Intellectual curiosity and creativity, including understanding of the philosophical and methodological bases of research activity
- Openness to new ideas and unconventional critiques of received wisdom
- Capacity for independent critical thought, rational inquiry and self-directed learning
Last updated: 3 November 2022
Eligibility and requirements
Prerequisites
One of the following:
Code | Name | Teaching period | Credit Points |
---|---|---|---|
COMP20007 | Design of Algorithms | Semester 1 (On Campus - Parkville) |
12.5 |
COMP90038 | Algorithms and Complexity |
Semester 1 (On Campus - Parkville)
Semester 2 (On Campus - Parkville)
|
12.5 |
COMP20003 | Algorithms and Data Structures | Semester 2 (On Campus - Parkville) |
12.5 |
OR admission into one of the following courses:
MC-ENG Master of Engineering, all entry points
MC-IT Master of Information Technology, 100 or 150 pt program in Computing, Distributed Computing or Artificial Intelligence
MC-SCICMP Master of Science (Computer Science)
Master of Computer Science
Corequisites
None
Non-allowed subjects
Code | Name | Teaching period | Credit Points |
---|---|---|---|
COMP30020 | Declarative Programming | Semester 2 (On Campus - Parkville) |
12.5 |
Recommended background knowledge
Code | Name | Teaching period | Credit Points |
---|---|---|---|
SWEN20003 | Object Oriented Software Development |
Semester 2 (On Campus - Parkville)
Semester 1 (On Campus - Parkville)
|
12.5 |
Inherent requirements (core participation requirements)
The University of Melbourne is committed to providing students with reasonable adjustments to assessment and participation under the Disability Standards for Education (2005), and the Assessment and Results Policy (MPF1326). Students are expected to meet the core participation requirements for their course. These can be viewed under Entry and Participation Requirements for the course outlines in the Handbook.
Further details on how to seek academic adjustments can be found on the Student Equity and Disability Support website: http://services.unimelb.edu.au/student-equity/home
Last updated: 3 November 2022
Assessment
Due to the impact of COVID-19, assessment may differ from that published in the Handbook. Students are reminded to check the subject assessment requirements published in the subject outline on the LMS
Description | Timing | Percentage |
---|---|---|
Two small programming assignments, requiring approximately 5-8 hours each; Due Weeks 2 and 8 (5% each). Addressing Intended Learning Outcomes (ILOs') 1 and 2.
| From Week 2 to Week 8 | 10% |
Two assignments, requiring approximately 10-15 hours each; Due Weeks 4 and 9 (15% each). Addressing Intended Learning Outcomes (ILOs') 1-4.
| From Week 4 to Week 9 | 30% |
One written, closed-book examination. Intended Learning Outcomes (ILO) 1.
| End of semester | 60% |
Additional details
Hurdle Requirement: to pass the subject, students must obtain at least:
- 50% overall
- 20/40 in programming assignments
- 60 in the end-of semester written examination
Last updated: 3 November 2022
Dates & times
- Semester 1
Principal coordinator Peter Schachte Mode of delivery On Campus (Parkville) Contact hours 36 hours, comprising of two 1 hour lectures and one 1 hour workshop per week Total time commitment 200 hours Teaching period 2 March 2020 to 7 June 2020 Last self-enrol date 13 March 2020 Census date 30 April 2020 Last date to withdraw without fail 5 June 2020 Assessment period ends 3 July 2020 Semester 1 contact information
Peter Schachte
Time commitment details
200 hours
Last updated: 3 November 2022
Further information
- Texts
- Subject 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 problem 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 Handbook entries
This subject contributes to the following:
Type Name Course Master of Science (Computer Science) Course Master of Data Science Course Ph.D.- Engineering Course Doctor of Philosophy - Engineering Course Master of Philosophy - Engineering Specialisation (formal) Computing Specialisation (formal) Distributed Computing Specialisation (formal) Software with Business Specialisation (formal) Software Major Computer Science - Available through the Community Access Program
About the Community Access Program (CAP)
This subject is available through the Community Access Program (also called Single Subject Studies) which allows you to enrol in single subjects offered by the University of Melbourne, without the commitment required to complete a whole degree.
Please note Single Subject Studies via Community Access Program is not available to student visa holders or applicants
Entry requirements including prerequisites may apply. Please refer to the CAP applications page for further information.
Additional information for this subject
Subject coordinator approval required
- Available to Study Abroad and/or Study Exchange Students
Last updated: 3 November 2022