In this module, you will learn basics of the theories behind modern machine learning techniques. During ten three-hour labs, you be asked to implement several key machine learning techniques and apply them to real-world problem, such as predicting house prices, recognition of handwriting, etc. This module can serve as a basis for preparing for a career in modern machine learning – a rapidly growing field of academic and industrial applications.

The module will cover:

·       Basics of probability theory and statistics used in machine learning.
·       Linear regression
·       Logistic regression
·       Naïve Bayes models
·       Support vector machines
·       Deep neural networks
·       Hopfield model

Institution: Dundee
Hours Equivalent Credit: 30

Continuous Assessment

Students are expected to complete assignments and will receive feedback.  Students who engage sufficiently with the coursework will receive a Pass.  Students who do not engage sufficiently with the coursework will not get credit.      

Beyond Pass / No credit, there will be no marks for the course.  

Field programmable gate arrays (FPGAs) are configurable digital electronic devices capable of providing high-speed, low-latency and controlled latency digital interfaces to experiments. For example, FPGAs have been used in fluorescence lifetime measurements, various imaging methods, detection of photon correlations, gravitational wave detectors, and gravimeters. This course will equip students with the basic knowledge of how to interface physics experiments to digital electronics, and how to program FPGAs. An introduction to hardware description languages (HDLs) is given on the example of Verilog. HDLs are fundamentally different from computer programming languages and understanding them is crucial for the use of FPGAs. After completion, participants will be able to integrate FPGAs into their own experiments, create simple FPGA configurations, understand common problems and strategies to overcome them, and be aware of resources to help extend these skills


The course introduces the core concepts of C++, assuming no prior knowledge, and is provided via four lectures and four laboratory tutorial sessions. Some experience with the Linux file system and using a text editor is preferential. 


Both the lectures and labs will be given on Zoom, with an hour long lecture in the morning, followed by a lunch break and then a 2 hour lab session. Breakout rooms will be provided in the labs to aid in answering any questions. During the labs there will also be support from additional tutors to provide extra help with coding of the problem sets.

The course schedule for 2023 is below:


  • 15/11
  • 22/11
  • 29/11
  • 06/12



Hours Equivalent Credit: 12
  • 6 & 7 December 2023

Welcome to SUPA Software Carpentry! This course is designed to help you develop your programming ability beyond the point where a normal programming course ends, and become more confident in managing the code you write.
We cover a variety of good practices for managing, documenting, and testing code, and the course aims to help you to become more comfortable using the many tools available to aid with research software development.

The course is suitable for anyone with a modest background with programming, and we try not to focus on a single programming language. However, in one section we do use Python as an example ecosystem (because we needed to choose one). If you're not familiar with Python don't worry; what we cover here will be transferable to C, C++, R, Rust, Javascript, and even LOLCODE.