LSI

Module Specification

Advanced Software Diagnostics and Debugging

Module Specification

Advanced Software Diagnostics and Debugging



In today's world, software has become an essential part of our lives, powering everything from our smartphones, transportation systems, to healthcare. As software systems become increasingly complex, the task of diagnosing and debugging software becomes more challenging. This course provides students with an in-depth understanding of this task, covering areas such as program analysis, fault localization, and program repair, as well as the use of AI/ML techniques, such as the application of Deep Neural Network models and libraries.

There will be an introduction to debugging techniques, including logging and tracing, memory dump analysis, and static analysis. Debugging tools will also be considered, as well a reverse engineering, fuzzing and fault injection. Debugging in different programme languages and environments will be looked at, such as Java and Python, and different operating platforms, like Windows and Linux, will also be considered. Programme analysis techniques, such as abstract syntax trees and programme slicing will be covered on the module, as well as fault diagnosis, fault localisation, and programme repair. Bets practices, such as debugging in agile development, will also be looked at. Students will develop the skills and knowledge needed to diagnose and debug complex software systems and to apply state-of-the-art methods and tools to improve the efficiency and effectiveness of the software development process. By the end of the course, students will be equipped to tackle real-world software debugging challenges and contribute to the advancement of the field.


Mode(s) of Study Code CATS Credits ECTS Credits Framework HECoS code
Full-time blended
Part-time blended
SD71 15 7 FHEQ - L7 software engineering (100374)

Prerequisites and Co-requisites

None

Learning Outcomes

Code Attributes developed Outcomes
LO1 Knowledge and Understanding Comprehensive understanding of techniques and applications in automated software debugging and predictive fault detection.
LO2 Intellectual Skills Critically evaluate complex debugging scenarios and propose effective solutions using advanced software diagnostics techniques.
LO3 Technical/Practical Skills Apply multi-language debugging strategies across various platforms to systematically resolve software issues.
LO4 Technical/Practical Skills Design research methodologies with self-direction for testing hypotheses in software diagnostics, emphasising critical analysis and synthesis.
LO5 Technical/Practical Skills Effectively utilise an array of diagnostic tools to conduct dynamic and static analysis within diverse computing environments.
LO6 Professional/Transferable Skills Convey complex software diagnostic processes and debug strategies with clarity to specialist and non-specialist audiences alike.

Content Structure

Week Topic
Week 1 Introductory lecture
Introduces the module, outlining its relevance to the field and connections to other topics. It provides an overview of the content structure, key references, and assessment details.
Week 2 Debugging Techniques
This chapter provides a comprehensive understanding of traditional debugging techniques like logging, tracing, and memory dump analysis. Students learn to utilise breakpoints and watches effectively and assess the utility of dynamic and static analyses in detecting issues.
Week 3 Tool Mastery
Chapter two introduces a variety of debugging tools and evaluates their usage in different contexts. Students gain practical experience with these tools, understanding how they can be deployed efficiently in a debugging workflow.
Week 4 Robust Software
The complexities of advanced debugging approaches, including reverse engineering and fault injection, are unpacked in this chapter. Students explore how these techniques can be used to identify deeper software faults within a system.
Week 5 Working Across Languages
This chapter delves into debugging across different languages such as C/C++, Java, Python, and environments like Windows and Linux, highlighting their unique challenges and solutions.
Week 6 Program Analysis
Chapter five covers program analysis techniques from abstract syntax trees to program slicing. Students learn to utilise program analysis methods for software verification and proactive debugging.
Week 7 AI/ML in Debugging
Explore the implementation of AI and ML in software diagnostics, understanding the application of deep neural networks in identifying and repairing software bugs.
Week 8 Fault Diagnosis
Students are equipped with methodologies for unified debugging, fault diagnosis, and program repair, gaining insights into search-based and semantics-based repair strategies.
Week 9 Rigor in Testing
The chapter dissects the role of differential, metamorphic, and regression testing techniques in the debugging process, understanding their contribution to robust software development.
Week 10 Agile Debugging
Learn about agile development debugging techniques, including security vulnerability checks, and handle non-deterministic problems that arise during production.
Week 11 Beyond Debugging
The final chapter explores advanced topics such as the unique challenges of debugging database systems and the impact of flaky tests on software testing and debugging.

Student Workload

The methods of teaching and learning for this module are based on the School's Technical 15 teaching system, consisting of the following activities.

Activity Total hours
Introductory lecture 1.50
Concept learning (knowledge graph) 18.00
AI formative assessment 9.00
Case Study Review 9.00
Workshop/Lab Sessions 13.50
Individual or group assignments 18.00
Independent reading, exploration and practice 51.00
Summative assessment 30.00
Total: 150.00

Teaching and Learning Methods

Activity Description
Introductory lecture

This is the first weekly session, dedicated to providing a comprehensive introduction to the module. The module leader will present an overview of the subject, elucidating its importance within various digital engineering professions and its interrelation with other modules. Students will need no preparation ahead of attending this session.

The module leader will provide a structured breakdown of the content to be covered in the subsequent 9 sessions. Students will also receive an outline of the essential reference materials, alongside suggestions for supplementary reading. The format and criteria for the summative assessment will be delineated, followed by a dedicated period for questions and answers.

A recording of the session will be available to facilitate async engagement for any other student who missed the class, also offering an opportunity to review the content again.

Concept learning (knowledge graph)

Our institution's approach to teaching is primarily based on flipped learning. Ahead of each weekly session (Workshop/Lab), students will be required to study the essential concepts that are used in the coming session so they are familiar with the theories and ideas related to that session. The study material will be in the form of written content, illustrations, pre-recorded lectures and tutorials, and other forms of content provided through the AGS.

This content is self-navigated by the students, accommodating different learning styles and schedules, allowing students to watch or listen to them at their own pace and review them as needed.

AI formative assessment

Once each concept of the theory is studied, students will be prompted to engage in formative assessment with instant AI feedback. They include multiple-choice questions, socratic questions and answers, written questions, role-play and other AI-assisted practice scenarios.

The purpose of this automated formative assessment is to provide students with immediate feedback on their understanding of module material and highlight any areas that need support or further study. They are also used to track student progress, boost motivation and promote accountability.

Case Study Review

In this learning activity, students explore recent real-world case studies relevant to their course topic. The case studies will have been selected and curated by the module leader to represent up-to-date examples. They guide students through key details, contextual factors, and outcomes. This approach enhances students' understanding of current industry trends, challenges, and solutions, preparing them for real-world scenarios they may encounter in their future careers.

The learning experienced will be augmented by AI (virtual private tutor) allowing the students to critically engage with the content and discuss the case studies.

Workshop/Lab Sessions

Those studying in the blended learning mode will attend these 9 weekly classes (in person or remotely) during weeks 2 to 10. These sessions will complement the theory already studied during the preceding week (in our flipped-learning model), with discussions, analysis, practice or experience . They will be interactive and participatory, rather than one-way lectures. There will also be an opportunity for Q&A in every session. Depending on the nature of the content, challenges and learning activities will be pre-designed to apply flipped learning. They may include hands-on project work, group discussions or debates, roleplay, simulation, case studies, presentations, and other learning activities and opportunities. These workshops present an opportunity to apply critical thinking and problem-solving skills. They also encourage collaboration and foster a sense of community among students.

Individual or group assignments

Each Workshop/Lab session will be followed by an assignment. Assignments are used to reinforce learning and encourage independent thinking and problem-solving. They help the students identify the gaps in their understanding of the subject and provide them with an opportunity to apply what they have learned in a practical setting.

Assignments can be individual or group-based (teams of 2 to 4). They can take many forms, including essays, presentations, or projects. When they are group-based, teams will be randomly picked by AGS, in order to promote broader teamwork practice. Assignment files will be uploaded to AGS by the students ahead of the next weekly session. Feedback will be provided on each submitted assignment.

Independent reading, exploration and practice

This activity challenges students to engage with the reference material and independently explore and analyse academic literature related to the course topic. Students are expected to select relevant sources, practice critical reading skills, and where applicable technical skills, and synthesise information from multiple references. This is an opportunity to enhance research abilities, critical thinking, and self-directed learning skills while broadening and deepening subject knowledge.

Summative assessment

Summative assessments are used to evaluate student learning at the end of a module. These assessments can take many forms, including exams, papers, or presentations. Instructors can use summative assessments to measure whether students have achieved the learning outcomes for the module and provide them with a sense of their overall progress. Summative assessments can also be used to evaluate the effectiveness of the teaching methods used in the module.


Assessment Patterns

Weighting Format Outcomes assessed
40% Invigilated Exam
This is a time-limited and closed-book exam with a mix of multiple-choice and analytical written questions that students undertake during the summative assessment period as scheduled under the School’s remote invigilation conditions to ensure quality and academic integrity.

The exam enables the students to demonstrate their successful attainment of the module learning outcomes, primarily related to knowledge and understanding, and secondarily related to Professional/Transferable Skills.

The analytical written questions will consist of problem questions representing issues and dilemmas students are likely to encounter in professional life and students have to synthesise and apply what they have learnt on the module in order to produce sound and reasoned judgements with respect to the problem.

To enable the students to practice and prepare, various formative assessment activies, including quizzes and a AI-augmented assignments and mock exams are built into the module. Additionally, throughout the course, students will regularly receive feedback on their knowledge and assignments from AI as well as peers and staff to indicate how to improve future work and how to give constructive feedback to others.
K LO1
I LO2
P LO6
60% Technical Analysis and Solution Assessment
This assessment requires students to develop a solution to a complex problem within a simulated domain, followed by a detailed analysis and reflection on their design and its theoretical underpinnings. The aim is to assess students' abilities to design practical solutions, critically analyse their work, and articulate their understanding of the technical and theoretical aspects of the module.
K LO1
I LO2
T LO3
T LO4
T LO5
P LO6

References/Indicative Reading List

Importance ISBN Description
Supplementary Reading "Artificial Intelligence and Software Testing", by Rex Black et. al.; BCS, The Chartered Institute for IT (2022).
Supplementary Reading "Debugging Teams: Better Productivity through Collaboration", by Brian W. Fitzpatrick and Ben Collins-Sussman; O'Reilly Media, 1st Ed. (2015).
Supplementary Reading "Effective Debugging: 66 Specific Ways to Debug Software and Systems", by Diomidis Spinellis; Addison-Wesley, 1st Ed. (2016).
Supplementary Reading "Why Programs Fail: A Guide to Systematic Debugging", by Andreas Zeller; Morgan Kaufmann, 2nd Ed. (2009).

Programmes Linked to This Module

There are no programme modules to display.

Module Approval

Stage Version Date of approval Authority Chair Revalidation
Compliance 1.0 Academic Board Dr Paresh Kathrani
Pre-Teaching 1.0 Director of Education Dr Paresh Kathrani
Note: The information detailed within this record is accurate at the time of publishing and may be subject to change.
Module Spec: Advanced Software Diagnostics and Debugging (SD71)