CS1D462 - Programming 01 Jul 2022 - 31 Aug 2028 | Version 1

Associated Module Information

Module Code: CS1D462
Module Title: Programming
Faculty: Faculty of Computing, Engineering and Science
Faculty Group: Computing and Mathematical Sciences
Faculty Sub Group: Computer Science
Module Leader: Shiny Verghese
Module Team: Jennifer Whewell, Carl Jones, Christopher Tubb
First Intended Intake: SEP 2022 Final Year of Intake: 2027
Date Closed:
Credit Value: 40 Credit Level: 4
Language: English
Percentage of Module Taught in Welsh: 0
Equivalent Module:
HECOS codes: 100960 - object-oriented programming
HECOS Code Weighting: 100

Document Version Information

Version 1
Valid From 01 Jul 2022
Valid To 31 Aug 2028

Module Aims

To introduce fundamentals of programming and problem-solving using an object-oriented language such as C++.

To develop an understanding of the process of software development including formal software analysis and design.

To introduce the use of software components and emphasise the importance of readable, understandable, and maintainable code.

Introduce the concepts of compilers and how a compiled programming language behaves.

Use of different operating systems and development environments to develop software.

Content Summary

Introducing Software Development - the role and usage of Software Development Environments in the production of software solutions, the software development process.

Introduction to compiled programming languages and compiled vs interpreted languages.

Design – formal analysis and design of software requirements including UML, use cases and test cases.

Variable types – storing and accessing data, defining, and executing operations on data; identifiers and variables, assignment, increment/decrement; Numeric data types: integers, floating point numbers; Booleans, characters, strings; constants; arrays; type conversions, casting, and scope.

Overview of program constructs – sequence, selection (conditionals) and iteration (loops), functions, input/output operators and manipulators, variables, keywords, and layout.

Streams - input and output, stream operators, stream manipulators, stream member functions, file streams, data files, string streams.

Introduction to libraries.

Functions - function declarations and definitions, calling functions, arguments, function returns, constants and pass by value, pass by reference.

Pointers – declaring and using pointers, pointers vs references.

Validation of input data.

Exceptions and exception handling.

Secure software design methodology.

Structured data types - creation and use.

Object-oriented programming concepts: classes and objects; Attributes (data members), methods (member functions), constructors, and destructors; inheritance; relationships between classes and objects.

Overloading functions, methods, and operators; overloading vs overriding.

Polymorphism.

Introduction to Object-oriented modelling and design.

Abstract data types, templates (methods and classes)

Introduction to some simple data structures (queues; stacks; trees; linked lists) and algorithms (bubble sort; quick sort; binary search)

Introduction to alternative development environments/ languages for developing software.

Software Quality Assurance - documenting and testing programs.

Demonstrating software features.

Using industry standard tools and best practices for software engineering

Learning and Teaching Methods

Activity Type Hours
Independent Study 160
Directed Study 120
Problem/Challenge-based Learning 48
Practical Classes and Workshops 72
Total Hours Selected 400

Learning Outcomes

# Learning Outcome
LO1 To design, implement and test computer programs to efficiently solve a range of technical and mathematical problems.
LO2 To follow coding best practices and promote reusable, understandable and maintainable code.

Module Requisites

N/A

Assessment Criteria

Assessment Category Assessment Type Description Duration Word Count Weight (%) Best of? Pass Mark
Asynchronous Assessment Practical Coursework 2 (Asynch) Exercises undertaken in class or in laboratory aimed at assessing the application of knowledge, analytical, problem-solving or evaluative skills. Assessed using CodeGrade 0 N/A 20 No 40
Asynchronous Assessment Practical Written Work 2 Simulation of an industry software development project. Analysis and design of a specification and a programming task using formal design methods and object-oriented programming 0 2000 40 No 40
Asynchronous Assessment Practical Written Work 1 Simulation of an industry software development project. Analysis and design of a specification and a programming task using classes and objects. 0 2000 30 No 40
Asynchronous Assessment Practical Coursework 1 (Asynch) Exercises undertaken in class or in laboratory aimed at assessing the application of knowledge, analytical, problem-solving or evaluative skills. Assessed using CodeGrade 0 N/A 10 No 40

Assessment Matrix

Assessment Type Learning Outcomes
LO1 LO2
Practical Coursework 2 (Asynch)
Practical Written Work 2
Practical Written Work 1
Practical Coursework 1 (Asynch)

Reading List

Bjarne Stroustrup; The C++ Programming Language, Pearson, Fourth Edition 2013, ISBN-13: 978-0321563842

Tony Gaddis, Judy Walters, Godfrey Muganda; Starting Out With C++ Early Objects. Pearson, 10th Edition, 2019, ISBN-13: 978-0135862391.

Brett McLaughlin, Gary Pollice, David West; Head first Object-Oriented Analysis and Design: A Brain Friendly Guide to OOA&D: The Best Introduction to Object Orientated Programming, O’Reilly, First Edition 2006, ISBN-13: 978-0596008673