KD5065 - C Programming and Digital Systems

What will I learn on this module?

This module aims to further develop your capabilities in the areas of digital systems, building on the hardware and software design and development techniques covered in previous related module(s).

In the Hardware Description Language (HDL) section, you learn about technology and architecture. The concept of HDL as a tool to simulate, design and document digital systems is introduced and you will learn how to design, specify, and apply digital combinational and sequential building blocks in isolation, and as part of a larger system. Then the module introduces an industry standard HDL known as Verilog, and shows how it can be used to describe, at the gate and logic expression level, digital building blocks such as decoders, multiplexers, encoders, shift registers and counters. During the course, you are given the opportunity to explore designs by means of simulation using industry standard design tools from raw Verilog code to the simulation state. You will learn how the HDL code is used for actual low-level hardware design implementation and they will also cover other practical aspects of digital hardware design, such as logic hazards, propagation delays and interfacing with other digital modules.
You will also cover techniques and tools that help you with developing your Verilog code including:
1- K-map simplification
2- Timing analysis
3- Synthesizable vs non-synthesizable code
4- Finite state machine (FSM) and state diagram
5- Writing testbench for verification
6- Code reuse and IP blocks
This part of the module comes with a set of workshops specifically arranged to teach you how to use designated tools for simulation and programming a FPGA device.

In the Programming Language section, you will learn about the architecture of microcontrollers and concept of embedded systems. ARM-based microcontroller as well as various ARM-compatible operating systems will be introduced. You will learn about different types of compilers and toolchain, and they will use the C++ language to program an ARM platform to program hardware to perform high-level tasks such as IO port access, serial connection, memory management, FSM, and string manipulation. An overview of C++ language will be given to you and advanced topics such as pointer and classes in C++ are taught. Controlling peripherals such as analogue to digital converter (ADC), ad digital to analogue converter (DAC), is introduced as well as data communication protocols such as I2C, and SPI. you will learn how to communicate with a PC application through a serial wired connection. The IoT technology and cloud services for microcontroller platforms are also introduced.
This part of the module comes with a set of workshops specifically arranged to teach you how to use designated tools for simulation and programming an ARM platform.

How will I learn on this module?

The module will be delivered via a combination of lectures, directed and independent learning and practical workshops as well as asynchronous pre-recorded videos.
Lectures will be interactive, incorporating engagement activities, e.g., group discussions and short conceptual exercises, to encourage participation, assess understanding, and reinforce key concepts. These sessions will deliver the knowledge and understanding required to apply the concept of programmable electronic solutions to real world problems. Regular workshops in HDL will provide you with the vital practical experience required to support hardware design concepts and develop the skills you will need to successfully complete an engineering level problem. You will also take part in a set of workshops arranged for the use of the Programming Language section, exposing you to the process of creating solutions to practical design problems using up-to-date methodologies and tools.

How will I be supported academically on this module?

All taught materials will be provided on the eLearning platform, including workshop exercises, past exam questions and examples. You will also have access to pre-recorded video of all topics and workshops. You will be encouraged to ask questions and fully engage during all contact sessions, including workshops.

What will I be expected to read on this module?

All modules at Northumbria include a range of reading materials that students are expected to engage with. Online reading lists (provided after enrolment) give you access to your reading material for your modules. The Library works in partnership with your module tutors to ensure you have access to the material that you need.

What will I be expected to achieve?

Knowledge & Understanding:
1. Applying appropriate codes of practice and industry standards, knowledge of programmable logic development equipment, software packages, and simulation tools (AHEP 4 C1, C10, M10)

Intellectual / Professional skills & abilities:
2. Designing and modelling digital hardware sub-systems using a Hardware Description Language (HDL); designing C++ code for a microcontroller (AHEP 4 C1, C6, M6)

Personal Values Attributes (Global / Cultural awareness, Ethics, Curiosity) (PVA):
3. Doing group work to develop teamwork skills and promote collaboration; using practical workshops skills to investigate complex problems; and providing the opportunity to innovate and show creativity by granting design freedom and research requirement within a solution approach (AHEP 4 C12, C16, M12)

How will I be assessed?

This module will be assessed as follows.
1- Coursework (CW): Project assignment 50% for LO1, LO2:
Here the students are asked to program a microcontroller platform to deliver a list of specifications as the project requirements.

2- Coursework (CW): 50% for LO3:
A group assignment in the form of a lab report is given to students during the workshop sessions. Each assignment consists of a number of tasks/work packages to be completed. The lab report will be based on HDL programming . Each member of the team will be given the opportunity to lead a specific task. The whole group will be assessed based on the common tasks of each assignment. At the same time, the individual will also be assessed based on specific tasks for each. The students are supposed to submit a report for each assignment within the given deadline period

Pre-requisite(s)

KD4008, KD4009 (level 4 Computer Programming and Digital Electronics and Communications respectively or equivalent knowledge)

Co-requisite(s)

None

Module abstract

In this module you will build on the fundamental digital and programming knowledge and design concepts studied at level 4. To cover ‘Programming Digital Systems’, the module includes two sections of i) HDL and ii) Programming Language, each implementing a digital system via a different approach. The first section ‘HDL’ uses register-transfer level (RTL) and primitive logic gates to design a digital system. First, you will learn about the design of a range of digital system building blocks, such as decoders, multiplexers, and synchronous counters. Then, you will be introduced to the use of Verilog hardware description language (HDL) and associated CAD tools, to enhance your understanding of how digital system design, verification, and implementation tasks are carried out by engineers in industry. You will learn these skills by looking at various practical applications and examples from the real world. As a higher-level design strategy, the ‘Programming Language’ section will utilise the processor available in microcontrollers. Here, the design is based on set of instruction to program the processing unit rather than designing the hardware blocks. Based on wide range of examples, the C++ programming language will be taught to program the microcontroller platforms. Additionally, designated tools will be used to simulate, debug, and develop C++ codes to implement given specifications. In this way you will learn how modern electronic systems can be programmed for both hardware and software-based solutions to meet a range of real-world applications.

Course info

UCAS Code H605

Credits 20

Level of Study Undergraduate

Mode of Study 4 years Full Time or 5 years with a placement (sandwich)/study abroad

Department Mathematics, Physics and Electrical Engineering

Location City Campus, Northumbria University

City Newcastle

Start September 2025 or September 2026

Fee Information

Module Information

All information is accurate at the time of sharing. 

Full time Courses are primarily delivered via on-campus face to face learning but could include elements of online learning. Most courses run as planned and as promoted on our website and via our marketing materials, but if there are any substantial changes (as determined by the Competition and Markets Authority) to a course or there is the potential that course may be withdrawn, we will notify all affected applicants as soon as possible with advice and guidance regarding their options. It is also important to be aware that optional modules listed on course pages may be subject to change depending on uptake numbers each year.  

Contact time is subject to increase or decrease in line with possible restrictions imposed by the government or the University in the interest of maintaining the health and safety and wellbeing of students, staff, and visitors if this is deemed necessary in future.

 

Useful Links

Find out about our distinctive approach at 
www.northumbria.ac.uk/exp

Admissions Terms and Conditions
northumbria.ac.uk/terms

Fees and Funding
northumbria.ac.uk/fees

Admissions Policy
northumbria.ac.uk/adpolicy

Admissions Complaints Policy
northumbria.ac.uk/complaints