Live data from Hacker News

Coping with Copilot

sigarch.org

71–80 of 463 posts

Re: Coping with Copilot

#71
While it is true code pilot is quite amazing and can produce some very decent snippets, if the exercice you give is specific enought (using a special database schema, file format, or API), with objectives that are not common (ask the user specific questions, and draw conclusions out of it or react to events), then it cannot produce a fully working program. I use code pilot regularly now, and it does speed up my work, but I can't do anything with it without understanding the problem at hand.

There is nothing wrong with the student assemblings and fixing parts of code that exist. Doing that requires understanding those parts, how they interacts and what you can do with them. It's not killing tests. Plus as professionals, we all do that anyway. Heck, I learned doing that. I'm paid doing that.

However, there is something wrong with academic exercices that I see in the wild. Things that are very abstracts, requiring way more than programming knowledge, or stuff that are asked out of context completely. Students are both understimulated, and given too hard bites to chew. It's a terrible way to learn, and to be tested IMO.

Tests nowaday don't tests for knowledge, they test either for compliance, or act as a filter instead of a feedback loop. This is not education.

In fact, I've yet to see school IT course that I didn't find deeply flawed, and I completely understand the students for cheating at them to that they can suffer as little as possible. They are not given a chance to prove themself or progress, they are not respected. They are forced fed junk and asked to spit it back all shiny.

I remember when I was a student, and I went to 11 different schools because of my twisted life. They all sucked. And I say that as I spent half my student life at the top of my class grade ladder.

I regret having cheated so rarely now.

Re: Coping with Copilot

#72

Earlier quoted context omitted.

Adjunct instructor here. Before I came into the program, cheating was on the rise. When given programming assignments, students would go to Geeks for geeks and download solutions, some of them mostly correct, and submit those for credit. One remedy was to try to make programming assignments harder and harder. Eventually, they got so hard that we were asking people new to computer science to implement a full arbitrary…

> One remedy was to try to make programming assignments harder and harder. How is that going to stop cheating? Surely that will just make people more inclined to cheat, since they have less chance of solving it on their own.

It would prevent people from simply going and downloading solutions from the internet. A lot of easier assignments are fairly well treaded and already have solutions floating around.

Re: Coping with Copilot

#73
Eh, it's always been super easy to cheat on programming assignments. Often they're variants on toy problems that have been used in the past, or worst-case, you could crowdsource an answer on stackoverflow or Reddit

Just make sure Copilot is explicitly against the rules, there's not much more you can do than that

Re: Coping with Copilot

#74
Programming and, even more so, software engineering are _trade skills_. There will ALWAYS be “cheaters” but you will know them by the end product of their work. Yes, it’s important to understand the fundamentals. An unwillingness to learn these things is a great indicator that you will be a failure as a professional. As another commenter mentioned, the focus on grades at all makes the problem worse.

More important than even fundamentals, though, is modeling a successful software development mindset and problem solving technique. Too many professors have not _had_ any success in software development, which is sad. I can count dozens of examples of my own personal growth that could have been handled in college, that I instead ended up inflicting on my first employer.

Re: Coping with Copilot

#76
post #11

Cheating is getting easier by the day, but the bottom line is that if the student is cheating, they're probably not absorbing the coursework (or if they are cheating and absorbing the coursework, there might be something wrong with the coursework). The most effective policy might not be to try and mechanically prevent cheating, but to explain that, this is information that you're going to need if you actually want to…

Adjunct instructor here. Before I came into the program, cheating was on the rise. When given programming assignments, students would go to Geeks for geeks and download solutions, some of them mostly correct, and submit those for credit. One remedy was to try to make programming assignments harder and harder. Eventually, they got so hard that we were asking people new to computer science to implement a full arbitrary…

Hi, sometime adjunct here.

Cheating on programming assignments has been rampant forever at every undergrad institution I have experience with and somewhat present among graduate students. My experience spans about 25 years in that space now.

When I taught an introductory class, I gave open-book exams with no laptops or phones allowed. About 1/3 of the class was unable to write a syntactically correct for loop in Python despite our textbook being an introductory Python-based book chock full of examples. It was pretty clear that a subset of students were either working together on project assignments or out-and-out having someone else do the assignments for them. I mainly compensated for this by having a large part of the grade being a 1-1 meeting with me to talk me through the code. That and the exam had the effect of actually making cheating somewhat less worthwhile. But this approach simply doesn't scale these days - my max class was around 32-33 students and the time I spent meeting with students was insane. I haven't taught in a few years and understand that class sizes of 150+ are not uncommon. I could have never used the same approach with that many students. I probably would have doubled-down on exams and made exam length darn near impossible to finish without actually knowing the material well enough to do without referring to the textbook.

I was teaching more from a practice-based viewpoint so mostly I came up with "weird" projects that mirrored problems I spend time on (data cleaning, using existing libraries to do neat little things, and also having students pick a personal project to implement that I helped them scope appropriately).

We bitch and moan about interview whiteboarding but given grade inflation its kind of hard to trust university credentials. Grade inflation was kind of disheartening in that the worst students didn't really get a poor grade. But I also didn't have any problems with the top 1/3 of the class getting a very high grade - these students were motivated, understood the material, and often impressed me with where they got in a single semester.

Re: Coping with Copilot

#77
post #37

Earlier quoted context omitted.

Hypothetically if they became irrelevant wouldn't that imply that we have models that could just understand natural language?

Not necessarily. The skills could become irrelevant just because the models advance and you need new and different skills to query them effectively.

But then you would have a foundation to figure out the new models. This is the essential problem when teaching any field because the field itself advances faster than one can effectively teach you.

That's why getting an Internship is always a good idea.

Re: Coping with Copilot

#78

Earlier quoted context omitted.

Adjunct instructor here. Before I came into the program, cheating was on the rise. When given programming assignments, students would go to Geeks for geeks and download solutions, some of them mostly correct, and submit those for credit. One remedy was to try to make programming assignments harder and harder. Eventually, they got so hard that we were asking people new to computer science to implement a full arbitrary…

> one addition to programming assignments includes an analysis write up. when i was interviewing candidates this was the fastest way to filter those who understood and those who didnt. ask someone to talk you through how to solve some real-life problem. to look at a stack trace and describe what they see, or to run a profile and trace through the cause of a hotspot/contention. show them an issue and have them live de…

Ugh I had someone ask me to debug a verbally communicated error message in an interview.

Like they picked some random port configuration issue that had stumped them for days in the past and thought cool let’s remove the internet, the command line, and ask people to solve it on the spot.

I offered plenty of plans for how I would go about debugging, but I didn’t know the one simple trick.

I agree with trying to use challenges that are closer to the real work, but it’s really hard to do that without over-testing domain knowledge.

For instance, I ask candidates to do some asynchronous control flow. These are all candidates with js listed as their best language and I offer to let them look things up or to show them the promise apis they need, but a certain percent just refuse to engage with the problem because they don’t have the domain knowledge and seem to feel they’re being tested unfairly.

The problem does a really good job of showing a candidates grasp of all the tricky parts of js, so I keep using it despite the drawbacks.

Re: Coping with Copilot

#79
> we teach in programming languages that don’t even exist

I remember reading about a framework that actually sort of does that - create randomized programming languages. It was meant as a security feature against code injections iirc, but technically it should work as a solution to OP's problem.

Although I guess some of the other suggestions are better and easier to implement - ask students to explain their code (select one person randomly per problem, it's quite common anyway) and give more weight to tests.

Re: Coping with Copilot

#80
Copilot still works quite poorly with problems that are not “Stackoverflowable”. Perhaps the best way to fight this is to create assignments that cannot be googled in 5 seconds.
Post reply on HN