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)