Circuit board Photo Courtesy of Michelle Meiklejohn


Welcome to CSCI 1600!!

Embedded and Real Time Software is a course about creating software for embedded systems where real-time constraints might be involved. Most processors today are in embedded systems. Cars often involve hundreds or more networked processors. Computers are embedded in everything from thermostats to toasters. Many safety-critical systems, from airplanes to nuclear power plants, involve real-time embedded systems.

The course itself will teach a combination of theory and practice. There will be a semester-long project which can be done individually or in teams. There will be two programming assignments, one emphasizing embedded software and one emphasizing real-time software. The course will also cover a significant amount of the underlying theory of real time and embedded software including modeling, scheduling, and verification. There may be homework assignments covering these and they will be covered on the final exam.

By the end of the course you should have the satisfaction of having built an actual embedded system and you will be familiar with the methods, techniques, and terminologies associated with real time and embedded software. You will also learn about hardware (real hardware that involves things like resisters and capacitors as well as logic circuits), operating systems, and other related topics.

The first lecture will be on Thursday, September 5 at 9AM in CIT 477. See you there!

Course Mechanics

The class will meet Tuesday and Thursday from 9 to 10:20 in CIT 477. There is also a lab session on Wednesday at CIT 477.

The text for the course is Principles of Cyber-Physical Systems by Rajeev Alur. This text is available both at the book store and and from various sources either physically or electronically.

We will be going through most of the text. However, the text is more oriented toward a theoretical course while we are going to be teaching a more practical one. In order to let you start on the final project and the programming assignments early in the semester. Other than this, we will mostly go through the text sequentially. Assignments from the problems in the text will be used as appropriate and if needed. (Even if they are not assigned, you are encouraged to look at and understand the assignments since being able to complete them will be helpful when taking the final.) The various readings are noted in the schedule as are the topics, assignment due dates, and project due dates. All items here are subject to change.

We will also cover some material that is outside of the text. Much of this will be practical (e.g. how to use an Arduino; reading and understanding circuit diagrams), but some will be theoretical material not in the text that is useful for understanding embedded systems (e.g. queuing theory and fault tolerance).


It is suggested that you purchase the following hardware components as a starting point for the labs and projects. Links to each item are provided as examples—you do not need to purchase the exact parts listed here, as long as you have something similar.

  • An Arduino Uno (Rev 3): Amazon
  • A USB A to B-type cable (if your Arduino does not come with one): Amazon
  • An 830-point breadboard: Amazon

If purchasing parts presents some difficulty, we have a collection of parts that we are willing to loan. If you have any questions about purchasing components, please feel free to contact the TA.