Page 1 of 1

Module Code - Title:


Year Last Offered:


Hours Per Week:













Grading Type:


Prerequisite Modules:

Rationale and Purpose of the Module:

To prepare students to take a range of Artificial Intelligence related modules by introducing the associated scientific computing, programming language and host platforms.


1. Scripting Languages and Environments for Scientific Computing: Modern scripting languages (e.g. Python, Julia) and environments. 2. Numeric: Numerics support in typical scientific scripting (e.g., Numpy/Scipy). Matrices and linear algebra 3. Graphics and Scientific Visualization: Using scripting languages to build scientific visualizations (scalar, vector fields). 4. Acceleration: Accelerating scientific codes. Threading and parallelism. 5. Random Numbers and Probability: Random number generation: linear congruential generators. Distributions: uniform, normal, etc. Bayesian methods: Gaussian naïve Bayes classification. 7. Classifiers and Optimization: Simple classifiers. K-means. Linear classifiers: Perceptron. Least squares and gradient descent. Other cost functions: cross-entropy. Application: training classifiers. Modern optimization for neural networks: Nesterov momentum, ADAM optimizer. 8. Scientific Computing in the Cloud: Docker images. Cloud services. Running scientific code in the cloud.

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

1. Given a target programming language, the student will become proficient in the syntax necessary to implement standard programming constructs. 2. Given a set of basic scientific problems, the student will construct simple programmes to investigate the problems. 3. Given a scientific problem, the student will identify and evaluate the outputs through appropriate visualisation. 4. Given a scientific problem, the student will discriminate and select basic approaches to scientific computing, including the use of cloud services. 5. Given an appropriate data set, the student will write a program to process the data e.g. find the principal components. 6. Given an image, the student will write a program to implement an operation on the image e.g. dithering to reduce its bit depth. 7. Given a classifier, the student will write a program to implement and analyse it e.g. plot its decision boundary; display an animation of its trajectory of weights over the error surface.

Affective (Attitudes and Values)

1. Given datasets, the student will question whether the data is representative and attempt to address any biases. 2. Given problems to investigate, the student will identify and discuss any potential ethical considerations. 3. On completion of an investigation using appropriate outputs including visualisation, the student will be able to defend the approach adopted.

Psychomotor (Physical Skills)


How the Module will be Taught and what will be the Learning Experiences of the Students:

The module will be delivered using a blended learning approach using on-line lectures, labs and tutorials.

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

Langtangen (2016) A Primer on Scientific Programming with Python , Springer

Other Relevant Texts:

Beazley (2016) Python Essential Reference, 4th ed. , O'Reilly
Flach (2012) Machine Learning , Cambridge
Goodfellow & Bengio (2014) Deep Learning , MIT Press
Marsland (2014) Machine Learning: An Algorithmic Perspective , CRC Press
Foster & Gannon (2017) Cloud Computing for Science and Engineering , MIT Press

Programme(s) in which this Module is Offered:

Semester - Year to be First Offered:

Module Leader: