SOFTWARE ENGINEERING AND OBJECT-ORIENTED PROGRAMMING - 2025/6

Module code: COM1034

Module Overview

This module will introduce software engineering principles with a technical focus on Object-Oriented Programming (OOP). Students will explore software development through the lens of the systems development lifecycle. In doing so, experience will be gained in requirements engineering, software design, implementation, testing and how to tackle real-world collaboration. Throughout, software engineering methods will be put into practice, and Java programming skills will be taught. Starting with understanding the basic data types and programming structures, students will progress to more advanced datatypes, programming structuring techniques and key principles of object-oriented programming. The module culminates with a capstone project utilising the software engineering and programming skills taught in the first year. 

Module provider

Computer Science and Electronic Eng

Module Leader

APPLETON Joseph (CS & EE)

Number of Credits: 30

ECTS Credits: 15

Framework: FHEQ Level 4

Module cap (Maximum number of students): N/A

Overall student workload

Independent Learning Hours: 160

Lecture Hours: 30

Seminar Hours: 18

Laboratory Hours: 38

Guided Learning: 32

Captured Content: 22

Module Availability

Year long

Prerequisites / Co-requisites

N/A

Module content

Introduction to Programming 

  • Primitive Data Types 
  • Advanced Data Types 
  • Collections 
  • Simple Control Flow
Object Oriented programming principles  
  • Classes and Objects 
  • Inheritance 
  • Encapsulation
  • Polymorphism 
  • Abstraction  
Validation and Verification (V & V)
  • Testing Objectives 
  • Test Types  
  • Static Checking (linters and type checkers) 
Introduction to Software Engineering 
  • Software Development Lifecycle 
  • Software Products and Agile Development 
Requirements Engineering 
  • Functional and Non-functional Requirements 
  • Requirements/Features Elicitation and Documentation 
Software Design 
  • System Design Principles and Modelling 
  • Software Architectures 
Software Implementation 
  • Use of Libraries and Frameworks 
  • Code Quality and Reliability 
  • Design Patterns 
  • DevOps and Code Management (version control  and continuous integration/delivery) 
Software Security and Privacy 
  • Security Policies, Vulnerabilities, and Threats 
  • Data Integrity, Privacy and Security 
  • Content Security Policies
Society, Ethics, Sustainability and Professionalism 
  • Professional Standards and Ethics
  • Intellectual Property, IT Regulation and Compliance
  • Sustainability and EDI Considerations 

Assessment pattern

Assessment type Unit of assessment Weighting
Practical based assessment Lab-based Assessment 20
School-timetabled exam/test Class-based Scheduled Test (90-min) 20
Coursework Group Design Exercise 20
Coursework Capstone Project (core) 40

Alternative Assessment

An individual assessment will be set to replace the group coursework.

Assessment Strategy

The assessment strategy is designed to provide students with the opportunity to demonstrate that they have achieved the module learning outcomes. Thus, the summative assessment for this module consists of:

  • Lab assignments. In this work, the students will be expected to implement the required functionality in Java and test its function. Students will also be required to write unit tests. These address learning outcomes LO1 and LO2.
  • An in-semester test. In this work, students will complete a 90-minute, computer-based test. The content of the test will be based on the lecture materials covering the learning outcome LO3.
  • A group design exercise. In this work, students will undertake as a group an exercise to design a software solution to a real-world problem that leads into the capstone project. This work covers the learning outcomes LO4 and LO7.
  • A capstone project (core). In this work, students will undertake a practical project covering the implementation and testing of a non-trivial Java application with database interactivity. This is an opportunity to showcase practical software engineering skills learnt across the first year and begin to build a portfolio.  This work covers the learning outcomes LO1, LO2, LO5  and LO6.
 

Module aims

  • Develop a strong understanding of Object-Oriented Programming (OOP) principles and their application in software development.
  • Introduce software engineering methodologies, including requirements analysis, design, testing, and project management.
  • Equip students with practical programming skills and best practices in software design and development.
  • Enable students to work collaboratively and prepare them for real-world software development challenges.

Learning outcomes

Attributes Developed
001 Apply fundamental concepts in the development and debugging of programs. KP
002 Apply Object-Oriented Programming principles (encapsulation, inheritance, polymorphism and abstraction) in software development. KCP
003 Identify the different stages of the systems development lifecycle and use design patterns and system diagrams for software architecture and planning. CPT
004 Apply key approaches to the specification, analysis and design of software. CT
005 Demonstrate effective implementation and testing of software (including unit testing, integration testing, and debugging strategies) using industry standard tools and frameworks. In doing so, construct non-trivial programs that may create, read, delete and update stored data. KCP
006 Demonstrate proficiency in version control systems and collaborative software development methodologies. KCT
007 Demonstrate the awareness and use of good professional practices in software engineering including adherence to professional standards, IT regulations, sustainability, ethical, regulatory aspects and EDI principles. KCPT

Attributes Developed

C - Cognitive/analytical

K - Subject knowledge

T - Transferable skills

P - Professional/Practical skills

Methods of Teaching / Learning

The learning and teaching methods include: 

  • In-person Lectures/tutorials  
  • In-person Lab sessions  
  • Captured content  
  • Discussion forums 
  • Optional support labs 
  • Quizzes 
  • Video tutorials 
  • Independent learning 
The learning and teaching strategy is to map the theoretical systems development lifecycle to concrete Java implementations. The lectures introduce the core concepts, reinforced through examples and activities. Students will apply their knowledge in the practical lab sessions and have the opportunity to participate in collaborative activities. The SurreyLearn VLE provides discussion forums to support the module material and coursework project.

Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.

Reading list

https://readinglists.surrey.ac.uk
Upon accessing the reading list, please search for the module using the module code: COM1034

Other information

Digital Capabilities

This module gives students a strong theoretical and practical grounding in object-oriented programming and software engineering. The development skills taught in this module provide students digital skills, such as programming, and mapping the systems development lifecycle into concrete implementation. These skills are used throughout the rest of the degree programme as well as being highly valued by employers.

Employability

This module provides foundational software engineering and development skills that are the first steps to applying these techniques to solve real life problems, students are equipped with practical problem-solving skills, theoretical skills, and software design and development skills. It emphasises the need for a professional development approach through use of version control and testing. All of these are highly valuable to employers.

Global and Cultural Skills

Computer Science is a global language and the tools and languages used on this module can be used internationally. The same programming languages used in this module are used worldwide allowing students to work in different countries. This module allows students to develop skills that will allow them to develop applications with global reach and collaborate with their peers around the world.

Resourcefulness and Resilience

This module involves practical problem-solving skills that teach a student how to reason about and solve new unseen problems through combining the foundation theory taught with practical technologies for systems that are in everyday use. By the end of this module, students will be equipped with the skills to take a complex development problem and break it down into smaller more manageable steps that can be solved individually and then tested together.

Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2025/6 academic year.