CSU33012 – Software Engineering

Module CodeCSU33012
Module Name Software Engineering
ECTS Weighting [1]5 ECTS
Semester TaughtSemester 1
Module Coordinator/s  Stephen Barrett

Module Learning Outcomes

On successful completion of this module, students will be able to:

  1. Explain and compare the key concepts of the waterfall, spiral, and agile/extreme programming lifecycle models;
  2. Compare and apply techniques for managing software projects and teams;
  3. Perform Data Analytics with large open-source software systems;
  4. Measure and reflect on software engineering practice;
  5. Develop a personal software engineering methodology and practice.

Module Content

This course provides students with a solid grounding in various aspects related to building large software systems. The overall aim of this course is for students to learn the fundamental skills for building software systems as part of a team. This entails (i) to recognise the general software lifecycle and its stages from domain analysis to maintenance, (ii) to analyse software in the problem domain, (iii) to identify the fundamental approaches to managing software projects and teams, (iv) to distinguish the roles of stakeholders in a software project in general and in software teams in particular, (v) to understand how to measure and reflect team performance.

This course covers various aspects related to building software systems ranging from the use of software lifecycle models, to project management, to large-scale software architectures. Specifically, software lifecycle models, including variations of the waterfall and spiral models as well as extreme programming and agile, are introduced along with concepts that are relevant to the specific model stages. These concepts include O-O software design, and domain analysis, requirements and specification analysis, testing and debugging, and version control. Moreover, strategies for managing large software projects and their contracts as well as project teams are presented and contrasted.

Teaching and Learning Methods

Lectures that cover theoretical and practical aspects of software engineering. Students complete a significant amount of practical software development work focused on software engineering analysis and development of a personal software development practice.  

Assessment Details

Practical Development Work Students are assessed exclusively by a series of practical development and written submissions.

Assessment ComponentBrief Description Learning Outcomes Addressed% of TotalWeek SetWeek Due
LCAIntroductory development tasks.20%Week 2Week 6
BiographyTo produce a short (2-4 page) biography of a key software engineer, discussing the work and impact of the individual.10%Week 3Week 8
Measuring Engineering ReportTo deliver a report that considers the ways in which the software engineering process can be measured and assesed in terms of measurable data, an overview of the computationial platforms available to perform this work, the algorithmic approachs available, and the ethics concerns surrounding this kind of analytics.20%Week 5Week 12
API AnalyticsInterrogate the GitHub API to retrieve and display data regarding the logged in developer. Interrogate the GitHub API to build visualisation of data available tht elucidates some aspect of the softare engineering process, such as a social graph of developers and projects, or a visualisation of indiviudal of team performance. Provide a visualisation of this using the d3js library.50%Week 6Week 12

Reassessment Details

A practical and/or written individual task will be set, with a deadline of the end of the reassessment period. There will be no written examination.

Contact Hours and Indicative Student Workload

Contact Hours (scheduled hours per student over full module), broken down by: 33 Hours
Lecture22 hours
Laboratory0 hours
Tutorial or seminar0 hours
Other11 hours
Independent Study (outside scheduled contact hours), broken down by:82 hours
Preparation for classes and review of material (including preparation for examination, if applicable)6 hours
Completion of assessments (including examination, if applicable)76 hours
Total Hours115 hours

Recommended Reading List

Online materials and references will be given as the module proceeds.

Module Pre-requisites

Prerequisite modules: N/A

Other/alternative non-module prerequisites: Students should have reasonable experience with a modern programming language. Students should be prepared for significant personal software development work: this module has a strong practical focus and requires constant and regular input.

Module Co-requisites


Module Website