Contact
Biography
Radu joined UNM's School of Computer Science in October 2019. Previously he was a post-doctoral researcher in Software Engineering at Technical University Darmstadt, Germany. Radu obtained his Ph.D. in Computer Science in 2013 in the DistriNet Research Group at KU Leuven, Belgium. His PhD research focused on novel modelling language features for supporting software variability, software product lines, feature models and dynamic software updating. Radu obtained his M.Sc. in Computer Science from Victoria University of Wellington, New Zealand in 2009 and his B.Sc. from Hochschule München, Germany in 2006. He has worked as a software engineer in industry for several years.
Expertise Summary
My core research interest is in designing language concepts for programming, specification and modelling that aim at making the software developing process more efficient and the resulting software safe and trustworthy.
Applications of my research include development of advanced software engineering tools such as compilers and program analysers. These are used as part of the software development life cycle, but also in other engineering disciplines where simulation and analysis of complex behaviour is of paramount importance, such as railway operations and synthetic biology.
I am further invested in building international cooperation in higher education, e.g. through research and teaching exchanges and the development of joint degree programs.
Teaching Summary
In the current academic year (2023-2024) I am teaching:
- Software Quality Assurance (3rd year), Fall semester
- Compilers (3rd year), Fall Semester, jointly with Dr. Tomas Maul
- Software Engineering (1st year), Spring semester
In previous academic years I have also taught:
- Software Engineering Management (postgraduate module), 2019-2020
Future Research
About Final Year Projects
The Undergraduate Dissertation (a.k.a. Final Year Project) is a large module worth 40 credits that spans two semesters. The expectation is that students commit roughly 1/3 of their time and energy to the project over one entire academic year, and produce a significant scientific result. In the UK system (Credit Accumulation and Transfer Scheme, CATS), one credit point is awarded for 10 study hours. So, the expectation is that a student spends 200 hours working on their FYP each semester, which translates to around 15 hours per week.
Please consider the above expectations before deciding to embark on an FYP.
Students who enroll in an FYP need to make a conscious commitment to work on the chosen topic for the entire academic year. It is therefore important to choose a topic that you are passionate about, and strongly motivated to find a novel, or significantly better than existing, solution to the problem that you chose to tackle.
Your Project
If you already have a well-thought-out project idea in mind, I would be happy to discuss a potential supervision with you. I am interested in topics in the following areas:
- Software Engineering
- Programming Languages
- Software Modelling and Simulation
- Applications of Machine Learning to above topics
I am looking for topics in these areas that have a research component and novelty factor. The outcome should have scientific value and should be potentially publishable. Conversely, I am not interested to supervise topics that are purely about developing a software prototype (web app, mobile app, etc.) that replicates or repackages already existing ideas.
Final Year Project topics (academic year 2024-2025)
A LEGO piece finding machine The problem: Imagine you have a large pile of unsorted Lego pieces, from a number of different Lego sets, all mixed together. Now you want to build one particular set. You download the building instructions from the Lego website and start building, following these instructions. The main challenge is now to find the required pieces at every step in the building process, by searching through your huge pile of pieces. As you can imagine, this is very tedious and time consuming.
A possible solution: We want to build a machinery that is able to look through a pile of Lego pieces and find required pieces reliably. The required piece is given as an image from the building instructions.
This solution consists of hardware and software. The hardware machinery could be essentially a conveyor belt and a camera. As the belt moves, it carries all the Lego pieces from the pile one by one past the camera, which generates images of these pieces. The images are compared to the piece(s) from the instructions that we are trying to find.
The machine itself could be build out of Lego Technic and controlled by a Raspberry Pi. The Pi runs software that is able to recognise the given Lego piece in the stream of pieces that are presented to the camera on the conveyor belt. This is essentially a machine learning (image recognition) task.
The necessary hardware (Lego Technic pieces, motors, sensors, Raspberry Pi, etc.) will be provided. The best way to interface a Raspberry Pi with Lego Technic motors and sensors nowadays seems to be the Raspberry Pi Build HAT (https://www.raspberrypi.com/products/build-hat/).
A few solutions to similar problems exist and can be found in a Google search. Examples:
https://www.raspberrypi.com/news/raspberry-pi-lego-sorter/ https://jacquesmattheij.com/sorting-two-metric-tons-of-lego/ https://medium.com/@bricksortingmachine/lego-sorting-machine-overview-d390645759f9 https://rebrickable.com/mocs/MOC-90902/pbackx/automated-lego-sorting-machine/
However, none of these seem to do exactly what we want.
Expectations: This project requires a motivated and perseverant student that is willing and able to achieve the best possible result, that actually works in practice. Some familiarity with ML and software development (most likely Python) is expected. Experience with building Lego (e.g. during childhood) and excitement about exploring the world through Lego (be a kid again!) would be a big plus.
Some key ("non-functional") requirements for this project: - The machinery should be as simple and inexpensive as possible, so that many people can replicate (build) it. - Instructions on how to build the machinery should be made available. - The software should be free of charge for anyone to use and improve (e.g. in a public Git repository).
Please also take note of my general expectations as a supervisor of FYP students, outlined above.