SOFTWARE ENGINEERING AND OBJECT-ORIENTED PROGRAMMING - 2026/7
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
- Classes and Objects
- Inheritance
- Encapsulation
- Polymorphism
- Abstraction
- Testing Objectives
- Test Types
- Static Checking (linters and type checkers)
- Software Development Lifecycle
- Software Products and Agile Development
- Functional and Non-functional Requirements
- Requirements/Features Elicitation and Documentation
- System Design Principles and Modelling
- Software Architectures
- Use of Libraries and Frameworks
- Code Quality and Reliability
- Design Patterns
- DevOps and Code Management (version control and continuous integration/delivery)
- Security Policies, Vulnerabilities, and Threats
- Data Integrity, Privacy and Security
- Content Security Policies
- 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
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 2026/7 academic year.