Computer Science Descriptions

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.
 

COMPUTER SCIENCE

Computer Science major

A major in Computer Science 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) 6 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 COMP coded interdisciplinary project units
(b) all other students may complete either the COMP or SCPU coded units
(v) 6 credit points of 3000-level selective units

Computer Science minor

A minor in Computer Science 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.
COMP2017 Systems Programming

Credit points: 6 Session: Semester 1 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: INFO1113 OR INFO1105 OR INFO1905 OR INFO1103 Corequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2129 OR COMP9017 OR COMP9129 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
In this unit of study, elementary methods for developing robust, efficient, and re-usable software will be covered. The unit is taught in C, in a Unix environment. Specific coding topics include memory management, the pragmatic aspects of implementing data structures such as lists and hash tables and managing concurrent threads. Debugging tools and techniques are discussed and common programming errors are considered along with defensive programming techniques to avoid such errors. Emphasis is placed on using common Unix tools to manage aspects of the software construction process, such as version control and regression testing. The subject is taught from a practical viewpoint and it includes a considerable amount of programming practice.
COMP2022 Models of Computation

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: INFO1103 OR INFO1903 OR INFO1113 Prohibitions: COMP2922 Assumed knowledge: (MATH1004 OR MATH1904 OR MATH1064 OR MATH2069 OR MATH2969) AND (INFO1105 OR INFO1905 OR COMP2123 OR COMP2823) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the foundations of computing. The main aims are to introduce and compare different models of computation based on state-machines, grammars and algebra, and logic.
COMP2922 Models of Computation (Adv)

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: Distinction level result in (INFO1103 OR INFO1903 OR INFO1113) Prohibitions: COMP2022 Assumed knowledge: (MATH1004 OR MATH1904 OR MATH1064 OR MATH2069 OR MATH2969) AND (INFO1105 OR INFO1905 OR COMP2123 OR COMP2823) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the foundations of computing. The main aims are to introduce and compare different models of computation based on state-machines, grammars and algebra, and logic.

3000-level units of study

Core
COMP3027 Algorithm Design

Credit points: 6 Session: Semester 1 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2007 OR COMP2907 OR COMP3927 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the design techniques that are used to find efficient algorithmic solutions for given problems. The techniques covered include greedy, divide-and-conquer, dynamic programming, and adjusting flows in networks. Students will extend their skills in algorithm analysis. The unit also provides an introduction to the concepts of computational complexity and reductions between problems.
COMP3927 Algorithm Design (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 (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905) Prohibitions: COMP2007 OR COMP2907 OR COMP3027 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the design techniques that are used to find efficient algorithmic solutions for given problems. The techniques covered include greedy, divide-and-conquer, dynamic programming, and adjusting flows in networks. Students will extend their skills in algorithm analysis. The unit also provides an introduction to the concepts of computational complexity and reductions between problems.
Interdisciplinary projects
COMP3988 Computer Science Project (Advanced)

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: [(COMP2123 OR COMP2823) AND COMP2017 AND (COMP2022 OR COMP2922) with Distinction level results in at least one of these units.] Prohibitions: INFO3600 OR COMP3615 OR COMP3600 OR COMP3888 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 practise 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.
COMP3888 Computer Science Project

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: (COMP2123 OR COMP2823) AND COMP2017 AND (COMP2022 OR COMP2922) Prohibitions: INFO3600 OR COMP3600 OR COMP3615 OR COMP3988 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 practise 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: 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.
Major selective
COMP3109 Programming Languages and Paradigms

This unit of study is not available in 2021

Credit points: 6 Teacher/Coordinator: A/Prof Bernhard Scholz Session: Semester 2 Classes: Lecture, Tutorials Prerequisites: COMP2017 AND COMP2022 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the foundations of programming languages and their implementation. The main aims are to teach what are: semantics, programming paradigms and implementation of programming languages.
COMP3221 Distributed Systems

Credit points: 6 Session: Semester 1 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)) Prohibitions: COMP2121 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit will provide broad introduction to the principles of distributed computing and distributed systems and their design; provide students the fundamental knowledge required to analyse, design distributed algorithms and implement various types of applications, like blockchains; explain the common algorithmic design principles and approaches used in the design of message passing at different scales (e.g., logical time, peer-to-peer overlay, gossip-based communication).
COMP3308 Introduction to Artificial Intelligence

Credit points: 6 Session: Semester 1 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prohibitions: COMP3608 Assumed knowledge: Algorithms. Programming skills (e.g. Java, Python, C, C++, Matlab) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
Artificial Intelligence (AI) is all about programming computers to perform tasks normally associated with intelligent behaviour. Classical AI programs have played games, proved theorems, discovered patterns in data, planned complex assembly sequences and so on. This unit of study will introduce representations, techniques and architectures used to build intelligent systems. It will explore selected topics such as heuristic search, game playing, machine learning, neural networks and probabilistic reasoning. Students who complete it will have an understanding of some of the fundamental methods and algorithms of AI, and an appreciation of how they can be applied to interesting problems. The unit will involve a practical component in which some simple problems are solved using AI techniques.
COMP3608 Introduction to Artificial Intelligence (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 at least one 2000 level COMP or MATH or SOFT unit Prohibitions: COMP3308 Assumed knowledge: Algorithms. Programming skills (e.g. Java, Python, C, C++, Matlab) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
Note: COMP3308 and COMP3608 share the same lectures, but have different tutorials and assessment (the same type but more challenging).
An advanced alternative to COMP3308; covers material at an advanced and challenging level.
COMP3419 Graphics and Multimedia

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Assumed knowledge: Programming skills Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides a broad introduction to the field of graphics and multimedia computing to meet the diverse requirements of application areas such as entertainment, industrial design, virtual reality, intelligent media management, social media and remote sensing. It covers both the underpinning theories and the practices of computing and manipulating digital media including graphics / image, audio, animation, and video. Emphasis is placed on principles and cutting-edge techniques for multimedia data processing, content analysis, media retouching, media coding and compression.
COMP3520 Operating Systems Internals

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: (COMP2017 OR COMP2129) AND (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit will provide a comprehensive discussion of relevant OS issues and principles and describe how those principles are put into practice in real operating systems. The contents include internal structure of OS; several ways each major aspect (process scheduling, inter-process communication, memory management, device management, file systems) can be implemented; the performance impact of design choices; case studies of common OS (Linux, MS Windows NT, etc.).
Minor selective
COMP3027 Algorithm Design

Credit points: 6 Session: Semester 1 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2007 OR COMP2907 OR COMP3927 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the design techniques that are used to find efficient algorithmic solutions for given problems. The techniques covered include greedy, divide-and-conquer, dynamic programming, and adjusting flows in networks. Students will extend their skills in algorithm analysis. The unit also provides an introduction to the concepts of computational complexity and reductions between problems.
COMP3927 Algorithm Design (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 (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905) Prohibitions: COMP2007 OR COMP2907 OR COMP3027 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the design techniques that are used to find efficient algorithmic solutions for given problems. The techniques covered include greedy, divide-and-conquer, dynamic programming, and adjusting flows in networks. Students will extend their skills in algorithm analysis. The unit also provides an introduction to the concepts of computational complexity and reductions between problems.
COMP3109 Programming Languages and Paradigms

This unit of study is not available in 2021

Credit points: 6 Teacher/Coordinator: A/Prof Bernhard Scholz Session: Semester 2 Classes: Lecture, Tutorials Prerequisites: COMP2017 AND COMP2022 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the foundations of programming languages and their implementation. The main aims are to teach what are: semantics, programming paradigms and implementation of programming languages.
COMP3221 Distributed Systems

Credit points: 6 Session: Semester 1 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)) Prohibitions: COMP2121 Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit will provide broad introduction to the principles of distributed computing and distributed systems and their design; provide students the fundamental knowledge required to analyse, design distributed algorithms and implement various types of applications, like blockchains; explain the common algorithmic design principles and approaches used in the design of message passing at different scales (e.g., logical time, peer-to-peer overlay, gossip-based communication).
COMP3308 Introduction to Artificial Intelligence

Credit points: 6 Session: Semester 1 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prohibitions: COMP3608 Assumed knowledge: Algorithms. Programming skills (e.g. Java, Python, C, C++, Matlab) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
Artificial Intelligence (AI) is all about programming computers to perform tasks normally associated with intelligent behaviour. Classical AI programs have played games, proved theorems, discovered patterns in data, planned complex assembly sequences and so on. This unit of study will introduce representations, techniques and architectures used to build intelligent systems. It will explore selected topics such as heuristic search, game playing, machine learning, neural networks and probabilistic reasoning. Students who complete it will have an understanding of some of the fundamental methods and algorithms of AI, and an appreciation of how they can be applied to interesting problems. The unit will involve a practical component in which some simple problems are solved using AI techniques.
COMP3608 Introduction to Artificial Intelligence (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 at least one 2000 level COMP or MATH or SOFT unit Prohibitions: COMP3308 Assumed knowledge: Algorithms. Programming skills (e.g. Java, Python, C, C++, Matlab) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
Note: COMP3308 and COMP3608 share the same lectures, but have different tutorials and assessment (the same type but more challenging).
An advanced alternative to COMP3308; covers material at an advanced and challenging level.
COMP3419 Graphics and Multimedia

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Assumed knowledge: Programming skills Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides a broad introduction to the field of graphics and multimedia computing to meet the diverse requirements of application areas such as entertainment, industrial design, virtual reality, intelligent media management, social media and remote sensing. It covers both the underpinning theories and the practices of computing and manipulating digital media including graphics / image, audio, animation, and video. Emphasis is placed on principles and cutting-edge techniques for multimedia data processing, content analysis, media retouching, media coding and compression.
COMP3520 Operating Systems Internals

Credit points: 6 Session: Semester 2 Classes: Refer to the unit of study outline https://www.sydney.edu.au/units Prerequisites: (COMP2017 OR COMP2129) AND (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905) Assessment: Refer to the assessment table in the unit outline. Mode of delivery: Normal (lecture/lab/tutorial) day
This unit will provide a comprehensive discussion of relevant OS issues and principles and describe how those principles are put into practice in real operating systems. The contents include internal structure of OS; several ways each major aspect (process scheduling, inter-process communication, memory management, device management, file systems) can be implemented; the performance impact of design choices; case studies of common OS (Linux, MS Windows NT, etc.).