Computer Science Descriptions

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
(iv) 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: 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.
COMP2017 Systems Programming

Credit points: 6 Session: Semester 1 Classes: lectures, laboratories Prerequisites: INFO1113 OR INFO1105 OR INFO1905 OR INFO1103 Corequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2129 Assessment: through semester assessment (50%), final exam (50%) 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 Programming Languages, Logic and Models

Credit points: 6 Session: Semester 2 Classes: Lectures, Tutorials Prerequisites: INFO1103 OR INFO1903 OR INFO1113 Prohibitions: COMP2922 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 OR MATH2069 OR MATH2969 Assessment: Through semester assessment (50%) and Final Exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
This unit provides an introduction to the foundations of computational models, and their connection to programming languages/tools. The unit covers various abstract models for computation including Lambda Calculus, and Logic calculi (e. g. concept of formal proofs in propositional, predicate, and temporal logic). For each abstract model, we introduce programming languages/tools that are built on the introduced abstract computational models. We will discuss functional languages including Scheme/Haskell, and Prolog/Datalog.
COMP2922 Programming Languages, Logic and Models (Adv)

Credit points: 6 Session: Semester 2 Classes: lectures, tutorials Prerequisites: Distinction level result in INFO1103 OR INFO1903 OR INFO1113 Prohibitions: COMP2022 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 OR MATH2069 OR MATH2969 Assessment: through semester assessment (50%), final exam (50%) Mode of delivery: Normal (lecture/lab/tutorial) day
Note: Department permission required for enrolment
This unit provides an introduction to the foundations of computational models, and their connection to programming languages/tools. The unit covers various abstract models for computation including Lambda Calculus, and Logic calculi (e.g. concept of formal proofs in propositional, predicate, and temporal logic). For each abstract model, we introduce programming languages/tools that are built on the introduced abstract computational models. We will discuss functional languages including Scheme/Haskell, and Prolog/Datalog.

3000-level units of study

Core
COMP3027 Algorithm Design

Credit points: 6 Session: Semester 1 Classes: lectures, tutorials Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2007 OR COMP2907 OR COMP3927 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: through semester assessment (40%), final exam (60%) 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 included 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: lectures, tutorials Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2007 OR COMP2907 OR COMP3027 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: through semester assessment (40%), final exam (60%) Mode of delivery: Normal (lecture/lab/tutorial) day
Note: Department permission required for enrolment
This unit provides an introduction to the design techniques that are used to find efficient algorithmic solutions for given problems. The techniques covered included 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: meetings, project work, site visits 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: 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 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: meetings, project work, site visits Prerequisites: (COMP2123 OR COMP2823) AND COMP2017 AND (COMP2022 OR COMP2922) Prohibitions: INFO3600 OR COMP3600 OR COMP3615 OR COMP3988 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 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: 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.
Major selective
COMP3221 Distributed Systems

Credit points: 6 Session: Semester 1 Classes: Lectures, Laboratories, Project Work - own time Prerequisites: (INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823)) Prohibitions: COMP2121 Assessment: through semester assessment (60%), final exam (40%) 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: Tutorials, Lectures Prohibitions: COMP3608 Assumed knowledge: Algorithms. Programming skills (e.g. Java, Python, C, C++, Matlab) Assessment: Through semester assessment (45%) and Final Exam (55%) 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: Lectures, Tutorials 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: Through semester assessment (45%) and Final Exam (55%) 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: Lectures, Tutorials Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Assumed knowledge: Programming skills Assessment: Through semester assessment (40%) and Final Exam (60%) 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: Lectures, Tutorials Prerequisites: (COMP2017 OR COMP2129) AND (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905) Assessment: Through semester assessment (40%) and Final Exam (60%) 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: lectures, tutorials Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2007 OR COMP2907 OR COMP3927 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: through semester assessment (40%), final exam (60%) 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 included 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: lectures, tutorials Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Prohibitions: COMP2007 OR COMP2907 OR COMP3027 Assumed knowledge: MATH1004 OR MATH1904 OR MATH1064 Assessment: through semester assessment (40%), final exam (60%) Mode of delivery: Normal (lecture/lab/tutorial) day
Note: Department permission required for enrolment
This unit provides an introduction to the design techniques that are used to find efficient algorithmic solutions for given problems. The techniques covered included 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.
COMP3221 Distributed Systems

Credit points: 6 Session: Semester 1 Classes: Lectures, Laboratories, Project Work - own time Prerequisites: (INFO1105 OR INFO1905) OR ((INFO1103 OR INFO1113) AND (COMP2123 OR COMP2823)) Prohibitions: COMP2121 Assessment: through semester assessment (60%), final exam (40%) 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: Tutorials, Lectures Prohibitions: COMP3608 Assumed knowledge: Algorithms. Programming skills (e.g. Java, Python, C, C++, Matlab) Assessment: Through semester assessment (45%) and Final Exam (55%) 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: Lectures, Tutorials 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: Through semester assessment (45%) and Final Exam (55%) 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: Lectures, Tutorials Prerequisites: COMP2123 OR COMP2823 OR INFO1105 OR INFO1905 Assumed knowledge: Programming skills Assessment: Through semester assessment (40%) and Final Exam (60%) 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: Lectures, Tutorials Prerequisites: (COMP2017 OR COMP2129) AND (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905) Assessment: Through semester assessment (40%) and Final Exam (60%) 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.).