MSc AI Software Engineering Group Project

Module aims

This module is about the development of AI software products. You will learn state-of-the-art techniques used in industrial software development to ensure that teams produce software co-operatively, reliably and on schedule. You will look at technical practices as well as project management techniques. The aim is to provide you with practical experience in developing AI applications and in using software engineering techniques in the design and implementation of large programs.                

Learning outcomes

Upon successful completion of this module you will be able to:
• Select, adapt, and apply modern software development methods as practised in the software engineering industry. 
• Engage critically with debates on the ethics of deployed  AI software 
• Detect algorithmic bias in machine learning decisions and measure it based on several common metrics.
• Interact with stakeholders to identify and prioritise requirements.
• Collaborate with others to engineer complex software systems.
• Demonstrate and critically evaluate solutions for technical and non-technical audiences.    

Module syllabus

The module lecture content is divided into these themes:
• Fairness in ML, and ethics of AI.  The evaluation of fairness metrics.  Ways to enforce fairness in ML models.  Representation learning: traditional and adversarial approaches.  The analysis of bias in ML datasets, including use of fairness metrics for the same. Ethics of AI and AGI
• Agile Development - you will look at the development practices common to agile development, the current industry best practice for developing software products. 
• Quality Assurance - you will cover various techniques for assuring the quality of the software produced, in terms of reliability, user satisfaction and performance. 
• User Focus - you will study techniques for focussing on the user’s needs and iterating through versions of the product to deliver maximum value to users and customers. 

Topics within software development and testing:
• Introduction to Agile Methods 
• Common Agile Practices 
• Extreme Programming 
• Scrum 
• Kanban 
• Estimation and Planning 
• Development Process and Quality Assurance 
• Continuous Integration 
• Deployment pipelines 
• Working with customers 
• Qualitative and quantitative evaluation

Teaching methods

Lectures and lab sessions at the start of the second term will cover the material in "Module content", above.

Once this material has been covered, the bulk of the module involves you working in teams, together with your supervisor, applying appropriate software engineering techniques to deliver your project in an iterative fashion.

Supportive lab sessions will also be provided to troubleshoot software engineering, deployment, and programming questions and themes.

Assessments

Module assessment divides into:
- 10% CW on fairness in ML and ethics
- 15% worth of small deliverables on project management (a 3% group agreement; and 4 x 3% checkpoints through the term)
- 75% on the final project deliverables, assessed using a project report, an oral presentation, a software demonstration, and the code archive

Your group is expected to demonstrate some working software after each iteration that indicates your progress and allows you to get feedback. 

The default position is that each member of your group will receive the same mark, but differential marking will be applied where there is evidence that different members of the group contributed more or less to the project.

The presentation is a required element of the project. Students will not receive a pass mark for the project overall if they do not participate in the presentation.
                
Groups will collaborate with their project supervisors and receive feedback on the work they have done at regular intervals.

Reading list

Module leaders

Dr Saman Hina
Dr Tom Crossland
Dr Matthew Wicker