Module Introduction

We will start this module with a short overview of the module aims and objectives, and a summary of what you should expect from us and what we expect from you during the module.

Computational Thinking

The main aim of this module is to learn to offload hard (and/or boring) computational tasks to computers rather than solving them ourselves. You won't master this skill in a single semester but we will get you started on this path by covering fundamental structures common to mathematics and computing and how we translate between mathematical notation and computing languages (Python).

Logic

In this section, on propositional calculus, we will discuss how we analyse statements and how to construct more complex statements using logical operators. This is basis on how computers (and sometimes humans) make decisions.

Collections

In this section, on collections, we will cover the three fundamental structures for storing multiple items (pieces of data): sets, lists, and dictionaries. While these structures may have different names and different implementations across different programming languages, the differences are usually trivial. We will cover the mathematical concepts that motivated these structures, the mathematical notation used and their resulting implementation in Python.

Relations and Functions

In this section we will cover the basics of relations. A relation is essentially a set where every element is an ordered pair, called a key-value pair. From this we will cover a very important type of relation called a function.

Enumeration

In this topic, on enumeration, we cover various techniques to count the number of elements in (large) sets, without going throught the pain of actually listing each element in the set.

Graphs and Networks

Graphs and Networks are fundamental data structures in programming, and more recently are important in studying social networks. In this topic we will cover the fundamental concepts and some of the more important algorithms.

Assessment

Extra topic to collate links to the Assignments (the weekly python practicals), the online quizzes, and end of semester exam resources.