Software Development

Academic Appointment Booking Website

There is a need for students to be able to book appointments to see their academic staff during their open office hours.

Office hours for staff need to be able to be added to the system, or ideally pulled from Outlook calendars so that students can chose meetings of either 10, 15, 20 or 30 minutes duration inside the scope of the staff member's office hours. Alternatively a staff member might like to stipulate the lengh of the meeting and when their office hours are manually.

This project will see you independently build the skills required to develop the software in a web accessible format so that students can book appointments to see academic staff.

Your task it to research into the wide range of options for development of such a system, then DESIGN - BUILD - TEST your solution.

Supervisor

New Software for OO Design & Development Module

This is an exciting opportunity to use your software development skills to contribute to the specialist teaching materials we use here in the Computing Department.

If you did the OO Design & Development module (COMP2431) in your second year, you will be familiar with the 'JavaFish' version of the 'Fish-O-Rama' software framework.  This framework makes use of 3rd party libraries that are now legacy, and we need to upgrade the framework software accordingly.   At the same time we would like to improve its design so that students can be given a choice of IDEs rather than being tied to BlueJ.

This will be a Design-Build-Test project, and although the artefact (ie your software) will be a key deliverable, we will also need to see:

  • a requirements specification and plan, developed through background research/study and discussions with your supervisor
  • a detailed and reasoned software design
  • a development plan/log based on the above design

 

Please make contact with Marc Price if you are interested in this project.

Supervisor

Anomalous Event Trigger for MS Kinect Point-cloud Recorder

An interesting feature of the Microsoft Kinect depth sensor is the occasional/spurious appearance of 'orbs' in the infra-red camera output.  A number of reports have been made about this, and we have seen them a few times ourselves when working with the device.  Setting aside the heated discussion as to what these 'orbs' are (as they cannot be normally seen by the naked eye), it would be interesting to see how the depth sensor component of the Kinect interprets these anomalies (ie in terms of the resulting point-cloud data).

To this end, we would like you to Design-Build-Test an application that detects orbs in the infra-red camera image, and upon detection, it triggers a recorder, so that the Kinect's point-cloud data output and infra-red video output is captured to disk.

Although the artefact (ie your software) will be a key deliverable, we will also need to see:

  • a requirements specification and plan, developed through background research/study and discussions with your supervisor
  • a detailed and reasoned software design
  • a development plan/log based on the above design
  • a test strategy and log, showing the planned approach to verification and the results of your tests.  As a part of this, you will need to include a method for 'cheating' the Kinect sensor using an infra-red element of a scene that is not in the visible spectrum.

Please make contact with Marc Price if you are interested in this project.

Supervisor

Staff Annual Leave Recording Software / System

There are a large number of staff employed at a local employer, each of who have their own individual allocation of annual leave to take during the working year; which runs from 1st sept to 31st Aug annually.

Depending on the level at which a member of staff is employed they have between 28 and 36 days leave per year.

Currently the employer uses a paperbased system to record staff annual leave, where a member of staff is given an annual leave card in which they record which days they intend on taking off as annual leave, which is signed off by their line manager. Once this is done they hand their card to an administrator who enters the details onto a speadsheet and shared outlook calendar.

The company would like a technical solution to this where each member of staff can log into an electronic system to book their days off, which is then signed off electronically by their line manager, co-signed by the administrator and automatically recorded onto a system.

Your task it to research into the wide range of options for development of such a system, then DESIGN - BUILD - TEST your solution.

Supervisor

Student Attendance Project

Universities are increasingly under pressure to monitor and track student attendance. This project has two potential outcomes for students, namely a research project into options available for this, or an interventional project where an end product is produced to meet a brief produced based on research undertaken.

Project Option 1 - Research

Research into the importance of student attendance monitoring and its implications, including primary research on both students and staff. Explore and critically evaluate the options currently available for technology solutions for monitoring and recording student attendance.

Project Option 2 - Design-Build-Test

Research into the importance of student attendance monitoring and its implications, including primary research on both students and staff. Develop an application, either mobile or web based which will enable efficient and effective monitoring and recording of student attendance. Examples of this could be a mobile phone application that teaching staff could use to scan bar codes on student ID cards or individual QR codes for each student, then record attendance for each session in a secure database.

Existing Examples

Recording and Monitoring Attendance

A Students Attendance System Using QR Code

Student attendance using QR code card

Supervisor

Entity-Component-System (ECS) Game Engine Architecture

If you completed your 2nd year games module with a more-or-less complete game engine architecture, you might enjoy the challenge of creating a component-based (ECS) game engine for your 3rd year project.

This would be a DBT project that is primarily focused on Software Engineering and Game Development. You can use any programming language of your choice, however, you might find it less challenging to use a language that you are already familiar with. Although some kind of demo will be required to test and showcase the software, producing a playable game prototype would be beyond the scope of the project.

Key challenge: how to design, implement, and verify an engine with the component-based paradigm.

Considerable background research on the component-based approach would be necessary prior to starting this project.

As this is a DBT, the question is what would be an appropriate test?  To a certain extent, this is something that you would have to answer yourself, via secondary research.  However, the most often cited reason for opting for ECS architecture over an OO entity-based architecture, is performance.  This isn't the only lens you can take, but if you choose this, then your test could be a comparison between a newly created ECS engine and an OO entity-based engine.  Your secondary research would then need to also look at benchmarking tests to see how comparisons have been done by others, and which would be most suited in this context.

Another comparison test might be to look at software analysis of ECS  vs OO (eg in terms of Cohesion and/or Coupling).  In this case, your secondary research would need to also look at how others have measured these things.

Although the artefact (ie your software) will be a key deliverable, we will also need to see:

Supervisor

Entity-based OO Game Engine Architecture in C++

This is a Design-Build-Test project to produce a game engine using modern C++.

This would be a DBT project that is primarily focused on Software Engineering and Game Development.  Although some kind of demo will be required to showcase the software, producing a playable game prototype would be beyond the scope of the project.

Key challenge: how to design, implement, and verify a performant game engine in C++.

Considerable background research on modern C++ (eg C++ 14) would be necessary to succeed with this project.

Although the artefact (ie your software) will be a key deliverable, we will also need to see:

  • a requirements specification and plan, developed through background research/study and discussions with your supervisor
  • a detailed and reasoned software design, highlighting any key design patterns that have been employed, and descriptions of how these are implemented using modern C++
  • a development plan/log based on the above design (it is normal practice for a design to evolve throughout the development process, especially if using an agile approach)
  • a test design/strategy and log, showing the planned approach to verification and the results of your tests.

 

Your test would probably be best done as a comparison between two engines with the same design, but coded in C# and C++ (hence you could use your engine from COMP2451) as the basis for the C# version.  The comparison would probably need to explore some aspect of performance, however, you should also consider portability - a C# program is likely to be better optimised for a Windows-based OS than any others.

WARNING: this is likely to be VERY CHALLENGING for anyone who has never used C++ before!

Supervisor