Course Term: Trinity
Course Overview:

This module provides students with a core of programming skills in the Python programming language. It focusses on the object-oriented programming model, which is very widely used in mathematical programming. This module will place students in a stronger position to undertake research projects with a computational component.

Course Syllabus:

Concepts in object-oriented programming
– Types, classes, and instances.
– Class and instance attributes and methods.
– Inheritance, composition, and encapsulation.

Object-oriented language constructs
– Class definition and initialisation.
– Special methods and overloading.
– Branching based on type, class, and inheritance.
– Single dispatch functions.

Abstract data types and algorithms
– Concept of an abstract data type, and its implementation.
– Stacks and queues; pushing and popping.
– Trees, graphs and traversal; topological sort.
– Computational complexity, big O notation.

Further programming skills
– Exceptions and exception handling.
– Creating tests.
– Debugging using a debugger.
– Good programming style and PEP8.

Some familiarity with basic programming constructs (iteration, conditionals) will be assumed.

Lecturer(s):

Prof. Patrick Farrell

Learning Outcomes:

On successful completion of this module, you will be able to:
– write short programmes to specifications for mathematical problems;
– create and use classes and objects appropriately;
– understand the concepts of encapsulation and abstraction that underpin object-oriented programming;
– understand the concept of an abstract data type and its implementation;
– demonstrate familiarity with common abstract data types and key algorithms using them;
– demonstrate algorithmic reasoning skills and the ability to understand programme execution in an object-oriented context.
– demonstrate a developing capability to debug and test code.