AI Use Principles
tl;dr: summary
Guiding Principle: All work you submit must represent your own understanding and effort. You must be able to explain any concept the course teaches and code you hand in independently. Use AI tools to go further and focus on the challenges you learn the most from, not to skip the learning.
- AI can be very helpful for debugging, dealing with arcane C features, and in going further than you otherwise would be able to within the time constraints of the course.
- But AI can be seriously harmful if you use it—consciously or unconsciously—to avoid thinking about the material. Sometimes, the best way to learn something is to do it yourself, even if AI can easily do it.
- We therefore give you specific limits on AI use for each assignment component. These limits range from no AI use being allowed at all to free-form use of AI and agentic coding.
- You are always allowed to use AI to debug, answer conceptual questions, and look up hardware or architecture details.
- You absolutely cannot use AI during whiteboard discussions or exams.
Base AI Policy
We describe the AI policy in detail in the course syllabus. Here are the key rules that apply across the course:
Permitted
- Using AI to debug, answer conceptual questions, and look up hardware or architecture details.
- Using AI tools to write code within specific limits set by each assignment component.
Not Permitted
- Using AI beyond the assignment-specific limits (e.g., using a coding agent for a component where AI use is forbidden).
- Generating entire implementations with AI or copying them from AI.
- Setting coding agents to solve entire assignments for you.
- Any use of AI during whiteboard discussions or exams.
Each assignment component specifies what constitutes acceptable AI use (see below). Depending on what we specify, you may use AI to help you write and explain code, and you may always ask AI for conceptual help with understanding syntax, debugging your code, or understanding the concepts you are working with. You may not use AI to generate code for you, or leverage AI agents for coding, unless the assignment explicitly allows it. You must be able to understand and explain your designs and code at all times.
Absolutely no AI use is allowed during whiteboard discussions or exams.
Format of AI Use Guidance
All assignments in the course have green boxes that specify the tasks you must complete. Each such box contains a nested box that specifies the AI policy for this component of the assignment.
Here’s an example of what that looks like:

We break down the guidance into three parts:
- The high-level rule (indicated by the box’s background color).
- The specific rules for this task (first paragraph; red in picture).
- Our rationale for the rules (second paragraph; blue in picture).
The high-level rule is one of three types:
- AI coding: NOT allowed (red): You may not use AI for this task.
- AI coding: auxiliary use allowed (yellow): You may use AI to help you write code, but you must be able to explain and justify your code independently. You cannot have AI generate all the code for you or task an agent with writing the code.
- AI coding: allowed, including use agentic coding (blue): You may use AI to help you write code, and you may task an agent with writing the code. You must still be able to explain and justify your code independently.
Some assignments may further break this down, allowing specific forms of AI use for some parts of a task but not others.
Why these Principles?
Use of AI in software engineering is a fact and it would be wrong to pretend otherwise. But AI is a tool, not a replacement for your own understanding. In the context of an academic course, there may be code that, for pedagogic reasons, you should write yourself in order to better understand a concept, even if people might generate this code with AI in “the real world”. This is similar to how grade school teaches you addition, even though calculators are widely available.
Building an OS involves some hard conceptual challenges, but also some rote and repetitive code that isn’t all that interesting. In addition, AI is a genuinely helpful tool for debugging, conceptual explanations, and looking up details that are hard to remember. Here’s how this course navigates that trade-off:
- Parts of an assignment that touch directly on the learning goals and where writing code is an important way to engage with a concept will forbid or limit AI use.
- Yet, in order to allow you to focus on the interesting challenges while still building an OS from scratch, we allow you to use AI to generate code for specific parts of assignments that would otherwise be time-consuming and offer limited learning benefit.