Course is finished

Energy Efficient Programming

Offered by Prof. Dr. Vesselin Iossifov, Nils König

An error occurred while loading the video player, or it takes a long time to initialize. You can try clearing your browser cache. Please try again later and contact the helpdesk if the problem persists.

Efficiency in computer science often refers to the runtime or memory usage, that a certain algorithm needs to produce an output. However, efficiency can also describe the amount of energy, that is consumed by the hardware during the runtime of an algorithm.

This course explains the relevant computer architecture components, as well as different coding techniques, that allow computer scientists to design and program energy efficient algorithms. Participants will learn how intrinsic functions work and how they can be applied to an algorithm to reduce its energy consumption. In addition, the course presents a hands-on approach to measuring energy consumption of programs using the Intel VTune Profiler tool. In contrast to the existing clean-IT courses on openHPI, this course provides a deeper dive into specific, energy efficient, architecture coding techniques.

Self-paced since April 26, 2023
Language: English
Advanced, Programming

Course information

In response to the growing energy consumption of software programs and digital technologies, energy efficiency is on the rise as a key metric for software development. However, computer scientists and developers often lack concrete, applicable tools, that help reduce an algorithm's energy consumption.

This course is aimed at students, researchers, or developers that work or study in computer science or a related field and want to learn more about energy efficient coding techniques.

In this course, you will learn:

  • The basic concepts of computer functionality and architecture, such as clock cycles, parallelism, execution pipelines, and superscalar architectures.
  • How to use coding techniques in C and assembly, to significantly minimize the number of instructions executed by the CPU
  • About intrinsics and macros, and how you can apply them to any algorithm to increase energy efficiency

The course consists of educational videos, multiple choice tests, and multiple, detailed coding examples. Depending on your prior knowledge and engagement with the coding material, you will spend 5-10 hours per week.

Prequisite knowledge for this course is fundamental programming experience in C, as well as basic knowledge about computer architecture concepts and functionality. Experience with an IDE (preferably Microsoft Visual Studio) is recommended to evaluate the programming examples.

You must achieve at least 50% of the points for a record of achievement. By accessing at least 50% of the resources, you will already receive a confirmation of participation.

What you'll learn

  • Understand the basic concepts of computer functionality and architecture
  • Learn how to use coding techniques in C and assembly, to significantly minimize the number of instructions executed by the CPU
  • Learn about intrinsics and macros, and how to apply them to any algorithm to increase its energy efficiency

Who this course is for

  • Students, researchers, or developers that work or study in computer science or a related field and want to learn more about energy efficient coding techniques

Course contents

  • Intro:

    In this section, you'll get to know the course lecturer, Prof. Vesselin Iossifov. We'll also introduce the concepts and contents, that are used and covered in this course.
  • Week 1 - Motivation, Concepts, and Architecture:

    The first week of the course presents all the basic knowledge you need to know, including: The motivation for energy efficient programming, computer functionality and architecture basics, and an introduction into x86-programming.
  • Week 2 - Coding techniques for energy efficient programming:

    The second week dives deep into various coding techniques, that allow energy efficient programming of superscalar CPUs, including: Coding techniques in C and Assembler, as well as Streaming Instruction Extensions (SSE) and vector intrinsics.
  • I like, I wish:

    This survey will be unlocked after the course has finished and provides the opportunity to leave detailed feedback on the course.

Enroll me for this course

The course is free. Just register for an account on openHPI and take the course!
Enroll me now

Learners

Current
Today
1,549
Course End
Apr 26, 2023
1,157
Course Start
Apr 12, 2023
979

Rating

This course was rated with 3.67 stars in average from 94 votes.

Certificate Requirements

  • Gain a Record of Achievement by earning at least 50% of the maximum number of points from all graded assignments.
  • Gain a Confirmation of Participation by completing at least 50% of the course material.
  • Gain an Open Badge by completing the course.

Find out more in the certificate guidelines.

This course is offered by

Prof. Dr. Vesselin Iossifov

Prof. Vesselin Iossifov holds a Dipl.-Ing. degree in Technical Cybernetics from the TH Ilmenau, Germany, which he earned in 1977. He also earned a Dr.-Ing. degree in Computer Engineering from the same university in 1982, focusing on Real Time Operating Systems.

In 1990, he received the Facultas Docendi in Parallel Computer Architectures from TH Ilmenau, and also completed his Habilitation thesis in Parallel Computer Architectures at the Institute of Mathematics and Computer Sciences in Sofia, Bulgaria.

From 1994 to 2018, Iossifov worked as a Professor of Microcomputer Technology at the University of Applied Sciences in Berlin, Germany. During the period from 1999 to 2006, he also served as a Visiting Professor in Network Centric Computing at the Universities of Liverpool and Reading in the UK. Additionally, he has been a member of the Executive Board of the VDE Berlin-Brandenburg organization since 2016.

Nils König

Nils König is a student in the Bachelor course IT-Systems-Engineering at the Hasso-Plattner-Institute. He has been working as a student assistant for the HPI clean-IT Initiative since 2021.

Apart from his studies, he has been a member and speaker of the Sustainability Club and the clean-IT Club at HPI. He has worked on and moderated multiple courses on openHPI, mainly the ones found in the clean-IT Channel.