Analytical Foundations of Data Science
Overview
- Credit value: 15 credits at Level 7
- Convenor: Dr Felix Reidl
- Assessment: a problem-solving worksheet (30%) and two-hour examination (70%)
Module description
In this module we introduce you to the notation, terminology, concepts and techniques underpinning the discipline of data science. You will learn about the importance of formal notations as the necessary means of ensuring clarity, precision and absence of ambiguity, and be introduced to the concepts and manipulation of basic finite structures as these arise in data science and in particular computer arithmetic, including floating point numbers. We will also introduce you to basic elements of numerical linear algebra and the design and analysis of algorithms for optimisation.
Indicative syllabus
- Arithmetic for computers
- Boolean operations
- Vector and matrix operations
- Matrix factorisations: spectral decomposition and singular-value decomposition
- Eigenvalues and eigen-decomposition
- Numerical solution of linear equations
- Functions and graphs of a function
- Optimisation: numerical solution of linear equations
- Basic probability, including joint and conditional probabilities and Bayes Theorem
- Descriptive statistics
- Hypothesis testing
- Regression
Learning objectives
By the end of this module, you will be able to:
- understand the mathematical and algorithmic foundations of data science
- understand fundamental models of linear algebra, optimisation and statistics
- understand commonly encountered matrix calculations
- understand the advantages and disadvantages of different optimisation techniques
- understand the notions of probability, frequentist and Bayesian statistics
- think abstractly and exhibit abstraction skills
- analyse, evaluate and choose between different implementations and methods of organisation
- develop representations/implementations, including a combination of representations
- analyse the resource requirements of simple algorithms and programs
- decide on an appropriate representation/implementation of a data structure in a given situation
- implement the chosen representation in a program
- adapt or combine known algorithms to construct an algorithmic solution.