Skip to main navigationSkip to main content
The University of Southampton

COMP2215 Computer Systems II

Module Overview

This module will introduce you to the general principles and practices of developing software that interacts directly with the hardware and its physical environment. Software has found its way into almost any electronic device with a typical household already possessing well over 100 computers embedded into products. These microcontrollers are complete computers integrated on a single chip, some only costing pennys and taking up no more than 2x2x2mm^3. The relative simplicity of such microcontrollers make it possible to comprehend a complete computer system within the scope of this module. At the same time these systems are state-of-the art technology with applications ranging from mobile devices and the internet-of-things, to sensor networks, distributed control architectures, and robots. This module is for students with good self-study skills who enjoy to work independently on practical technical challenges. To succeed in this module you need to teach yourself C from on-line resources and you need to be able to install a cross-compilation tool-chain on your own computer. Please note: - There is no text book for this module, you will use on-line resources and publicly available documentation for libraries and circuits (see the module notes). - There is no individual feedback for the frequent coursework (see details below). - You will receive a hardware kit that includes a microcontroller development board and the peripherals needed to develop, download and debug code on the board (see the module notes). In a typical week during this module you will have: - Two lectures introducing new material - One lecture introducing the coursework exercise due in the coming week - A tutorial in which the model answer for the previous coursework exercise is discussed and you can ask questions you have about your own solution - Reading assignments for on-line material that complements the lectures

Aims and Objectives

Learning Outcomes

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • Key concepts of operating systems
  • Hardware requirements implied by software functionality
  • Implementation of simple operating system components
  • Capabilities and peculiarities of embedded systems
Subject Specific Intellectual and Research Skills

Having successfully completed this module you will be able to:

  • Design algorithms for resource-constraint systems
  • Understand the fundamental concepts of real-time systems
  • Assess the reliability of software on devices in harsh environments
Subject Specific Practical Skills

Having successfully completed this module you will be able to:

  • Write system-level code in C
  • Build and debug applications running on a microcontroller
  • Implement software on an embedded system


Programming embedded systems - Debugging with limited I/O and memory - Asynchronous & reentrant code - Real-time programming Input/Output - Physical Interfaces - Interrupts - Drivers Event-driven programming - State machines - Actors Timing - Hardware timer - Watchdogs Memory management - Bootloader - Stack vs. heap - RAM vs. Flash - Multiprogramming Scheduling - Preemtive multitasking - Real-time scheduling - Performance Serial Communication - UART, I2C/SPII, USB File Systems - Flash file systems - FAT-FS Embedded Applications - Power consumption - Reliability

Learning and Teaching

Preparation for scheduled sessions18
Follow-up work18
Completion of assessment task11
Wider reading or practice45
Total study time150

Resources & Reading list

Equipment. - LaFortuna Board with AT90USB1286 - USB Cable - Micro SD Card

Online Resource. - ATmega AT90USB1286 Datasheet - Tool-chain Installtion Instructions - C Quick Reference Card - C Wiki Book - AVR Libc Documentation

Staff requirements (including teaching assistants and demonstrators). Approx 10h demonstrator support (clinic sessions to help with tool-chain and hardware problems)


Assessment Strategy

For the weekly coursework excersises you will typically receive skeleton code that you need to modify or you can take as a starting point for your own implementation. You will receive detailed instructions for each exercise. If you submit your solution (attempt) by the deadline you will receive full marks, independent of the quality of your submission. However, the material of the exercises will be a focus of the exam. You will need a computer with two free powered USB ports (required for the electronic kit you will receive) and you will need to install the cross compilation tool chain on the computer (see module notes for instructions). The "noteworthy contributions to the delivery of the module" are the top 5% of marks that can be achieved in this module and will be awarded for exceptionally useful contributions on the student wiki and particularly helpful patches submitted for the module materials.


MethodPercentage contribution
Continuous Assessment 25%
Final Assessment  75%


MethodPercentage contribution
Set Task 100%


MethodPercentage contribution
Set Task 100%

Repeat Information

Repeat type: Internal & External

Linked modules

Pre-requisites: (COMP1202 OR ELEC1201) AND COMP1203 AND COMP1206

Share this module Share this on Facebook Share this on Twitter Share this on Weibo
Privacy Settings