1 x 160-minute lecture weekly
1 x 110-minute laboratory weekly
3 x 13-hour project works per semester
1 Admission into MESCEE-Master of Engineering Science (Electrical and Electronic)
1a Admission into MESCS-Master of Engineering Science (Software)
1b Admission into MITNCS-Master of Information Technology (Network and Cybersecurity Systems)
1c Admission into GDPCSC-Graduate Diploma in Computer Science
1d Admission into MCS-Master of Computer Science
1e Admission into MCSAI-Master of Computer Science (Artificial Intelligence)
1f Admission into GDPDSC-Graduate Diploma in Data Science
1g Admission into MDSC-Master of Data Science
2 1 of COMP8702, ENGR8800
Must Satisfy: (((1 or 1a or 1b or 1c or 1d or 1e or 1f or 1g)) or (2))
Enrolment not permitted
1 of COMP2711, ENGR2701, ENGR8701 has been successfully completed
Topic description

This topic provides a second-level exploration of programming, with an emphasis on the data structures that frequently occur in programming problems and the algorithms for traversing and manipulating such structures. The syllabus is built around the theme of data abstraction using object- oriented programming; the main working language is C++, The topic includes an introduction to C++ for students already familiar with another language such as Java. Specific areas covered include:

  1. Basic data representations, including arrays, records, and strings
  2. Key object-oriented computational techniques, including exception handlers, inheritance, recursion, and dynamic memory allocation
  3. Fundamental linked data structures such as lists, stacks, trees, and graphs, together with the pointer and reference operations for manipulating them
  4. Algorithmic strategies, including brute force, divide-and-conquer, and branch-and-bound approaches
  5. An introduction to algorithmic analysis, including complexity classes and an appreciation for space-time trade-offs
  6. Fundamental computing algorithms, including a variety of common searching, sorting, and traversal algorithms
Educational aims

This topic aims to equip students with the skills needed to solve programming problems of moderate complexity, such as applications that provide an interface to real-world data. The focus is on object-oriented techniques for representing and manipulating program data using either predefined components or custom-designed components.

Expected learning outcomes
On completion of this topic you will be expected to be able to:

  1. Understand and appropriately use the language and terminology of data abstraction and object-oriented programming
  2. Describe common data structures and choose appropriate data structures for specific application needs
  3. Write code to build and manipulate common linked data structures
  4. Understand and appropriate use the language and terminology of algorithm analysis
  5. Determine the time and space complexity of simple algorithms
  6. Critically evaluate design choices and investigate the consequences of key design decisions on program performance
  7. Implement common searching and sorting algorithms
  8. Read C++ programs and use C++ to solve simple data abstraction problems
  9. Prepare written reports that present complex technical arguments

Key dates and timetable

(1), (2)

Each class is numbered in brackets.
Where more than one class is offered, students normally attend only one.

Classes are held weekly unless otherwise indicated.


If you are enrolled for this topic, but all classes for one of the activities (eg tutorials) are full,
contact your College Office for assistance. Full classes frequently occur near the start of semester.

Students may still enrol in topics with full classes as more places will be made available as needed.

If this padlock appears next to an activity name (eg Lecture), then class registration is closed for this activity.

Class registration normally closes at the end of week 2 of each semester.

Classes in a stream are grouped so that the same students attend all classes in that stream.
Registration in the stream will result in registration in all classes.
  Unless otherwise advised, classes are not held during semester breaks or on public holidays.