Teaching
I am/was teaching the following modules:
- Tools and Techniques for Business Analytics (Undergraduate Module)
- Python Programming for Problem Solving (Postgraduate Module)
- Optimisation and Heuristics (Postgraduate Module)
- Optimisation (Undergraduate Module)
- Data Structures and Algorithms (Undergraduate Module)
- Software Development (Undergraduate Module)
- 2023/2024: MSCI530 Python Programming for Problem Solving. I have updated the module by (i) increasing in contact time from 25 hours to 30 hours, and (ii) changing the assessment methods. I have proposed these changes because the module is very practical but demanding - students would like more time to practice with the tutors to cover everything. The assessment is demanding on both the students and staff, a group presentation would cover the learning outcomes but streamline the assessment, making it more efficient for both students and staff
- 2022/2023: MSCI530 Python Programming for Problem Solving. I have significantly updated the module by (i) updating the name of the module from "Data Sourcing, Handling and Programming" to "Python Programming for Problem Solving", (ii) updating the learning outcomes, and (iii) changing the assessment methods
- 2021/2022: Teaching MSCI151 Tools and Techniques for Business Analytics (~50 students). I have designed, developed and delivered 40% part of this new module, covering the following topics: Python, Data Structures, Algorithms and Applications. The feedback we have received from this module has been very positive with feedback score of 4.0/5.0
- 2021/2022: MSc Dissertation Projects. I delivered (with Jamie Fairbrother and Luke Rhodes-Leader) a Masterclass in Programming
- 2021/2022: Teaching MSCI530 Data Sourcing, Handling and Programming (~90 students). I have significantly updated the module by (i) removing the IS part of the module, (ii) changing the assessment methods, (iii) updating the bibliography, and (iv) adding another 8 contact hours and updating the syllabus. The feedback I have received from this module has been very positive with feedback score of 4.6/5.0 and quality of teaching 4.9/5.0
- 2020/2021: Teaching MSCI517 Introduction to Python Programming (20 students). The feedback I have received from this module has been extremely positive with feedback score of 5.0/5.0 [update: this module has been laid down and merged with MSCI530]
- 2020/2021: Teaching on large quantitative module [MSCI212 Statistical Methods for Business (~430 students)]. The feedback I have received from this module has been very positive. I got the best student feedback score (4.4/5.0) compared to previous years [update: I am no longer teaching this module]
- 2020/2021: Teaching MSCI530 Data Sourcing, Handling and Programming (~95 students). I have designed, developed and delivered 76% part of this new module after inheriting a very high-level outline from a senior colleague. The feedback we have received from this module has been extremely positive with feedback score of 4.6/5.0
- 2020/2021: Teaching MSCI534 Optimisation and Heuristics (~40 students). I have re-designed and delivered 25% part of this module (Heuristics part)
- In 2020, I led a series of workshop sessions to support staff training, as we prepare for more delivery of Python in our 2020 and 2021 curricula. The first 2-hour session was focusing on a Basics overview and practice, followed by 3-hour advanced session. These sessions were also open to our PhD students
- In 2019, I was invited to run an introductory Python session to 2nd year AcF students for the Career Skills in Accounting and Finance (AcF351b) module. This is a 3-hour session and was funded by the Department of Accounting and Finance
- 2019/2020: Teaching MSCI517 Introduction to Python Programming (~80 students). I have significantly updated the existing Python module by (i) updating the bibliography, (ii) changing the individual coursework to group presentation to ease the workload on the students, and (iii) updating the syllabus to cover a range of the most commonly used techniques such as recursion algorithms and concepts such as OOP and functional programming, and also to show the special features of Python programming language that makes it useful for business analytics and data science. The feedback I have received from this module has been extremely positive with feedback score of 4.9/5.0
- 2018-2022: I was invited to give a 1 hour talk on "Heuristics" to the STOR-i MRes students for the Training for Research and Industry (STOR601) module
International Lecturing
- I was invited to give 4 hours of lectures on Day 3 (17th May 2022), on a three day course entitled "Optimisation Training for Industry". The course was organised by Newton Gateway to Mathematics, and was attended by about 20 people from different sectors including industry (e.g., Amazon, EDF Energy and Schlumberger), public (e.g., DSTL) and academic (e.g., University of Cambridge). The course organisers covered my costs. I have received positive feedback, demonstrating the excellence of my teaching [feedback report]
Project Supervision
I have supervised several undergraduate and postgraduate projects in a variety of topics, all of which have had good outcomes. Some of the projects I have supervised have won the department prize for the most outstanding project of the year, some have led to publications and some are client-based projects.
See the list of projects that I have supervised here
Project Ideas
Title: Hyper/Meta-heuristics for Combinatorial Optimisation Problems
Description: Meta-heuristics, such as genetic algorithms, simulated annealing and tabu search, are now an established tool for solving hard optimisation problems. A more recent concept is that of "hyper-heuristics", which are algorithms that seek to automate the process of selecting and/or generating (meta-)heuristics. Whereas meta-heuristics draw on Operational Research and Artificial Intelligence, hyper-heuristics draw on Machine Learning and Data Science. The main aim of this research project is to develop high quality meta- and/or hyper-heuristics for combinatorial optimisation problems. The problems under consideration can include (but are not limited to) routing, cutting, packing, placement, graph theoretical, timetabling and scheduling problems.
Applicants for this topic should have reasonable mathematical ability, a general interest in optimisation, and strong programming skills. Experience with LaTeX/git is also desirable, but is not essential as training can be given.
If you are a self-funded student, I have a couple of supervision slots available. Please see my personal website to find information about my research interests.