University of Sydney Handbooks - 2020 Archive

Download full 2020 archivePage archived at: Tue, 27 Oct 2020

Software Development

Unit outlines will be available though Find a unit outline two weeks before the first day of teaching for 1000-level and 5000-level units, or one week before the first day of teaching for all other units.
 

SOFTWARE DEVELOPMENT

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 Teacher/Coordinator: John Stavrakakis 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.
INFO1910 Introduction to Programming (Advanced)

Credit points: 6 Teacher/Coordinator: John Stavrakakis Session: Semester 1,Semester 2 Classes: lectures, laboratories, e-learning Prohibitions: INFO1110 OR INFO1103 OR INFO1903 OR INFO1105 OR INFO1905 Assumed knowledge: ATAR sufficient to enter Dalyell program, or passing an online programming knowledge test, which will be administered during the O-week prior to the commencement of the semester. Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
Note: Department permission required for enrolment
The focus of this unit will cover the ground up programming components necessary for study in the computer science discipline. Students will engage with procedural programming using two related programming languages. Students will further their understanding of internal operations as well as reasoning about processing, memory model and conventional programming practices. As an advanced offering, all the course contents of INFO1110 will be covered and there will be additional teaching materials and assessments.
INFO1113 Object-Oriented Programming

Credit points: 6 Teacher/Coordinator: Mohammad Polash; A/Prof Masahiro Takatsuka Session: Intensive January,Semester 1,Semester 2 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
Note: Department permission required for enrolmentin the following sessions:Intensive January
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 Teacher/Coordinator: Andreas Van Renssen 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 Teacher/Coordinator: Dr Julian Mestre 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
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 Teacher/Coordinator: Xi Wu Session: Semester 2 Classes: lectures, laboratories Prerequisites: INFO1113 OR INFO1103 OR INFO1105 OR INFO1905 Prohibitions: INFO3220 OR COMP9201 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 Teacher/Coordinator: Dr Basem Suleiman Session: Semester 2 Classes: Lectures, Laboratories, Project Work - own time Prerequisites: INFO1113 OR INFO1103 OR INFO1105 OR INFO1905 Prohibitions: COMP9412 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 Teacher/Coordinator: A/Prof Bernhard Scholz 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 Teacher/Coordinator: Xi Wu 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.
Interdisciplinary project
SOFT3888 Software Development Project

Credit points: 6 Teacher/Coordinator: Dr Basem Suleiman Session: Semester 2 Classes: project work, site visits, meetings Prerequisites: [18CP 2000-level or above units from SOFT or 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: Prof Pauline Ross Session: Intensive February,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 a 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 Teacher/Coordinator: A/Prof Bernhard Scholz 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 Teacher/Coordinator: Xi Wu 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.