Software Development
Unit outlines will be available through 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 Session: Semester 1,Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prohibitions: INFO1910 or INFO1103 or INFO1903 or INFO1105 or INFO1905 or ENGG1810 Assessment: Refer to the assessment table in the unit outline. 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 Session: Semester 1,Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units 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: Refer to the assessment table in the unit outline. 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 Session: Semester 1,Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: INFO1110 OR INFO1910 OR ENGG1810 Prohibitions: INFO1103 OR INFO1105 OR INFO1905 Assessment: Refer to the assessment table in the unit outline. 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: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: INFO1110 OR INFO1910 OR INFO1113 OR DATA1002 OR DATA1902 OR INFO1103 OR INFO1903 Prohibitions: INFO1105 OR INFO1905 OR COMP2823 Assessment: Refer to the assessment table in the unit outline. 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: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: Distinction level results in (INFO1110 OR INFO1910 OR INFO1113 OR DATA1002 OR DATA1902 OR INFO1103 OR INFO1903) Prohibitions: INFO1105 OR INFO1905 OR COMP2123 Assessment: Refer to the assessment table in the unit outline. 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 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: INFO1113 OR INFO1103 OR INFO1105 OR INFO1905 Prohibitions: INFO3220 OR COMP9201 Assessment: Refer to the assessment table in the unit outline. 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: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: INFO1113 OR INFO1103 OR INFO1105 OR INFO1905 Prohibitions: COMP9412 Assessment: Refer to the assessment table in the unit outline. 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: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: SOFT2201 Prohibitions: INFO3220 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit is a sequel of Software Construction and Design I (SOFT2201). It introduces advanced concepts which build on the topics of SOFT2201. SOFT3202 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. In the labs the theory is applied with contemporary tools with concrete examples.
SOFT3410 Concurrency for Software Development
Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: (INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823)) Assessment: Refer to the assessment table in the unit outline. 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
SCPU3001 Science Interdisciplinary Project
Credit points: 6 Teacher/Coordinator: Refer to the unit of study outline https://www.sydney.edu.au/units Session: Intensive February,Intensive July,Semester 1,Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: 96 credit points Assessment: Refer to the unit of study outline https://www.sydney.edu.au/units Mode of delivery: Normal (lecture/lab/tutorial) day
This interdisciplinary unit provides students with the opportunity to address complex problems identified by industry, community, and government organisations, and gain valuable experience in working across disciplinary boundaries. In collaboration with a major industry partner and an academic lead, students integrate their academic skills and knowledge by working in teams with students from a range of disciplinary backgrounds. This experience allows students to research, analyse and present solutions to a real¿world problem, and to build on their interpersonal and transferable skills by engaging with and learning from industry experts and presenting their ideas and solutions to the industry partner.
SOFT3888 Software Development Project
Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: [18CP 2000-level or above units from SOFT or COMP or INFO] Prohibitions: SOFT3413 Assumed knowledge: SOFT3202 Assessment: Refer to the assessment table in the unit outline. 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.
Minor selective
SOFT3202 Software Construction and Design 2
Credit points: 6 Session: Semester 1 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: SOFT2201 Prohibitions: INFO3220 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit is a sequel of Software Construction and Design I (SOFT2201). It introduces advanced concepts which build on the topics of SOFT2201. SOFT3202 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. In the labs the theory is applied with contemporary tools with concrete examples.
SOFT3410 Concurrency for Software Development
Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: (INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823)) Assessment: Refer to the assessment table in the unit outline. 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.