Skip to main content

Unit information: Algorithms and Programming in C(++) and R in 2024/25

Please note: Programme and unit information may change as the relevant academic field develops. We may also make changes to the structure of programmes and assessments to improve the student experience.

Unit name Algorithms and Programming in C(++) and R
Unit code MATH10017
Credit points 20
Level of study C/4
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Dr. Fasiolo
Open unit status Not open
Units you must take before you take this one (pre-requisite units)

None

Units you must take alongside this one (co-requisite units)

None

Units you may not take alongside this one

None

School/department School of Mathematics
Faculty Faculty of Science

Unit Information

Why is this unit important?

This units provides that basic software development skills needed by a data scientist. In particular, during this unit the students will learn to recognise and appreciate the computer as a data process device. The students will acquire the programming skills (in C/C++ and R) needed for conducting basic data modelling and processing. The unit lays the foundations of good programming practice, including code debugging, testing and documentation.

An effective data scientist must be aware of the differences between high-level and low-level programming, hence this unit highlights the pros and cons of both programming styles in the context of data science projects and explains how to optimize the code to get the best of both worlds.
The unit introduces students to the importance of data structures and data processing algorithms, which are at the core of data science practice. It also introduces the notion of computational complexity which enables students to analyse and select optimal data structures and algorithms.

How does this unit fit into your programme of study

The software and algorithm development skills acquired by the student during this unit will be essential for the applied component of most of the machine learning and statistical units in later years.

Your learning on this unit

An overview of content

The unit starts with a brief introduction to computing hardware and by discussing the difference between high-level and low-level programming languages. The first part of the course is dedicated to programming in C/C++. The students will learn the basics of programming in these languages, for example how to use control flow statements, create functions and objects, and manage heap memory. While learning how to program in C/C++, the course will introduce more generic programming patterns such as recursion and some of the basic concepts needed to analyse algorithms, such as the notion of computational complexity. The second part of the course will focus on implementing algorithms and data analysis routines in the R statistical software. Here the student will learn how to exploits the potential of a high-level, interpreted programming language in the context of data science applications.

How will students, personally, be different as a result of the unit

By the end of the unit, students will be able to implement basic algorithms and data analysis routine in C/C++ and R. They will be able to transform mathematical/statistical concepts into working code, which is a key skill needed to work in data science.

Learning Outcomes

After completing this unit successfully, students should be able to:

  • program, debug, document and test basic algorithms in C(++) and R, with appropriate coding paradigms.
  • decide between a low level and a high-level programming language when faced with an algorithmic task.
  • code a basic data science project using C/C++ or R, by invoking existing statistics/data processing tools.
  • reason on the essential components and workflow of a computer and the features of C/C++ and R languages.
  • analyse the computational performance, robustness and efficiency of an algorithm and to perform simple optimizations guided by these principles.

How you will learn

The unit will be taught through a combination of:

  • Plenary lectures.
  • Computer labs.
  • Tutorial classes
  • Guided independent activities, in particular formative programming problems.

How you will be assessed

Tasks which help you learn and prepare you for summative tasks (formative):

Guided independent activities, in particular programming tasks of varying complexity and scope.

Tasks which count towards your unit mark (summative):

50% timed examination, 50% coursework.

When assessment does not go to plan:

The Board of Examiners will consider all cases where students have failed or not completed the assessments required for credit. The Board considers each student's outcomes across all the units which contribute to each year's programme of study. If you have self-certificated your absence from an assessment, you will normally be required to complete it the next time it runs (this is usually in the next assessment period).

The Board of Examiners will take into account any exceptional circumstances and operates within the Regulations and Code of Practice for Taught Programmes.

Resources

If this unit has a Resource List, you will normally find a link to it in the Blackboard area for the unit. Sometimes there will be a separate link for each weekly topic.

If you are unable to access a list through Blackboard, you can also find it via the Resource Lists homepage. Search for the list by the unit name or code (e.g. MATH10017).

How much time the unit requires
Each credit equates to 10 hours of total student input. For example a 20 credit unit will take you 200 hours of study to complete. Your total learning time is made up of contact time, directed learning tasks, independent learning and assessment activity.

See the University Workload statement relating to this unit for more information.

Assessment
The Board of Examiners will consider all cases where students have failed or not completed the assessments required for credit. The Board considers each student's outcomes across all the units which contribute to each year's programme of study. For appropriate assessments, if you have self-certificated your absence, you will normally be required to complete it the next time it runs (for assessments at the end of TB1 and TB2 this is usually in the next re-assessment period).
The Board of Examiners will take into account any exceptional circumstances and operates within the Regulations and Code of Practice for Taught Programmes.

Feedback