Something to the effect of "ChatGPT is pretty cool, I like it, but it will just make stuff up sometimes in extremely convincing way. It's a tool that's dangerous to newbies and powerful to professionals, and I'm hoping this class will help you get closer to the latter".
People did the same thing for Wikipedia and it was never convincing. And they eventually lost the battle. It's going to require more than that to do the same for GPT.
I think by tonight I'll have cooled off enough to write an appropriate email.
If I got an email half accusing me of cheating I would complain to anyone who would listen.
It's just one of those things that while you're totally right, the one or two bits of failure kind of nag at me. It's extremely easy to take these things personally (especially for a nascent teacher like me) when in reality I should likely view things as transactional.
I do feel that by having these tests and grades that it does, indeed, sort of become just a transactional way to "vend credentials" instead of focusing on learning. I also think that often homework and tests aren't great measurements; I was bad about doing homework in college the first time around, and it was frustrating to the professors because I was doing horrible grade-wise, but was extremely active during class and generally did fine on the tests. I was mostly learning the material (at least well enough to get an A on the exams), but because I wasn't submitting my assignments, they would be forced to give me a C or a D.
At the same time, I really haven't figured out a better system. I would be open alternative systems, but I think grades and grading and tests do the best job for the "average case".
Maybe I should email some of my old professors and apologize for the headaches I probably gave them...
I don’t see this happening unless jobs stop caring about credentials or become more willing accept other forms of credentials.
Of course I’m assuming you aren’t specifically talking about software, which doesn’t have nearly the amount of credentialism as many other fields.
A random college class, to me, isn't the kind of thing where cheating really matters. The stakes are low, it's expected that most students will do well, and everyone gets the same degree at the end. If someone wants to sabotage their own education then fine, and if it doesn't bite them later good for them.
I had one candidate that struggled MIGHTILY on a coding problem that was easy (kept running into syntax errors) but then pulled out an esoteric solution for the second problem in no time flat.
I can't prove that he was cheating but it very highly suggestive that he is.
I hate it, but I'm starting to think I have to do an AI detection question now. It's not hard, just ask someone to do something impossible. However, I don't like the fact that now I need to be "tricky". I've never believed in making coding challenges hard, I just want to see if you can write code.
In this case the candidate chose to use a language that I don’t know well and they said they weren’t especially familiar with either. Then they struggled a lot to even talk through the question and it was a grind to work through each line of code. I couldn’t offer much help, and they were very clearly unsure at each step.
But when we clicked “run” on the code, we were both surprised to see that it ran on the first try. Not only that, but it already worked for all of the “but what about…” follow up edge cases. And the candidate didn’t know why… “oh, I guess the language just works that way.”
I don’t know if they were cheating, but the entire thing was far outside any other interview experience I’ve ever had — and fits the pattern of what I’d expect an LLM to produce.
I also have adhd and literally brain damage and have worked professionally in about a dozen different programming languages. I can't write a for loop or declare a static method or w/e in any of them without googling the syntax or using my editor's hints & autocomplete.
They had google access and editor hints. Further, I start every interview with "please, ask any questions, we aren't trying to trick you we just want to see if you can code." And I mean it. If someone has a minor problem with remembering syntax or how to declare it I don't really care and will happily let them know how to do that.
Heck, I've even had interactions where a candidate was like "I think there's a method that does x for this" in a language I was unfamiliar with, so I googled up what x was and shared it with them mid interview. "Oh yeah, looks like this is what does x for your language".
There was also some pretty weird behaviors with the camera/screen that caused them to need to touch it fairly frequently (I'm guessing to take over keyboard control from the AI software they were using).
What they were doing, repeatedly, though the interview was writing
`a[i]` then having to change it to `a.get(i)` because they were working with a `List` in java. I get maybe doing that once or twice, but in the course of the interview they did it every single time they needed to pull something out of the list. (and each time needed to touch their screen and take a few minutes to correct it). This is why I strongly suspected cheating. It extended a question that normally takes 15 minutes to 35 minutes. Then the question I ask that usually takes ~45 minutes they completed in 15 with an optimal solution that relies on a data structure I literally only learned about because the interview hints for the question are like "Hey, java has this data structure that makes everything easier".
But you were there and I wasn't and if the overall situation seemed suspicious to you that's evidence at least as strong as any specific thing. Intuition can certainly pick up on weird behavior even if it's hard to explain how after the fact.
I am assuming that you had a compiler or IDE in this situation providing a useful error message. If you were whiteboard coding and you were telling the candidate "you have a syntax error but I won't tell you where" (like several folks at a former employer of mine were fond of), you may be the problem, not the candidate.
> I am assuming that you had a compiler or IDE in this situation providing a useful error message.
Yup. I prefer to give candidates compilers/IDEs and even access to google if they ask about it. Like I said, I'm not trying to trick them or anything, I just want to know if they can code.
> If you were whiteboard coding and you were telling the candidate "you have a syntax error but I won't tell you where"
I'd hate being on the receiving end of that and would never pull that sort of stunt. The software we use allows both sides to edit the code and I pretty regularly will go in and silently fix syntax errors for a candidate so as not to let a compile/refresh loop get in the way of actually solving the problem.
Like, what does "You have a syntax error" even prove? I'd let you write pure pseudo code so long as it makes sense.
I just don't like "mind games" in interviews.
The current system worked in 1960. Not in 2023, and probably not since the late 1990s, when technology started to make our evaluation processes obsolete.
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?
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.
So that they can tell when the AI tools get things wrong. Which is always.
I'm old: when I went to school we weren't allowed calculators "because there'll be a situation where you need to do basic arithmetic and don't have a calculator". I occasionally laugh at this while firing up the calculator app on my phone. We'd have been better off if they'd taught us sign language rather than arithmetic.
Our education system is going to have to adjust to the new reality. Setting an essay task is now the equivalent of learning the times table - utterly redundant (unless you plan on a career writing essays or doing maths).
This was pretty useful in it's own right, as you at least had a way to check your work, and frankly it was extremely useful for helping me solidify knowledge in those fields. [0]
Of course, AI muddles this, since it can explain the steps for you.
Higher-level math classes usually encourage calculators, and graduate-level math classes will often allow Matlab or Mathematica, as long as you can write a short sentence explaining what the computer algebra system is doing. Where I went to school, this was colloquially called "proof by Steven (Wolfram)."
Many people today do math only with a calculator and correspondingly lack any sort of numerical reasoning skills whatsoever, despite having learned both mental math and numerical reasoning in school. That growth of innumeracy coincides with the rise of calculators and computers who do it for you.
Also, students are taught in more advanced classes to use calculators (and later computer algebra systems) as a tool. This comes after they have learned the basics, not as a replacement for the basics.
Writing (hello ChatGPT) and math are like muscles: use it or lose it. If you can't do the basic versions, you can't do the harder stuff either.
But I do think that as we move forward with technological tools for this kind of mental task, that we should embrace them in our education system. If we have to teach every generation from first principles then we won't get them comfortable with the actual tech they'll be using in their lives.
thanks for the clarification on sign language :) One of those things on my bucket list that I keep meaning to learn but never get started on.
When you're solving the same problems in real life you do have access to all those tools that you banned. Because in real life, if you manage to solve a problem it doesn't matter that much how you solved it.
Sure, if you just Google things and always solve your problems by copy pasting. Your solutions will lack depth, and at some point this will catch up to you.
My point is, cheating is primarily cheating on yourself, and it will catch up to you.
I think this is the framing you should have with regards to cheating.
As an early procrastinator (rehabilitated perhaps?) I've had a history of doing very well on finals through cramming.
In your student's case it might very well be more likely they are cheating, but those unlikely but possible students who study extra hard to recover their grades for a final deserve the benefit of the doubt.
How unlikely can academic recovery get? I spent an entire semester completely lost in a second level Macroeconomics course...
... I was able to read and write chapter summaries of a semester and a half of content (about 15 chapters, corresponding to the first level and the second level courses) in a single weekend and aced the exam, with the highest marks in the class.
That was the hardest I've ever crammed in my life and I had trouble speaking in the hours that followed the study session.
I later got a recommendation letter from that prof, totally worth it.
You have to both adjust your expectations and make a significant part of your grading use an in-person one-on-one oral exam or project walkthrough.
It is a huge commitment of time - most professors I know seem to have quietly accepted cheating will be be rewarded because they don't have enough time to verify student performance.
Well, lest of course the students sit under the watchful eye of AI in the near future
Which is exactly what the parent was trying to do with a an exam that forbade the use of AI.
During the exam (which I had to administer remotely this time) I made it abundantly clear that they cannot use any kind of AI assistance for their work. No ChatGPT, no Copilot, no Bing AI, no Google Bard, and also no Googling, etc. I repeated this several times and also wrote it in bold font on the top of the test. I really didn't have any way to enforce this, but I was hoping people would be honest.
I'm pretty sure that most of the students were honest on this; the answers I got generally fine, but had grammatical mistakes and were "basically correct but had light factual errors that are common with people new to programming but aren't bad enough to count as 'wrong'". One student, however, who has submitted broken sentences and broken code the entire semester, managed to suddenly have decent writing skills, decent explanations of everything, and his code was clean and concise.
I'm about 95% sure he used ChatGPT to generate answers to the questions. I tried getting ChatGPT (and Bard and Bing AI) to give me a word-for-word copy of what he submitted, but I couldn't. It got somewhat close, but never an exact match.
Technically, it's possible that he just studied very very hard and his code and grammar improved. It's also technically possible that he used Grammarly to make sure his writing was ok (which was technically against the rules but I wouldn't really consider cheating in a Java class), and so I just had to swallow my pride and grade the test assuming he was being honest.
It's kind of upset me all day; I have worked pretty hard trying my best to be available to students if they have questions, and I worked pretty hard to try and make sure that the final exam was a reasonable level of difficulty. I think most of my students were fine, but one bad apple is enough to really ruin my day.