Team-Based Classroom Activity: Designing a Washer & Dryer Tracking System Using ChatGPT, GitHub Copilot, and Git


Objective

Students will collaboratively design and propose a Python-based system for managing the availability of washers and dryers on campus. The project involves:

  1. Writing a proposal.
  2. Creating a design document.
  3. Using ChatGPT and GitHub Copilot for ideation, coding assistance, and development.

Overview of the System

The system will:

  1. Keep track of the status of all washers and dryers on campus (e.g., available, in-use).
  2. Estimate when a machine will become available based on usage time.
  3. Notify users when a machine finishes a cycle.
  4. Assume the use of external WiFi-enabled devices to monitor machine power consumption via current transformers.

Activity Steps

1. Team Formation (5 minutes)

  • Divide the class into small teams of 3-5 students.
  • Assign roles within each team:
    • Team Leader: Oversees progress and ensures deadlines are met.
    • System Architect: Focuses on the technical design.
    • Developer: Works on Python code with GitHub Copilot.
    • AI Specialist: Leverages ChatGPT to assist with ideation and documentation.
    • Presenter: Prepares and delivers the final presentation.

2. Project Proposal (10 minutes)

Each team will write a brief project proposal using ChatGPT for assistance. The proposal should include:

  • Title: “Campus Washer & Dryer Tracking System”
  • Problem Statement:
    • Example: “Students often have to wait for washers and dryers to become available, leading to inefficiencies and frustration.”
  • Proposed Solution:
    • A system that tracks machine availability, estimates wait times, and notifies users when machines are done.
  • Key Features:
    • Real-time machine status updates.
    • Estimated availability times.
    • User notifications via email or text.
    • Integration with external WiFi-enabled devices to monitor power usage.

Task: Use ChatGPT to refine the problem statement and propose additional features.

Output: Save the proposal in a proposal.md file and commit it to the team’s GitHub repository.


3. System Design Document (15 minutes)

Each team will create a design document using ChatGPT and GitHub Copilot for structure and content generation. The design document should include:

  1. System Overview:
    • Diagram showing the system’s architecture (students can sketch this and describe it).
    • Components:
      • External WiFi-enabled devices (current transformer sensors).
      • Central server for processing data.
      • Frontend interface for users (web or mobile app).
  2. Key Features:
    • Machine status tracking (available/in-use).
    • Time estimation based on power consumption patterns.
    • User notifications for machine completion.
  3. Data Flow:
    • Sensors detect power usage and send data to the server.
    • The server processes data to determine machine status and availability.
    • The frontend displays status and sends notifications.
  4. Database Design:
    • Tables:
      • Machines: id, location, type (washer/dryer), status (available/in-use), last_used_time.
      • Users: id, name, email, phone.
      • Notifications: id, user_id, machine_id, notification_time.
  5. Technology Stack:
    • Python or Ruby or ?? for backend processing.
    • Flask or Django for the server.
    • SQLite or PostgreSQL for the database.
    • Frontend: Simple HTML/JavaScript or a mobile framework like React Native.

Task: Use ChatGPT to brainstorm and GitHub Copilot to help structure the design document.

Output: Save the design document as design.md in the GitHub repository.


4. Initial Code and Git Setup (10 minutes)

Each team will:

  1. Set Up a GitHub Repository:
    • Initialize a new repository and share it with team members.
    • Commit the proposal.md and design.md files.
  2. Start Writing Code:
    • Use GitHub Copilot to scaffold the Python project.
    • Example Code with GitHub Copilot:pythonCopy codefrom flask import Flask, jsonify, request app = Flask(__name__) # Mock data for machines machines = [ {"id": 1, "type": "washer", "status": "available", "location": "Dorm A"}, {"id": 2, "type": "dryer", "status": "in-use", "location": "Dorm A"}, ] @app.route('/machines', methods=['GET']) def get_machines(): return jsonify(machines) @app.route('/machines/<int:id>', methods=['PUT']) def update_machine(id): machine = next((m for m in machines if m["id"] == id), None) if not machine: return jsonify({"error": "Machine not found"}), 404 machine.update(request.json) return jsonify(machine) if __name__ == '__main__': app.run(debug=True)
  3. Push the Initial Code:
    • Commit and push the initial Python project to GitHub.

5. Presentation Preparation (5 minutes)

Each team prepares a 10-minute presentation that includes:

  1. Proposal: Summarize the problem and solution.
  2. Design Document: Highlight system architecture, key features, and database design.
  3. Demo: Showcase initial code with a simple API or mock UI.

Presentation (10 Minutes per Team)

Each team presents their work:

  1. Proposal Overview (1 minute).
  2. Design Highlights (5 minutes).
  3. Code and GitHub Demo (4 minutes).

Evaluation Criteria

  • Completeness:
    • Did the team produce a proposal, design document, and initial code?
  • Use of Tools:
    • Did the team effectively use ChatGPT and GitHub Copilot for assistance?
  • Presentation Quality:
    • Clarity, organization, and depth of the presentation.
  • Collaboration:
    • Did the team make effective use of Git and GitHub for version control?

Learning Outcomes

  • Understand how to use GitHub for project management.
  • Gain hands-on experience with ChatGPT and GitHub Copilot for coding and documentation.
  • Collaborate effectively on a small software development project.
  • Learn to structure a design document and project proposal.
Scroll to Top