It's been a while since I was an undergrad, and I didn't study CS when I was (I was in math -- we didn't even get the unit test to tell us we were wrong lol). I understand auto-grading like this is very common in lower level CS classes, but wouldn't it be possible to write these "test suites" in such a way that they could provide some hints on exactly what was wrong? I have to imagine, based on my experience as a graduate TA in math, that undergrads as a whole make mistakes that typically fall into certain classes, and that those classes could be reflected or captured in the pattern of which "unit tests" end up failing. It doesn't strike me as terribly difficult to analyze these patterns of failures, after running the course at least once, and come up with useful hints as feedback.
Does nobody do this? Or, perhaps more to the point, does nobody ask their TAs to do this?
> Totally legit philosophical debates aside, I think this is a great use of the technology. It's a very, very well-funded class (bigger dedicated full-time year-round staff than some entire departments,) so I'm sure it's not a half-assed effort.
I agree broadly with this. If you're going to do this experiment, in principle, a class like Harvard CS-50 sounds like the right place to start, for the reasons you've listed.
However, if this chatbot is just an equivalent of ChatGPT with the GPT-4 model and some additional training/fine tuning, I don't think the technology is quite there yet. We've seen a lot of examples already of how GPT-x has a tendency to give "confidently incorrect" answers, and that's the absolute last thing you want to be telling beginners. I've seen answers that could plausibly fool experts, yet be wrong enough as to be useless once you try to verify the details. The danger here is that beginners may not recognize this, and may not be able to verify the details.
That said, I think there is a future for this sort of technology in precisely this type of instructional environment. The "confidently incorrect" problem is something that can be mitigated with fine-tuning, proper prompt engineering, and other techniques, but, to my knowledge, can't be eliminated if the system is essentially a bare text interface into an LLM. I think the work being done with web search is a possible direction here, since I've seen GPT-4 essentially give up and go search the web when pressed for details or when the actual answer would become too complex. For a restricted domain like CS50, maybe even some kind of formally encoded knowledge base would help it (similar to how I mentioned analyzing patterns of failures to provided hints).
What I do know is that the gigantic "hall-o-TAs" is absolutely not a great user experience for undergrad learners, so anything that offers the potential for improvement on that UX is definitely something I'd like to see pursued and developed.