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:

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:

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 

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:

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."