Masters Level Projects

Listing of Current Projects Available

  • ********************************************

    Title:

    Intelligent Game Agent Opponent Android App

    Supervisor(s):
    Languages:
    Java
    References:
    Description:

    Artificial Intelligence (AI) techniques and their applicability in the development of the multi- billion dollar video game industry have been with us for many years. The development of a new research field, Monte Carlo Tree Search (MCTS), promises to have a profound positive impact on AI for games. Consider for instance AlphaGo developed by Google. In this project, we will investigate how to create intelligent game agent opponents by using MCTS and develop an Android App.

  • ********************************************

    Title:

    Farfel-ize the f2j Fortran-to-Java compiler

    Supervisor(s):
    Barak A. Pearlmutter
    Languages:
    References:
    Description:

    The f2j compiler, written in Java, accepts Fortran 77 and outputs Java. The goal of this project is to augment the f2j compiler to support a set of extensions to Fortran 77 called Forward And Reverse Extension Language or FARFEL. These are block constructs which specify automatic differentiation, and are described in arXiv:1203.1448, with an alternative implementation strategy described in arxiv:1203.1450 for which code is available. There are two constructs, ADF and ADR, specifying forward and reverse mode automatic differentiation respectively, along with permitting recursion and array allocation on subprogram entry. If time permitted only ADF to be added, this project would still be considered a success.

    This involves getting down into the guts of a compiler. Prior knowledge of Fortran 77 or Automatic Differentiation are not necessary, but learning Fortran 77 will be a side effect of doing this project.

  • ********************************************

    Title:

    Data format translation and Graph Matching Evaluation

    Supervisor(s):
    Diarmuid O'Donoghue and Rosemary Monahan
    Languages:
    Java?
    References:
    Description:

    A corpus of over two million graphs has been created, derived from a large number of open source projects written in the C# language.  You will write a program that will automatically translate these graphs into a representation enabling them to be stored in a Neo4j (https://neo4j.com/) graph database.  You will test and evaluate your translation system.  Subsequently, you will use the existing " Dr. Inventor" graph matching system to identify those methods that are most similar (in graph structure) to a select number of randomly chosen target methods.

    Code Graphs were genereated as part of the ARIS project (www.cs.nuim.ie/~dod/aris.html), and the graph matching process already available.Diarmuid O'Donoghue and Rosemary Monahan

  • ********************************************

    Title:

    Data format translation and Graph Matching Evaluation

    Supervisor(s):
    Diarmuid O'Donoghue and Rosemary Monahan
    Languages:
    Open to discussion, maybe Java?
    References:
    Description:

    A corpus of over two million graphs has been created, derived from a large number of open source projects written in the C# language.  You will write a program that will automatically translate these graphs into a representation enabling them to be stored in a Neo4j (https://neo4j.com/) graph database.  You will test and evaluate your translation system.  Subsequently, you will use the existing " Dr. Inventor" graph matching system to identify those methods that are most similar (in graph structure) to a select number of randomly chosen target methods.

    Code Graphs were genereated as part of the ARIS project (www.cs.nuim.ie/~dod/aris.html), and the graph matching process already available.

  • ********************************************

    Title:

    Performing Binary Classification on Imbalanced Data Sets Using Multi-Objective Genetic Programming

    Supervisor(s):
    Edgar Galvan
    Languages:
    Java
    References:
    1. http://www.cs.nuim.ie/~egalvan/papers/mo_gp_semantics_v10.pdf
    Description:

    Classification is probably the most well-studied area in Data Mining. Multiple machine learning (ML) approaches have been used to carry out classification. However, many of these ML approaches perform poorly on imbalanced data sets (e.g., where one class is over represented compared to another class).  One natural form to tackle this problem is to use a Multi-Objective Optimisation (MOO) approach. The goal of this project is to investigate how we can use a MOO Genetic Programming approach to correctly classify imbalanced data sets. To this end, we will use benchmark problems from the well-known ML repository and we will compare the results yield by the MOOGP with well-defined ML algorithms.

  • ********************************************

    Title:

    Playing Games with Monte Carlo Tree Search

    Supervisor(s):
    Edgar Galvan
    Languages:
    Java, Python or C++
    References:
    Description:

     

    Artificial Intelligence (AI) techniques and their applicability in the development of the multi- billion dollar video game industry have been with us for many years. The development of a new research field, Monte Carlo Tree Search (MCTS), promises to have a profound positive impact on AI for games. MCTS can be applied to any domain where simulation and statistical modelling can be used to predict outcomes.  

     

    The positive impact of using MCTS in games can be understood by considering its impressive results achieved on the game of Go, where MCTS has been able to beat professional players, something unthinkable a few years ago, given the intractability of its decision space along with the need of problem-specific knowledge. MCTS has also been used in non-specialised scenarios where it is impossible to use problem-specific knowledge, such as in General Game Playing, where world champion MCTS players have been created. 

     

    Undoubtedly, MCTS has achieved extraordinary results. However, there has been to date no unified effort to make it more optimal/robust (e.g., use less samplings while still maintaining a good performance).  In this project we will compare different variants of MCTS and see how we can improve the algorithm. To this end, we will compare the algorithms using different games

  • ********************************************

    Title:

    Feature Location for python programs

    Supervisor(s):
    James Power
    Languages:
    References:
    Description:

    Recent research has shown that text retrieval techniques such as LDA can be used for feature location in source code.  The core idea is to mine github repositories, extract a large corpus of source code, and then compare this with the github logs. 

    This project would seek to repeat these experiments to see if similar methods can be used for analysing Python code.

    If you are interested, read the following paper that applies these techniques to Java programs:

     

    • "Exploring the Use of Deep Learning for Feature Location"
      Christopher S. Corley,  Kostadin Damevski and Nicholas A. Kraft
      2015 IEEE International Conference on Software Maintenance and Evolution,
      DOI: 10.1109/ICSM.2015.7332513

    Ideally, you should have some familiarity with front-end compiler tools like scanners and parsers.



     

  • ********************************************

    Title:

    Aircraft landing gear (case study implementation)

    Supervisor(s):
    Rosemary Monahan
    Languages:
    References:
    Description:

    A case study emphasizing the control of an airtcrafts langing gear was issued as a challenge at the conference ABZ 2014.

    As a result this system was modelled in formal languages and documented in publications at the ABZ 2014 conference. This project requires the implementation and verification of this system, verifying properities of the system as presented in the models. Suitable tools for verifying solutions include Why3 with Java/C++/ML, for SPARK with Ada, Frame-C with C, OpenJML with JML, or Code Contracts/Spec#/Dafny with C#/.Net. Students will select one of these tools within which to implement and verify their code.

    For more details of the original specification see: https://www3.hhu.de/stups/prob/images/d/df/Landing_system.pdf


     

     

  • ********************************************

    Title:

    Implementing a Hemodialysis machine

    Supervisor(s):
    Rosemary Monahan
    Languages:
    Java/C/Ada/C++ Dependant on the tools chosen
    References:
    1. OpenJML: www.openjml.org
    2. Why3: http://why3.lri.fr/
    3. EB2ALL - The Event-B to C, C++, Java and C# Code Generator: http://eb2all.loria.fr/
    4. SparkAda: http://www.spark-2014.org/
    Description:

    A case study emphasizing the control of a hemodialysis machine is detailed in ://www.cdcc.faw.jku.at/ ABZ2016/HD-CaseStudy.pdf. This system has been modelled in formal languages and documented in publications at the ABZ 2016 conference. This project requires the implementation and verification of this system, verifying properities of the system as presented in the models. Suitable tools for verifying solutions include Why3 with Java/C++/ML, for SPARK with Ada, Frame-C with C, OpenJML with JML, or Code Contracts/Spec#/Dafny with C#/.Net. Students will select one of these tools within which to implement and verify their code.

    For more details of the specification see: http://www.cdcc.faw.jku.at/ABZ2016/HD-CaseStudy.pdf
     

  • ********************************************

    Title:

    IoT message security

    Supervisor(s):
    Stephen Brown
    Languages:
    TBD.
    References:
    1. Multi-factor web API security for securing Mobile Cloud, Tang et al, FSKD 2015
    2. API based security solutions for communication among web services, Rajaram et al, ICOAC 2013
    3. Building secure healthcare services using OAuth 2.0 and JSON web token in IOT cloud scenario, Solapurkar, IC3I, 2016
    Description:

    Security can be a critical issue in many sensing/IoT applications. In many cases the data is delivered via a service backend. In this case, the nodes send messages to the backend via a gateway which issues HTTP requests to the backend server, using a 'web api'. An application server then uses a different 'web api' to access this data - which can be 'pushed' by the backend, or 'pulled' by the application server. There are many approaches to providing security for these links. The purpose of this project is to review the literature, identify the relevent security issues and their solutions, and then select and implement a solution which can be deployed in an existing LoRa research network on campus.TBD.

Pages