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- Using built-in simulation task/function
6- IP blocks
7- Icarus Verilog
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), digital to analogue converter (DAC), WiFi, X-Bee is introduced as well as data communication protocols such as I2C, and SPI. you will learn how to communicate with a PC application based on Python, Matlab, or LabVIEW through wired connection. The IoT technology and cloud services for microcontroller platforms are also introduced and you will become familiar with AWS and Azure.
The You will also cover techniques and tools that help you with developing your C++ code including:
1- Debugging
2- Linter
3- QEMU
4- PlatformIO
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.

In the PCB Design section, you will learn how to manifest your digital system concepts into an actual PCB. You will start by learning about design level and component level considerations. Then they will learn how to find appropriate component for the board and create the schematic to describe the circuit netlist. The component footprints are introduced, and you learn how to create the PCB layout and route it. Next, they are taught how to prepare your design for manufacturing and lastly what are the required post-manufacturing tasks.
You will also cover techniques and tools that help you with developing your PCB design including:
1- High-speed design tips
2- Track calculation
3- EMI and EMC
This part of the module comes with a set of workshops specifically arranged to teach you how to use designated tools for building a schematic and PCB in software environment.

In the Code Development section, you will learn how to develop a code from a concept. You will get familiar with the concept of structured programming and code hierarchy and learn about techniques to produce clean code. Then the concepts of test code, debugging, and version control are introduced, and tips are given on how to perform code maintenance. At the end tyou will learn how to create a customised library for the digital board that they designed in PCB Design section.
You will also cover techniques and tools that help you with developing your code including:
1- Flowchart
2- UML
3- Git
This part of the module comes with a set of workshops specifically arranged to teach you how to use designated tools for developing a library code.

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 used to 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 Programming Language section, exposing you to the process of creating solutions to practical design problems using up-to-date methodologies and tools. Additionally, you will have hands-on experience to learn PCB design as well as code development steps to create a product from scratch by going through project-based workshops.

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; and knowledge of designing bespoke digital board and code library (AHEP 4 C1, C10, M10 )

Intellectual / Professional skills & abilities:
2. Designing and modeling digital hardware sub-systems using a Hardware Description Language (HDL); designing C++ code for a microcontroller ; and designing a customised electronic board and developing dedicated code to operate on the board. (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 60% for LO1, LO2:
Here the students are asked to program a programmable digital system using HDL and program a microcontroller platform to deliver a list of specifications as the project requirements.
2- Coursework (CW): 40% for LO3:

A group assignments is given to a students during the workshop sessions. Each assignment consists of a number of tasks/work packages to be completed. Each member of the team will 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

IIn 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 exanples, 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.
In the ‘Designing Digital Systems’ part, you will learn two essential concepts of i) designing an electronic board and ii) developing a code for digital applications. This part will prepare you for problems, where you need to design the actual digital circuit board in addition to writing a code for it. This part of the module is project based, and you will learn how to build an actual PCB from a design concept using CAD tools. The steps from creating a schematic to preparing the PCB files for manufacturing are explained and you will also learn how to apply required post-manufacturing knowledge including verification, test, and upgrade activities to real world problems. In the code development section, you learn how to develop your code in a project to run on the PCB. The concepts such as structured programming, test codes, version control, and code maintenance are covered and using practical examples you will learn how to apply them to real world problems.

By the end of the module, you will have learned how to design a digital system PCB and how to write a code for it. In summary the module KD5065 Programming and Designing Digital Systems includes the following topics:
1- Programming Digital Systems
a. HDL
b. Programming Language
2- Designing Digital Systems
a. PCB Design
b. Code Development

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

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