Live data from Hacker News

Coping with Copilot

sigarch.org

141–150 of 463 posts

Re: Coping with Copilot

#141

Earlier quoted context omitted.

There are a few issues with this kind of assignment. The first issue is that it's really hell on the TAs with all of the administrative work needed to do the swapping between phases. Software engineering is already one of the more annoying classes to TA, and this makes it even less palatable. The bigger issue is that, on the basis of fairness, you grade in later phases is very heavily dependent on factors that are ou…

> It is extremely rare that someone will be dumped on a codebase without a prior author remaining on to help them ramp up on the code. what? I must be living a rare life.

Hahahaha. Most of the times the author has moved on a long time ago.

Re: Coping with Copilot

#142
I don't know, I tutored an introductory course on data science in Python last semester, and yeah copilot would have been able to answer most of the problems. But students would have been able to copypaste them from somewhere else anyway. If you want to test them, have them explain what they did, and why they wrote it this way and not another way. But personally, I believe that people are at the university to learn learning, and to learn independence, and if they really want to cheat then it is their fault. You spend a lot of time (and in some places money) to be here, so you might as well be honest and learn. The degree itself is not as helpful as one might think. It is the stuff you learn for the degree that helps you later on.

But on the other hand, I found copilot useful as a tutor. When somebody asked about an API, I didn't have to akwardly search the documentation, I fired up VS code and have copilot suggest something (without the students seeing it of course ;-)).

Re: Coping with Copilot

#144

I understand the problem here and I sympathize with professors in these circumstances. Learning the fundamentals will remain important. But as others have pointed out: if students are unwilling to learn, or are taking shortcuts, it will ultimately hurt them in the long run. One thing tho is that things like Copilot put the lie to the hypothesis (propagated mostly by the Google-style job interview) that intensely codi…

I've been writing code for nearly as long and man, you have to try it. It's more like autocomplete on roids than something that generates Fibonacci methods automagically.

Yup exactly, and the ability to basically be fluent in any language.

Re: Coping with Copilot

#145

Earlier quoted context omitted.

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 Pyth…

I recently worked at a large state university. I remember a conversation with an instructor in a master-level operating systems course. One of the assignments was to implement a simple filesystem. The amount of cheating was insane. He started academic dishonesty proceedings against many of the students but the department pressured him to "work it out." He had to basically interview each student individually and ask f…

The majority of CS Masters students in the US don't have a BS in CS, or have one from a non top tier overseas university. Even more so than undergrad, Masters students in CS are there for the credentials, so I would expect cheating to be worse.

Re: Coping with Copilot

#146
Yeah, I totally get it. The purpose of education is credentialing and so cheating undermines that. If the purpose of education were solely instruction you would advise students not to use Copilot to finish assignments but those who do would only harm themselves.

Re: Coping with Copilot

#147

Earlier quoted context omitted.

There are a few issues with this kind of assignment. The first issue is that it's really hell on the TAs with all of the administrative work needed to do the swapping between phases. Software engineering is already one of the more annoying classes to TA, and this makes it even less palatable. The bigger issue is that, on the basis of fairness, you grade in later phases is very heavily dependent on factors that are ou…

> It is extremely rare that someone will be dumped on a codebase without a prior author remaining on to help them ramp up on the code. what? I must be living a rare life.

Yeah, that statement was the only thing that stuck out to me in an, otherwise, pretty good writeup that I mostly agree with.

The only times I can think of where the previous author was able to help was either during onboarding (where you are expected to be given smaller-scope tasks with the context of that code being predefined for you) or during work on certain specific singular projects as a team.

But at any large big tech company, you are probably gonna be jumping around more than a few different codebases (more often than not, large and being worked on for years), even if you work on a singular team/product. And most of the time, you are expected to figure as much as possible on your own, only reaching out to the people when you get stuck or encounter a specific issue. Other than that, you are expected to be able to build at least a janky proof of concept with as little help as possible.

Most of the time, the help I sharply needed was rather targeted and not really related to the code itself overall. It would be something that is kind of extremely difficult to guess on your own without it being explicitly told (aside from docs/code comments), things like "everything looks fine, but I get stuck at this auth step, what's wrong there?" - "oh yeah, you gotta auth as a part of this specific group, so you need to be added to this security group in this config file".

I am not trying to say that i am some genius and can get the structure and overall mental model of how a codebase works all on my own easily, only with the specific "gotchas" (like the ones mentioned in a paragraph above) giving me issues. Not at all. The only way I can mentally get a structure of the codebase and how the whole system works and operates (even as a rough/simplified model) is by looking at the design docs/documentation (very helpful, but far from sufficient on its own, more like a supplementary material of variable quality) and, most importantly, making small code changes and debugging the code using breakpoints to see how it all flows and where. Imo, understanding code through debugging and reading a lot into the code is an irreplaceable step for understanding a section of any significantly-sized codebase.

Re: Coping with Copilot

#148

Earlier quoted context omitted.

I've been writing code for nearly as long and man, you have to try it. It's more like autocomplete on roids than something that generates Fibonacci methods automagically.

I will try it at some point, but I have... feelings... about its abuse of open source licenses software as a learning set. Also I work in Rust these days, and use CLion. Not sure if it would be much help in that environment.

I guess any "abuse" is the fact that any code reproduced verbatim doesn't carry the license under which it was originally published. But the reality is that what Copilot is most useful for is (semi) intelligent autocomplete, and generating functions that almost certainly exist as StackOverflow answers. It won't do any thinking for you when it comes to the bigger picture.

Re: Coping with Copilot

#149

How does medical school, law school, and non-CS engineering resolve this? Seems like they would have had to solve the “how do I know what you know you know issue”.

In law school there generally isn't any homework in classes about the law. The only classes with homework will usually be classes in legal research or in classes that cover non-legal subjects from a legal perspective. As an example of the later, at my school there was a "Quantitative Methods in Law" class that basically was an introductory statistics class focused on applications involving law.

For the classes that are about the law (contracts, torts, criminal procedure, etc) it pretty much all comes down to exams. I only had one take-home exam [1]. All the others were in-class.

The exam questions were mostly essay questions. There would be a couple paragraphs or so describing some situation, and you would be asked what the legal outcome should be. Your essay needed to identify the legal issues involved, cite the relevant cases and/or statutes, and argue how those applied to the facts of the case to support the result you were trying to argue.

[1] Note: I am not a lawyer. I went to law school when I got burned out with programming. By the end of law school I was no longer burned out, and decided I'd rather be a programmer who knows a good bit about law than a lawyer who knows a good bit about programming.

Re: Coping with Copilot

#150
post #70

Could you just use another teaching language? Does copilot work as well with e.g. Racket, Raku or Pascal, which all seem like decent CS101 languages to me?

To quote the article:

> Here’s an approach that’ll work for sure: use some, let’s call them alternative, programming languages that Copilot doesn’t really know. (...) Sadly, I have news: Copilot’s love for programming languages knows no bounds! Racket! Haskell! ML! (...) Copilot is a ravenous beast: if any code in any language found its way into a GitHub repo, it’s already swallowed it up and is hungry for more, nom nom nom.

Not sure how true this is in practice - I only used Copilot once, with Python - but if it is that might invalidate this concept

Post reply on HN