AI-Policy

Yes, you can use GenAI when appropriate!

General Goals


  • Student Learning
    • You will learn new skills and technologies while working on the project.
    • Learning requires effort and struggling through tough decisions or investigations.
    • Overuse of GenAI tools reduces learning because it can rob you of the opportunity to struggle.
    • Big idea: Don't use AI for anything you want to get better at: use it as a tool to enhance skills you already have. Expect to be slower because you are learning!
  • Transparency
    • Mention when you use AI.
    • Note what tool was used, how it was used, and how you reviewed its output or supervised it.
  • Responsibility and Ownership
    • You are responsible for each change you submit to the project regardless of how that change was authored.
    • You must think through the problem and consider the feature design, design alternatives, and impact on the project.
    • You are responsible for design, code, test cases, documentation, bugs and omissions.
    • You must be able to explain all details of a change including:
      • Low level implementation details and choices,
      • High-level design decisions and tradeoffs,
      • Module interactions and data flow through the component.
    • AI may not author code or make design decisions in critical sections like security or system architecture.
  • Privacy
    • Do not share private data, such as API keys or personal information, with AI systems.

Specific Use Cases


Recommended Uses

  • Navigating Code
    • AI can effectively help navigate large code bases to understand data or control flow or locate code to change.
    • It's recommended to use an AI tool when onboarding to understand the project's structure.
  • Tutoring on Language and Tools
    • AI can effectively answer low-level questions about a programming language or tool.
    • AI may be used instead of searching websites like Stack Overflow.
  • Understanding Errors and Debugging
    • AI can explain error messages to track down failures.
    • AI can help explore possible causes for an error.
  • Generating Commit/PR Summaries
    • AI can help generate summaries for commits and PRs.
    • You must ensure the description is concise and accurate.
    • You must edit AI-generated summary to explain high-level feature and any design decisions being made.

Reasonable Uses

  • Generating Documentation
    • It is reasonable to use AI to help generate the first pass at a design document.
    • AI may be used to help plan steps in implementing a large change. However, you must analyze the requirements carefully and maintain full control of the planning.
  • Generating Test Scaffolding
    • AI may be used to generate initial test cases or analyze tests for missing cases.
    • You must review generated tests for correctness and completeness.
    • You must look for missing test cases and incorrect assumptions: ensure the tests are valid tests of the intended behaviour, not just testing the specific (buggy?) implementation.
  • Automating Repetitive Tasks
    • OK to use AI for repetitive tasks like making a change to a data structure in 10 places, or making related changes to numerous lines of code.
    • OK to use AI to write shell scripts to automate tasks or manipulate data for later analysis.
  • Enhance Code Reviews
    • OK to use AI to help review novel code and look for bugs or question design tradeoffs.
    • AI feedback must not be the sole basis for merging a PR.

Forbidden Uses

  • No Vibe Coding
    • Vibe coding is where AI is used to create code from natural language descriptions and that code is then never peer reviewed.
    • Vibe coding is fine for experimenting with throw-away UI prototypes which are not committed to the repo; however, all code committed to the repo must be fully reviewed by both the original author and another team member via a code review.
  • No Agentic AI
    • Agentic AI is where a user allows an AI agent to independently edit the project and run tools with limited human oversight. Often the Agentic AI is given a larger task which it independently breaks down and hands to other AI agents to solve.
    • This undermines your learning as you are not making decisions or working through the problem.
    • This undermines code ownership because so much of the work is done by the AI.
  • No Critical Code or Design
    • AI must not write security code like password processing or storage. It may be used to advise you on the code, but this code is so critical that it cannot be trusted to an AI.
    • AI must not make architectural design decisions. It can be used to help analyze ideas, but a human must make the decisions.
    • AI must not make database design decisions.

Instructor Use of AI


  • After reading all peer feedback for an iteration, AI may be used to summarize that feedback for inclusion in the iteration marking process.
    • AI will not evaluate or mark your work or peer feedback.

AI-Policy