Module Information

Module Identifier
Module Title
Problems and Solutions
Academic Year
Semester 1
Also available in
Other Staff

Course Delivery

Delivery Type Delivery length / details
Lecture 30 x 1 Hour Lectures
Practical 11 x 2 Hour Practicals


Assessment Type Assessment length / details Proportion
Semester Assessment Submission of a portfolio  40%
Semester Assessment Mid-semester test  30%
Semester Exam 2 Hours   Written exam  30%
Supplementary Assessment Equivalent of a Portfolio  Note - Students must resit failed examination and/or resubmission of failed/non-submitted coursework components or ones of equivalent value.  40%
Supplementary Exam 2 Hours   Written Exam  60%

Learning Outcomes

On successful completion of this module students should be able to:

Describe the concept of computability and give an example of a non-computable problem.

Convert integers and rational numbers into binary representations and discuss properties of the different formats.

Manipulate logical expressions, write truth tables, discriminate between valid and invalid reasoning.

Perform matrix operations using 2 dimensional arrays.

Analyse simple algorithms and sorts and compare their efficiency.

Implement simple searches and sorts and compare their efficiency.

Be able to implement simple recursive algorithms.

Describe an important algorithm that has significant real-world impact.


The restructuring makes two significant changes. It changes the programming language from Arduino C to Java (away from CS12020 which is taught in Semester 1 towards CS12320 which is taught in parallel in Semester 2). The aim is to have strengthened students’ capabilities in Java when they enter their second year. The second change is to replace the portfolios with worksheets/quizzes. It puts more emphasis on practical skills (instead of revision) and aims at helping the students getting into programming.

Brief description

This module provides an introduction to some aspects of theoretical computer science. It reviews fundamental mathematical concepts and illustrates how those concepts are implemented in computing contexts. Topics covered include computability, representation of numbers, fundamental Boolean logic, matrix operations, analysis of algorithms, searching and sorting, and recursion.


Each new topic is introduced in one or several lectures. Practicals are used to make topics more accessible and get students explore them in actively.
1. Computability
2. Fundamentals of Computing (representing numbers (integers; floating point); Boolean logic)
3. Matrices and arrays (2D arrays; matrix addition and multiplication)
4. Analysing algorithm complexity (asymptotic notation; worst, best, and average case)
5. Searching in a sorted array (linear, binary)
6. Sorting
7. Recursion (binary search, sorting)
8. Highlights of computer science (e.g., data compression, Page rank)

Module Skills

Skills Type Skills details
Application of Number Different binary representations of numbers.
Improving own Learning and Performance Weekly assessment guides in improvement of own learning and performance.
Information Technology Inherent to the subject matter.
Personal Development and Career planning
Problem solving By means of algorithm design and analysis; also using logic; making use of appropriate representations for data (using numbers as simple example).
Research skills Pointer to literature as part of the reading list; assessed only in the supplementary assessment.
Subject Specific Skills As laid out in the learning outcomes.
Team work


This module is at CQFW Level 4