CSSE Honours Research Project Topics for 2011
Z065Y Bachelor Science (Hons)(Computer Science)
Below is a selection of research topics available in the area of Computer Science and Software Engineering. Contact the researcher responsible for each project if you are interested in finding out more about a topic.
| Z065Y Research Projects | |
|---|---|
| Project 1 | Development of a URL sanitising process |
| Project 2 | Development of software to demonstrate buffer overflow vulnerabilities and exploits |
| Project 3 | Optical Character Recognition of book covers |
| Project 4 | Statistical Forecasting of Probabilistic Properties |
| Project 5 | Probabilistic Failure Mode and Effect Analysis for Medical Processes |
| Project 6 | Safe and Reliable Integration and Deployment Architectures for Automotive Software Systems |
| Project 7 | Automated Design and Architecture Recovery by Analyzing Evolution History |
| Project 8 | Refactoring, myth or reality? |
| Project 9 | Runtime Monitoring of Service Compositions |
| Project 10 | On the Use of Properties in the .NET-Framework |
| Project 11 | Controlled Evolution of Object-Oriented Application Frameworks |
| Project 12 | Visualization of Component Interface Specifications with Graphviz |
| Project 13 | Solving dynamic problems |
| Project 14 | Making Particle swarm optimisation more efficient |
| Project 15 | How to get a neural network to forget |
| Project 16 | Scripting Engines and Performance Issues for Game Engines |
| Project 17 | Emotional Group Behavior Models for Game AI |
| Project 18 | Polygon Triangulation in a Games Context |
Project 1. Development of a URL sanitising process
W3C and HTTP specifications do not place limits on the lengths of URLs to be accepted by web servers. At the moment different web servers filter / truncate URLs in different ways, with some web servers accepting up to 65,000 characters in a single GET request. This length of string has a great potential for code injection into web server processes, allowing enormous buffer overflow exploits to be sent. The student would investigate the specifications and behaviour of various web servers in their processing of URLs in the GET and POST methods, and then develop a process which filters (or sanitises) http traffic before delivering the cleaned URL to the actual web server process.
Student should have a strong background in C or C++ coding combined with a good knowledge of network protocols and services.
Contact Dr. James H Hamlyn-Harris
Project 2. Development of software to demonstrate buffer overflow vulnerabilities and exploits
Buffer overflow vulnerabilities exist in most programs written in C and C-derived languages because these languages leave the critical tasks of length checking and type checking to the programmer. Buffer overflows can be demonstrated easily when the overflow overwrites other buffers or variables, but are harder to demonstrate when executable code is overwritten and then executed. The student would investigate the memory layout used in compiled C programs (on a CPU to be negotiated), and then construct a simple server program (e.g. primitive web server) which accepts text input through a network socket and which has a known vulnerability deliberately incorporated into the code. The student would also construct an exploit to demonstrate how the behaviour of the server could be changed by injecting the exploit through the text input.
Student should have a strong background in C or C++ coding combined with a good knowledge of CPU architecture and memory layout.
Contact Dr. James H Hamlyn-Harris
Project 3. Optical Character Recognition of book covers
The aim of this project is to develop a system to perform optical character recognition of the words on book covers.
The need for this arises in the context of a projected system whereby a person might take a photograph of a book cover in a bookshop, using a mobile phone, and a request would be sent automatically to place a reservation for the book at a library. This system thus has to recognise the words on the book cover, use these to perform a match on a library catalogue that lists book titles and authors, and then place the reservation. There are two computing challenges here : recognising the characters, and thus words, on the cover, and then performing the database match. The first of these is the greater challenge.
A prototype system for the book reservations to do this has been built, but available OCR APIs do not succeed in effectively recognising the words on the book cover (a necessary prelude to determining the book title and author).
Typically such APIs have been developed to deal with regular printed text, in volume and using very regular fonts.
This project has to deliver the ability to recognise letters, and then words, written in varying fonts, of varying sizes, and with varying placements.
It will involve a solid Literature Review on OCR in general, experiments with existing systems, and developmental work for the particular context. Ideally the student undertaking this project will have done an intelligent systems unit (but not mandatory).
Contact: Prof. Doug Grant
Project 4. Statistical Forecasting of Probabilistic Properties
Quality attributes such as performance, reliability, availability, safety, and security have a probabilistic nature, and are important for almost all software development projects and specifically for projects related to automotive, avionic and medical systems. However, it is hard constructing a system that fulfils requirements regarding these quality attributes. Consequently, also quality control at system runtime is required. Due to the probabilistic nature of these quality attributes this project aims to use statistical monitoring and forecasting techniques (e.g. time series analysis) as a novel quality control instrument for critical system components. The aim of the honours project is to help implementing a tool and performing some experiments with it.
Contact: Dr. Lars Grunske
Project 5. Probabilistic Failure Mode and Effect Analysis for Medical Processes
Failure mode and effects analysis (FMEA) is a technique to reason about possible system hazards that result from system or system component failures. Probabilistic FMEA (pFMEA) automates FMEA with fault injection experiments and probabilistic model checking. However it is currently only applied to systems and not to processes. The proposed project shall investigate the applicability of pFMEA to processes with formal process descriptions. The aim of this research project is to create a theoretical basis and validate the theory with real world medical processes (e.g. blood transfusion processes, patient registration). The aim of the hounors project is to help implementing a tool and performing some experiments with it.
Contact: Dr. Lars Grunske
Project 6. Safe and Reliable Integration and Deployment Architectures for Automotive Software Systems
In modern automotive systems, the use of sensor networks, ECUs (Electronic Control Units) and software components presents opportunities for building innovative, cost-effective and flexible design solutions. However, the introduction of such software-controlled systems in the safety-critical areas of a car design must be carefully considered. The integration of software components and its implications, i.e. interaction, interoperation and sharing of resources, raise serious safety concerns, which include the possibility of common cause failure and unpredicted dependent failure of critical functions caused by malfunction of noncritical functions. Further difficulties are caused by the increasing scale and complexity of automotive systems, which may contain up to one hundred sensors and ECUs as well as hundreds of software components. The aim of the honours project is to help implementing a tool in this area and performing some experiments with it.
Contact: Dr. Lars Grunske
Project 7. Automated Design and Architecture Recovery by Analyzing Evolution History
Much of the work will be around tool development -- with a thesis component to demonstrate the viability of the tools against a small sample of the 1000 systems that we have in our data set. The intention is to develop a web site that open source projects can submit their code into (or it will pull directly) and then obtain a report that outlines the key architectural changes that their project has undergone based on the evolution analysis. We then get the developers to correct (or) accept our recommendations. Based on the feedback, we will adjust the algorithms (human learning -- not machine learning).
Underlying technology will be around map-reduce algorithms running on top of the Hadoop framework. J2EE based web application, with a schema agnostic database management system.
Contact: Rajesh Vasa
Project 8. Refactoring, myth or reality?
Many iterative software development methodologies, such as eXtreme Programming, state that refactoring is one of the key activities to be undertaken in order to keep the code-base of a project well-structured and consistent. In such a context, poorly structured code may become a significant obstacle in adding new or in enhancing existing functionality. However, there is some anecdotal evidence that in many software projects, the underlying code-base is not necessarily refactored, often due to time constraints or the misconception that refactoring does not add any apparent value.
In order to get further insights into this problem area, the goal of this project is to investigate the usage of various kinds of refactoring techniques in the context of open-source, object-oriented software systems. It is expected that this project will not only give insights into when and how refactoring is used in software projects, but also answer the question whether refactoring should play a more prominent role in educating software engineers.
Interested students should have a good (if not very good) knowledge of object-oriented concepts, good programming skills (in at least one object-oriented language), and should be able to create some basic statistics.
Contact: Dr. Jean-Guy Schneider
Project 9. Runtime Monitoring of Service Compositions
ROADdesigner is an eclipse based modelling plug-in that provides the user easy to use drag-n-drop features to design and deploy service composites. We would like to enhance this tool by adding a monitoring entity that monitors the interaction between services and passes on this monitoring information to other interested resources for appropriate actions.
The project will investigate methodologies to extract non-functional attributes of a service e.g. price, legalities, response time etc. from a repository and build a knowledge-base of expected service offerings. These attributes will then be compared by the monitor with the actual service performance at runtime to see if the service is delivering what it promised.
The successful candidate for this project will gain exposure to Eclipse plug-in development & modelling and exposure to Web services programming. Understanding of Java language is required.
Contact: Dr. Muhammad Adeel Talib or Dr. Alan Colman
Project 10. On the Use of Properties in the .NET-Framework
Properties, colloquially called getters and setters, have become mainstream in the .NET framework. In addition and unlike Java, where we only have naming conventions, properties in the .NET framework have become real language features. But how do developers actually use properties in .NET applications? In order to find an answer to this question, the goal of this honours project is explore suitable property software metrics and develop a data mining tool set for the analysis of .NET applications in C#. The results of this honours project will provide us with the means to detect and monitor developer decisions and allow us to infer how developers use getters and setters in real-world applications.
Contact: Dr. Markus Lumpe
Project 11. Controlled Evolution of Object-Oriented Application Frameworks
Present-day object-oriented languages and tools have matured to a level that allows us to build powerful and exiting applications. However, once such applications have been developed, it is very hard to incorporate new functionality in order to meet new requirements. One reason for this dilemma is a lack of suitable support for modular class extension that goes beyond standard object-oriented inheritance. In order to address this issue, the goal of this honours project is to develop a new technique for a non-invasive refinement of existing object-oriented class hierarchies and show the feasibility of the approach by developing a prototype in Java, C#, or C++.
Contact: Dr. Markus Lumpe
Project 12. Visualization of Component Interface Specifications with Graphviz
In component-based software development, component interface specifications are used to capture and verify the interactive behaviour of component-based systems. As such, component interface specifications provide an invaluable tool for component software architects to design component-based applications. However, the lack of a suitable graphical representation makes is hard for component software architects to discuss design decisions with clients. For this reason, the aim of this honours project is to develop a graphical representation for component interface specifications using Graphviz. Graphviz is an open-source graph visualization software for representing automatically structural information as diagrams of graphs and networks, a technique that has many important applications in software engineering, database, and web design. A proper graphical visualization of component interface specifications will enable clients to fully appreciate the work of the component software architects and make their job easier.
Contact: Dr. Markus Lumpe
Project 13. Solving dynamic problems
Dynamic problems are ones that change with time, in particular change as we are trying to solve them. This project will investigate the effect on solving a TSP problem if the number of cities to be visited changes with time. In particular, how fast can the solution be adapted to the new conditions and what effects are observed as the rate of change approaches the limiting rate that can be accommodated.
Contact: Prof. Tim Hendtlass
Project 14. Making Particle swarm optimisation more efficient
Particle swarm optimisation is a new and very fast way of solving problems for which the exhaustive search of all possible combinations of input values is so large as to be impractical. Although fast, considerable re-exploration of known solutions does occur and this project will consider how to minimise this so as to improve the overall efficiency of the algorithm more.
Contact: Prof. Tim Hendtlass
Project 15. How to get a neural network to forget
A neural network can learn complex relationships from a series of examples. How, however, can they forget? This project will be to investigate how a network can be made to forget obsolete information without destroying the useful information as well. Such forgetting is essential if networks are not to become overwhelmed by the sheer magnitude of their "life experience".
Contact: Prof. Tim Hendtlass
Project 16. Scripting Engines and Performance Issues for Game Engines
Scripting engines such as Lua and Python are powerful extension options for game engine architecture, and in particular offering flexible methods for enabling artificial intelligence (AI). This project will investigate engineering approaches to integrating scripting languages within a game engine, and develop guidelines in relation to performance issues.
Candidates should have strong programming background and a keen interest in scripting languages, game AI, game engine development and architecture.
Contact: Clinton Woodward
Project 17. Emotional Group Behavior Models for Game AI
The entertainment value of many computer games is related to the perceived intelligence of AI characters within game environments. Two recent techniques applied to game character AI include emotional behavior models and group behaviors (as either emergent or coordinated properties). This project will investigate both the engineering and algorithmic issues of an emotional group behavior model for game character AI, create simulations of the technique, and consider its suitability for a game AI engine.
Candidates should have strong programming background and a keen interest in game AI, game engine development and architecture.
Contact: Clinton Woodward
Project 18. Polygon Triangulation in a Games Context
Polygon triangulation algorithms act as a preprocessing step for most non-trivial operations on simple polygons. These algorithms subdivide a polygon into triangles without adding any new vertices; a computationally expensive operation. The use of triangulation algorithms in a game engine context requires an understanding of the performance implications of such algorithms. This project will investigate the implementation of a range of polygon triangulation algorithms, and analyse their performance and suitability as a feature of a game engine. Candidates should have an interest in game engine development, low level programming techniques, and be comfortable with applied mathematics and a range of programming languages and paradigms.
Contact: Andrew Cain
