This paper hardly touches on far and away the #1 pain point, and indeed only refers to it a single time. And that pain point is cheating.
In my institution -- and this is hardly unusual -- CS alone accounts for about half of all university-wide honor code violations. This isn't because CS students are evil. We know all the evil students are Finance majors. It's because of two factors. First, the medium of computer science, that is, program code, is trivially copied, forged, generated, and sold. It's much harder to get someone to build your breadboard circuit or sculpture. Second, CS programs are run by computer science professors, who among other professors are uniquely skilled at developing software to catch cheaters, and computer code is uniquely easily parsed, so we catch students more readily than, say, English professors with turnitin.com.
Distance learning, due to covid, greatly exacerbated this. Nobody still has any effective way of conducting exams remotely. Every software system we've tried has been highly invasive of privacy and easily circumvented. Cheating in online classes has been rampant.
And the amount of cheating among American students has risen from fairly low levels (when I was a student) to astonishingly high levels. My own theory behind this is the rise of helicopter parenting: before entering college, students were essentially never allowed to fail, and now when they fail they cannot handle it. It is an epidemic in CS academia.
I've been teaching intro CS for 20 years, but I totally disagree that this is the #1 pain point. The biggest paint point not discussed is that programming is challenging to learn and requires a lot of effort from students, but all the pain points in the article are real.
There is also an issue with “it doesn’t compile? That’s a 0.” So you have students that may have written 90% of the proper code but can’t figure out the bug in their makefile, Java build, etc.
In the students mind they’re going to ask “is it fair to get a 0 when I feel close?” Then they (might) cheat. Obviously there are ways around this, like going in to office hours for help, but some schools start kids with C++, which seems like a wrong first language.
My experience (I am a CS professor) is that, even when you attempt to provide partial credit for programs that do not compile (as I do), the code is almost always seriously flawed. We all know that attempting to write an entire program in one go is not a great idea. It’s hard to anticipate where a program might go wrong if you’re not developing it incrementally. So I don’t blame instructors who just decide to cut their losses. It may be painful for a student, but it stops that kind of behavior very quickly.
As long as you give bonus points for the most horrific part of software development... getting the goddamned IDE configured correctly or close enough to do work.
That brings you 90% of where you need to go, especially for a CS course.
It's not obvious to students. The insight to simplify and simplify until things work and only then keep piling new things on top, that's a really powerful one and is underappreciated in teaching CS.
I certainly don’t blame professors for doing that - partial points are difficult. But you probably know students are asking for help from other students on how to get things to compile.
And you didn't notice before handing in your assignment?
Doing things last second that didn't give you any chance to fix issues before a deadline is a flaw in and of itself and should be a lesson.
Unfortunately many don't understand this and I have many colleagues who slack off until it's almost too late and then there is a huge scramble before a deadline.
Most exercises I have seen are made up from multiple parts building on each other. The first one is so trivial that frankly, anyone not being able to write a hello world in the language that was the subject of the whole semester should get a 0. You just submit every substep, and you get the mark for the highest you were able to reach.
Of course your mileage mag vary, but I think it was very fair, and most of my classes were already way too easy - many students are just terrible and lazy. My classmates who became teacher assistants told me also that they felt terrible but they had to fail some students because they didn’t even turn up to their one past the last retake exam at all.
I didn't get credit for the first few assignments in my first CS class because the automated grading tool couldn't find my code. Finally I figured out that the tool only worked if the code was in the default Java package, which I wasn't using because Eclipse told me I shouldn't.
And the mirroring issue with “computers are hard and some teachers can’t do it.”
I got a 60% one for an assignment that demonstrably implemented all required features including the “for extra credit” ones, and a few more besides. I can only think it was scored by grams of documentation.
Is it a factor that a CS degree is seen as a relatively easy path to a well-paying career (compared to doctor, lawyer, real engineer, etc.)?
When the goal for many is to make lots of money, maybe there are relatively fewer nerds who love the field and craft?
And perhaps a CS department is getting closer to the departments that (fairly or unfairly) once had a reputation for attracting more than their share of less-scrupulous students?
That looks like the problem is Amazon's interview process. Amazon is a world-class cheater that sells counterfeir profits for profit, so cheating to get in is a positive signal.
I went to college way back in the era when you printed out your labs and handed them in physically to the prof. Even back then, there were students who would rummage thru bins looking to find "inspiration" (cough cough) from other peoples' discarded prints.
I have one even better, as a TA, twice I had students turn in 100% identical printouts of their code, with only a couple of variable name changes. Like someone grading them just wouldn’t notice. In one case it was 6 students who all turned in exactly the same program, printed out, on paper.
The department did nothing, and let them all re-do the assignment…
In a class where acknowledged group work was accepted, I had a TA question my homework because it came from the same printer as another couple of students. I have no idea if they looked at my work, but I didn't pull anything from them.
(No real point, I guess maybe that it's easy to go to far in the other direction also)
This seems to be more blaming a symptom. Consider, if there were not increased stakes involved with getting high scores, there would be fewer cheaters.
Teaching anything has grown more difficult as you get fewer and fewer projects and tangible goals. This is all the more emergent as we pay attention to what people actually remember of their learning. You get some kids together to build a crappy little car, they are probably going to leave that class with a basic understanding of what did and did not work. Force those same kids to sit in a room and talk about building a rocket, and they are likely as not to leave with a really bad understanding of physics. Irrespective of how they score on any tests.
So, you want people to learn something? Give them something to do with it. If we don't have enough toy projects and general work, why do we think we will have enough outside of the class for them?
And now imagine what that means for their behavior in their first job. Will those not-anymore-students suddenly stop the cheating? Just copy some code from questionable sources on the web with unclear quality and licensing? Ignore FOSS licenses and just blatently violate them? Take competitors code if they can get their hands in it?
Unlikely they will suddenly change. This is troubling for companies.
My take is that there's some vicious cycle going on with cheating.
It's comparatively hard to cheat significantly in a pen-on-paper exam in a classroom proctored by vigilant humans. It's much easier to cheat on other forms of assessment. But exams are rather unpopular, not necessarily entirely for bad reasons. They don't really test what we care about in an ideal way, and exam-specific technique is too important. Also, students are _terrible_ at exams.
In my class I'm faced with two choices: make the grade highly contingent on exam success, deal with awful grades, angry students, and a department that wants my teaching to be modernized; or make the grade about homeworks, quizzes and project work that 10% of students cheat on _blatantly_ and an unknown percentage that I figure is 20-50% "cheat" in some way that significantly damages their learning because they lean so hard on Google, ChatGPT, Chegg, smart friends, ...
The vicious cycle is that more professors are moving away from exams so students aren't getting any practice at exams and hence flunk them ever harder. Anybody who still has an exam component is under significant pressure to reduce it, increasing the cheating-vulnerable surface area and hence the competitive advantage of cheating. Of course cheating increases! And as cheating increases, actual learning decreases, thus increasing the pressure on proffessors to avoid assessment that actually tests their students understand, because then there are unacceptable failure rates. The fact of the matter is that I simply cannot afford to fail 30% of my students. The school and department won't have it.
My response to some of the AI handwringing over things like "ChatGPT gets 100% on my intro to Python course" is to say that your stupid python course isn't testing understanding it's testing trivial syntax. But of course it's not testing understanding, doing so is weeded out by the pressure to avoid failing entire cohorts of incredibly weak students.
I wouldn't underestimate cultural changes too. The old American WASP culture that dominated the prestigious corners of the academy up until a generation or two ago was very big on honor codes and they were largely adhered to including for things like take home tests. Now it appears everybody, including the descendants of the people who used to take honor codes seriously, considers them to be for chumps and will take any angle that they can.
At the end of the day, cheating is a cultural problem and not a technological one. Technology might make cheating easier or help to expose it, but it will never prevent it. As you say, it just becomes a game when you try. Fortunately, people can be taught to change their culture for the better, so it's not as if it's hopeless.
"The old American WASP culture that dominated the prestigious corners of the academy up until a generation or two ago was very big on honor codes and they were largely adhered to including for things like take home tests. Now it appears everybody, including the descendants of the people who used to take honor codes seriously, considers them to be for chumps and will take any angle that they can."
I think that's very romanticized. The high crust was always doing what it took to get ahead. If cheating was the best way to get ahead, they would do that. Them following honor codes is just self-serving propaganda. Nowadays more people are realizing how f...ed up the system is and cheat too.
I agree that it is a cultural issue. When cheating is rampant in a class, it is often because an instructor either does not properly motivate the work, or assigns too much work, or both.
I work hard to motivate my students. The first point, that I think virtually every student would agree with, is that we all do not want to pay a lot of money to waste our time, right? Cheating is a waste of time and money.
I occasionally hear from students that they think a given class is merely an obstacle on their career path. E.g., “if I get a bad grade in this algorithms class then I can’t get that prestigious job.” I try to remind them that they will be expected to do certain things at prestigious jobs.
I think the second, and more important point about cheating is that it devalues yourself. We only live once. We should do it excellently, because by doing things excellently, we find the value in our lives. And, in case it isn’t clear, by “excellent” I do not mean “A+ work.” I mean, simply, striving to do our best. I have a lot of respect for a student who takes a challenging course and earns a low grade than one who prefers not to challenge themselves at all.
Still, I am not always successful, and students cheat in my class. I understand many of the reasons (time pressure, family pressure, etc), but it is my sincere wish that we could find a way past all of that. College can be—-and is for some—-an opportunity to elevate oneself. If you’ve ever had that before, it’s an experience that you hope others will be able to share.
The WASPs of a generation ago didn't need to cheat; as long as they could graduate they were almost assured of a good job. Now with more students going to college and employers being more selective in hiring the stakes seem higher. Cheating is never right, but I understand why more students are doing it.
As for changing the culture, one necessary step would be that employers would have to stop looking at GPA.
What about this makes it a pain point? Is it the amount of time that it takes to deal with cheating, the inability to effectively punish the behavior, the impact it has on the professors' (and perhaps some students') morale, or something else?
The course has to be designed with cheating prevention and detection in mind. So: some things you want to do are not possible. Takes significant extra time to develop course materials (cannot reuse previous years’, may need to shuffle questions and answers on tests, etc). Trying to make sure questions are not easy to google/GPT. Time spent dealing with cheating and consequences, e.g. determining if cheating happened, collecting evidence to present to honor council.
I'm hesitant to ask, because I've had to deal with professors with the same sentiment on this topic, but given the sometimes insultingly mundane and easy first semester assignments, and the fact that _alot_ of lecturers reuse the same assignments over a decade, isn't there a point where you have seen pretty much every iteration of how an assignment can be reasonably solved?
I've seen first and second semester students being accused of copying code from the internet, because they were using features of the language that hadn't been taught in class yet.
You'd be surprised at the variation present in complex assignments implemented by non-expert students. It turns out that doing things in buggy and randomly wrong or nonstandard ways leads to things looking more unique than they would if you had a group of experts implement them.
"Having the same bugs" is one of the easier ways to confirm cheating, at that.
I left teaching because I sick of that taking up all my time. no moral judgement, it was just a stupid game and I resented the students for wanting to play instead of learn
30 years ago, tech wasn't the money-making machine that it is today, so the pure greed motivation wasn't as prevalent among CS students back in the day. Moreover, tech and finance have virtually wedded today, as witnessed for example by cryptocurrency, as well as by countless startups that make no profit indefinitely but somehow continue to exist by financing only.
In my institution -- and this is hardly unusual -- CS alone accounts for about half of all university-wide honor code violations. This isn't because CS students are evil. We know all the evil students are Finance majors. It's because of two factors. First, the medium of computer science, that is, program code, is trivially copied, forged, generated, and sold. It's much harder to get someone to build your breadboard circuit or sculpture. Second, CS programs are run by computer science professors, who among other professors are uniquely skilled at developing software to catch cheaters, and computer code is uniquely easily parsed, so we catch students more readily than, say, English professors with turnitin.com.
Distance learning, due to covid, greatly exacerbated this. Nobody still has any effective way of conducting exams remotely. Every software system we've tried has been highly invasive of privacy and easily circumvented. Cheating in online classes has been rampant.
And the amount of cheating among American students has risen from fairly low levels (when I was a student) to astonishingly high levels. My own theory behind this is the rise of helicopter parenting: before entering college, students were essentially never allowed to fail, and now when they fail they cannot handle it. It is an epidemic in CS academia.