Computational Theory

These are the assessment instructions for Computational Theory in Summer 2023/24. They cover 100% of the marks for the module. The deadline for all elements is Tuesday, 30 April 2024.

Purpose

The purpose of the assessment is to ensure students can demonstrate the following.

  1. Identify difficult computational problems in everyday computing.
  2. Define the common models of computation.
  3. Design computer programs using a variety of computational paradigms.
  4. Analyse the complexity of an algorithm.

Topic

In this assessment, you will analyse and solve the numbers round of the TV programme Countdown. In the game, contestants are given six random numbers from the list containing two copies of the integers from 1 to 10 inclusive and one copy of each of the numbers 25, 50, 75, and 100. A random integer is generated between 101 and 999 inclusive. The contestants are given 30 seconds to reach the target number using as many of the six numbers as they need using addition, subtraction, multiplication, and division.

Each of the six numbers can be used only once. Note that two of the same number might be in the list of six, in which case each copy can be used once. The operations can be used any number of times. However, division is only permitted where it results in a whole number - no fractions are allowed at any stage of the calculation. Likewise, subtraction can only be used when it results in a positive number.

By solve the round, we mean the following. Write a Python function called solve_numbers that takes any such list of six numbers and a target number, and returns at least one solution if it exists. In some cases a solution might not exist, in which case the function should return None. Alternatively, if you are feeling confident, your function can return a calculation that is within 5 either side of the target number - the closer, the better.

What to Submit

Submit all work in the main branch of a single GitHub repository. Use the form on the module page to submit your repository URL. Commits in GitHub on or before the deadline will be considered. You should set up your repository and submit the URL immediately.

The repository should contain a single notebook named countdown.ipynb. This notebook should contain all your work. Keep your repository tidy and appropriately structured.

Your submission will be assessed across three over-lapping elements. These are listed below with bullet points describing the minimum requirements for each.

The theory element (40%)

The implementation element (40%)

The presentation element (20%)

Marking Scheme

Each of the three elements will be considered using the four categories below. Each category will be given equal weight. To receive a good mark in a category, your submission needs to provide evidence of meeting each of the criteria listed under it. In line with ATU policy, the examiners’ overall impression of the submission may affect marks in each category.

Towards the end of the semester you may be asked to demonstrate the work to date in your repository during your usual lab time. You will be notified in lectures as to when this will happen and, if called, attendance is mandatory.

Research

Development

Documentation

Consistency

Policies and Advice

Once completed, your repository should be readily presentable in job interviews. A technically competent person should be able to understand your work and how to interact with it, without you being there.

Please remember that you are bound by ATU policies and regulations. You should familiarize yourself with these on the Student Hub. Pay particular attention to the Policy on Plagiarism and the Student Code of Conduct. If you have any doubts about what is allowed, email me.

Students sometimes struggle with the freedom given in an open-style assessment. You must decide where and how to start, what is relevant content for your submission, how much is enough, and how to make the submission your own. This is by design - we assume you have a reasonable knowledge of programming and an ability to source your own information. Companies tell us they want graduates who can (within reason) take initiative, work independently, source information, and make design decisions without needing to ask for help. You need a plan, you cannot just start coding straight away.