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) | ✔ | ✔ | |