CSCI 4415 Syllabus

The purpose of this course is to engage computer science undergraduates and graduates with hardware and embedded systems. While CS students get a strong conceptual overview of systems and hardware in various organization and architecture courses, many students have never experienced actually working with hardware. This course will focus on hands-on projects (through homework, labs and final project) involving both hardware and low-level software. This course will discuss the design issues in an embedded system and the technologies needed to support such systems (with the focus on the software aspects). In addition, we will also cover a gamut of real-time embedded systems-related topics. The class can be taken for graduate and undergraduate credit, the work load being scaled appropriately. Updated for Spring 2009.


Office hours

  • The hour just before class in the classroom
  • By appointment

Class time/place

  • Tuesdays 6:10-8:40pm (note the new times), Tompkins 211


  • Designing Embedded Hardware and An Embedded Software Primer are both required texts.
  • C Programming Language is suggested (optional). You should consider purchasing this book if you have limited experience with C programming or you don't have a C programming reference book. Or read some of these onlne references (PDF so you can load on your Kindle, iPad, Android tablet, or smartphone for ready access whenever you need them).


  • C programming. Students should be able to program in basic C (you should know everything in the "Essential C" reference).
  • Computer Architecture


  • Labs – 40%
  • Class Participation & outstanding work – 10%
  • Class Presentation – 10%
  • Final Project – 40%
  • This course has no midterm or final examination requirements
  • Review the class schedule for due dates.

Useful things to remember

Class Topics

  • Intro to Embedded Systems
  • Intro to labs
  • Hardware fundamentals for the software engineer
  • Microprocessors & microcontrollers
  • General purpose IO
  • Interrupts
  • Z8 reset, stop mode, low-power mode
  • Assembly Language, Registers, Memory
  • Debugging embedded systems
  • Firmware
  • Timers
  • Watchdog Timer
  • Software Architecture for embedded systems
  • Serial communications: I2C, SPI IrDA, Uarts
  • Analog IO
  • Real-Time systems
  • Basics of embedded hardware
  • Operating System services
  • Development Tools
  • Embedded Linux, Embedded Java
  • Networked embedded systems