Handbook home
Programming Language Implementation (COMP90045)
Graduate courseworkPoints: 12.5On Campus (Parkville)
About this subject
- Overview
- Eligibility and requirements
- Assessment
- Dates and times
- Further information
- Timetable(opens in new window)
Contact information
Semester 1
Dr Graeme Gange
email: gkgange@unimelb.edu.au
Overview
Availability | Semester 1 |
---|---|
Fees | Look up fees |
AIMS
Good craftsmen know their tools, and compilers are amongst the most important tools that programmers use. There are many ways in which familiarity with compilers helps programmers.
For example, knowledge of semantic analysis helps programmers understand error messages, and knowledge of code generation techniques helps programmers debug problems at assembly language level. The technologies used in compiler development are also useful when implementing other kinds of programs. The concepts and tools used in the analysis phases of a compiler are useful for any program whose input has a structure that is non-trivial to recognize, while those used in the synthesis phases are useful for any program that generates commands for another system. This subject provides an understanding of the main principles of programming language implementation, as well as first hand experience of the application of those principles.
INDICATIVE CONTENT
The subject describes how compilers analyse source programs, how they translate them to target programs, and what tools are available to support these tasks. Topics covered include compiler structures; lexical analysis; syntax analysis; semantic analysis; intermediate representations of programs; code generation; and optimisation.
Intended learning outcomes
INTENDED LEARNING OUTCOMES (ILO)
On completion of this subject the student is expected to:
- Describe important concepts and techniques in programming language implementation
- Exploit their knowledge of compilers to be more effective programmers
- Use analysis tools to help implement programs whose input has a structure that is non-trivial to recognize
- Use synthesis tools to help implement programs that generate commands for other programs
Generic skills
On completion of the subject students should have the following skills:
- Ability to apply knowledge of science and engineering fundamentals
- Ability to undertake problem identification, formulation and solution
- Ability to utilise a systems approach to complex problems and to design for performance
- Ability to manage information and documentation
- Capacity for creativity and innovation.
Last updated: 3 November 2022
Eligibility and requirements
Prerequisites
Code | Name | Teaching period | Credit Points |
---|---|---|---|
COMP90048 | Declarative Programming | Semester 2 (On Campus - Parkville) |
12.5 |
And
Code | Name | Teaching period | Credit Points |
---|---|---|---|
COMP90038 | Algorithms and Complexity |
Semester 2 (On Campus - Parkville)
Semester 1 (On Campus - Parkville)
|
12.5 |
Or Equivalent
Corequisites
None
Non-allowed subjects
433-361 Programming Language Implementation
Recommended background knowledge
Basic proficiency in discrete mathematics.
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
Additional details
- A multi-stage programming project, including peer reviewing. Addressing Intended learning Outcomes, (ILOs) 1-4, Staged, throughout semester, with milestones every two weeks, requiring approximately 35 – 40 hours of work (30%)
- A written 3-hour closed book examination, end of semester exam period (70%)
- The examination is a hurdle and must be passed to pass the subject.
Last updated: 3 November 2022
Dates & times
- Semester 1
Principal coordinator Graeme Gange Mode of delivery On Campus (Parkville) Contact hours 36 hours, comprising of two 1-hour lectures and one 1-hour tutorial per week Total time commitment 200 hours Teaching period 27 February 2017 to 28 May 2017 Last self-enrol date 10 March 2017 Census date 31 March 2017 Last date to withdraw without fail 5 May 2017 Assessment period ends 23 June 2017 Semester 1 contact information
Dr Graeme Gange
email: gkgange@unimelb.edu.au
Time commitment details
200 hours
Last updated: 3 November 2022
Further information
- Texts
Prescribed texts
TBA
- Subject notes
LEARNING AND TEACHING METHODS
The subject involves two 1-hour lectures per week followed by a 1-hour tuorial. Weekly tutorial problems are assigned and discussed in class. The programming project is pivotal, as the subject relies heavily on learning-by-doing. Students work in small groups to implement a compiler for a non-trivial programming language. The project is staged, allowing for review and feedback throughout, including student peer review activity. In-plenum discussion of the project is allowed, and encouraged.
INDICATIVE KEY LEARNING RESOURCES
The subject uses online reading materials and an online discussion forum. It offers advance access to teaching materials, including slides used in lectures.
CAREERS / INDUSTRY LINKS
An understanding of program translation techniques, including parsing technologies, is essential in software engineering and software development and maintenance.
- Related Handbook entries
This subject contributes to the following:
Type Name Course Master of Data Science Course Master of Science (Computer Science) Course Doctor of Philosophy - Engineering Course Master of Philosophy - Engineering Course Master of Information Technology Course Master of Information Technology Course Ph.D.- Engineering Informal specialisation Computer Science Major MIT Computing Specialisation Informal specialisation Master of Engineering (Software) Specialisation (formal) Software Major MIT Distributed Computing Specialisation Major Computer Science Specialisation (formal) Computing Specialisation (formal) Distributed Computing - 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.
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
Last updated: 3 November 2022