Software Development Descriptions
Software Development
Software Development major
Achievement of a major in Software Development requires 48 credit points from this table including:
(i) 12 credit points of 1000-level core units;
(ii) 18 credit points of 2000-level core units;
(iii) 18 credit points of 3000-level core (major only) units.
Software Development minor
A minor in Software Development requires 36 credit points from this table including:
(i) 12 credit points of 1000-level core units;
(ii) 18 credit points of 2000-level core units;
(iii) 6 credit points of 3000-level selective (minor only) units.
Units of study
The relevant units of study are listed below.
1000-level units of study
Core
INFO1110 Introduction to Programming
Credit points: 6 Session: Intensive July,Semester 1,Semester 2 Classes: lectures, laboratories, seminars Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
This unit is an essential starting point for software developers, IT consultants, and computer scientists to build their understanding of principle computer operation. Students will obtain knowledge and skills with procedural programming. Crucial concepts include defining data types, control flow, iteration, functions, recursion, the model of addressable memory. Students will be able to reinterpret a general problem into a computer problem, and use their understanding of the computer model to develop source code. This unit trains students with software development process, including skills of testing and debugging. It is a prerequisite for more advanced programming languages, systems programming, computer security and high performance computing.
INFO1113 Object-Oriented Programming
Credit points: 6 Session: Semester 1,Semester 2 Classes: lectures, laboratories, seminars Prerequisites: INFO1110 Prohibitions: INFO1103 OR INFO1105 OR INFO1905 Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
Object-oriented (OO) programming is a technique that arranges code into classes, each encapsulating in one place related data and the operations on that data. Inheritance is used to reuse code from a more general class, in specialised situations. Most modern programming languages provide OO features. Understanding and using these are an essential skill to software developers in industry. This unit provides the student with the concepts and individual programming skills in OO programming, starting from their previous mastery of procedural programming.
2000-level units of study
Core
COMP2123 Data Structures and Algorithms
Credit points: 6 Session: Semester 1 Classes: Lectures, Tutorials Prerequisites: INFO1110 OR INFO1113 OR DATA1002 OR INFO1103 OR INFO1903 Prohibitions: INFO1105 OR INFO1905 OR COMP2823 Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
This unit will teach some powerful ideas that are central to solving algorithmic problems in ways that are more efficient than naive approaches. In particular, students will learn how data collections can support efficient access, for example, how a dictionary or map can allow key-based lookup that does not slow down linearly as the collection grows in size. The data structures covered in this unit include lists, stacks, queues, priority queues, search trees, hash tables, and graphs. Students will also learn efficient techniques for classic tasks such as sorting a collection. The concept of asymptotic notation will be introduced, and used to describe the costs of various data access operations and algorithms.
COMP2823 Data Structures and Algorithms (Adv)
Credit points: 6 Session: Semester 1 Classes: lectures, tutorials Prerequisites: Distinction level result in at least one of INFO1110 OR INFO1113 OR DATA1002 OR INFO1103 OR INFO1903 Prohibitions: INFO1105 OR INFO1905 OR COMP2123 Assumed knowledge: Distinction-level result in at least one the listed 1000 level programming units Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
Note: Department permission required for enrolment
This unit will teach some powerful ideas that are central to solving algorithmic problems in ways that are more efficient than naive approaches. In particular, students will learn how data collections can support efficient access, for example, how a dictionary or map can allow key-based lookup that does not slow down linearly as the collection grows in size. The data structures covered in this unit include lists, stacks, queues, priority queues, search trees, hash tables, and graphs. Students will also learn efficient techniques for classic tasks such as sorting a collection. The concept of asymptotic notation will be introduced, and used to describe the costs of various data access operations and algorithms.
SOFT2201 Software Construction and Design 1
Credit points: 6 Session: Semester 2 Classes: lectures, laboratories Prerequisites: INFO1113 OR INFO1103 OR INFO1105 OR INFO1905 Prohibitions: INFO3220 Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
This unit introduces the foundations of software design and construction. It covers the topics of modelling software (UML, CRC, use cases), software design principles, object-oriented programming theory (inheritance, polymorphism, dynamic subtyping and generics), and simple design patterns. The unit aims to foster a strong technical understanding of the underlying software design and construction theory (delivered in the lecture) but also has a strong emphasis of the practice, where students apply the theory on practical examples.
SOFT2412 Agile Software Development Practices
Credit points: 6 Session: Semester 2 Classes: Lectures, Laboratories, Project Work - own time Prerequisites: INFO1113 OR INFO1103 OR INFO1105 OR INFO1905 Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
This unit builds students skills to follow defined processes in software development, in particular, working in small teams in an agile approach. Content covers the underlying concepts and principles of software processes, their analysis, measurement and improvement. Students will practice with a variety of professional-strength tool support for the practices that ensure quality outcomes. The unit requires students to enter already skilled in individual programming; instead this unit focuses on the complexities in a team setting.
3000-level units of study
Core units (major only)
SOFT3202 Software Construction and Design 2
Credit points: 6 Session: Semester 1 Classes: lectures, laboratories Prerequisites: SOFT2201 Prohibitions: INFO3220 Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
This unit is a sequel of Software Construction and Design I (SOFT2301). It introduces advanced concepts which build on the topics of SOFT2301. SOFT3302 covers topics including software validation and verification, the theory of testing, and advanced design patterns. The unit has a strong focus on the theoretical underpinning of software design. I the labs the theory is applied with contemporary tools with concrete examples.
SOFT3410 Concurrency for Software Development
Credit points: 6 Session: Semester 2 Classes: lectures, laboratories Prerequisites: (INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823)) Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
The manufacturing industry has experienced a radical shift in the way they design computers, with the integration of multiple processors on the same chip. This hardware shift now requires software developers to acquire the skills that will allow them to write efficient concurrent software. Software developers used to wait for manufacturers to increase the clock frequency of their processors to see increases in the performance of their programs, the challenge is now to exploit, in the same program, more and more processing resources rather than faster processing resources. In this unit, you will learn how to tackle the problems underlying this challenge, including developing and testing concurrent programs, synchronizing resources between concurrent threads, overcoming fairness issues and guaranteeing progress, and ensuring scalability in the level of concurrency.
SOFT3413 Software Development Project
Credit points: 6 Session: Semester 2 Classes: project work, site visits, meetings Prerequisites: 18CP 2000-level or above units from SOFT, COMP or INFO Assumed knowledge: SOFT3202 Assessment: through semester assessment (100%) Mode of delivery: Normal (lecture/lab/tutorial) day
Note: Department permission required for enrolment
This unit will provide students an opportunity to apply the knowledge and practice the skills acquired in the prerequisite and qualifying units, in the context of designing and building a substantial software development system in diverse application domains including life sciences. Working in groups for an external client combined with academic supervision, students will need to carry out the full range of activities including requirements capture, analysis and design, coding, testing and documentation. Students will use the XP methodology and make use of professional tools for the management of their project.
Selective units (minor only)
SOFT3202 Software Construction and Design 2
Credit points: 6 Session: Semester 1 Classes: lectures, laboratories Prerequisites: SOFT2201 Prohibitions: INFO3220 Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
This unit is a sequel of Software Construction and Design I (SOFT2301). It introduces advanced concepts which build on the topics of SOFT2301. SOFT3302 covers topics including software validation and verification, the theory of testing, and advanced design patterns. The unit has a strong focus on the theoretical underpinning of software design. I the labs the theory is applied with contemporary tools with concrete examples.
SOFT3410 Concurrency for Software Development
Credit points: 6 Session: Semester 2 Classes: lectures, laboratories Prerequisites: (INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823)) Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
The manufacturing industry has experienced a radical shift in the way they design computers, with the integration of multiple processors on the same chip. This hardware shift now requires software developers to acquire the skills that will allow them to write efficient concurrent software. Software developers used to wait for manufacturers to increase the clock frequency of their processors to see increases in the performance of their programs, the challenge is now to exploit, in the same program, more and more processing resources rather than faster processing resources. In this unit, you will learn how to tackle the problems underlying this challenge, including developing and testing concurrent programs, synchronizing resources between concurrent threads, overcoming fairness issues and guaranteeing progress, and ensuring scalability in the level of concurrency.