
You are largely banned from using AI in my courses.
I understand the appeal of AI helpers, and I am aware that many experts advocate for greater use of AI in education. I will help you learn to use AI responsibly in independent studies or projects. In my regular courses, however, the focus is on mastering foundational skills before moving on to AI-assisted writing or coding.
Writing
I will not accept submissions of AI-polished essays/reports/etc. I want you to articulate your thoughts in your own words. The writeup is merely a vessel that forces you to be explicit in articulating your rationale. It is okay if some formulations are clunky.
The point of these assignments is for you to communicate your thoughts and insights. It is not to produce text for the printing press.
The point of summarizing a paper is to ensure that you did misunderstand not its main point. The goal was never to have the summary itself.
The point of writing a literature survey is to learn about approaches and put them in contrast with one another. The goal was never to have the survey itself.
The point of writing a report/paper about your research is to communicate your ideas and your view on the data analysis. The goal was never to have the report itself.
Once you have a hand-written draft, you can use an AI-polisher to create a document to share with your family/friends/employer. But there is no point in me giving feedback to the AI.
Programming
You need to be responsible for every single programming decision and every single line of source code you submit as graded homework.
Programming is like sculpting. Programming forces you to think through your design and solutions. You may choose one solution then realize the issues with that approach and change your code. Trial and error is how you learn to identify a bad software design and steer clear of issues in your next design. Without mistakes, there is no learning.
Especially when you are still learning how to program, it is easier to write your own code than to review (or find bugs in) someone else’s code.
Even when you are in an environment that encourages AI programming, you still need to closely review every single coding and design decision, because you will be held accountable. Reviewing code is a very difficult skill that you cannot obtain without being a great programmer first.
The point of programming assignments is to expose you to challenges in writing source code. The goal was never to have the program itself.
The point of designing and implementing a bigger project is to expose you to different design decisions, and realize their shortcomings. The goal was never to have the implementation itself.
The point of programming in a small team is for you to develop survival strategies when collaboratively programming with others, especially those with different ideas, different preferences, and different goals, which requires compromises. The goal was never to have the code base itself.
Once you have mastered these experiences, you are ready to learn pair-programing with AI.
Problem Sets
Problem sets are micro tasks, designed so that a beginner can handle them. While working out this concrete solution, you develop strategies for how to go about solutions in general. From strategies learned in beginner tasks you can “level-up” to more complex assignments.
You are harming your skill set by using AI to generate solutions, even if you “study” them and can explain why they work — it is just not the same as developing one on your own!
The point of problem sets is for you to learn how go about developing a solution. The goal was never to have the solution itself.
The point of presenting your solution is for you to give a rationale why you chose it and to have a discussion about alternatives and their pros and cons. The goal was never to have a presentation of the solution itself.
The most common fallacy is to not realize the learning you gain by puzzling through a solution, meeting the dead ends and realizing why that approach did not work. There is a lot of implicit learning of strategies for certain situations that generalize to other domains. And I need you to recognize these patterns.
When you are given a solution, you will not learn how to develop a new solution for a new situation.
There are many more productive uses of AI and chat agents for learning. You can and should make use of these:
Use AI to learn about new concepts. If you heard about a concept, AI can give you a brief rundown of how this concept works, and recommend follow-up reading.
Use AI to detect and resolve your misunderstanding. Try to explain a concept you learned in class to your AI agent, and ask whether your understanding is correct. Please don’t forget to verify the results with your course instructor.
Use AI to learn about programming libraries. If you are implementing a routine task, you can ask your AI agent to help you identify a library that is best for this task.
Use AI to help you read documentation. If you are figuring out how to call or use a library, AI can help you navigate the code documentation. Just beware that AI sometimes hallucinates the interface, so be prepared.
Use AI to develop a better code design. Collect the task specifications, and discuss different designs with your AI agent. You may find that your AI agent misunderstood the task, so you have to be better at being specific and unambiguous. You can collect different solutions then discuss pros and cons. You can bring up concerns with different designs or let it critique your ideas. You may realize that your actual requirements are different from a generic application.
Let us draw the line at copy and paste:
Use AI to learn, but never copy the generated outputs directly into your essay or code. Instead: