Skip to main content

Trinity College Dublin, The University of Dublin

Menu Search

Module Descriptor School of Computer Science and Statistics

Module CodeCS3012
Module NameSoftware Engineering
Module Short TitleN/a
Semester TaughtFirst Semester
Contact HoursLecture hours: 3
Module PersonnelLecturing staff: Dr Vivek Nallur
Learning Outcomes

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 large, software systems. 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 recognise architectures for building large-scale distributed software systems.

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.

Learning Aims

When students have successfully completed this module they will be able to:

  • explain and compare the key concepts of the waterfall, spiral, and agile/extreme programming lifecycle models.
  • apply strategies for the gathering of software requirements and the generation of software specification.
  • analyse software by means of a set of UML diagrams.
  • compare and apply techniques for managing software projects and teams.
  • explain the philosophy for designing architectures for software systems.
  • collaborate with large open-source software systems.
Module Content
  • Introduction
  • Software lifecycles
  • Software Processes & Project Management
  • O-O Analysis and UML
  • Domain Analysis
  • Requirements and Specification
  • Design Issues
  • Software maintainability
  • Mining
  • Small and Larger Scale Design
  • Debugging and Testing
Recommended Reading List
  1. R.S. Pressman, Software Engineering: A Practitioner's Approach, 7th Edition McGraw Hill, 2010.
  2. Robert C Martine, Agile Software Development, Principles, Patterns, and Practices. Person, 2002
  3. Penny Grubb and Asrmstrong a. Takang, Software Maintenance: Concepts and Practice (Second Edition), 2003
  4. Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, 1st Edition. Prentice Hall, 2008.
  5. Ash Maurya, Running lean : iterate from plan A to a plan that works. O’Reilly 2012
  6. Kent Beck, Test Driven Development: By Example. Addison-Wesley, 2003.
Module Prerequisites-
Assessment Details

Exam: %70 Coursework: %30

In the supplemental examinations, assessment is by written examination only, which contributes 100% of the overall mark.

Module Website
Academic Year of DataN/a