1 x 2.75-hour lecture weekly
1 x 2-hour 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
1h Admission into MCSFP-Master of Computer Science - City Campus
1i Admission into MITNCSFP-Master of Information Technology (Network and Cybersecurity Systems) - City Campus
1j Admission into MCSAIFP-Master of Computer Science (Artificial Intelligence) - City Campus
2 1 of COMP8702, ENGR8800
Must Satisfy: (((1 or 1a or 1b or 1c or 1d or 1e or 1f or 1g or 1h or 1i or 1j)) 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