Teaching
I taught a variety of modules which involved classes at both undergraduate and postgraduate levels:
- Python Programming for Problem Solving (Postgraduate Module, LU)
- Optimisation and Heuristics (Postgraduate Module, LU)
- Optimisation (Undergraduate Module, LU)
- Tools and Techniques for Business Analytics (Undergraduate Module, LU)
- AI and Expert Systems (Undergraduate Module, UofK)
- Data Structures and Algorithms (Undergraduate Module, UofK)
- Database Systems (Undergraduate Module, UofK)
- Software Development (Undergraduate Module, UofK)
- 2024/2025: MSCI530 Python Programming for Problem Solving. Taught the final Python class at Lancaster University. It was a bittersweet moment as I wrapped up my time with such a wonderful group of students. The experience has been incredibly fulfilling, and I am deeply grateful for the warm, thoughtful gift and positive feedback I received. Students expressed appreciation for the clarity and engagement in my teaching, which made this experience all the more rewarding. As I look ahead to new opportunities with the Alliance Manchester Business School, I will always treasure my time at Lancaster University and the connections I made along the way [pic1] [pic2]
- 2023/2024: MSCI534 Optimisation and Heuristics. Coordinated teaching of this module on short notice due to the module convenor's illness. Collaborated with three colleagues to deliver the module content, with each colleague covering a specific topic. Personally instructed the heuristics part, which comprised 30% of the module. Feedback from students has been highly positive, achieving a score of 4.1 out of 5.0. Notably, all four qualitative comments highlighted the clarity and informativeness of my teaching contribution
- 2023/2024: MSCI530 Python Programming for Problem Solving. I have made updates to the module by (i) increasing the contact time from 25 hours to 30 hours and (ii) modifying the assessment methods. These changes were proposed because the module is highly practical yet demanding. Students expressed the need for more time to engage with tutors for comprehensive coverage. 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. Feedback received for this module has been exceptionally positive, with a score of 4.5/5.0 - the highest among all postgraduate modules offered by our department in the Michaelmas term. Additionally, the score was the highest in the MSc BA course
- 2022/2023: Delighted to receive a special mention from one of our MSc Business Analytics graduates [news 1] [news 2]
- 2022/2023: MSCI530 Python Programming for Problem Solving (~90 students). 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-2023/2024: MSc Dissertation Projects. I delivered (with Jamie Fairbrother and Luke Rhodes-Leader) a 3-hour 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. I have also designed an innovative coursework project inspired by real-world applications, ensuring that my teaching methods are both effective and relevant to current industry practices​. 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 (Amazon, EDF Energy, Schlumberger, Smith Institute, Satellite Applications Catapult, BAE Systems Digital Intelligence, BP, Aviva, Anglo American, Ricardo PLC), public (DEFRA, DSTL) and academic (University of Cambridge). The course organisers covered my costs. I have received positive feedback, demonstrating the excellence of my teaching [feedback report]
Project Supervision
Title: Hyper/Meta-heuristics for Combinatorial Optimisation Problems
Description:
The project has two main parts. The first part is to model an optimisation problem. The difficulty level can be adjusted depending on your background. The problem under consideration can include (but are not limited to) routing, cutting, packing, placement, graph theoretical, timetabling and scheduling problems.
The second part would be to investigate and experiment with ways in which the problem could be solved. 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. A thorough experimentation over a set of problem instances and analysis of results are expected.
Applicants for this topic should have reasonable mathematical ability, a general interest in optimisation, and strong programming skills. Therefore, the project would suit students who have felt comfortable with the more quantitative/programming courses of our undergraduate/MSc programmes, and would require developing meta- and/or hyper-heuristics for combinatorial optimisation problems. You will spend some time searching, reading and summarising an up-to-date literature on the topic. The projects would require some computer programming, which can be done in the language of your choice but preferably a language appropriate for scientific computing such as Python. Experience with LaTeX/git is also desirable, but is not essential as training can be given.
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. You can view previous projects that I have offered in the past for inspiration here.
For PhD applicants, if you are a self-funded student, I have a couple of supervision slots available. Please refer to my personal website to find information about my research interests.