ACSE 5: Advanced Programming

Module Lead: Dr Adriana Paluszny

Staff: Dr Adriana Paluszny & Dr Steven Dargaville

Course Description

This module starts with a primer C++ programming, as well as how to develop and build C++ programs under both Windows and Linux operating systems. Students will be taught functions and input/output handling, as well as memory handling concepts such as pointers, memory allocation and advanced data structures such as linked lists and trees.

Students will be taught practical skills for analysing software for potential bugs as well as quickly locating bugs when they arise using debuggers. Additionally, students will learn how to use profiling techniques to identify performance hotspots in software and gain a practical understanding of the factors that limit the performance of software.

This will be followed by an introduction to object-oriented programming with C++ including how to define and use classes, inheritance, overloaded functions and polymorphism.

These will all be taught in the context of scientific programming, with relevant examples and exercise being used to illustrate the programming concepts. Regular programming assignments will bring together all the skills that learn throughout the course.

Reading List

  • Stanley Lippman, Josée Lajoie, and Barbara E. Moo: C++ Primer (updated for C++11) Fifth edition (2012). Addison Wesley. 976 pages.

  • Bjarne Stroustrup: A Tour of C++. Second Edition (2018). Addison-Wesley. 240 pages.

  • Bjarne Stroustrup: Programming – Principles and Practice Using C++. Second Edition (2014). Addison-Wesley. 1312 pages.