Doing an MSc, final year, or mini project with Achim Jung
Below I describe some general areas as well as some concrete project
Computing and Music
There are many ways in which computers can complement and support the creation of musical pieces, as well as provide features during playback. The challenge is to define a project that is not already covered by a commercial system.
Requirements: You must like music.
Computational modelling of physical laws and processes
The idea is to implement the (differential) equations that underlie physical laws as an interactive app that can run on a smart phone or a tablet. These apps can then be used in teaching to illustrate to students of physical science.
Requirements: These projects are only suitable for students with a strong background in Mathematics or Physics.
Curriculum development for Teaching Computer Science in schools
The teaching of computing in schools has changed and ICT has been replaced by Computer Science. However, there is not a lot of experience in how to teach the subject in a creative way. Projects in this area are about working out one particular topic of Computer Science at a level appropriate for school children. This can be geared towards small children or towards A-level students. Such a project can not be combined with enrolment in the final year module "Teaching Computer Science in Schools", but I will find a way for you to try out your project ideas in a real school. Note that most of the curriculum development will have to be done in the Autumn Semester as there is not enough time in the Spring to develop, implement and evaluate a course.
Requirements: You need to be enthusiastic about teaching young people.
Some algorithms contain very clever ideas
which are hard to explain on the basis of program code alone. In these
cases a visualisation of how a data structure evolves over time can be
helpful. Sometimes the core of the algorithm comes from a completely
different area such as Geometry, Physics, or Combinatorics. With a
visualisation we can then try to illustrate the connection between the
program and the non-computing field.
If you are interested in this then I can easily come up with a
concrete Project idea for you and you can also suggest your own.
Requirements: Good programming skills are important but even
more so a feeling for pedagogical concerns. Aesthetics is as important
as technical correctness.
Generally, you should only attempt a project in these two areas if you
are as enthusiastic as I am about teaching and education in general.
(Perhaps it is worth pointing out that, from past experience, these
projects are not "soft options".)
Programming support tools
What I have in mind here are code
generators, analysers, or optimisers. You should be a very able
programmer if you think you can create a tool to support other
I am happy to consider supervising virtually any project
that you are enthusiastic about. The list of past projects below gives
you an idea of the range of topics that I have supervised in the past.
Regarding these, please note that in many cases I would be happy to
supervise a project with a similar specification again, because often
it was not possible to implement all aspects of the original idea in
the time available.
One important note: I will supervise a non-programming project only if you demonstrate mastery of practical programming through your workshop performance in Years 1 and 2. A minimum mark of 60% in the relevant exams is required.
If you are considering choosing me as your supervisor, then please
download the following form (undergraduate, MSc students), fill in the questions, and bring it along to
the meeting with me.
I should also warn you that I take my supervision duties very
seriously, and will require weekly (email) reports from all project
students. If you tend to leave things to the last minute then you will
probably not enjoy working with me.
A selection of past projects
(Most recent listed first)
Exploring the confidence of Saudi female students in their programming abilities: a mixed methods study
Web Application for Programming Challenges with real-time collaboration
Building an Event Suggesting Android Application
Teaching Networks at Key Stage 3
Simulation of an Ideal Gas
footExchange: Building a Sports Based Stock Exchange
Achieving Transparency in Health Care Services Through Blockchain
Exploration of a Taxishare Algorithm
Course feedback application for university students
A tool for exploring musical scales
A user-interaction addition to Etsy
A stock management system
Machine learning applied to spam filtering
An exploration of minimal enclosing circles in the plane
An automated percussion assistant
A theoretical exploration of the efficiency of Learning Management Systems students
3D Python Programmable Robot Simulation for Teaching (Robot) Programming
The Gender Conundrum in Computer Science: A Cross-Country Evaluation
Foodie: A tool for hobby cooks
A route planner for tourists to London
Research on Neural Networks for Image Recognition
A real-time collaborative educational tool with gamification elements to provide an improved approach to learning code
Playing Tetris using Neural Networks and Deep Q-Learning
Writer's Block - A Novel Approach to Melody Generation Using Adaptive
First-Order Markov Chains
An interactive bilingual app for teaching the structure, synthesis and properties of silver nanoparticles
Using GreenFoot to teach networking at Key Stage 2
Maths aid: A trigonometry learning app
Teaching functional programming at Key Stage 4
Teaching application for building of structures
Driver support application
Mobile phone game
System for monitoring cardiovascular activity
Teaching elementary algorithms
Game-fied collaborative programming
Phase transition app
An investigation into Lehman's factorisation algorithm
The coalgebraic interpretation of Brzozowski's minimisation algorithm
App Store for university students
Android app to visualise Bragg's Law in X-ray diffraction
Android app to visualise stress and strain in elastic materials
3D crystal structure app
Molecular movement app
Comparative Study of Online Scheduling Algorithms with Multi-Skilled Agenst in Unpredictable and Probabilistic Environments
A Development Environment for Creating Algorithm Visualisations
A Solar System Simulator using CUDA
Multi-Platform Manga Subscription and Recommendation System
A Collaborative Learning Platform with Early-Warning Detection
MetaC: Enriching the C Programming Language with DSL Extensions
Primality testing and integer factorisation
Academic coursework submission service
Geographic Learning System
Mountain enthusiasts calculation helper
The Curry-Howard isomorphism
An interactive demonstration of Dijkstra's algorithm
Account planning tool
A teaching language and visualisation tool
Japanese Cognitive Mapping Tool
(RPG) Game Maker
Web Voice - voice enabled web search
Creative Digital Music Effects
Sudoku Puzzle Solver
Gaussian Elimination Tutor
Self Study Tool - Growth of Functions
Creating a Java implementation of the board game Cluedo
The Earth and Beyond - Solar Simulation for Key Stage 3
Hospital Ward Management System
Network MP3 Player Application
Visualisation of Plagiarism
Crowd Routing Algorithm
First Person Shooting Game
Adventure Game Design Tool
The Unsigned Music Genome Project
Context Free Grammar Teaching Tool
I do not generally expect students in their third year to be able to do original research in my area. Too much mathematical background is needed which the course does not provide. However, for a student in the joint Math/Computer Science programme, a research oriented project is feasible.
These are mathematical structures which are used to describe the behaviour of programs. Since programs can be recursive or iterative, extra work has to be done to model faithfully the potential for non-termination. Ideas from order theory, topology, and category theory are used in the study of domains.
This is the process of translating from a programming language into a mathematical model. Many questions arise regarding the accuracy of the translation itself as well as the kind of knowledge one can gain about the language.
Lambda calculus is a very pure notation for functional programming. Abstracting away from details of input/output, program variables etc, one can study computational phenomena in a very clean setting. Surprisingly, the calculus is extremely expressive and hence often serves as a metalanguage for describing other programming languages.
Cryptography is the science of concealing messages or proving their authenticity. The subject has become respectable with the advent of public key cryptosystems. In their design a lot of number theory and algebra is being used. That makes Cryptography interesting from a mathematical perspective. From the computer science side there are fascinating problems in setting up secure protocols which use cryptographic techniques.
My main interest in databases concerns the treatment of partial information. This touches upon logic and, again, domain theory, but is a very practical issue in database design as well.
Last modified: 15 March 2019