Teaching
University of Birmingham
I worked as a teaching assistant across several computer science modules at the University of Birmingham. In Computer-Aided Verification, I designed and taught laboratory sessions and prepared and graded lab-based assessments. In Artificial Intelligence 2, Algorithms for Data Science, and Evolutionary Computation, I supported students through questions and assignment marking. For MSc projects, I helped students use Git, LaTeX, and programming tools and supported communication with supervisors and the university.
If you are a student looking for a project, jump to Student Projects.
Evolutionary Computation
This module covers nature-inspired methods that solve complex problems by modelling biological evolution and collective behaviour. Topics include genetic algorithms, particle swarm optimisation, ant colony optimisation, fitness landscapes, and convergence. I supported questions and marked assignments.
Artificial Intelligence 2
This module explores AI under uncertainty, including interpretable machine learning, probabilistic graphical models, information theory, and computer vision. Students learn methods for inference, search, optimisation, and learning with incomplete or uncertain data. I supported questions and marked assignments.
Computer-Aided Verification
Computer-Aided Verification teaches students to validate system behaviour through model checking. It covers temporal logic, state-transition systems, tools such as SPIN and nuXmv, BDD-based symbolic verification, and abstraction. I designed and taught the laboratory sessions, answered questions, and prepared and graded lab assessments.
Algorithms for Data Science
This module introduces core data-science algorithms, including linear and logistic regression, decision trees, random forests, K-means clustering, and PCA. I supported questions and marked assignments.
MSc Projects
MSc projects let students conduct independent research or software development. I guided students in Git, LaTeX, and programming, and helped them communicate with their supervisors and the university.
Other Teaching Experience
GCSE and A-Level Computing
Ark St Alban’s is a school in Birmingham covering primary through A-Level education. I completed a semester of teaching practice across Year 8, A-Level Year 1, and an after-school coding club.
- In Year 8 Python lessons, I helped manage the classroom and answered questions.
- In A-Level Computing, I supported work on data structures and algorithms and delivered a lesson introducing cryptography.
- In the coding club, I designed Scratch activities in which pupils made animations and small games.
Working with learners who had different foundations and needs taught me to vary the material and help students connect theory with practice.
Teaching Programming to Beginners
During secondary school and university, I provided introductory programming tutorials in Pascal, C++, Java, Python, and Haskell. At university, I also ran a programming club that helped younger international students strengthen their foundations and adapt to English-language teaching.
Beginners often find computer science difficult because it requires a new way of thinking about logic and abstraction. My teaching therefore builds computational thinking gradually, linking data structures and algorithms to concrete problems.
Student Projects
My main interests are multi-objective optimisation, evolutionary computation, and their applications. I am also interested in agent-based models, artificial life, STSE (science, technology, society, and environment), and procedural content generation. Students interested in research or programming projects in these areas are welcome to contact me.
1. Combinatorial optimisation
- Develop randomised algorithms for single- or multi-objective combinatorial problems.
- Compare algorithms on a problem class and study which operators work under which conditions.
- Analyse problem characteristics and visualise algorithm or problem behaviour.
- Candidate problems include Knapsack, NK-landscapes, TSP, VRP/CVRP, JSSP/FJSSP, resource allocation, QAP, bin packing, and the Travelling Thief Problem.
- Continuous problems with especially complex fitness landscapes, such as Gallagher’s 101 Peaks, are also relevant.
2. Multi-criteria decision-making
- Select a representative subset of solutions, especially for many-objective problems.
- Locate one to three suitable solutions through a small number of simple preference questions.
- Study when and how constraints should be introduced to simplify a decision.
3. Artificial life and agent-based modelling
- Build simulations with simple agent rules that produce emergent phenomena such as market crashes or social hierarchies.
- Simulate evolutionary systems, including life-history evolution.
- Model the survival or evolution of a species and examine its relationship with human activity through an artificial-life and STSE lens.