Academic Handbook Course Descriptors and Programme Specifications

LCSCI6206 Fundamentals of Software Engineering Course Descriptor

Course code LCSCI6206 Discipline Computer & Data Science
UK credit 15 US credit 4
FHEQ level 6 Date approved November 2022
Core attributes Writing Intensive x 2 (WI)
Pre-requisites LCSCI5205 Object-Oriented Design or LDSCI5206 Advanced Programming with Data
Co-requisites None

Course Overview

Building, delivering and maintaining successful software artefacts requires more than being good at programming. This course covers the fundamentals of software engineering, ranging from software development life cycle models, to design, to testing, to deployment. Development models that work well for a single developer do not scale to teams, and vice versa. The course explores these tradeoffs throughout the entire software development lifecycle, with a particular focus on how these decisions affect the quality of the resulting software.

Learning Outcomes

On successful completion of the course, students will be able to:

Knowledge and Understanding

K1c Systematically understand fundamental aspects of the software development life cycle: development models, requirements analysis, user-centred design, software design principles and patterns; testing, code refactoring and debugging, software architecture and design, and integration and deployment.
K2c Systematically understand methods and techniques for developing highly efficient software.
K3c Identify appropriate design patterns and code organisation suitable for developing a well-tested software that solves a particular computing problem.

Subject Specific Skills

S1c Critically evaluate technical, social and management dimensions of software engineering, including familiarity with codes of ethics, codes of practice, and relevant industry standards.
S2c Design and develop original software of varying levels of complexity either individually or as part of a team.

Transferable and Employability Skills

T1c Undertake significant personal responsibility and leadership as part of a team when developing original software.
T3c Display an advanced level of technical proficiency in written English and competence in applying scholarly terminology, so as to be able to apply skills in critical evaluation, analysis and judgement effectively in a diverse range of contexts.
T4c Work in a proactive and effective manner as part of a team in a data-driven application project, exercising initiative and responsibility in the design and implementation of software for that project.

Teaching and Learning

This course has a dedicated Virtual Learning Environment (VLE) page with a syllabus and range of additional resources (e.g. readings, question prompts, tasks, assignment briefs, discussion boards) to orientate and engage students in their studies.

The scheduled teaching and learning activities for this course are:

Lectures/labs. 40 scheduled hours – typically including induction, consolidation or revision, and assessment activity hours:

  • Version 1:All sessions in the same sized group, or
  • Version 2: most of the sessions in larger groups; some of the sessions in smaller groups

Faculty hold regular ‘office hours’, which are opportunities for students to drop in or sign up to explore ideas, raise questions, or seek targeted guidance or feedback, individually or in small groups.

Students are to attend and participate in all the scheduled teaching and learning activities for this course and to manage their directed learning and independent study.

Indicative total learning hours for this course: 150

Assessment

Both formative and summative assessment are used as part of this course, with purely formative opportunities typically embedded within interactive teaching sessions, office hours, and/or the VLE.

Summative Assessments

AE: Assessment Activity Weighting

(%)

Duration Length

(words)

1 Set Exercises 70 24-32 hours  
2 Written Assignment – Group 30   2,500

Further information about the assessments can be found in the Course Syllabus.

Feedback

Students will receive formative and summative feedback in a variety of ways, written (e.g. marked up on assignments, through email or the VLE) or oral (e.g. as part of interactive teaching sessions or in office hours).

Indicative Reading

Note: Comprehensive and current reading lists are produced annually in the Course Syllabus or other documentation provided to students; the indicative reading list provided below is for a general guide and part of the approval/modification process only.

  • Titus Winters, Tom Manshreck, and Hyrum Wright. 2020. Software Engineering at Google. O’Reilly Media.
  • Mauricio Aniche. 2022. Effective Software Testing: A Developer’s Guide. Manning.
  • Mark Richards and Neal Ford. Fundamentals of Software Architecture. O’Reilly Media.

Indicative Topics

Note: Comprehensive and current topics for courses are produced annually in the Course Syllabus or other documentation provided to students; the indicative topics provided below are used as a general guide and part of the approval/modification process only.

  • Software development life cycle models (e.g., waterfall, spiral, agile)
  • Requirements gathering and analysis
  • User-centred design
  • Software design principles and patterns
  • Testing (e.g., functional testing, structural testing)
  • Code refactoring and debugging
  • Software architecture and design
  • Integration and deployment

Version History

Title: LCSCI6206 Fundamentals of Software Engineering

Approved by: Academic Board

Location: academic-handbook/programme-specifications-and-handbooks/undergraduate-programmes

Version number Date approved Date published Owner Proposed next review date Modification (as per AQF4) & category number
1.1 July 2023 September 2024 Dr Alexandros Koliousis November 2027 Category 1:

Corrections/clarifications to documents which do not change approved content or learning outcomes

1.0 November 2022 January 2023 Dr Alexandros Koliousis November 2027