Assignment Learning Outcomes

These are the expected learning outcomes for each of the assignments. They are subject to change for future assignments.

As1: Reaction Game (Hello-World)

  • Setup host development environment
    • Linux skills to configure host for cross-compile
    • Linux skills to access target from host (SSH & serial)
    • Linux skills to access host's files from target (NFS)
    • Efficiently write, compile, deploy and test a C program
  • Target customization
    • Create script to easily mount NFS
    • Change Linux welcome message for SSH
    • Change device hostname
    • Run program on log-in
  • Programming skills and tools
    • Write a C program to coordinate hardware inputs, and hardware outputs
    • Write a C program to manage time: track time passing, pause for a duration of time
    • Write multi-file C program with separation between application and hardware-specific code
    • Use CMake to organize and cross-compile a C application
  • Embedded system: Access hardware
    • Use LEDs via the Linux interface.
    • Use I2C to communicate with ADC chip.
    • Interact with ADC chip to read joystick and process readings.

As2: Light Dip (Linux)

  • Programming skills and tools
    • Create application with modular architecture; provide clear high-level module interfaces which encapsulate implementation details inside cohesive modules
    • Write multithreaded application with thread safe memory access
    • Dynamically allocate, use, and free memory with pointers
    • Use Valgrind to check for memory leaks, invalid memory access, and unfreed memory on exit
    • Use network to support receiving commands and replying to commands
    • Correct use of static functions for internally linked functions
    • Write clean C (or C++/Rust) code: consistent naming, clear formatting, easy to read logic
    • Cross-debugging a simple program using GNU Debugger's command-line
  • Embedded system: Analysis and design skills
    • Design a state machine to handle a rotary encoder
    • Analyze real-time data (detect light-dips)
    • Analyze timing jitter in different real-time parts of the application
    • Understand use of a light detector
  • Embedded system: Linux
    • Configure I2C devices
    • Configure A2D devices
    • Configure SPI devices
  • Embedded system: Access hardware
    • Implement code to write text to the LCD
    • Implement and debug a state machine to handle a rotary encoder
    • Read A2D sensors (light intensity)
    • Control I2C device (14-seg display)

Assignment Learning Outcomes