Software Development

SOFTWARE DEVELOPMENT

Advanced coursework and projects will be available in 2020 for students who complete this major.

Software Development major

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) 12 credit points of 3000-level core units
(iv) 6 credit points of 3000-level interdisciplinary project units according to the following rules:
(a) for students in the Bachelor of Advanced Computing or Bachelor of Computing they must complete the SOFT coded interdisciplinary project units
(b) all other students may complete either the SOFT or SCPU coded 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 units

Units of study

The units of study are listed below.

1000-level units of study

Core
INFO1110 Introduction to Programming

Credit points: 6 Session: Semester 1,Semester 2 Classes: lectures, laboratories, seminars Prohibitions: INFO1910 OR INFO1103 OR INFO1903 OR INFO1105 OR INFO1905 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,Summer Main Classes: lectures, laboratories, seminars Prerequisites: INFO1110 OR INFO1910 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 INFO1910 OR INFO1113 OR DATA1002 OR DATA1902 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: INFO1110 OR INFO1910 OR INFO1113 OR DATA1002 OR DATA1902 OR INFO1103 OR INFO1903 Prohibitions: INFO1105 OR INFO1905 OR COMP2123 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

Major core
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
Note: Department permission required for enrolment
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.

Interdisciplinary project

SOFT3888 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] Prohibitions: SOFT3413 Assumed knowledge: SOFT3202 Assessment: through semester assessment (100%) Mode of delivery: Normal (lecture/lab/tutorial) day
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.
SCPU3001 Science Interdisciplinary Project

Credit points: 6 Teacher/Coordinator: Pauline Ross Session: Intensive December,Intensive February,Intensive January,Intensive July,Semester 1,Semester 2 Classes: The unit consists of one seminar/workshop per week with accompanying online materials and a project to be determined in consultation with the partner organisation and completed as part of team with academic supervision. Prerequisites: Completion of 2000-level units required for at least one Science major. Assessment: group plan, group presentation, reflective journal, group project Mode of delivery: Normal (lecture/lab/tutorial) day
This unit is designed for students who are concurrently enrolled in at least one 3000-level Science Table A unit of study to undertake a project that allows them to work with one of the University's industry and community partners. Students will work in teams on a real-world problem provided by the partner. This experience will allow students to apply their academic skills and disciplinary knowledge to a real-world issue in an authentic and meaningful way. Participation in this unit will require students to submit an application to the Faculty of Science.
Minor selective
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
Note: Department permission required for enrolment
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.