Credits: 3

Semesters Offered

Spring 2021, Spring 2022

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.