Description
Aims:
The aims of this module are to:
- Provide students with the enabling knowledge of fundamental concepts in imperative programming particularly as applied to embedded microcontrollers.
- Support students in developing problem solving, analysis and decomposing computational problems at a range of scales, selecting appropriate techniques for use in implementing solutions to the problems.
- Provide students with the tools for the critical analysis of the effectiveness and efficiency of programs produced through appropriate static analysis, testing and run-time performance analysis.
- Support students to develop a holistic understanding of the practical application of theory and foundational knowledge of AI–based robotic systems (project).
- Build students’ confidence when liaising with and presenting in future industrial contexts, working with peers and participating in AI–based robotics projects.
Intended learning outcomes:
On successful completion of this module, a student will be able to:
- Demonstrate the ability to build programs based on a systematic decomposition of a problem, to debug those programs and to assess their performance.
- Design and develop programs to control simple LTI systems both in simulation and reality.
- Select and explain the rationale behind the choices made for appropriate techniques for use in implementing solutions to the problems, composing code elements appropriately and debugging the result as necessary.
- Demonstrate increasingly developing inventive and creative problem-solving skills through participation in a real-world based project (in relation to relevant and current robotics and AI themes and synthesis of existing knowledge from the programme).
- Identify and demonstrate a critical understanding of the role that mathematical and programming knowledge plays in the development and build of AI-based robotic systems.
- Demonstrate engagement with reflective and learning as key academic and professional skills.
Indicative content:
This is a practical low-level programming module using C as the programming language. The module will not assume any prior programming experience and will, in any case, focus on running code on microcontrollers and robots. The module will therefore start with the basics of programming and will extend into simple concurrent programming and interactions with real time operating systems of the type found in embedded and robotic systems.
The following are indicative of the topics the module will typically cover:
- What is programming and how do programming languages work.
- An introduction to C.
- Types.
- Sequence, selection, iteration, recursion.
- Assignment and variables.
- Functions and their parameters.
- Files.
- Pointers and memory management.
- Simple RTOS.
- Concurrent threads, prioritisation.
- Controlling concurrency; locks and semaphores.
- Simple concurrent programming: sensing and control.
Requisites:
To be eligible to select this module as optional or elective, a student must be registered on a programme and year of study for which it is formally available.
Module deliveries for 2024/25 academic year
Last updated
This module description was last updated on 19th August 2024.
Ìý