This course introduces C as a portable high-level language for embedded systems programming. Topics include C language syntax, variables, and pointers. C functions are covered with special attention to passing by value versus passing by reference. Specialized embedded system topics include using pointers to interact with microcontroller subsystems, creating interrupts in C, and the C/assembly interface. Designing modular applications by use of multiple files is emphasized throughout the course. Laboratory exercises employ peripheral subsystems as well as reinforce other key topics.

This website serves as the official syllabus. Use the links at the top of the page to learn about:


Students enrolled in CE2811 must have successfully passed Embedded Systems 1 (CE2800) and Software Development 1 (SE1011). Important topics covered in the prerequisite classes include:


Engineering students study embedded systems because computers serve as the brain in thousands of products that make daily life easier and more interesting. Most people probably associate the word computer with either a desktop personal computer or a laptop computer. After all, the print and visual media bombard the average citizen with advertisements for these types of computers and the average household owns at least one. But, desktop PCs and laptops represent only a small segment of the computer systems in use today. In fact, computers are vital in products ranging from kitchen toasters to sophisticated military weaponry. These embedded computer systems are everywhere! For example: families often own these embedded systems:

Each of these computers is a complex system of electrical hardware executing software or firmware applications. You will be the engineers creating similar computers that will continue to change human life during the twenty-first century!