1. Description of the courses
Courses EECE 2160 - Regular and EECE 2160 - Hardware-Intensive present fundamental concepts of Computer Engineering from a comprehensive, full-stack, software-hardware design perspective. The courses explore scripting languages, high-level programming, Unix/Linux operating systems, device drivers, software-hardware interfaces, hardware controllers, and digital circuit design. Both courses are taught in fully equipped labs, where theoretical concepts are accompanied by hands-on experiments on a full-system ZedBoard platform, featuring a programmable logic module, an ARM processor, and an Ubuntu distribution of the Linux operating system. Students will design custom creative software-hybrid designs interacting with a variety of hardware devices connected to the ZedBoard, including LEDs, push buttons, switches, OLED screens, a Wiimote, and a remote-controlled robotic arm.
Students must choose between EECE 2160 - Regular and EECE 2160 - Hardware-Intensive, mostly based on their programming background. EECE 2160 - Regular includes programming concepts and practice, focusing on dynamic data structures and object-oriented programming. This course also introduces Boolean algebra and information representation, as basic concepts to enable the design of hardware circuits.
On the other hand, EECE 2160 - Hardware-Intensive is specifically tailored for students with an established programming background. It relies upon experience in object-oriented programming, and gives students with this background the opportunity to delve deeper into the hardware side of an embedded platform. This course also relies on familiarity with basic Boolean algebra and digital information representation.