COMP 2030 Data Structures and Algorithms (Advanced)
Description This subject introduces students to fundamental data structures and algorithms used in computing related courses. The material covered forms the basis for further studies in programming and software engineering in later subjects and for further training in programming skills. The subject focuses on the ideas of data abstraction and algorithm efficiency. The issues of computational complexity of algorithms are addressed throughout the semester. The topics covered include the fundamental abstract data types (lists, stacks, queues, trees, hash tables, graphs), recursion, complexity of algorithms, sorting and searching algorithms, binary search trees and graphs. As a subject designed for advanced computer science students, the students will conduct an advanced project on top of the assignment tasks for further training of their programming skills.
School Computer, Data & Math Sciences
Student Contribution Band
Check your fees via the Fees page.
Level Undergraduate Level 2 subject
A good understanding of the concepts in Object-Oriented Programming, such as data abstraction, encapsulation, inheritance, and polymorphism.
Knowledge of operator overloading and class template.
Solid programming skills in one of the general-purpose programming languages, such as C, C++, Java and Python.
After successful completion of this Subject, students will be able to:
- Select appropriate data structures to solve moderately complex programming problems.
- Discuss time and space tradeoffs among different data structures that could be used to represent specific information.
- Perform time-complexity analysis against multiple implementations of various abstract data types.
- Write programs using the fundamental data structures, including linked list, stack, queue, hash table, binary search tree, heap and graph.
- Apply or design efficient and effective algorithms to solve moderately complex programming problems.
- Basic concepts: abstract data types, big-O concept and complexity analysis.
- Stacks and queues: ADT specification, implementation strategies and applications.
- Variations of linked lists: Doubly linked lists and circular lists.
- Recursion: recursive functions and divide-and-conquer approach.
- Trees: Binary trees, binary search trees, AVL trees, and heaps.
- Graphs: Adjacency matrix and adjacency list implementations, depth-first search, breadth-first search, and minimum spanning tree algorithms.
- Searching: Sequential search, binary search and hashing.
- Elementary sorting algorithms: insertion sort, selection sort, and bubble sort.
- Advanced sorting algorithms: quick sort, heap sort, and shell sort.
- Typical AI algorithms: backtracking, heuristic search, Monte-Carlo tree search and so on
The following table summarises the standard assessment tasks for this subject. Please note this is a guide only. Assessment tasks are regularly updated, where there is a difference your Learning Guide takes precedence.
|Practical||2 hours (each practical)||14||N||Individual|
|Quiz||Approximately 30 minutes each x 10||6||N||Individual|
|Short Answer||Around 600-800 lines of code and up to 4 A4 pages of algorithm description and analysis for each assignment||20||N||Individual|
|Applied Project||Around 300 to 1000 lines of code in the same or different programming language of the base assignment code||10||N||Individual|
Drozdek, A. (2013). Data structures and algorithms in C++ (4th ed.). Cengage Learning
Subject Contact Opens in new window
Parramatta - Victoria Rd
Subject Contact Opens in new window