Credits: 3

Semesters Offered

Spring 2021, Spring 2022, Spring 2023, Spring 2024

Learning Objectives

Students will gain experience in embedded software system design with an emphasis on handling important characteristics that are common in embedded applications -- resource constraints (limited resources for processing and limited memory), and real-time interfacing to the physical world. Topics that will be covered and integrated into the students design experience include embedded processor architectures, object-oriented design, model-based design, software testing, version control, real-time processing, embedded signal processing, and concurrent programming



Topics Covered

  • Embedded software design flow
  • Object-oriented software design
  • UNIX/Linux concepts
  • Unit testing
  • Dataflow modeling
  • Embedded image processing
  • Machine learning for image analysis
  • Collaborative software development using version control systems

Learning Outcomes

  • Design and implement embedded software using C++ and shell scripts.
  • Understand and apply test-driven design methodologies for software development.
  • Apply Linux-based tools to design, implement, and debug embedded software.
  • Analyze design decisions to understand and optimize design trade-offs in complex projects.
  • Utilize teamwork and communication skills to formulate and execute a project plan and software system design with other team members.
  • Improve presentation and technical writing skills through oral presentations and written reports.