ECEN5813
Principles of Embedded Software
University of Colorado at Boulder
Fall 2024
Course Logistics
Class Style: 3 Credit hour lecture course with projects
Workload: Estimated 10-15 hours per week
Lectures: T-TH 3:30 to 4:45 pm in ECCR 1B51
Prerequisites
This course requires that you have C programming experience. Although not strict prerequisites, courses offered in the department where this experience can be obtained include:
ECEN 1310 C-programming for ECE
Please do not enroll in the course if you cannot program basic C, as you will not be successful.
Instructor
Lalit Pandit: lalit.pandit@colorado.edu
Student Assistants
Trapti Balgi: trapti.balgi@colorado.edu
Krish Shah: krish.shah-1@colorado.edu
Mohit Chaudhari: mohit.chaudhari@colorado.edu
Course Description and Topics covered
Principles of Embedded Software is intended to prepare students for careers in professional embedded software development. The course provides students with the foundational software background needed for the Embedded Systems Engineering core curriculum, and as such, will focus on developing a strong understanding of the C programming language as it is used in professional embedded software. The course will break down the interactions between software and hardware; study the implications of the C programming language to the underlying architecture; provide C programming applications; and instill efficient, high performance, and robust software design techniques. Testing and debug practices will be developed and refined.
Specific topics to be covered include:
Resource constraints and real-time performance requirements
Development environment, including version control, configuration management, development kits, and cross-compiling and cross-debugging
Advanced C programming, with a specific focus on programming for resource-limited embedded computers
Software architecture
Hardware interfaces and processor selection
Peripherals and device drivers
Memory and memory management
Scheduling algorithms for embedded systems
Optimization for performance and power consumption
The course will maintain a strong hands-on focus, with biweekly coding assignments plus a final project.
Course Materials
Course materials include textbooks, papers, lecture slides, project guides, and other online materials.
Textbooks (CU bookstore/Online)
Making Embedded Systems: Design Patterns for Great Software 2nd Edition (O'Reilly) - Elecia White, 2024, ISBN-13: 978-1098151546
Embedded Systems Fundamentals with Arm Cortex-M based Microcontrollers: A Practical Approach Nucleo-F091RC Edition 2nd Edition (ARM Education Media UK) - Alexander G. Dean, 2021, ISBN-13: 978-1911531265
Making Embedded Systems: Design Patterns for Great Software 2nd Edition (O'Reilly) - Elecia White, 2024, ISBN-13: 978-1098151546
Embedded Systems Fundamentals with Arm Cortex-M based Microcontrollers: A Practical Approach Nucleo-F091RC Edition 2nd Edition (ARM Education Media UK) - Alexander G. Dean, 2021, ISBN-13: 978-1911531265
Course website
Course lectures, assignments, grades and announcements use Canvas.
The course also uses GitHub for course material and assignments.
Development Platform
For project development, PES students use the Nucleo-F091RC Development Platform built with the ARM Cortex M0 microprocessor. Students will be provided loaner board for the semester project work. They can also purchase(approximately $11) this board if they want to keep it long term. 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 PES 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.
Grading
The course grade will be based on homework assignments, quizzes, class participation, and one final project. The grade proportions are as follows:
Assignments: 60%
Final Project: 15%
Weekly Quizzes: 20%
Class Participation: 5%
Honor code
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."