Assignments#
Overview#
Assignments in ENPM605 are programming exercises designed to reinforce the concepts covered in lectures. They come in two forms: individual assignments, where you work alone to demonstrate your understanding of core Python concepts, and team projects, where you collaborate with your peers to build larger robotics applications. Each assignment builds a complete Python application that applies core language features to a robotics-related problem. You will practice writing clean, modular, well-documented code while following professional software engineering standards.
Guidelines#
Individual assignments must be completed independently. Collaboration and AI tools are not permitted.
Team projects are completed in assigned groups. AI tools are permitted with proper documentation of their use.
Follow the project structure specified in each assignment. Submissions that do not match the required structure will receive deductions.
All code must include type hints, Google-style docstrings, and inline comments for non-obvious logic.
Ensure Ruff is enabled in VS Code and that no linting errors or warnings appear in your Python files before submitting.
Review the Pre-Submission Checklist included in each assignment before uploading to Canvas.
Late submissions are penalized at 10% per calendar day, up to 3 days. Submissions beyond 3 days receive a zero.
Team projects include peer reviews. Your final grade on team deliverables is based on 60% assignment grade and 40% peer review scores.
Schedule#
Assignment |
Title |
Summary |
|---|---|---|
RWA 1 |
Python Fundamentals |
Individual assignment. Apply core Python concepts (variables, control flow, functions, data structures) to solve a set of programming exercises. |
RWA 2 |
Object-Oriented Programming |
Individual assignment. Design and implement Python classes using OOP principles (encapsulation, inheritance, polymorphism, composition) to model a robotics-related domain. |
GP 1 |
ROS 2 Pub/Sub System |
Group project. Build a multi-node ROS 2 system with publishers, subscribers, custom messages, parameters, and a launch file. |
GP 2 |
Action-Based Goal Navigation |
Group project. Wrap a proportional controller in a ROS 2 action server and drive a simulated rosbot to three sequential goals using an action client. Define a custom action interface, handle feedback and cancellation, and load goals from a YAML parameter file. |
Final Project |
Search and Rescue |
Group project. Build a behavior tree ( |