A person who does not know how to code without access to AI tools means they will consistently push bugs generated by AI, affecting the teams productivity, if any.
ChatGPT can solve most LeetCode questions, but I don't think most people here are ready to replace their junior developers with it.
However, I feel like an academic exam is a bit different. The goal of these exams is to evaluate what students have _learned_. Unless the class was about how to find helpful code examples on SO, it does not make much sense to allow AI/internet-searching during the exam.
You may think it's ridiculous, but many people today can't calculate a 20% tip or add two prices together without a calculator because the constant use of calculators has caused their arithmetic skills to atrophy. This seems like a silly gripe, except a lot of other skills are built around these basic ones: for arithmetic, the ability to estimate the cost or time taken to do something is all based on tricks you learn when you are trying to learn mental math. Society is not worse off for this (enough of us still know how to do these things), but many people are poorer, both intellectually and monetarily, due to a lack of arithmetic skills. And no, this lost knowledge of arithmetic is not replaced by a knowledge of higher math - it tends to come with a fear of it.
The same applies with text-generating AI. In terms of writing, if you don't learn to write dumb essays about books, skills like learning to construct an argument are much harder to pick up. For people writing code, learning to slog through writing and debugging a doubly linked list (something ChatGPT can reliably generate for you today) leads you to later being able to slog through debugging B-trees or lock-free queues (which ChatGPT definitely cannot write for you).
I think there is a very compelling argument along these lines for low-level courses to ban AI tools. However, higher-level courses probably should allow students to add them to their repertoire, where they are an aid and not a crutch. This follows how mathematicians and engineers learn to use calculators and computer algebra tools, which seems to work well.
Earlier this week, I spent several minutes talking one of my co-workers through how I 'did math in my head' to figure out my half of the 20% tip we were leaving for lunch. Even something as rudimentary as moving the decimal place over one and doubling the result seemed like wizardry to them.
They aren't dumb. They've literally just never thought one second past reaching for a calculator. Which is kind of scary, because it means they have no way of sanity checking any numbers they come up with.
Maybe the solution should be to move towards a
style of exam/grading that actually measures the
competence of the student in a situation closer to
what a professional developer will be in, rather than
an old fashioned artificial exam setting?
Most "real world" software development work involves understanding existing code and/or choosing solutions.AI can help you write a linked list, but can it help you know that you need a linked list vs. a queue or a binary tree? Can it help you to make more architecture-y decisions like deciding whether need a document database, a traditional SQL RDBMS, or maybe something else?
I'm not in a teaching role but those are the kinds of things I'd like to see examinations cover -- what tool or data structure are you choosing, and why?
Or, similarly, can the student understand existing code and fix bugs or make performance improvements?
Bottom line, though, is that for most cases, professors should just absolutely accept the reality of AI. They should assume all students are using AI tools. In fact they should probably mandate it in order to assure a level playing field.
It's not just the issue of "what if they didn't have access to ChatGPT?"
Just as an example: ChatGPT is literally the world's biggest bullshitter. It vacuums up vast stores of "data" (note: NOT "knowledge"), and just pulls out words that it thinks could likely follow from previous words given a context.
Quite often is produces silly, or even dangerously wrong, answers. You need to be pretty well skilled in the art to catch it at its bullshit.
It's just like when you hire assistants to do something critical for you. You have to be able to verify their work, or you have to be able to trust them blindly.
I've known engineers who did not understand the analytical tools they were using. They misused them constantly.
The point is to gain some knowledge yourself. Obviously you'll use new tools and methods later when you eventually get a job, but the point of most courses is to teach you the concepts, not how to command the IDE. Whether you decide to hand-craft assembly code or become professional a Copilot suggestion approver doesn't really matter.
It's a question of: Are you testing for understanding or ability? Both have their merits, but often the goal is the former. If it were a project, it is generally the latter.
If it would be possible to take a bottom-tier CS student and turn them into a decent programmer using AI tools, the hiring landscape would be /very/ different. These tools aren’t magic, and to me it sounds like the tests are failing at measuring the students competence if they can so easily be gamed by using an AI/old fashioned googling.
Maybe the solution should be to move towards a style of exam/grading that actually measures the competence of the student in a situation closer to what a professional developer will be in, rather than an old fashioned artificial exam setting?