Embedded Systems Engineering at CU-Boulder
By 2025 it is estimated that some 73 billion embedded devices will be connected to the Internet of Things (IoT), which is rapidly becoming the Internet of Everything! How will users interact with these devices? How will the devices connect to each other, to the Internet, and to the Cloud? If you're pursuing a career in embedded systems engineering, you'll need to address these interface challenges. The Embedded Interface Design course will help you develop unique marketable skills and valuable knowledge of the design considerations, development practices, and industry directions that support human-computer interaction (HCI) and machine-to-machine (M2M) communications for today's embedded devices. The course also provides hands-on project experience using current tools and approaches to create rapid prototypes of HCI, M2M, IoT, and Cloud interfaces for typical embedded devices, enabling you to develop your own innovative and effective interfaces in your future designs.
B. Spriggs Office: by Zoom appointment
Lectures: T/Th 5:00 PM - 6:15 PM ECCR 105.
Prerequisites: Knowledge of programming and basic computer architecture is required. Corresponding CU Boulder courses are ECEN 2120/2350 and ECEN 1030/1310/CSCI 1300. Python is the primary language for development in this class, other tools, libraries, and languages will be introduced for prototyping projects; students are expected to be able to quickly learn and apply new software languages and tools.
TA/SA: To Be Announced
The objective of this course is to provide an understanding of interface design approaches and architectures for creating embedded system prototypes and products. For both machine and user interfaces, we will look at the best practices for the interface design process, including considerations of the characteristics of the information to be transferred between devices or between a device and a user. Projects will leverage the now standard Raspberry Pi single-board computer (SBC) providing a strong foundation for exploring many elements of interface design using the embedded Linux operating system, standard design languages such as Python, Node.js, and QT, and a number of standard M2M/IoT messaging and connection protocols and related libraries and tools, including Amazon Web Services.
Topics will include:
Key considerations for human-computer interaction (HCI)
User Interface (UI) and User eXperience (UX) design best practices, tools, and processes
Design considerations for embedded device user interfaces
Embedded system user interface hardware elements and software/server tool alternatives
Design considerations for embedded device machine interfaces
Common protocols and architecture for Machine to Machine (M2M) communication
Common protocols and architectures for Cloud and Internet of Things (IoT) communication
Rapid prototyping approaches for embedded device interfaces and systems
Leveraging cloud-based frameworks for IoT from AWS or other cloud vendors
Leveraging open source tools and languages
Leveraging single board computers (SBC), microprocessors, sensors, and other off the shelf elements for hardware
Course materials include textbooks, papers, lecture slides, project guides, and other online materials and references.
Current course text: User Experience Team of One, by Leah Buley, 2013, Rosenfeld
Development Platform - EID uses Raspberry Pi 3 single board computers along with a variety of sensors, etc. On-campus students will be provided with the development platform and parts. If you are attending remotely, you may need to purchase a Raspberry Pi 3 running the Linux-based Raspberry Pi OS, or you may explore using virtual machines using Debian with the Raspberry Pi Desktop. This will be detailed for the class at the beginning of the semester.
PC/Laptop Requirements - A PC (Mac, Windows, or Linux) will be needed for development work. Some portions of EID may be presented via web conferences, and some interactions may require you to have access to a web camera and microphone. A reliable Internet connection will also be needed.
Expect to spend 2.5 hours per week in class, and likely another 3 to 8 hours per week for study, quizzes, and class projects. The course grade will be based on in-class participation, exercise assignments and quizzes, course projects, and exams. Full details will be provided in the class syllabus. The grade proportions are as follows:
20% Quizzes, assignments, attendance & participation
60% Course projects
20% Exams
A complete description of the honor code can be found here.
To summarize: "Violations of the Honor Code are acts of academic dishonesty and include but are not limited to plagiarism, cheating, fabrication, aid of academic dishonesty, lying to course instructors, lying to representatives of the Honor Code, bribery or threats pertaining to academic matters, or an attempt to do any of the aforementioned violations."