University of Sydney Handbooks - 2018 Archive

Download full 2018 archive Page archived at: Fri, 21 Sep 2018 05:39:45 +0000

Computer Science Descriptions

Computer Science

Computer Science major

Achievement of 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) 12 credit points of 3000-level core units;
(iv) 6 credit points of 3000-level (major only) selective units.

Computer Science minor

Achievement of 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 (minor only) selective units

Units of study

The relevant units of study are listed below.

1000-level units of study

Core
INFO1110 Introduction to Programming

Credit points: 6 Session: Intensive July,Semester 1,Semester 2 Classes: lectures, laboratories, seminars 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 Classes: lectures, laboratories, seminars Prerequisites: INFO1110 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
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.
COMP2123 Data Structures and Algorithms

Credit points: 6 Session: Semester 1 Classes: Lectures, Tutorials Prerequisites: INFO1110 OR INFO1113 OR DATA1002 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: Distinction level result in at least one of INFO1110 OR INFO1113 OR DATA1002 OR INFO1103 OR INFO1903 Prohibitions: INFO1105 OR INFO1905 OR COMP2123 Assumed knowledge: Distinction-level result in at least one the listed 1000 level programming units 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.

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.
COMP3615 Computer Science Project

Credit points: 6 Session: Semester 2 Classes: Project Work, Site Visit, Meetings Prerequisites: (COMP2123 OR COMP2823) AND COMP2017 AND (COMP2022 OR COMP2922) Prohibitions: INFO3600 OR COMP3600 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.
COMP3600 Computer Science Project (Adv)

Credit points: 6 Session: Semester 2 Classes: project work, sites visits, meetings Prerequisites: (COMP2123 OR COMP2823) AND COMP2017 AND (COMP2022 OR COMP2922) with Distinction level results in at least one of the above listed units Prohibitions: INFO3600 OR COMP3615 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.
Selective units (major only)
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 some 2nd year COMP or MATH or SOFT units. 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.).
Selective units (minor only)
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 some 2nd year COMP or MATH or SOFT units. 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.).