Program Analysis and Transformation

Subject COMP90053 (2013)

Note: This is an archived Handbook entry from 2013.

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

This subject is not offered in 2013.

Time Commitment: Contact Hours: 36 hours, comprising of two 1-hour lectures and one 1-hour workshop per week
Total Time Commitment:

120 hours

Prerequisites:

One of the following:

Subject
Study Period Commencement:
Credit Points:
Not offered in 2013
12.50
Not offered in 2013
12.50
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

Contact

Associate Professor Harald Sondergaard

email: harald@unimelb.edu.au

Subject Overview:

In the 1930s, Alan Turing and Konrad Zuse independently proposed designs of computing machines based on the idea that storage used for data and storage used for instructions be indistinguishable. This “stored-program” model formed the blueprint for all modern computers. The ability to treat programs as data turned out to be very powerful, as it meant that a program could be designed to read, generate, analyse and/or transform other programs, and even modify itself while running. This subject is concerned with meta-programs - programs that work on other programs, possibly generating programs as output. People routinely read, generate, analyse, test, and transform programs. For example, a programmer may look through code for potential buffer overruns, and may add runtime tests to avoid the security problems that could result. It is preferable, however, to automate such activity as far as we can, partly because that makes programmers more productive, and partly because computers generally are better at these tasks, avoiding human oversights and mistakes. This subject introduces the main techniques and applications of program analysis and transformation, including methods used by modern optimizing compilers and allied tools.

Objectives:

1. Describe standard approaches to program analysis and program transformation.
2. Solve mathematical problems relevant to reasoning about program runtime properties.
3. Design and build non-trivial program analysis/transformation tools.
4. Adapt and apply existing program analysis tools to the needs of a project.
5. Explain the limits of program analysis as applied to specific languages, and use this to inform decisions about which languages to use in programming projects.

Assessment:
  • A 45-minute mid-semester written test around Week 7 (10%) (addressing ILOs 1 and 2)
  • A programming project during semester (30%), expected to take about 45 hours (addressing ILOs 3 and 4)
  • A 2-hour end-of-semester written examination (60%) (addressing ILOs 1, 2, and 5)

To pass the subject, students must obtain:15/30 in project work 35/70 in the mid-semester test and end-of-semester written examination combined

Prescribed Texts:

None

Breadth Options:

This subject is not available as a breadth subject.

Fees Information: Subject EFTSL, Level, Discipline & Census Date
Generic Skills:
  • Analytical skills.
  • Reasoning and problem-solving skills.
  • Ability to apply knowledge of science and engineering fundamentals.
  • Capacity for creativity and innovation.
  • Ability to undertake problem identification, formulation and solution.
  • Ability to utilise a systems approach to complex problems and to design for performance.

Related Course(s): Master of Engineering in Distributed Computing
Master of Information Technology
Master of Information Technology
Master of Information Technology
Master of Philosophy - Engineering
Master of Science (Computer Science)
Master of Software Systems Engineering
Ph.D.- Engineering
Related Majors/Minors/Specialisations: B-ENG Software Engineering stream
Master of Engineering (Software)

Download PDF version.