1. To introduce the issues of memory and memory management within the context of a system-level procedural programming language (C), and debugging tools that facilitate the inspection of state, stack and heap usage during code execution.
2. To familiarise students with a contemporary system-level procedural programming language (C).
3. To demonstrate principles, provide indicative examples, develop problem-solving abilities and provide students with experience and confidence in the use of algorithms with consideration and management of memory usage within a contemporary software setting.
Walkthrough of various elements of the C programming language, by example.
Understanding of functions and how they interact via the stack mechanism.
Exploration of the use of heap-based memory in C through the use of arrays, pointers, and strings, and exploring their representation in memory.
Dynamic data structures in C: structs and the dynamic creation and destruction of structs.
Advanced issues, including function pointers and the C pre-processor.
Hand-on experience with black-box testing, and the use of debugging tools.
(LO1) At the end of the module the student should be able to: analyse and explain the use of memory resources within software applications, including memory usage on the stack during function calls and heap-based dynamic memory management.
(LO2) Use debugging tools to inspect memory usage, and to assist in the development of software.
(LO3) Develop applications within the C programming language, including use of command-line driven C development tools.
(LO4) Deal with underlying memory-based issues in using dynamic data-structures through the implementation and management of at least one familiar datastructure using the C programming language.
(S1) IT skills
(S2) Problem solving/ critical thinking/ creativity analysing facts and situations and applying creative thinking to develop appropriate solutions.
Teaching Method 1 - Lecture
Description: Two 1-hour lectures per week, based on slides and interactive demonstrations.
Teaching Method 2 - Laboratory Work
Description: Two lab sessions per week, in which students work individually supported by demonstrators.