Introducing USB technology into the undergraduate CS curriculum

The Universal Serial Bus (USB) has become a standard way to attach mainstream products like cameras, disk drives and keyboards to hosts. Historically, developing firmware and software for such devices has been the realm of electrical and computer engineers due to the hardware orientation of the software development process. Introducing this technology to Computer Science (CS) students has been limited due to the steep learning curve associated with understanding the hardware required for implementing USB and the complexity and cost associated with providing an environment that students may use to experiment with the technology. In this paper, an easily accessible development environment and sample course modules are discussed that are applicable to undergraduate CS students and their course of study.