C++ AND OBJECT-ORIENTED DESIGN - 2023/4
Module code: EEE2047
Module Overview
Expected prior learning: A good working knowledge of procedural programming, preferably in the C programming language. [Surrey EEE students should have achieved this in their Year 1 studies.
Module purpose: Object orientated programming (OOP) is a popular programming methodology for large application programming. C++ is a powerful programming language which, being backwards compatible with C, provides efficient access to low level components of a system. This makes it important for Electronic Engineering yet it is also a fully functioning industrially recognized language for large scale application programming. The module will provide students with the fundamentals of Object Orientated Design and Programming, with specific emphasis on its implementation in the C++ language.
Module provider
Computer Science and Electronic Eng
Module Leader
HADFIELD Simon (CS & EE)
Number of Credits: 15
ECTS Credits: 7.5
Framework: FHEQ Level 5
Module cap (Maximum number of students): N/A
Overall student workload
Independent Learning Hours: 87
Lecture Hours: 11
Laboratory Hours: 22
Guided Learning: 10
Captured Content: 20
Module Availability
Semester 2
Prerequisites / Co-requisites
EEE1035 - Programming in C or equivalent programming experience
Module content
Indicative content includes the following.
[1-2] Introduction to Object-Oriented design - The case for object-oriented design. Abstraction, encapsulation, modularity, reuse of software. Overview of the course.
[3-4] A Refresher Course in C - Overview of C, Procedural Programming, Structures.
[5-8] The C++ Class - Basics of the C++ class, constructors, destructors, memory allocation, operator overloading, friend operators.
[9-12] Inheritance - Inheritance, public/private/protected, member functions/variables, casting, virtual and abstract.
[13-14] Templates - templates and generic programming, design and use.
[15-16] Standard Template Library - namespaces, streams, strings, vectors, lists, iterators, maps and algorithms
[17-18] A Review of C++ - general review of the key components of C++
[19–20] Object Orientated Design Methodology - Design issues and planning
[21–22] Revision
Assessment pattern
Assessment type | Unit of assessment | Weighting |
---|---|---|
Coursework | CONTINUOUS ASSESSMENT BASED ON LABS | 20 |
Coursework | OBJECT ORIENTED DESIGN COURSEWORK | 20 |
Examination Online | ONLINE (OPEN BOOK) EXAM WITHIN 4HR WINDOW | 60 |
Alternative Assessment
N/A
Assessment Strategy
The assessment strategy for this module is designed to provide students with the opportunity to demonstrate both knowledge and practical expertise in the design and implementation of object oriented programmes in C++. The exam will assess knowledge and the assimilation of terminology, concepts, syntax and features of object orientated programming paradigms, and the specific instantiation of these concepts in C++. The assignment and labs will assess the ability of students to design and implement these skills in a practical setting.
Thus, the summative assessment for this module consists of the following (weightings given above)
- Continuous Assessment based on labs: to be completed after the weekly lab sessions, before the following lab
- Coursework: A large object oriented design and programming problem
- Examination: open book online examination
Formative assessment and feedback
For the module, students will receive formative assessment/feedback in the following ways.
- During lectures, by question and answer sessions
- Written feedback on the coursework
- During supervised computer laboratory sessions
Module aims
- The module has strong links to other modules within the program, which collectively form a strong "software competency" journey for the student within the programme. In Year 1 students learn basic programming and C development skills in modules EEE1033 and EEE1035 which are in Semester 1 and 2, respectively. In Year 2 Semester 1 students will move beyond these basic skills and learn about advanced software constructs and algorithms within module EEE2048. These form vital pre-requisites and allow this module to teach advanced object oriented programming constructs in Semester 2. The skills provided in this module are key in supporting many advanced AI/pattern recognition/embedded system modules in years 3 and beyond. Familiarise students with advanced object oriented methodology, software design and implementation.
- The module covers the features of the C++ language and how they relate to object oriented methodology and present the use of Object Oriented methodology in application programming.
- The module also aims to provide opportunities for students to learn about the Surrey Pillars listed below.
Learning outcomes
Attributes Developed | Ref | ||
---|---|---|---|
001 | Describe the fundamental principles of object orientated design | KC | C2 |
002 | Demonstrate the implementation of object orientated design principles in C++ | PT | C12 |
003 | Apply object orientated design to large/complex programming problems | CPT | C5 |
004 | Design and implement computer code to solve large, complex, programming problems in C++ | KC | C6 |
Attributes Developed
C - Cognitive/analytical
K - Subject knowledge
T - Transferable skills
P - Professional/Practical skills
Methods of Teaching / Learning
The learning and teaching strategy is as follows. There will 2 hours of pre-recorded video material per week. There will also be a 1 hour face-to-face tutorial session and 2 hours of computer-laboratory-based material per week. These in person activities will build directly on the pre-recorded material, which needs to be watched beforehand. The tutorials are to consolidate learned material and provide additional practice in program design. The purpose of the programming laboratories is for students to gain first-hand experience in applying the concepts taught in the recorded material.
Learning and teaching methods include the following.
- Pre-recorded video content
- In person tutorials
- Programming Laboratories
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: EEE2047
Other information
Surrey's Curriculum Framework is committed to developing graduates with strengths in Employability, Digital Capabilities, Global and Cultural Capabilities, Sustainability and Resourcefulness and Resilience. This module is designed to allow students to develop knowledge, skills and capabilities in the following areas:
It most clearly supports the “Digital Capabilities” pillar, as it introduces students to key industry standard techniques and tools for software development and debugging. This is a vital skill for many engineering, research and software development roles.
As such the module is also a key supporter of the “Employability” pillar at Surrey. The module’s position in semester two of year two was chosen to ensure that students expecting to undertake a placement year will have experience with object oriented programming. This greatly expands the range of placement and employment opportunities open to the students.
Finally, the assessment pattern for this module supports the “Resourcefulness and Resilience” pillar at Surrey. There are a large number of practical exercises (both formative and assessed) within the course. Students will need to plan and develop their own solutions for these and undertake extensive debugging in order to successfully execute on their own.
Programmes this module appears in
Programme | Semester | Classification | Qualifying conditions |
---|---|---|---|
Electronic Engineering with Space Systems MEng | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electronic Engineering with Space Systems BEng (Hons) | 2 | Compulsory | A weighted aggregate mark of 40% is required to pass the module |
Computer and Internet Engineering MEng | 2 | Compulsory | A weighted aggregate mark of 40% is required to pass the module |
Computer and Internet Engineering BEng (Hons) | 2 | Compulsory | A weighted aggregate mark of 40% is required to pass the module |
Electronic Engineering BEng (Hons) | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electrical and Electronic Engineering BEng (Hons) | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electronic Engineering with Nanotechnology BEng (Hons) | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electronic Engineering with Nanotechnology MEng | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electrical and Electronic Engineering MEng | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electronic Engineering MEng | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electronic Engineering with Computer Systems MEng | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
Electronic Engineering with Computer Systems BEng (Hons) | 2 | Optional | A weighted aggregate mark of 40% is required to pass the module |
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 2023/4 academic year.