General Information

Welcome to Embedded Systems!

This course was last offered in Fall 2021. This page will be updated shortly before it is offered again.

What is this course about?

Introduction to computers that are embedded in a variety of devices and systems that we see in our everyday life, ranging from cars, airplanes and robots, to consumer electronics devices like washing machines, microwave ovens and air-conditioners. The goal will be to understand how these embedded computers are different from traditional computers, in terms of how they are designed, programmed and verified for their correctness.

Some more details …

Embedded computers are much more omnipresent than traditional computers like desktops or laptops. In fact, more than 99% of processors that exist in the world are in such embedded systems. These drive devices ranging from washing machines and microwave ovens, to cars, airplanes, robots and medical devices. While embedded computers share many similarities with traditional computers – e.g., they have processors and memory and execute programs – they also have significant differences. Unlike regular computers, embedded computer systems always have dedicated functions that allow optimizations that are not possible in general-purpose computers. This, along with constraints on size, weight, and power consumption, result in embedded computers being designed in a very different manner. Often, they are used in safety-critical systems – like cars, airplanes, and medical devices – and thereby require timing and correctness guarantees that are not required or even possible in general-purpose computers and software. Again, because of these requirements, embedded systems and software are developed very differently and are subjected to different forms of validation and verification. The goal of this course is to understand these differences and get introduced to design flows and design tools for embedded systems and software development.

Target Audience

This will be an introductory course that will require no prior background in embedded systems. But a general understanding of computers and how they function will be assumed. It will also be assumed that the attendees also have some programming experience; the specific language does not matter. This course is targeted towards senior undergraduate students and graduate students of Computer Science. Being an introductory course with the aim of introducing the attendees to a broad variety of topics in embedded systems and software, the contents will be quite varied. They will range across processor architectures, programming languages, operating systems, program analysis, and power management, but all in the context of embedded systems.


The course requires basic understanding of computers, along with some programming experience.

Goals and Key Learning Objectives

After completion of this course, students should be able to list and understand the key differences between general purpose and embedded computers. They would know how these differences enable optimizations that are not possible in general purpose computers. They would also know how design flows and software development for embedded computers are different from those in general purpose computers, and what kind of programming languages are more suited for the former. They would also get an exposure to emerging research topics in embedded systems, e.g., from domains like energy, smart buildings, medical devices, and automotive.

Course Requirements

  • Class participation and homework: Credits will be given for submitted homework and for genuine attempt. Solutions will be discussed in the class and will be published.
  • Mid-term exams: There will be three mid-term examinations and the two best scores will count towards the final grade.
  • Final exam: There will be a comprehensive final examination at the end of the course. It will be closed book. Calculators (but no computers) will be allowed.

COMP 590 versus 790

This course is offered both as a 590 and also as a 790. Both the offerings have the same contents, lectures, homework assignments and examinations. The 790 version has an additional term paper requirement that is not in the 590 version.

Grading criteria (590 version)

  • 20% in class participation (successfully submitting homework assignments)
  • 25% each taken from the best two (out of the three) mid-term exams
  • 30% final exam

Grading criteria (790 version)

  • 20% in class participation (successfully submitting homework assignments)
  • 20% each taken from the best two (out of the three) mid-term exams
  • 10% term paper
  • 30% final exam

Course policies

Attendance and participation: There are no suitable textbooks that can serve as substitutes to the discussions planned during class. Hence, the students will benefit from attending all the lectures, submitting the homework assignments and participating in the discussions. No attendance will however be recorded. But those submitting the homework assignments will receive credits.

Assignments: There will be no graded assignments in this course. But submitting the homework assignments will fetch credits. The solutions will be published and discussed in the class.

In-class and final exams: All exams will be closed book and closed notes. The use of a calculator is allowed. The calculator has to be approved by the instructor prior to the exam. The duration of the exams will be announced in advance.

Term paper (for 790): Students will be required to identify a topic related to this course that is more advanced than the material covered in the lectures. They will be given 1-2 research papers on this topic as a starting point, but will have to search and identify more papers and study them. They will then write and submit a term paper on this topic, summarizing the state-of-the-art, and outlining what in their opinion are open problems and how could they possibly be addressed?

Course Materials

All course materials will be available via Sakai.


Please contact Samarjit Chakraborty if you have any questions.