FPGA computing systems: A Bird’s Eye View (Coursera)

Offered by Politecnico di Milano,
FPGA computing systems: A Bird’s Eye View (Coursera)

Nowadays the complexity of computing systems is skyrocketing. Programmers have to deal with extremely powerful computing systems that take time and considerable skills to be instructed to perform at their best. It is clear that it is not feasible to rely on human intervention to tune a system: conditions change frequently, rapidly, and unpredictably. It would be desirable to have the system automatically adapt to the mutating environment.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

This course analyzes the stated problem, embraces a radically new approach, and it introduces how software and hardware systems can be adjusted during execution. By doing this, we are going to introduce the Field Programmable Gate Arrays (FPGA) technologies and how they can be (re)configured.

What You Will Learn

  • You will learn to give examples of different kinds of reconfigurations
  • You will able to define reconfigurable computing, to explain the rationale behind an FPGA-based reconfigurable computing system
  • You will learn how an FPGA can be configured and what a bitstream is used for.
  • You will learn to design a circuit on an FPGA and how a circuit can be implemented on an FPGA.

Syllabus

WEEK 1
A Bird's Eye View on Adaptive Computing Systems
Nowadays the complexity of computing systems is skyrocketing. Programmers have to deal with extremely powerful computing systems that take time and considerable skills to be instructed to perform at their best. It is clear that it is not feasible to rely on human intervention to tune a system: conditions change frequently, rapidly, and unpredictably. It would be desirable to have the system automatically adapt to the mutating environment. This module analyzes the stated problem, embraces a radically new approach, and it introduces how software and hardware systems ca ben adjusted during execution. By doing this, we are going to introduce the Field Programmable Gate Arrays (FPGA) technologies and how they can be (re)configured.

WEEK 2
An introduction to Reconfigurable Computing
Traditionally, computing was classified into General-Purpose Computing performed by a General-Purpose Processor (GPP) and Application-Specific Computing performed by an Application-Specific Integrated Circuit (ASIC). As a trade-off between the two extreme characteristics of GPP and ASIC, reconfigurable computing has combined the advantages of both. On one hand reconfigurable computing can have better performance with respect to a software implementation but paying this in terms of time to implement. On the other hand a reconfigurable device can be used to design a system without requiring the same design time and complexity compared to a full custom solution but being beaten in terms of performance. The main advantage of a reconfigurable system is its high flexibility, while its main disadvantage is the lack of a standard computing model. In this module we are presenting a first definition of reconfigurable computing, describing the rationale behind it and introducing how this field has been influenced by the introduction of the FPGAs.

WEEK 3
Reconfigurable Computing and FPGAs
From the mid-1980s, reconfigurable computing has become a popular field due to the FPGA technology progress. An FPGA is a semiconductor device containing programmable logic components and programmable interconnects but no instruction fetch at run time, that is, FPGAs do not have a program counter. In most FPGAs, the logic components can be programmed to duplicate the functionality of basic logic gates or functional Intellectual Properties (IPs). FPGAs also include memory elements composed of simple flip-flops or more complex blocks of memories. Hence, FPGA has made possible the dynamic execution and configuration of both hardware and software on a single chip. This module provides a detailed description of FPGA technologies starting from a general description down to the discussion on the low-level configuration details of these devices, to the bitstream composition and the description of the configuration registers.

WEEK 4
Examples on how to configure an FPGA
FPGA design tools must provide a design environment based on digital design concepts and components (gates, flip-flops, MUXs, etc.). They must hide the complexities of placement, routing and bitstream generation from the user. This module is not going through these steps in details, an entire course will be needed just for this, but it is important at least to have an idea of what it is happening behind the scene to better understand the complexity of the processes carried out by the tools you are going to use. Within this context, this module guides you through a simple example, which is abstracting the complexity of the underlying FPGA, starting from the description of the circuit you may be willing to implement to the bitstream used to configure the FPGA.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Teach kids computing: Computing Systems and Networks (edX) EdX
Raspberry Pi Foundation

Teach kids computing: Computing Systems and Networks (edX)

Increase your knowledge of computing systems and networks, and plan how you will teach young children about this topic, in this course from the Raspberry Pi Foundation. Whether standalone, connected in a local network, or plugged into the internet, computers are central to many everyday tasks and routines. It's important for young people to develop their knowledge of how these devices work, so that they can appreciate the impact of computers and networks on the world around them.

Self Paced
Self-Paced
Introduction to GitHub Copilot (Coursera) Coursera
Microsoft

Introduction to GitHub Copilot (Coursera)

Join our course led by Gabe Leon de Mattos, a seasoned developer and leader. You will learn how to use GitHub Copilot. This course is for developers who want to be more productive with GitHub Copilot. You'll learn how to use GitHub Copilot in real projects. The course is hands-on and lasts 90 minutes. You'll set up Copilot, write better prompts, and work Copilot into your coding routine.

Nov 9th 2026
4 Weeks
Developing FPGA-accelerated cloud applications with SDAccel: Practice (POK) Polimi OPEN KNOWLEDGE
Politecnico di Milano

Developing FPGA-accelerated cloud applications with SDAccel: Practice (POK)

This course, which is the fourth one of a “series”, is for anyone passionate about practicing how to develop FPGA-accelerated applications with SDAccel. This course will present several scenarios where the workloads require more performance than can be obtained even by using the fastest CPUs. This scenario is turning cloud and data center architectures toward accelerated computing.

Available
5-12 Weeks
Teaching Computing Systems and Networks to 5- to 11-year-olds (FutureLearn) FutureLearn
Raspberry Pi Foundation,National Centre for Computing Education

Teaching Computing Systems and Networks to 5- to 11-year-olds (FutureLearn)

Increase your knowledge of "computing systems & networks" and plan how you will teach young children about this topic. Help young children understand the Computing Systems and Networks around them. On this three-week course you’ll explore how you can build up young learners’ knowledge in an age-appropriate manner. You’ll start by thinking about how you can to help your learners recognise information technology - and how computers process an input to give an output.

Jan 2nd 2023
3 Weeks
Design Computing: 3D Modeling in Rhinoceros with Python/Rhinoscript (Coursera) Coursera
University of Michigan

Design Computing: 3D Modeling in Rhinoceros with Python/Rhinoscript (Coursera)

Why should a designer learn to code? As our world is increasingly impacted by the use of algorithms, designers must learn how to use and create design computing programs. Designers must go beyond the narrowly focused use of computers in the automation of simple drafting/modeling tasks and instead explore the extraordinary potential digitalization holds for design culture/practice.

Nov 9th 2026
5-12 Weeks
Hardware Description Languages for FPGA Design (Coursera) Coursera
University of Colorado Boulder

Hardware Description Languages for FPGA Design (Coursera)

Hardware Description Languages for Logic Design enables students to design circuits using VHDL and Verilog, the most widespread design methods for FPGA Design. It uses natural learning processes to make learning the languages easy. Simple first examples are presented, then language rules and syntax, followed by more complex examples, and then finally use of test bench simulations to verify correctness of the designs.

Oct 19th 2026
4 Weeks
Diseño de Videojuegos: Una introducción (Coursera) Coursera
Universidad de los Andes

Diseño de Videojuegos: Una introducción (Coursera)

¡Bienvenidos a Diseño de videojuegos: una introducción! El diseño de videojuegos es el arte de aplicar conceptos de diseño para crear la interacción entre jugadores. Es un ejercicio mental que requiere varios conocimientos en diferentes campos y la habilidad de comunicar qué es lo que se quiere lograr. Este curso hace parte del Programa desarrollo y diseño de videojuegos, de la Universidad de lo Andes, Colombia.

Nov 16th 2026
4 Weeks
Designing, Running, and Analyzing Experiments (Coursera) Coursera
University of California, San Diego

Designing, Running, and Analyzing Experiments (Coursera)

You may never be sure whether you have an effective user experience until you have tested it with users. In this course, you’ll learn how to design user-centered experiments, how to run such experiments, and how to analyze data from these experiments in order to evaluate and validate user experiences. You will work through real-world examples of experiments from the fields of UX, IxD, and HCI, understanding issues in experiment design and analysis.

Nov 2nd 2026
5-12 Weeks