[HN Gopher] Coping with Copilot ___________________________________________________________________ Coping with Copilot Author : lameda Score : 209 points Date : 2022-08-20 14:49 UTC (8 hours ago) (HTM) web link (www.sigarch.org) (TXT) w3m dump (www.sigarch.org) | WoodenChair wrote: | I wrote an essay "Introductory Programming Assessment Must | Accommodate Copilot-like Assistants" about this same topic last | month and came to the option 3 conclusion (use more exams or in- | class live coding assignments): | http://www.observationalhazard.com/2022/07/introductory-prog... | adrian17 wrote: | Extra nitpick regarding generated code: the | `quicksort_random_pivot` implementation isn't what people | commonly mean by "quicksort", as in: it's not in-place. This | means that some properties like space complexity are also going | to be different than what's usually expected of quicksort. | pydry wrote: | A professor could put up an almost correct but slightly wrong | answer on github or even a right answer with a copyright trap. | | So it might be more like bringing a tennis racket to a grenade | fight. | highwaylights wrote: | If what you're asking of these students can easily be automated | by a tool then the problem is in the assignment. Either don't | request it, knowing it can be automated with ease, or accept that | bubble sorts are a long solved problem and move on to teaching | other things. | | Lest anyone think I'm saying don't teach important concepts or | that such things no longer matter: there's a whole world of | principles and fundamentals that can be taught and assessed | without fizzbuzzing 100 students who already had access to Google | and StackOverflow before Copilot came along. | | Yes, directly assessing hands-on coding would be much better, but | these tiny snippets aren't really indicative of real-world tasks | that will be needed anyway (given that almost anything so | foundational will almost certainly be in a standard library), it | doesn't really prepare students for real-world development work, | and there's a general expectation that new graduates are going to | be _very very green_ and therefore need a lot of handholding | regardless. Even more than that, you've no way of detecting | plagiarism already in these assignments given that a couple of | basic rename refactors is going to stop you from proving the code | was lifted from elsewhere to begin with. | Merad wrote: | > If what you're asking of these students can easily be | automated by a tool then the problem is in the assignment. | Either don't request it, knowing it can be automated with ease, | or accept that bubble sorts are a long solved problem and move | on to teaching other things. | | If assignments that are easily automated are a waste of time, | do you have any suggestions on how instructors should help | students move from "I know literally nothing about writing | code" to "I know the basics well enough to solve problems that | aren't trivially generated by Copilot"? In my anecdotal | experience (albeit years ago) as a graduate assistant, for | students who are totally new to programming that phase often | lasts throughout the typical intro to CS course and it's not | unusual for it to stretch into the second level course. | Arch-TK wrote: | While copilot does great on short simple fundamental problems, it | sucks (and requires good attention and experience to find all the | bugs in generated solutions) when solving anything more | difficult. Although I can totally see how this would make | teaching the basics difficult. | | That being said, I think Microsoft should be fined $100B every | time they give one of their products away for free to students. | Hopefully that will be sufficient incentive for them to stop so | being so overtly anti-competitive. | Jamie9912 wrote: | Had to disable Javascript on your site because of the awful | hijacked scroll smoothing | meltyness wrote: | My proudest moment was in an embedded systems course, the teacher | asked for a function to generate fibonacci linearly in assembly, | there was a reaalllllly long pause, and I barked the answer | across the classroom. I vividly remember some stunned, disgusted | glances. | [deleted] | copperx wrote: | GitHub/Microsoft know what's up, because they make Copilot free | for students, but teachers have to pay for it. The best thing for | Copilot is to keep teachers as oblivious as possible. | cothrow_away wrote: | Euclid said that there is no royal road to geometry. People who | pick the royal road end up elsewhere. In a society that grades | them and acts on these grades, it may very well end up on a | king's throne. But not geometry. | shakow wrote: | 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? | SoftTalker wrote: | Students don't like learning languages that they are not going | to use professionally. They want to learn Python, Javascript, | maybe Java or C#. | | This is another clear indicator that most students today see | college as a higher class trade school, not as a place of | higher learning. | infinityio wrote: | 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 | dragonwriter wrote: | If it doesn't now, it will quickly if that solution is adopted. | emeryberger wrote: | Hi all - article author here. | | A reader of my article sent me this note, pointing me to some | relevant hot-off-the-presses work (reproduced with permission): | | ----- | | A group recently evaluated the performance of Codex (and | another model) on 18 programming languages: | | https://nuprl.github.io/MultiPL-E/ | | The high-order bits are: | | 1. The latest and greatest Codex is now twice as good on its | own benchmark suite than the original version published a year | ago. | | 2. It's just as good on Python as it is on JS, Scala, C++, | Swift, TypeScript... and other languages are not too far | behind. It's not bad at _bash_ of all things. | | Paper here: https://arxiv.org/abs/2208.08227 | [deleted] | yosito wrote: | As someone who's used machine translation as a tool to learn 2 | human languages, which I eventually gained fluency in, I'm really | tired of AI being considered "cheating". Yes, you can use it to | approximate answers to questions and be fairly certain those | answers are correct. But you can also use it as a tool in your | learning process to help you fill in the gaps until you're all | the way there. In language, it's quite obvious that _using_ the | language will increase your abilities over time. In programming, | that may not be so intuitive, but it 's also true. The more | software you build, the more you will understand about building | software well, even if you use Copilot to help write your | algorithms. I think the "problem" here is that tools like this | make it difficult to enforce that _others_ learn something. But | for self-directed people, who are committed to learning and | understanding what they are doing, AI is more of a useful tool | than a cheat. | superb-owl wrote: | While this will definitely be an issue in the short term, it's | part of a long standing series of panics where a new technology | develops, and everyone worries that we'll lose the skills it | abstracts away. | | And to some degree we will! I certainly can't do long division | anymore, and I struggle to navigate my own neighborhood without | GPS. This is a bit sad, but I think something of an | inevitability. | | If history is any guide, academics should embrace the new tech | and try to teach students bigger things that copilot can't yet | handle, with the assumption that they'll use copilot to fill in | some details--the same way we now teach students to use graphing | calculators to solve problems that would have been out of reach | for their grandparents. | | There are so many things I never learned as an undergrad because | we were too focused on algorithms. Database design, testing | strategies, different architectures, programming language design, | etc. Maybe these things can come to the forefront of the | curriculum if we don't need to drill basic algorithms. | svnpenn wrote: | > I certainly can't do long division anymore, and I struggle to | navigate my own neighborhood without GPS | | These are not the same thing at all. Yes calculators and such | have largely made long division pointless, but it's still quite | useful being able to get around without GPS. especially around | construction, GPS is awful. | | You need to know the limits of the tools you're using. If you | just say "I'm always going to use GPS, because it's always | better" you are really doing yourself a disservice. | tommyage wrote: | Who should fix the bugs in the future? Nerds? Where are they | coming from 60 years from now? | | E(very) S(ingle) W(ord) S(hould) be (no [ACCEPTED] completion | here) W(ritten) W(ith) C(onscience). You should be responsible | for your code submitted. Are your feeling confident? | | Won't touch Co-Pilot. Probably you are spending equal time proof | reading than _understanding what needs to be written_ in advance. | At least that is what I am hoping about. Of course you don't have | to proof read, and most things can probably be grasp in a glance. | But you rely on a black-box. From a corporation. To me that | sounds like agreeing with a dictator. | | Wouldn't promise my craftmanship for things I didn't grasp in | advance. But maybe that's a culture hindrance. I like it though. | I want to know the code I am corrected about. I want to archive | mastery. | muhehe wrote: | I've read the title as "copilot with copilot" and thought that | copilot leaked some parts of itself :) | BiteCode_dev wrote: | 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. | NikolaNovak wrote: | As I moved as well, I experienced three different Canadian | universities' Computer Science Program. | | There was only one professor and course that I still remember | 20 years later: CS408, Software Engineering, Professor Wortman, | UofToronto. | | Class project was in four phases, cumulative (basic | functionality for the application in phase 1, progressively | additional functionality in other phases, frequently strongly | interacting with previous phase code). | | Here's the kicker: After each phase, you had to _swap your | code_ with another team. So you had to pick up somebody else 's | code, figure it out, and then build up on it. | | Few of us that had real-world working experience loved the | course and flourished in it. This is what we are training for! | This is what programming is like! You are taking real code and | building a real thing with it! | | About 250 other students signed a petition to the Dean on how | this is unfair and awful and they will _not_ put up with it. | They were just too used to / spoiled by 16 years of 5 | assignments per semester with abstract, entirely separate | questions of 1.a), 1.b), 1.c), etc. | | All I could think of - if you did not like this course, you are | about to not enjoy next 4-5 decades of your life :D | | Other than this one course, I can say that I'm a prolific, | enthusiastic, life-long learner, and my university experience | was the absolute dumps - it was far less about learning, and | far more about bureaucratic hoops and artificial constraints | and restrictions. I was top of the class in some hard courses | (generative compilers etc), mid-pack in the some of meh | courses, but in retrospective, my life opened up when I was | done with academia and could work and learn in the 'real | world'. | x86x87 wrote: | > Here's the kicker: After each phase, you had to swap your | code with another team. So you had to pick up somebody else's | code, figure it out, and then build up on it. | | This is hilarious and is a good example of how sw engineering | works in the real world. Love it. | bobwaycott wrote: | Hats off to your prof. This is such a brilliant idea for how | to teach, anchored in a solid reflection of what "doing the | job" is like day-to-day outside the academic context. | johndough wrote: | > After each phase, you had to swap your code with another | team. | | I'd expect that most students would just "rewrite" the code | they received from the other team and replace it with their | own. | DangitBobby wrote: | I'm sure that various strategies for gaming the system were | anticipated and prohibited. | yosito wrote: | > you had to swap your code with another team. So you had to | pick up somebody else's code, figure it out, and then build | up on it | | Genius idea! Though if my professors did this, I may have | been scared away from a career in programming | jcranmer wrote: | 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 | outside of your control. If you get someone's code who just | didn't complete the assignment--that is probably going to | happen once a semester--you are going to be at a | disadvantage. Even if there is an option to appeal to the TAs | and get the unacceptable code base replaced with an | acceptable one, that's still likely to be a few days' worth | of work lost learning the codebase, discovering its | incompleteness, and now you have to start over _again_. | | I'll also point out that it's not exactly real-world | experience. 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. | haskellandchill wrote: | > 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. | ticviking wrote: | Most of my major professional achievements involve | jumping into code like this, and solving some problem | anyhow. | x86x87 wrote: | Hahahaha. Most of the times the author has moved on a | long time ago. | filoleg wrote: | 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. | ticviking wrote: | I had a similar software engineering course experience to | the one above with a lot of things out of my control. | | I got an A. By being humble reflective and proactive, | showing the instructor that I was looking for solutions to | the problem and giving an appropriate amount of time and | effort to the class. | x86x87 wrote: | I would expect that code you get from Stage N-1 is | functional across a range of tests that are agreed upon | upfront. | | For the fairness aspect, I would also let students pick any | Stage N-1 that is not their previous N-1. That would also | teach em that not all is created equal (and probably | identify approaches / ideas that they can incorporate in | their work) | ericbarrett wrote: | I love this idea. Maybe some extra credit if your Stage | N-1 is the most popular choice? | JackFr wrote: | I think you could remove a lot of your fairness and | logistical concerns by at stage N choosing one solution and | everyone group has to start from there. | | Now for pedagogical purposes it might be that the professor | chooses the best solution or a substantially worse | solution. | | There might be some concern that this unfairly advantages | one group over the others but it's not completely clear to | me that it does. | jefftk wrote: | You could also choose two, which then ensures no team | starts with their own work from the previous phase | corbin wrote: | > About 250 other students signed a petition to the Dean on | how this is unfair and awful and they will not put up with | it. | | That behaviour by the students disgusts me. | bogdanu wrote: | Wow, your professor had an amazing idea! I wonder why isn't | this strategy more common in college classes. | bcrosby95 wrote: | My software engineering teacher did something similar. We had | a giant group project that had to be worked on by the whole | class. He split the class into 5 groups of 5, and we divided | the work by group, and groups had to work together to | integrate with each other. | unnouinceput wrote: | Quote: "Oh, have I mentioned that Copilot is free for students? | Yep, COPILOT IS FREE FOR STUDENTS. It integrates helpfully right | in their favorite IDEs." | | Does it integrate with Lazarus? | debbiedowner wrote: | Just don't grade HW and have handwritten quizzes and tests in | class? (Yes, the grad students will suffer when grading... unless | you pay them and then they will be lining up) | hospadar wrote: | I've always thought that the ability to communicate to other | humans about programs and to be able to synthesize a conceptual | understanding from looking at code are highly valuable and | sometimes-overlooked in the workplace. Assignments to write a | function don't really demonstrate either skill. | | Maybe more assignments like: | | - "Here is a function that is supposed to generate a fibonacci | sequence, but it is not correct, explain why" | | - Here is a sort function. What is the name of the algorithm | implemented by this sort function? | | The reality of any career in CS is going to involve a lot of | maintenance/understanding of existing code any systems. Copilot's | failure to replace all human programmers isn't because of it's | inability to cough up complex code, it's because it can't | communicate with the product owner, debug a program amidst a | time-sensitive incident, or explain its work. | dwohnitmok wrote: | Those two questions are definitely within the reach of current | AI. Not within 100%, but probably better than 70%. | emeryberger wrote: | Agreed. I just tried this by writing three sort functions | named "some_sort", "another_sort", and "yet_another_sort". I | started comments after each with "# The algorithm used in | some_sort is known as: " and Copilot correctly completed them | in all three cases (bubble, insertion, and merge). | MarcScott wrote: | And old colleague of mine used to teach CS, when students had to | send off code they'd written to Cambridge University for it to be | compiled and run, and the results were then returned, all by | post. | | Then you were able to compile and run code locally on your | machine. Then the IDEs came along, with syntax highlighting and | then linting. | | Copilot is just the next evolution in writing code, and saving | you the effort. I bet they railed against Timsort and it's | inclusion in the Python standard library, but now who honestly | writes their own sorting algorithms? | | This kind of generational gap reminds me so much of the "Kids are | spending too much time reading" > "Kids are spending too much | time watching TV" > "Kids are spending too much time on their | phones" rants. | social_quotient wrote: | 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". | tzs wrote: | 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. | GrumpyYoungMan wrote: | Straight up assembly language, preferably Motorola MC680x0 or | some other contemporary that was meant to be coded by hand; it's | the only way, man! Plus students will gain some appreciation for | how microprocessors actually work. | | In the same vein, just have them write code out on paper during | exams and coding competitions like the way we did it back in my | day. It's not as if they're not going to need that skill anyway | when they get whiteboarded during interview loops when even the | most lenient employers get exasperated at "CoPilot-only" | graduates. | | </tongue-in-cheek> | somenameforme wrote: | Do people no longer generally have exams on paper? | | For lower level courses we had online assignments, and pen and | paper exams - which is where the majority of the course grade | came from. If you didn't [intimately] know what you were doing on | the assignments, you'd fail the classes due to the tests. | brundolf wrote: | 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 | twodave wrote: | 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. | lfkdev wrote: | With that logic using a calculator is also cheating. | tgv wrote: | On an arithmetic test, yes, it is. | pavelboyko wrote: | This reminds me of a story that an old professor of theoretical | physics told me. In the early nineties, he left the former Soviet | Union for the United States to teach physics at one of the top | universities. There he encountered the fact that American | students were fantastically good at solving all his standard | problems for integrals. It quickly became clear that the students | were using the then-new program for symbolic calculations, | Mathematica. As a result, our professor also mastered Mathematica | and spent half the night finding such integrals that it still | could not calculate for assignments. | | I use Copilot every day and I can assure you it makes a lot of | mistakes. I think that, at least in the short term, CS teachers | will still find assignments where it makes mistakes. | jeffbee wrote: | I guess CS programs are going to need to grow up and teach real | topics like ethics, technical communications, effective testing, | and large-scale systems design instead of how to write simple | loops, which is something I learned at the age of 4 from "Gortek | and the Microchips". | eru wrote: | What makes you think GPT-3 (or similar) won't write your ethics | essay for you? | jeffbee wrote: | That's very easy to deal with. Oral exams or blue-book exams. | eru wrote: | What's a blue-book exam? | | You can test loop-writing in an oral-exam, too. Thus your | proposed solution for GPT-3 writing ethics essays is so | good, that it fixes the original problem. | shagie wrote: | A blue book exam is where you go into the lecture hall | and write out, long hand, in a blue book the material | being tested on. | | The blue book is a standard. | https://www.amazon.com/BookFactory-Exam-Blue-Ruled- | Format/dp... | | https://www.thoughtco.com/blue-book-1856928 | | In the classes that I had that used blue books for exams, | the exam book was free and given out by the proctor. | jeffbee wrote: | You're right, that a pretty good approach anyway. Teach | your whole course in a fake language or on a fake machine | like MMIX. | youssefabdelm wrote: | Ever heard of just-in-time learning? Copilot (if it gets good | enough) is the damn teaching tool! All they need to do is come up | with a programming goal/project thats extremely | important/relevant/exciting to them, and break the problem down | into sub-problems for copilot. This time they'll actually give a | shit to understand why copilot wrote a bug or why the code works. | No more boring pointless teacher assignments that hold no | relevance whatsoever for the students most immediate and | important goals and concerns in life. Finally life is fucking | good for students for once and they dont need to google every | answer for an hour. | norwalkbear wrote: | So algos take a back seat to imperative code | captainmuon wrote: | 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 ;-)). | ctoth wrote: | Setting aside the academic implications for a moment, if you | think that Copilot-like models won't be a significant part of | programming in the future I'd like to point out this research | from Google: | | > We compare the hybrid semantic ML code completion of 10k+ | Googlers (over three months across eight programming languages) | to a control group and see a 6% reduction in coding iteration | time (time between builds and tests) and a 7% reduction in | context switches (i.e., leaving the IDE) when exposed to single- | line ML completion. These results demonstrate that the | combination of ML and SEs can improve developer productivity. | Currently, 3% of new code (measured in characters) is now | generated from accepting ML completion suggestions. | | So 3% of all code at Google is now written by AI autocomplete, | and Google developers who use this technology are 6% more | efficient than those who don't[0]. | | Is it bad that students are cheating on homework with this? As | bad as it was when students used Stackoverflow to cheat, I | reckon. But will working with AI models be an essential skill to | learn for new (and existing) programmers? About as much as | getting comfortable with Stackoverflow was, I reckon. | | [0]: https://ai.googleblog.com/2022/07/ml-enhanced-code- | completio... | Lev1a wrote: | In computer class back in 9th grade there were one or two exams | about Excel, _where we were to use excel_ to compute some of the | answers for questions. The fact that "memorization questions" | (if that's the right English term?) about several functions and | concepts were on the same exam sheet and that the Excel help | function was right there was something that seemingly slipped the | teacher's mind. | | Although he was an older physics teacher who only really did | computer class ("Informatik") because there was nobody else | available or (more) qualified to do the job. When later on there | were classes on programming, he made us use TurboPascal instead | of something less cluttered and actually useful in modern economy | like Python. | | That same teacher later on performed some show experiments about | induction and electromagnetic forces in physics class where he | let a magnet fall through a glass tube with several copper coils | around it. So far so good, but he then tried to readjust one of | the coils one the glass tube, which predictably shattered in his | hands, nearly severing some fingers and actually severing some | tendons, which IIRC were later replaced with other tendons from | his legs or something. Needless to say, not the sharpest tool in | the shed. | | My other physics teacher during 10th-12th grade physics classes | was a severely esoteric nutjob, preferring to hold long rants | about "science" being able to diagnose diseases in people by | somehow shining a laser at a drop of their blood and interpreting | the reflection/refraction because there was a "connection" | between the person and their blood (or something like that, I | honestly tuned out his ravings after a while). Apparently his | wife is/was some kind of homeopathic "healer". | | All that is to say, computer and physics class teachers for me | were "very fun" and "useful", since one did not have a clue that | their students were "cheating" and both were not very in tune | with modern and/or scientific methods. | zitterbewegung wrote: | Just add a requirement where the student has to explain how the | code works. | | To be honest there should be a class called language model | querying because for simple tasks it does well but eventually you | will have to debug the output (not just copilot but GPT3 and | dall-e). | [deleted] | wiradikusuma wrote: | > Just add a requirement where the student has to explain how | the code works. | | There's an AI for that! | jefftk wrote: | _> there should be a class called language model querying_ | | Do you think the skills taught in that class would be relevant | for very long? | zitterbewegung wrote: | Hypothetically if they became irrelevant wouldn't that imply | that we have models that could just understand natural | language? | jefftk wrote: | Not necessarily. The skills could become irrelevant just | because the models advance and you need new and different | skills to query them effectively. | zitterbewegung wrote: | 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. | [deleted] | GrumpyYoungMan wrote: | Much like reverse engineering, it's easier to come up with an | explanation when you have someone else's working solution to | examine than it is to come up with a working solution from | scratch on your own. So that doesn't really help. | vinodkd wrote: | but maybe, they'll end up learning anyway? one thing i | realized when i went back to studying online is that i was no | longer the student who needed to prove something to someone | else, and the typical test annoyed me. I get that this | article is about a teacher trying to find out how much their | students have learned a subject, but maybe that needs to | change? | niek_pas wrote: | Agreed, and, in addition, having every single student explain | their program would be a significant burden on teaching | resources. | t_mann wrote: | > 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. | O__________O wrote: | Only matter of time before CoPilot like systems (if they do not | already) just reverse engineer the compilers to produce and | link a dynamic syntax to know instances in plain-text source | code of the "foreign" programming languages and render them | within a language the user already understands; yes, there | might be gaps in idioms, assuming a natively written language, | but using example you provided, there in theory would not; | ...and if need, return a final version in the target "foreign" | programming language. | t_mann wrote: | such systems might spring up, but the market is far more | limited than for generalist CoPilot-like systems, and they | will thus likely be less sophisticated and thus easier spot | (by other automated solutions) | O__________O wrote: | Might? This is the future of systems like CoPilot, reading | existing source code only goes so far and it is only matter | of time before the state of the art systems dynamically map | compilers, even foreign ones, to source code. Once mapped, | system will use its universal transcoder to remap the code | to a know target language and even dynamically rewrite the | compiler of the foreign language if appropriate to fill | idiomatic gaps. | | Ultimate end user for systems like these are not humans. | niek_pas wrote: | The scrolljacking on this site is awful. Why do people keep doing | this? | tazjin wrote: | Only way to use the web is worth uBlock disabling all JS by | default. Works on mobile, too. | stevebmark wrote: | This is why I love the disable javascript plugin for Chrome. | One click and terrible sites like these are tamed. uBlock | origin is also useful to block sticky headers. | foepys wrote: | I'm using reader mode in Firefox more and more often because | websites just cannot keep their hands off my inputs nowadays. | It's infuriating. | mediumcat wrote: | 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. | fancyfredbot wrote: | I get that copilot is AI and pretty cool, but students could look | up a Fibonacci program on Google before it existed. What's more | these algorithms are written in books. If students wanted to | cheat on your "write depth first search" assignment then they | already were. | SoftTalker wrote: | Even implementing an algorithm from a book teaches you | _something._ | | Most book algorithms are in pseudocode so you need to know how | to write a loop or a function in the language you are using. | | And just the act of typing it line-by-line will focus attention | and help cement concepts in the brain (assuming one really | wants to learn). | | Hitting TAB in Copilot doesn't do any of those things. | throwaway675309 wrote: | I understand what you're getting at, but feel like you're | splitting hairs here since somebody who goes to look it up on | Stack overflow is just going to copy paste... not type it out | line by line like it's a page of BASIC from BYTE magazine. | jefftk wrote: | I think the big change here is how much easier it is? Students, | like everyone else, are lazy. Previously just doing the | assignment was typically less work than cheating, and Copilot | makes that much less common. | moffkalast wrote: | Type the assignment into google and press enter vs type it as | a comment and press tab? | | Seems roughly the same amount of effort, and since Copilot is | not free anymore most students won't bother paying for access | on any kind of scale that matters. Whoever was going to cheat | will cheat regardless. | | Besides it's one of those "you won't have a calculator with | you everyday" fallacies. If you can solve problems with | Copilot in class you can also do it at your job later on. | sliken wrote: | Not really, for small snippets, sure. But jobs require | getting something done. Sure you might be able to tab | complete 10 pieces, but at some point you have to tie them | together to get a working program and those 10 pieces will | have different assumptions and require some real | understanding to integrate. | sodality2 wrote: | > Copilot is not free anymore most students won't bother | paying for access | | Copilot is free for students: | https://docs.github.com/en/billing/managing-billing-for- | gith... | niek_pas wrote: | > Previously just doing the assignment was typically less | work than cheating | | I don't think this is generally true, especially for | algorithms and smaller programs: Googling 'fibonacci python' | takes 3 seconds. | omginternets wrote: | This seems like a problem for educational institutions, not for | industry. We're already inundated with mediocre programmers, many | of whom have CS degrees, which is precisely why the industry | looks at job experience more than credentials [0]. I don't see | how this is going to further reduce the supply of competent | candidates. | | What it _will_ do, however, is make it difficult for CS | departments to evaluate students based on homework, and it 's not | clear to me that this is such a bad thing. My experience with | university CS courses has been that assignments are largely auto- | graded, with systems akin to unit tests. In the common case, an | overworked TA quickly spot-checks the source code to look for | obvious signs of academic dishonesty, but that's it. So, | universities are left with the following choice: give everyone an | A, or grade differently. In the optimistic case, this might even | produce a grading strategy that improves the value of a CS degree | as a predictor of programming competence. It likely won't, in | which case we have a _status quo_. | | [0] This is a problem in its own right. I recently referred a | grad student as a job candidate in my current company. I'm the | most senior backend engineer, and this grad student was a | _highly_ competent contributor to my open-source project, which | currently plays a strategic role in our backend. Said grad | student is unusually bright and productive in a complex specialty | (distributed systems), and I had to push our VP Eng very hard to | hire him. His initial reaction was along the lines of "he | doesn't have any industry experience, so we don't know if he's | good". It gives me nausea to think about how many outstanding, | 2-sigma engineers are rejected because companies don't know how | to evaluate their talents. In the end, we ended up hiring him, | but only because I stated that I would take full responsibility | for his productivity. I regret nothing. </rant> | marmada wrote: | I think Copilot will make cheating easier. A benefit of this is | that employers may look at side projects much more, which are | harder to cheat | [deleted] | charcircuit wrote: | Copilot is limited to short snippets. You can't just ask it to | write a HTTP server. Also I don't see how having copilot generate | the code for listening on a server socket is any better than when | I copied how to do it out of a man page. Copilot doesn't add | anything new, you've always been able to look up the | documentation or look up how other people approach the problem. | | The fibonacci example doesn't make much sense either due to how | trivial it is. Without copilot you are just copying from the | definition of the function and with it copilot copies it for you. | The other algorithms that follow are both online and probably in | their textbook. | johndough wrote: | Copilot can almost write an HTTP server. Here is how I did it: | | 1. Start a new python file with the line "# This is an | implementation of an HTTP server" | | 2. Press autocomplete a bunch of times and stop somewhere when | "enough" libraries are imported | | 3. Press "#" and let it autocomplete the comment about what | comes next (global variables for PORT and BUFFER_SIZE in my | case) | | 4. Again, Press "#" and let it autocomplete a bunch of comments | and functions ("get_file_extension", "get_file_content_type", | "get_file_size" in my case) | | 5. At this step, I had to cheat a bit since it was generating | too many "get_*" functions, so I started a comment with "# | Initialize" and let it autocomplete again to get | "init_server_socket" | | 6. From here on, it generated handle_request, parse_request, | get_file_path and send_response automatically. | | 7. Lastly, I wrote "def main" and let it autocomplete again. | | This produced an HTTP server which almost worked. I just had to | fix a small issue with "file_path", since it expected that | files were stored in the root directory, but I wanted it to | load files from the local directory. | | The code is not great since it does not handle most errors | gracefully and is vulnerable to directory traversal, but I | didn't even have to think about the HTTP protocol while writing | it, so it is still quite impressive. | | A few good points: | | It generated a huge selection of MIME types which I probably | would have had to look up by hand. | | The generated server is multi-threaded! | | It automatically reuses the socket, so I do not have to wait a | minute every time I restart the server. | | Here is the final code: https://bpa.st/CTRA | muzani wrote: | This reminds me of when my school teacher insisted that real | engineers didn't use calculators. They'd calculate their sines | and cosines from a table. | | 3 years later, the education ministry decided that was BS and let | everyone bring calculators to math exams. Surprisingly, math | scores didn't go up much. | eru wrote: | We never did much calculation in math exams. That's what | physics class was for. | muzani wrote: | It was 8th or 9th grade for me when the switch happened. We | were still doing areas and perimeters. | | A calculator actually helped me understand physics a lot | better, especially things like slopes. | eru wrote: | Makes sense! | TakeBlaster16 wrote: | I had to deal with this too. "You're not going to go through | life with a calculator in your pocket!" | Invictus0 wrote: | I've seen people take this to the extreme and literally be | unable to do basic fractions and percentages either in their | head or on paper. | lancebeet wrote: | I wasn't allowed to have a calculator until I was around 10 or | 12 years old. I didn't like it at the time but now I'm quite | happy about it. | Brian_K_White wrote: | It sounds like copilot could ultimately be just another | progression in the definition of normal or baseline, like using | calculators in math classes. | | Whatever the current state of the art and tools of the trade are, | that's what they are, and probably the bulk of courses will just | adapt to reflect that state of reality and incorporate that into | the courses. | | Outside of maybe some specialist courses that may still exist but | most students wouldn't need to take, it would just be expected | that most students use the current tools to accomplish the tasks. | Even going so far as to provide free student access to any paid | tools to avoid giving the rich kids an unfair advantage. | | The nature of posed problems, and their teaching purpose (why | they are posed and what you get out of them) would just change | from what they are now. | | Whatever the "calculator" can do, simply becomes uninteresting | and not required for most people to worry about. | | My first couple years of school I was taking mechanical | engineering, and it was right during a transition where we were | doing both manual and cad drafting. There is a lot of geometry | tricks both physical drawing and math required to generate | accurate views of any shaped objects intersecting with any other | shaped objects, viewed from any angle, sliced at any depth. | | We spent a lot of time and effort on that. That is all done by | magic now inside the cad engine. | | Someone still needs to know it, but 99% of people whos job is to | design or otherwise manipulate models of objects do not need to | know it. | | I, who did learn that stuff, don't think an engineer who didn't | have to know how to generate an accurate view with nothing but a | pencil and a calculator is a less capable less insightful less | quality engineer. | | If anything they may be better for not having to spend as much of | their intellect on mechanics & implementation vs ideas. The | knowledge & skills I'm talking about don't contribute to their | understanding of the real job, they aren't foundations that the | later stages build on. It's just labor of no value at all except | to the cad engine designer. It had a value in the past because it | was a form of literacy. It was simply the only way to document | the ideas you were fabricating. | | Perhaps copilot is like that. | | I don't know and I'm not saying it is, but it could be. | spcebar wrote: | 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 go into the field | and if you're using copilot here you are damaging yourself in the | long run. | | Maybe it's not fair to give as good grades to students who are | cheating on assignments as those who are actually doing the | assignments, but at the end of the day is the purpose of the | course to measure the student or to teach the student? | ren_engineer wrote: | yeah Copilot really changes nothing here, all these basic | questions can be found with a quick Google search. The reason | Copilot is so good at these types of questions is lazy | professors assigning the same basic stuff so there is a ton of | training data. | | instead of writing an article crying about it, the professor | could try making some unique questions to test knowledge of the | underlying concepts | duxup wrote: | At that point should we count grades at all, other than a basic | evaluation for the student's personal use? | chiefalchemist wrote: | True story. I got my CS degree pre-internet. I did well with | programming. Some of my friends / peers were less talented. In | one of my 300 level courses the assignment was more difficult | than usual. I naturally figued it out. They struggled. | | Evetually I gave a copy of my code / solution to Friends Group | A and also to another Group B. They didn't know each other. I | said, "Be careful! If you copy, disguise it."* Deadline comes. | Everyone hands in their work. | | The following week, we go to lecture. Prof walks in and writes | a list of names on the board. I knew each name. I knew what was | happening. I waited for the shoe to drop (i.e., my name on the | list). The shoe never dropped** | | I believe they were all given Ds. Not sure why they didn't fail | (F). | | * In retrospect, this was a stupid on my part. If they knew how | to alter enough it's likely they'd be able to write it | themselves. That is, I all but suggested they walk on water. | | ** Also in retrospect, the TAs + prof had to realize I was the | source. The class was big but not that big. And if only some | completed the assignment correctly, the source had to be not | difficult to identify. I'm not sure why I was never pulled | aside and spoken to. Thank gawd. | chrismarlow9 wrote: | If someone is just looking to fill a course requirement and has | no interest in being a programmer, my response is "meh, | whatever". | | If someone is cheating and actually expects to land a decent CS | job, my response is "good luck on the leetcode questions and | the 5-7 hours of questions you'll have to answer between the | intro call, panels, and an offer". | | And if someone magically manages to get all that way without | actually learning the material they will get absolutely crushed | at work. Meetings where you have to give your professional | opinion will induce fits of anxiety. Making changes to your | code based on feedback and not having any idea what the | feedback means. Even just the amount of work alone that needs | to be done at most tech places crushes great engineers. Without | the knowledge it will just stack up on you even further. | oxfordmale wrote: | You underestimate the human ability to get away with | incompetence. Unfortunately many of those cheaters manage to | get in roles where they can hide their inadequacies, either | by slacking of their colleagues that do actual work or by | sucking up to the right managers. | chrismarlow9 wrote: | Oh it definitely happens, I'm not saying it doesn't. But in | those examples you mention I would say there are more | people who are bad at their job than just the IC who "faked | it". | GrumpyYoungMan wrote: | > " _...this is information that you 're going to need if you | actually want to go into the field..._" | | That has never, ever stopped anyone motivated to cheat. Even | here on highly-educated HN, you get posters with open disdain | for what they learned in college. | | > " _... at the end of the day is the purpose of the course to | measure the student or to teach the student?_ " | | Both. Otherwise, the college diploma really does become the | meaningless scrap of sheepskin that its detractors claim it is. | tux1968 wrote: | > is the purpose of the course to measure the student or to | teach the student? | | The very basis of the scientific method is measurement. If you | can not measure your learning progress, how are you to know if | your training methods are adequate or failing? | | I really don't understand this idea that testing and measuring | students is a problem. Even the dreaded "teaching to the test", | sounds like a good idea. If doing so would somehow exclude | important learning, that just identifies an area where the | testing needs to be improved. | croes wrote: | At the end if the it is to get a job. And cheating students | often get better grades as most other students who don't cheat. | | They may lose in the long run, but the non cheaters aren't even | allowed to run | zeta0134 wrote: | There's more to this: it used to be that a college degree | carried with it something of a soft guarantee that the student | could achieve a baseline level of work on their own. This acted | as a useful filter for employers. If cheating runs rampant that | filter becomes meaningless, and once the student has | successfully cheated their way into the work force, their | incompetence can (depending on field) do very real damage to | the lives of others. | | Because of this, there will always be considerable pressure to | detect cheating and remove offending parties from the program, | be that the students copying answers from the internet, or the | institutions failing to detect the problem before handing out a | degree. | buscoquadnary wrote: | A college degree used to signal competence. Now it signals | you have the ability to show up and avoid doing something to | get kicked out for 4 years. | | I feel we'd probably get the same value to society if we just | made grades 9-12 optional. It would remove the people that | don't want to be there, improve the quality of instruction, | and college would actually be a meaningful achievement so we | no longer have requirements for entry level jobs to require a | Master's degree. | sarchertech wrote: | In many states school is already optional after age 16. | busyant wrote: | > 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 | go into the field and if you're using copilot here you are | damaging yourself in the long run. | | I don't teach CS, but I teach an online course in a STEM field. | I give out a similar message ("you're only hurting yourself in | the long run"). | | My anecdotal evidence is that my warning does nothing--I have | trap questions on various quizzes/exams and the frequency of | cheating hasn't changed with or without the warning. | | My _suspicion_ is that the students who cheat feel this way: _" | This is just some bullshit hoop that I have to jump through, so | it's okay if I cheat. I'll figure out the important stuff when | the time comes."_ | | I mean, they're delusional, but I understand the mindset for | cheating. | | edit: amusing story. | | Faculty members in my department are required to take an on- | line course on how to handle hazardous waste. There are a few | hours worth of videos to watch and a test that you need to pass | at the end. | | Last year, one of the faculty members took the test, compiled | the answers and emailed them around to everyone else (to save | them the time for this "bullshit task."). | | I said to him, "Isn't this precisely the kind of shit that | makes every faculty member angry when the students do it?" | | That being said, it was a bullshit test. | randomdata wrote: | _> I mean, they 're delusional, but I understand the mindset | for cheating._ | | Parental (other similar) pressure can indeed be quite strong. | Absent of that pressure they wouldn't be there in the first | place, so perhaps it is not so much being delusional as a | rational response to their environment? If they cheat their | way through the parents are happy and then they can return to | the life they otherwise would have lived. The time lost is | unfortunate in some respects, but at the same time if you're | cheating, the time investment likely isn't that great and an | acceptable cost given the circumstances. | | _> the kind of shit that makes every faculty member angry_ | | I find it curious that the customer using the product in an | unintended way would be upsetting to the vendor. What drives | such emotions? In my businesses, I couldn't care less how the | customer uses my product. If they're happy, I'm happy. | bo1024 wrote: | Famous professor quote/reply about this: "in teaching, | students are not the customer. They are the product." | randomdata wrote: | That certainly would be true within the public education | (primary, secondary) system, where the government is the | customer. Hence why attendance is mandated. However, | typically college level students are initiating and | fulfilling the transaction, thus they are the customer. | They offer up money in exchange for keeping arbitrary | social pressures at bay. In rare cases they offer money | in exchange for learning things. | | It is possible for the customer to also be the product. | Especially in the age of salable data, that is becoming | more and more common. However, when that is the case | there is incentives given to the customers to shape them | into what selling them as a product requires. In context | here, that would mean something like giving discounts to | those who don't cheat, which I am not familiar with any | college doing, so... That brings us back to why would a | vendor get emotional about the customer not using the | product as intended? | pclmulqdq wrote: | Some courses really are required bullshit to some students. A | lot of professors don't realize this, but if you teach a | required course, it is simple math to say that _some_ of your | students just don 't need to learn what you are teaching. | Sure, a lot of students _do_ need it but don 't _think_ they | do, but a good fraction of the class does not need to learn | the content you are teaching. | | The only remaining question is how to engage these people. I | have seen good approaches to that problem and really, really | terrible approaches, and it seems that most professors go for | the terrible approaches. Unfortunately, engaging people who | don't want to be there is a lot harder than just having a | bunch of required tests. | | These students are not all wrong that some courses are BS | hoops to jump through. Meet them in the middle. Teach them | something. | busyant wrote: | I know a lot of what I teach is not really relevant to | students who aren't chemistry majors--I even say this UP | FRONT at the beginning of the course. I tell the students | that they should think of the course as a way of assessing | whether they can think logically and critically about | "weird things." Because life is full of weird things that | need logical and critical analysis. | | In general, they appreciate my candor. | | That being said, in my experience, the students who cheat | often delude themselves into thinking that they understand | the material--and they really don't.* | | Then they seem shocked when they take a certification exam | (where they have to leave phones at the door and are | closely monitored) and they bomb the exam.* | | * I'm speaking in generalities here. I'm sure there are | some cheaters who are being "smart" about their cheating. | pclmulqdq wrote: | In the time I was at school, I heard of a lot more | cheating than would be justified solely by people | conserving time. I have recently seen studies that argue | that 50-80% of students cheat at some point, and | something like 10-20% cheat in every course they take. | Personally, when I conserved time, I just accepted the | bad grades - it was easier than trying to cheat and not | get caught. The OP was talking about students cheating | because they are not engaged with the material. I think | that's only part of the problem with cheating: there are | lots of other factors, like pressure to get a high GPA. | Kamq wrote: | > this is information that you're going to need if you actually | want to go into the field and if you're using copilot here you | are damaging yourself in the long run | | When you say into the field, do you mean academia or industry? | | Because the things copilot does for you are absolutely not the | things you need to know yourself to be in industry. They're, | for the most part, things we tried to put in libraries (or more | ideally language standard libraries for a lot of things). | | The fact that is solves a lot of interview questions just means | our interview process was absolutely garbage. | | And I'm skeptical of the academic side of this as well. It | sounds like professors from the early 60s being annoyed that | students have compilers (another tool that saves a ton of work | and repetition). Y'all are forgetting that this is the ultimate | lazy man's field. This isn't the first time the basics have | been swept away and replaced with something easier to work with | (and hopefully won't be the last). | mannykannot wrote: | > They're, for the most part, things we tried to put in | libraries. | | We need some people who can do things like making those | libraries. It also seems plausible that the people who have | at least some of the knowledge and judgement to do that | effectively will, on average, be more effective on more | mundane tasks as well. | | Larry Wall is one who wrote (somewhat drolly) about the | virtues of laziness, but there was nothing lazy about what he | did. | Kamq wrote: | > We need some people who can do things like making those | libraries. | | Do we? For things as simple as copilot tends to put out? | Why? | | Do you also believe we need to keep people around that do | other automated things? Plowing fields by hand? Hand | compiling higher level languages (as the first lisp | compiler was bootstrapped)? | | I mean, keep the information around. Don't go burning | textbooks on subjects just because we automated something. | But, what exactly is the value proposition of having | students do these things? | | > It also seems plausible that the people who have at least | some of the knowledge and judgement to do that effectively | will, on average, be more effective on more mundane tasks | as well. | | And your claim is also that this is the only way to get the | requisite knowledge and judgement? Have students take in a | string from stdin with a format that changes every | semester, munge it around, and do things with it instead. | | > Larry Wall is one who wrote (somewhat drolly) about the | virtues of laziness, but there was nothing lazy about what | he did. | | As someone who has done string munging in C, I'm not | entirely convinced that creating perl isn't an effort | saving defense mechanism (only half joking). | mannykannot wrote: | I find this a very puzzling reply, and it may be that I | misunderstood to what you are referring with the | "they're" in "They're, for the most part, things we tried | to put in libraries (or more ideally language standard | libraries for a lot of things.)" It might refer to "the | things Copilot does for you" or alternatively "the things | you need to know yourself to be in industry." | | The thing is, regardless of which way you meant it, we | need some people who can make the sort of libraries we | need in part precisely because automation such as Copilot | is no substitute (at least not yet.) | | This observation does not (and is not intended to) | endorse current methods of instruction or hiring; on the | contrary, it supports spcebar's view that riding your way | to a degree, certificate or entry-level position on the | back of Copilot is not doing yourself any favors. | | The point about Larry Wall is that we don't get labor- | saving tools without someone making an effort. | Kamq wrote: | > I find this a very puzzling reply, and it may be that I | misunderstood to what you are referring with the | "they're" in "They're, for the most part, things we tried | to put in libraries (or more ideally language standard | libraries for a lot of things.)" It might refer to "the | things Copilot does for you" or alternatively "the things | you need to know yourself to be in industry." | | I do see how that could be ambiguous. That's on me. I was | referring to "the things Copilot does for you". Generally | speaking trivial (or near trivial) algorithms. | | > The thing is, regardless of which way you meant it, we | need some people who can make the sort of libraries we | need in part precisely because automation such as Copilot | is no substitute | | Fine. Some people might need to be able to implement and | maintain libraries filled with generic algorithms, | especially language maintainers. That's still a very | different claim from the original "this is information | that you're going to need if you actually want to go into | the field". That claim implies that it's a universal | requirement, whereas the reality is the vast majority | probably don't need that knowledge. | | Implementing these things is tedious, and results in a | bunch of code that has to be maintained vs using | something out of the standard library. For example, sort | or max functions, which are at the intersection of what I | see copilot generate a lot and intro to CS classes. Even | without copilot, that's not really a skill that the | average practitioner needs to have ready at all times, in | fact I'd probably block a PR that implemented either of | those things in my projects, it results in extra code | that needs to be maintained and can be broken by a typo | or something silly. | | > The point about Larry Wall is that we don't get labor- | saving tools without someone making an effort. | | My comment about perl was sarcastic, and probably not | helpful. That, also, is my bad. | [deleted] | russfink wrote: | 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 length | integer calculator using nothing but a single tape Turing | machine (in Java, not BF). | | Eventually, some of us came to the realization that you can | never prove that somebody is cheating. People have been known | to hire tutors to do their assignments for them. There is just | no end. | | As a result, we evaluate students on four dimensions. | Programming assignments,* homework assignments, but also class | discussions and group participation. Those last two count for a | small, but non-trivial percentage of the grade, and are usually | enough to separate and identify those who understand what they | are doing, from those who are just "following along" solutions | that they find on the internet. | | * one addition to programming assignments includes an analysis | write up. Tell me in human words what is happening. Why do you | see that effect. What is the running time. And separately, | comment your code to tell me how it works. Those two parts | count significantly towards the grade. | | Any other professors here, what have you found that works? | scott00 wrote: | Not a professor, but my undergrad classes were generally | graded as 10-15% homework and 85-90% exams. | | With grading like that cheating on the homework is basically | pointless, so few did it. | emeryberger wrote: | I think grading on multiple dimensions makes sense, though | scaling is a challenge. | | As for analysis write-up: turns out, language models can also | explain what the code does really well, in convincing | vernacular. They generate reasonable comments. | | https://twitter.com/emeryberger/status/1560618825208320001?s. | .. | | As an illustrative example, I just typed in a little test | into Copilot. I only typed the first line and the text that | starts with "a paragraph explaining...", and typed a "#" for | each comment. Copilot filled in the rest. def | compute_sum_recursively(n): """A paragraph | explaining what this function does and why, and explaining | its running time: This function computes the sum of | the first n natural numbers. The running time of | this function is O(n). """ # Base case: n | = 0 if n == 0: # The sum of the first | 0 natural numbers is 0 return 0 else: | # Recursive case: n > 0 # The sum of the first | n natural numbers is n + the sum of the first n-1 natural | numbers return n + compute_sum_recursively(n-1) | sireat wrote: | I teach data structures and algorithms among other subjects. | | My assignments are similar to everyone else's (CLRS, JeffE, | Leetcode) yet different enough that simply copy and pasting | will not work. | | All I ask is that they comment their code, analyze complexity | and cite sources. | | I've been using copilot for the last year in my live coding | sessions. It saves so much time (especially in comments). If | students want to use Copilot I do not see a problem. It is | just another tool. | | Copilot is near useless without decent programming knowledge. | 80% of time it is fantastic. About 10% of time Copilot gives | you subpar snippets. O(n2) instead of O(n) etc. Then 10% of | time it just gives you wrong snippets. | | Just like GPT-3, once you go beyond a paragraph it loses | context. | leeoniya wrote: | > 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 | debug to root-cause and fix. it's okay if they use the | internet, SO, etc. -- that's how we all do it. see what they | have to look up! just listening to the amount of depth | someone can verbally communicate during novel problem solving | (including additional questions they ask you) turns a 60min | interview that wastes time into a 10min one that tells you if | you can move on. | | a favorite one of mine was to ask the candidate to describe | in as much detail as possible what happens between a | keystroke typed into a google search box and the search | results appearing. the diversity of replies is facinating. | some will tell you "google returns results from its | database", others will ask you if you want them to first | describe how the keyboard works at an electrical level | through the USB or bluetooth driver stack. | | "Never memorize something that you can look up." --someone | smart | matheusmoreira wrote: | That's a great way to evaluate someone! Individualized and | personal, uses concrete problems, no artificial | restrictions. | | It's a shame our mass education systems cannot use it. They | simply cannot apply such a humane method to hundreds or | thousands of students. They are reduced to applying their | bullshit test questions because it's the best they can come | up with at their scale. | nkingsy wrote: | 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. | leeoniya wrote: | > Ugh I had someone ask me to debug a verbally | communicated error message in an interview. | | i dont mean that the problem is only verbally | communicated. i mean that the debugging process the | candidate does is verbally communicated. | | in the scenario you're describing you'd be sitting at | that machine with access to the internet on another | machine. like, you know, in real life. | | > 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. | | async stuff in js is pretty good, but it's also easy to | go too deep on it with some bizzarely poorly architected | code. many js devs still fail to grasp all the | implications of closures, or how to avoid memory leaks, | or how to work with the GC rather than against it. | [deleted] | mdaniel wrote: | > but also class discussions and group participation | | I really, really hated those parts of school, second only to | group projects. I do appreciate why teachers want that, and I | hear you about how it can surface those who are cheating, but | I do wonder if it's causing the class to suffer for the | alleged misdeeds of a few | ethbr0 wrote: | I disliked them in school, for the usual reasons, but found | them the most useful exercises for developing career | skills. | | No person an island. | | And if they are, I don't want to be on a work team with | them. | jahewson wrote: | Is doing other people's homework for them a career skill? | qsort wrote: | School assignments are so different from the dynamics of | a real workplace that I find this point very moot. Always | hated them with a passion, but otoh I always enjoyed team | math and programming competitions, situations where you | have to do stuff that's actually hard, work with people | you actually respect and _trust_ them to do their job. | NikolaNovak wrote: | That's the thing. | | For me at least, the dynamics of "School Group Project" | are basically completely different and separate from | "Work team". I happen to do well in both, but I do not | enjoy both: the motivations and structure and dynamics | and goals and timelines of "School Group Project" are so | much more artificial and ultimately pointless, and | obviously to all from the start. | | Same things with discussions - I happen to be an engaged | student, usually front row, hand always up, discussing | with instructor and team and colleagues and everybody. I | like to be engaged and figure things out together. But | I'll never be half the developer than my colleague who | barely speaks a word unless asked. He's friendly, meek, | polite, and excellent team player and developer - he just | does not initiate conversations, _especially_ in group | settings. I can imagine he 'd have a nice big 0 in that | category if that was a grade criteria. | | Which is not to criticize the professors who try to use | group discussions; just to point out, this is not a | solved problem at scale any more than | interviewing/hiring. There's too much humanity and too | few absolutes :) | clusterhacks wrote: | 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. | SoftTalker wrote: | 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 for an explanation of the code. Most could not explain | what their code was doing (because they didn't write it). | | They were all given an opportunity to resubmit original | work. Many could not do it, because they simply didn't | understand the basics of programming, or the language they | were using, or how computers even worked. | | These were Masters students. | clusterhacks wrote: | That is just awful - I have similar stories. To me, it | seems so unfortunate that students are just in this | desperate grind to get all A's. | | But I'm on the other side and don't have the stress of | "my whole life depends on looking like an all-star" at | university. Like, what do you do if you leave school with | such a severe lack of actual skill? | | OTOH, the last year I taught, _every_ student in the | program I was an adjunct for graduated with a job offer | in hand. Maybe it all works out fine. | sarchertech wrote: | 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. | [deleted] | philipswood wrote: | When playing with GPT-3, I've found it to be impressively | good at explaining what code does in English... | drran wrote: | When teachers require recording of timelapses, we will have | AI which will be able to generate text and a video of a | user typing it. IMHO, they should start to require | timelapses right now. | NoraCodes wrote: | That requires either trusting that students haven't | edited out the evidence of cheating, which is pointless, | or forcing them to use specific, proprietary software to | record the video, which is unacceptable. | aaomidi wrote: | I do want to say that, those criteria exclude neurodivergent | folk (who for many reasons may have never even been | diagnosed). | | Honestly I think moving away from grades is going to be the | way forward. Part of this is also making university, etc | cheaper so you're not financially incentivized to not take a | class one, or multiple more times. | DiggyJohnson wrote: | Do you also believe that we should move away from | evaluation entirely? Genuinely asking. | matheusmoreira wrote: | Evaluation is vital but the current model used in | education today is not evaluation, it is punishment. | Failed to get the answers right? You are punished. You | lose points. Your GPA plummets. You could even fail the | class and have to take it again which means the | punishment is not only social but economical. | | There's real life consequences to this kind of | evaluation. Huge consequences. Students cannot afford to | make mistakes. There's huge pressure and anxiety before | and during a test because the stakes are so high. Failing | at this stuff can cost someone their future: future jobs, | future career, even the student loans that enable them to | study in the first place may only be afforded to students | who get good grades. | | Is it any wonder people cheat? | johndough wrote: | If you define negative evaluations as "punishment", then | evaluation without punishment is useless. | aaomidi wrote: | I think during education yes, during execution of the | skills learned in education - not really but also | depends. | | A lot of people hate how tech interviews are done, right? | Cause they have nothing to do with the job the majority | of the time. Those are places where I can see | improvements. | | However, some jobs do genuinely need you to interact with | a diverse set of people all the time, for those you need | to make sure for the sake of your company & the candidate | that they match the criteria. Other jobs, you need only | maintain strong relations with small groups, and the | requirements for those are a lot easier to hit - even the | most introverted people can do well in smaller groups | that don't change a lot. | | I do really think a lot of evaluations that happen during | education though makes a confrontational relationship | with learning. You're constantly judged about your | _ability to learn_and that has far reaching impacts | beyond your first twoish decades of your life. You get | scared of making mistakes, you get scared of taking | risks, etc. | | So, evaluate when it's important for the function & | safety of the job, and the candidate. Skip evaluation | when its evaluation for the sake of evaluation. | matheusmoreira wrote: | > Part of this is also making university, etc cheaper so | you're not financially incentivized to not take a class | one, or multiple more times. | | I'd rather people had better opportunities in life that | didn't depend on education. There's a lot of people who | hate school and are just going through the motions because | they believe it's the only path to success in life. | nyanpasu64 wrote: | Mass-produced education is like a train, once you fall off | you'll get hurt trying to get back on. I've come to the | realization that given the inhumane pace, difficult and | poorly-taught curriculum, and ambiguous/out-of-scope | homework assignments in a top-tier university's CS program, | the majority of my university classes were either not worth | taking, or I'd be better off self-studying if I found an | intrinsically rewarding project (definitely less panic | attacks and psychological trauma, sometimes even similar or | deeper learning). Perhaps I'd have a better time in a less | prestigious university that doesn't see its purpose as | weeding out and breaking lesser students. | jstanley wrote: | > 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. | gfaster wrote: | 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. | yummybear wrote: | Doing algorithms and functions are the least of my worries as a | web developer. I need a copilot that helps me determine which | kind of ui elements i need to help with task. I need it to | automate standard issues like make login functionality invludkng | two factor or to determine data structures for a novel problem. | That'd be great. | criloz2 wrote: | I have been using copilot for two months and I find it more | annoying than useful, am the only one that feel like this?, I | also used tabnine, and it gives a lot of syntax errors in rust, | so I could barely use it for a week. I definitely can agree that | copilot is better than tabnine, but I feel like writing code is | the easy part of programming, and copilot doesn't offer a crazy | help to justify the monthly payment and that my private code is | uploaded to Microsoft servers. Not only that, but I find that my | IDE suggestion are good enough most of the time. | thefourthchime wrote: | I use it with python and vscode, it's great there. Sure, half | the stuff it makes isn't correct, or nearly correct, but it's | very close, and I just need to change a little here or there. | | It also does a fantastic job of filling in method parameters | from my local variables, again not 100% of the time, but 90% of | the time it nails it. | stew-j wrote: | I'm not sure how it would be done, there might not even be | enough existing code to train it on, but I would like to try | out Copilot for code-based CAD models in something like | OpenSCAD. I've never tried it at all, but thanks for sharing | your experience, all. | [deleted] | nprateem wrote: | Yeah I was going to post this. I did some coding the other day | and it kept spitting out code that looked right but was calling | functions that didn't exist. It also competes with IntelliJ's | auto-complete making things doubly irritating. | | I leave it disabled more often than it's enabled, unless I'm | doing something simple like wanting to copy a file, which in Go | is stupidly obtuse. | coding123 wrote: | No big deal. If students have access to this, then instead of | trying to teach them and grade them on fibonacci - let the next | generation have larger assignments. Like building a 3d rendered | first person shooter (a basic one with no AI) | ___j___ wrote: | bb | analog31 wrote: | I wonder if copilot could be used against itself, i.e., to find | problems that it is absolutely guaranteed to get wrong. | i_am_toaster wrote: | "Coping with google... students can just search for the answers | by typing in 'depth first search code python'. Buckle up and | hunker down for one slippery slope of an article!" | stew-j wrote: | Guess how I learned query/replace in Emacs in 1985? | | My friend who copied my Pascal programming assignment is now a | director at a $1B hedge fund. I'm the founder of a series of | scrappy, ramen noodle startups. I guess it's the "Senator | Blutarsky" effect: | | https://en.wikipedia.org/wiki/John_%22Bluto%22_Blutarsky | SoftTalker wrote: | The skill of getting others to do work for you is highly valued | in the Director and C-suites. | Spivak wrote: | I love their take at the end which is to not expand the already | crazy anti-cheating apparatus and just give students more | interesting problems and let them use all the information at | their disposal. I wish more professors took this attitude. Having | every student implement the exact same famous algorithms is | really silly when you take a step back. You don't gain any | appreciation for them because they're unmotivated and you lack | all the foundational knowledge. The proofs/explanations are all | totally bespoke and don't generalize. | | You really win as a professor when you design a project that | naturally causes you to reach for the knowledge you're trying to | teach. One of the best was my networking class where the project | had us secretly rediscover tcp by trying to invent reliable | transmission over UDP and then once we sufficiently cut our teeth | the second half of the course was implementing a real working | version on top of the professor provided userspace ip stack. | withinboredom wrote: | Here's the thing. When you learn to be a carpenter, they teach | you how and when to use certain tools. The same can be for any | profession. This is a new tool. They shouldn't be telling | students not to use it, but when to use it and what it is suited | for. | bfung wrote: | On tests, make students write short programs with pen and paper. | | Good practice for white boarding interviews. | chiefalchemist wrote: | The good students will take the time to learn and understand | (even if they didn't write the code). Other students, as they | _always_ have, will look for short cuts. | | Not everyone who take CS1* courses are CS (or similar eng) | majors. We keep crying "Everyone should learn to code" and now | that's made easier than ever some of continue to complain. Huh? | | Full disclosure: I started to use CoPilot a couple of months ago. | It does not remove me from the process. It does allow me to shift | more brain cycles from the mundane to the more difficult. My | general feeling is, I have yet to get close to taking full | advantage of what it can offer me. | dvh1990 wrote: | It is not the lecturers job to police their students. People that | cheat only end up cheating themselves, and nobody but the cheater | should do anything about it. | refulgentis wrote: | I love the choice of an AI-generated photo for the header, and | the hidden message of its poor quality if you look at it longer | than a glance. | | There's an emerging divide between those with experience with AI | tools and people who tried them a few times and got hyped and | blogged a maximalist view of consequences. | brimstedt wrote: | I don't think using copilot is much worse than autocomplete. | | It's an improvement of our toolbox, students SHOULD learn to use | it. | | It's not much worse than using c instead of assembler, or java | instead of c, or ... | | Throughout time people have invented new tools that makes their | predecessors more efficient in their proffesion. | | Too many programmers these days behaves like the workers did when | automatic looms were invented. Or when the chainsaw was | invented.. or the computers.. or the... | tgv wrote: | > Throughout time people have invented new tools that makes | their predecessors more efficient in their proffesion. | | And yet, here we are, learning reading and writing like it's | 500BC. | hbn wrote: | I don't know if the idea of future generations of programmers | squeezing by on having a robot make best guesses to get their | work done without understanding it makes me feel confident in | terms of job security, or fills me with dread knowing that I'll | surely be relying on the software they produce to access my bank, | have my cars controls hijacked because it thinks it knows better | than me, keep my life support running when I'm old, etc. | Aeolun wrote: | This is no different from finding the solutions on wikipedia, or | any of a thousand other websites. People that want to cheat will | do so, and they might even be correct in a completely selfish | sense. | driverdan wrote: | The solution doesn't seem that hard to me. Put less weight on | homework grades and more weight on projects and tests. If they | cheat the homework they'll bomb on tasks that can't be solved | with Copilot. | caust1c wrote: | Maybe AI will know what to do with our burning planet... | [deleted] | joak wrote: | Grading students is probably an archaic way of teaching. You want | them engaged not cheating. But ok, institutions want grades... | What about this solution?: | | https://theconversation.com/i-no-longer-grade-my-students-wo... | joak wrote: | Previously discussed here: | https://news.ycombinator.com/item?id=30842587 | cmrdporcupine wrote: | 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 coding clever for-loops to perform algorithmic | magic (for things usually already in the standard library) is the | best measure of the competence of a software developer. If it can | literally be done _by a machine_ , maybe we should be measuring | based on something else. Especially since this kind of thing is | best done on the job _by looking in a good textbook_ or _using | the standard library_. Probably grading at the university level | needs to consider this also. | | I haven't used Copilot. I doubt I'm its intended audience. After | 30 years, actually writing _code_ is perhaps the easiest part of | my job. The mechanics is the easy part. The big picture thinking | and figuring how to get it all together into a _system_ is the | hard part (and honestly there are plenty of people far better at | it than I am). Now, if we get a Copilot for _that_ ... then our | profession is in trouble. | greymalik wrote: | > the hypothesis (propagated mostly by the Google-style job | interview) that intensely coding clever for-loops to perform | algorithmic magic (for things usually already in the standard | library) is the best measure of the competence of a software | developer | | I think the hypothesis is, rather, that people who can | successfully run that gauntlet are smart and motivated. The | details of the problems they're solving along the way are | almost incidental. | thefourthchime wrote: | 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. | ALittleLight wrote: | I've used Copilot for a little while. I'm away from my | computer at the moment but I'm very confident it would | generate Fibonacci methods. | glacials wrote: | I don't think they mean that it can't, just that the better | way to think about the advantages it gives an experienced | engineer is more along the lines of "autocomplete v2", i.e. | a keystroke-saver. | andrepd wrote: | Is it a keystroke saver if you need to review every line | it proposes to you? | throwaway675309 wrote: | Yes because often times while I'm unable to recall the | exact idiosyncratic keywords incantation that I need, | copilot will retrieve them automatically. This saves me a | context switch to MSDN docs or stack overflow. | | It automates a great deal of boilerplate crap that you | have to do especially in web frameworks such as angular. | matthewmacleod wrote: | Yes. For my part, it's a very obvious boost in exactly | that sort of keystroke-saving way. | | Here's an example I just now tried in the codebase I had | open. I literally typed in the following Go in a | function: mean := geom.Vec3D{} for | | Copilot then autocompleted this, me pressing tab to | accept each line, to: mean := | geom.Vec3D{} for _, detection := range filtered { | mean.X += detection.X mean.Y += detection.Y | mean.Z += detection.Z } mean.X /= | float64(len(filtered)) mean.Y /= | float64(len(filtered)) mean.Z /= | float64(len(filtered)) | | It's not a perfect platform by any means, but it's also | pretty useful for this sort of autocompletion. | gopher_space wrote: | I can picture autogen boilerplate being collected and | distributed in versioned "community expansion packs" to | popular languages, and I'm not looking for fragmentation | like that in my tools. I _really_ don 't want my IDE | involved like this. | | I'd rather see Copilot used to expand existing libraries. | Pulling potential additions to your own library off of | Copilot would be an interesting twist on the situation. A | hacktoberfest-alike based off this would be weird. | julian37 wrote: | This is a good example of why I dread Copilot: even if Go | specifically couldn't express this any more concisely, | there is a language that can and Copilot's very existence | makes it less likely for that other language to be used | as much as it deserves. | | Besides, the generated example seems to be missing code | to gracefully handle the case where len(filtered) is | zero. Maybe there's a precondition that prevents that | from happening or maybe a division by zero is exactly | what you'd want, but at face value it looks like the bot | did a rush job. | morelisp wrote: | Zero is gracefully handled; the mean of a zero-sized set | is best represented by NaN, and this would be idiomatic | in most languages' IEEE754-style handling. | | Saturation is not. This is what really bugs me: If I'm | going to drag in a billion GPUs of external computation | (or a dependency, which is basically the same thing but | with human brains), I want it to provide the hard | algorithm I can't write, not the easy one I can. I am not | limited by typing speed. | | I also wonder what a "detection" is. | Beltalowda wrote: | I found carefully reviewing the suggestions it gave me more | work than actually writing the code myself. Granted, I only | used it for a day, but many of the suggestions were subtly | wrong, needless inefficient, or used outdated/deprecated | paradigms/standard library stuff. | | I only used it for a language I'm very familiar with. I'd be | a lot more hesitant using it for a language I'm less familiar | with because I won't be able to spot the problems so easily. | fassssst wrote: | RTFA :) | throwaway6977 wrote: | Yup exactly, and the ability to basically be fluent in any | language. | cmrdporcupine wrote: | 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. | bayindirh wrote: | I left GitHub on the spot, and moved to Source Hut the day | Copilot released. | MichaelMoser123 wrote: | someone can still mirror your stuff on github. I wonder | if they should make a special open source license, that | disallows use of the source code for the purpose of | training something like Copilot. | gopher_space wrote: | If it's your creation you can make your own license. Copy | and paste a license you like and add a few lines. | | This fact solves many "we need this lib but it's too | open" problems. The author can make a special license | just for you if they want. | bayindirh wrote: | As in this example: https://web.archive.org/web/201302031 | 12329/http://dev.hasenj... | bayindirh wrote: | > Someone can still mirror your stuff on github. | | It is the nature of the beast, however I make my stance | clear and stand by my principles. It is equally important | for me. | dragonwriter wrote: | > I wonder if they should make a special open source | license, that disallows use of the source code for the | purpose of training something like Copilot. | | Since Microsoft uses material for copilot outside of | licensing on the basis that it is Fair Use, that would | probably have no effect in practice on whether or not the | material is used in training something like Copilot. For | that to matter, you'd first have to win a lawsuit on the | basis that training something like Copilot requires | permission of the copyright owner of the training | material, to invalidate the premise of Microsoft's | action. | MichaelMoser123 wrote: | > Since Microsoft uses material for copilot outside of | licensing on the basis that it is Fair Use, that would | probably have no effect in practice | | i think that any formal violation of an open source | license would be very bad in terms of public relations - | even if they can claim fair use. | bayindirh wrote: | They got it covered. Passed the responsibility to user in | their official documentation. | cmrdporcupine wrote: | I don't care about all the handwaving here, it comes down | to this. | | The moment a fragment of code from a GPL'd or AGPL'd | project shows up almost verbatim in someone's closed | source or non-copylefted, etc. project, and someone | proves it, sparks are going to fly. | | And it's probably already happening, just people haven't | discovered it yet. | | How many years did the Oracle/Google lawsuit go on for? | And in the end about a handful of a lines of code only | tangentially related to the issue at hand? | | Part of the lesson from that must be: employers should be | telling their workers to say TF away from Copilot or | things like it. And be careful in general when browsing | source. License literacy is critical. | | I don't touch it because I need to feed my kids. I don't | need my career exploded. Overcautious? Maybe. I'll let | someone else find out. I make a living in and around open | source software. | bayindirh wrote: | > The moment a fragment of code from a GPL'd or AGPL'd | project shows up almost verbatim in someone's closed | source or non-copylefted, etc. project, and someone | proves it, sparks are going to fly. | | I'm hoarding popcorn and can't wait for that, honestly. | | > License literacy is critical. | | It's beyond critical, but most people I have talked says | that they see the right to copy and use any code they see | online. They don't care. | | Building this open source corpus was not easy, and we | need to defend it too. This is a culture. | sidlls wrote: | How is it abusive? | Guest42 wrote: | It was trained using source code whose licenses don't | permit such usage. | skybrian wrote: | This is unclear. I have never seen an open source license | that was explicit about this. Seems like a grey area. | | It's not even clear how often training machine learning | algorithms on code results in copyright violations. | CoPilot does have a setting to detect and disallow direct | copying, but how well does it work? | | This legal uncertainty is enough that I wouldn't advise | using it, but maybe people who use it will be fine? | sidlls wrote: | In what sense? Copilot isn't a derivative work in the | sense these licenses usually are understood to mean. And | given that they're open source code bases I expect | licenses to explicitly disallow things, and consider | anything not explicitly disallowed as permitted. | teddyh wrote: | > _Copilot isn't a derivative work in the sense these | licenses usually are understood to mean_ | | The phrase "derived work" is, IIUC, a phrase from | copyright law. And you'd have a hard time convincing me | that Copilot-generated code is not a derived work from | its training data. | | > _And given that they're open source code bases I expect | licenses to explicitly disallow things, and consider | anything not explicitly disallowed as permitted._ | | That is very much _not_ how copyright and licences work. | Copyright law permits the copyright holder the exclusive | right to make copies of the work, making derived works, | (and to do some other related things, like making a | public performance of it, etc.), so to do any of those | things, you need explicit permission, i.e. a _license_ | from the copyright holder to do it. A license is not a | list of things you are forbidden to do; on the contrary | it is a list of things you are _permitted_ to do, which | you would not otherwise be legally allowed to do | according to copyright law. | scoot wrote: | 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. | TheRealPomax wrote: | Not until there's a setting that can guarantee the | automcomplete is based on verifiably license-unencumbered | source that is automatically tracked in some kind of | sourcemap that tells me which parts of "the code I didn't | write" comes from which other project and file inside that | project. | | Until then, copilot is a giant liability that ensures I can't | use it for code that my company ends up owning, nor can I | contribute code I write with it to literally any open source | project because in a very real sense: I didn't write it. I | just assembled it from parts unknown, and those parts may end | up being lawsuits. | honkdaddy wrote: | As a hypothetical, what would that case actually look like? | I'm suing you because I have a strong belief that part of | the codebase of your personal project was assembled from | code I wrote and didn't license permissively, so now I'm | claiming ownership? | | Obviously IANAL so this is largely conjecture, but until we | _actually_ see how this would play out in court, I'm | leaning towards this being less of a legal issue than folks | here act like. For personal projects, I'd say the | likelihood of some other engineer reading your code, | noticing a similarity or duplication, and dragging you to | court for it is near 0. | thaeli wrote: | I would also be comfortable with a service that was willing | to broadly indemnify me as the customer from copyright and | patent claims arising from code generated by their service. | I doubt that will ever happen either. | alain94040 wrote: | Copilot doesn't change the fact that trivial questions (such as | 'write a Fibonacci function') can already be googled. | | What I don't know (I can't try the 'free' Copilot without | providing a credit card), is how well it understands unusual | constraints and separate pieces of C++ classes that make the | real programs we write. | | For instance, a simple test would be: "write a fibonacci | function but skip the number 5". Does it do the right thing? | | Another challenge would be a C++ class with several fields. | That's what our real programs look like: composite data | objects, mixing several different algorithms together to | implement complex behavior. | | Maybe my data structure has a hash table of items, as well as a | direct link to the largest item. When I say: "write the | function to insert a new item in the list, and remember to | update the largest item if it is larger than the current one", | would Copilot do the right thing? Each step is easy in itself | (adding an element to a hash, comparing an item to another | one). | wilg wrote: | I (surprisingly) could not get it to generate a Fibonacci | function that skips 5. | thewebcount wrote: | As a human, I'm having trouble understanding the problem | description. What does it mean to "skip 5"? I've always | understood the definition of a Fibonacci sequence to be, | starting with 2 numbers (usually 1 and 1) the next number | in the sequence is the sum of the previous 2. | | So starting with 1 and 1, we get 2. 2 and 1 is three. 3 and | 2 is five. What do we do from here? Do I not add 5 and 3? | If not, then what do I add? 3 and 2 again? Do I repeat 3 | and get 6? What does it mean to "skip 5"? | hibbelig wrote: | You compute the Fibonacci sequence first. Then you use | that as the input for another function that produces the | modified sequence by dropping 5. | Applejinx wrote: | I code for a living and Copilot can't do the least part of my | job, though it is possible it could find uses here and there | around the fringes (perhaps not even then). | | I'm coding audio DSP along the lines (real example here) of, | "Given that the Dolby noise reduction system is deeply part of | the sound of classic seventies and eighties recording, what | parts of it can be generalized to make DSP processing producing | the same general effects on the sound, and having done so, how | should this be tweaked and adjusted to optimize for pleasurable | results?" | | This doesn't exist on Copilot. Damn near nothing I do for work | exists on Copilot, and even if it (being an MIT-licensed public | code library) gets slurped up into Copilot, Copilot has | absolutely no way to determine whether a 0.8273 in the | algorithm should be leaning towards 0.83 to brighten the sound | of something happening, that it would do this, or why you'd | want brighter rather than darker, or whether you are right in | wanting this or would do better to go darker knowing that other | things will happen to the listening experience. | | Copilot's inability to do these things is much like Dall-E's | inability to do art. There is much visualization and a striking | absence of purpose or intention. With Copilot, it will do all | the boring or common stuff for you. If that's your job, maybe | you're not aiming at the strengths of humans, rather you are | aiming at things too easy to automate... | baby wrote: | If you're writing code you are the audience for copilot. Just | try it | Brian_K_White wrote: | This sounds kind of creepy culty. I think it's the pushing | "just try it" vs merely reporting "I like it". | netr0ute wrote: | If you're into being hydrated, water is great. Just try it | t_mann wrote: | Leetcode interviews have maybe just become an example for | https://en.wikipedia.org/wiki/Goodhart%27s_law - as long as | people aren't aware, it's a great signal, but after people | catch onto it, it becomes a measure of something else | tgv wrote: | > if students are unwilling to learn, or are taking shortcuts, | it will ultimately hurt them in the long run | | That's a very limited, and dismissive view. If you allow | students to use copilot, you're handing out certificates or | diplomas to people who can't code. That will very quickly erode | the value of your institute's certification, and with it, that | of the other students. Otherwise, why not give everyone an MSc | in CS? "It'll only hurt themselves in the long run". | | > coding clever for-loops to perform algorithmic magic | | A for loop for searching or summation is not algorithmic magic. | | > maybe we should be measuring based on something else | | No, why? Students have to understand the fundamentals. What | those fundamentals are depends on the expertise. Once you've | shown mastery, you can use more advanced tools. Teaching has | always been like this, and for a good reason. | nightpool wrote: | I'll be honest: has anyone here ever looked at a resume with | an MSc in CS and said "Yep, I bet this person knows how to | write code well"? Surely there are some research level jobs | where a PhD in CS is necessary, but for most coding jobs, an | MSc is just 2 years of missed experience where you're | learning bad habits and antipatterns by never having your | code used by other people in any strenuous way. | | Certainly there are a lot of pros and cons to getting a BA in | CS. But "learning how to write code" is not the major | advantage of a university education, nor should it be. | morelisp wrote: | I'll generally rate an MSc lower than BA/BSc. (The | exceptions would be if you needed the MSc to meet some visa | requirement, or if you had an BSc in some weakly-related | field beforehand.) | | From downvoters: I would genuinely love to hear a defense | of an MSc per se. What university has their shit together | enough to actually accelerate/compress 2-4y of work | experience into 1-2y years of academic project, which is | what's always the claim? If all you're doing is the | courses, those are accessible to 4th year undergraduates in | every university I know. | | To a person, everyone I've interviewed who did an MSc for | the coursework had to because they finished their BSc with | minimum effort and no one was interested in hiring them. | Even worse is when you see 4y BSc, 2y work, 1y MSc. | vladtheimpala wrote: | One does not typically _return to undergraduate study_ | after gaining a first BS degree. If you have a BS (or in | my case a MS as well) in a not-directly related technical | field and wish to study CS, you get a graduate degree. | This often requires extensive additional coursework, in | my case about 12 additional semester hours. Thanks for | ranking people like me lower than someone with less | education; I doubt I would enjoy working for you anyway. | morelisp wrote: | I described precisely this case even before my edit and | said it was an exception. | | There are a _lot_ of people coming with 4+1y or 4+2y | purely CS /SE. That's who I'm talking about. | vladtheimpala wrote: | I'd quibble with the meaning of weakly related vs. not | directly related, but fair enough. | throwaway675309 wrote: | A masters program is generally going to cover deeper | theoretical subjects and will also give you stronger | mathematical underpinnings in those areas. | | If you're just looking for a code monkey to do your | e-commerce react website then obviously work experience | will always trump academia. | morelisp wrote: | Those aspects of a MSc are easily accessible to any | motivated undergraduate as well. | bcrosby95 wrote: | I've thought of going back for an MSc because it sounds | kinda fun. Although probably in math rather than CS. | | I never thought it would be held against me though. Seems | weird. | herval wrote: | Depends on the school and depends on the person. The same | way many companies in the US assume any grad from MIT is a | good engineer, there are companies who look at resumes w/ | an MSc and bump them up. From personal experience, MScs are | particularly well-regarded in Brazil, for instance. | hedora wrote: | I've interviewed lots of new grads, and also observed my own | classmates. | | Most institutions have been granting CS diplomas to people | that cannot code for decades. | | Those people tend not to find long-lasting programming jobs. | Karellen wrote: | Computer science is to programming what materials science | is to construction. It produces really interesting new | building blocks that actual practitioners can put to | amazing uses. | | But research scientists aren't necessarily great engineers, | and engineers aren't necessarily great research scientists. | That's OK though, it's why we have separate disciplines. | squeaky-clean wrote: | The CS program at my university, and most people I've | spoken too, wasn't research oriented. At least not until | the graduate level. Maybe at really respected places like | MIT. Yes there were algorithms classes and such, but it | was more about memorization than actually studying how | they were made or how you would make a novel one. Final | projects were always about building a real-world-ish | application on a team. | | But I'd say about 20% of the students that graduated | still didn't understand things like references very well. | They'd write their code with "foo.bar" and when it didn't | compile they'd randomly change "." to "->" or add random | asterisks around until it compiled. | | (Classes were primarily in C++. We did some classes Java | as well, and in my 3rd year Microsoft came in with a big | sponsorship to change all the Java classes to C# | classes.) | cmrdporcupine wrote: | I mean, it's more like "woodworker" vs "carpenter." We | don't ask people framing houses to plane their own wood. | Most practitioners in our industry don't apply much | fundamental CS knowledge. | | After graduating most CS grads seem to forget | foundational CS stuff anyways. | | I never got a CS degree. So I trained myself. While | working and also a lot of a year when I was unemployed | during the .com crash. | | Which only made me more frustrated to find that most jobs | are just "you nail these two boards together" and most | programmers are clueless about things like what the | "relation" in "relational DBMS" means. | cpuguy83 wrote: | I don't think copilot is to the point where this is true. | | Copilot mostly helps write boiler plate. It can also do a | good job with adding correct comments to that boiler plate. | | It's a tool that saves time and repetition. It's not a tool | that's writing algorithms or solving problems for you. | jrumbut wrote: | A lot of CS education is limited by students' ability to | code. | | If everyone was great at coding after a year or two, you | could do a lot more algorithm analysis,theory, engineering | principles, mathematics and other sciences, etc. | PragmaticPulp wrote: | > If you allow students to use copilot, you're handing out | certificates or diplomas to people who can't code. That will | very quickly erode the value of your institute's | certification, and with it, that of the other students. | | Very true. Like it or not, the reputation of educational | institutions plays a significant role in candidate selection | processes at many companies. If a company brings in 10 | graduates from a local college and discovers that 7/10 of | them can't actually write basic code, they're going to become | more hesitant to bring in other graduates from that college. | Meanwhile, someone who has Stanford or Harvard on their | resume is virtually guaranteed an interview. Reputation | matters far more than I ever thought it would. | geraldwhen wrote: | Most people I meet with CS degrees cannot code. Not anything. | Some can't declare variables or get a file to compile. | Brian_K_White wrote: | "you're handing out certificates or diplomas to people who | can't code" | | The diploma is not issued after only the 101 course. | varjag wrote: | So people who couldn't find a max value in an array will | somehow excel at advanced concepts later? | Brian_K_White wrote: | You seem to have missed the point of this thread. | | The problem an earlier comment expressed is that the | student will sabotage themselves. | | What else did you think that means besides exactly what | you just said? | | They sail through the beginning and splat in the middle, | because they didn't have to learn anything in the | beginning. | | My comment is reponding to one that says the problem is | that students get diplomas witbout learning. | | I am saying that diplomas and certs are not a problem, | not that there is no problem. The problem is what the | earlier comment said in the first place. | | Actually I'm not even sure that's a problem either in the | long term, but it is the immediate problem. It may just | be during a transition period while schools have not yet | adapted to reality and are still worried about | calculators in math classes. But at this moment, it's a | problem. | throwaway675309 wrote: | While it would likely be prohibitively expensive, I really | wish there was an independent board that would certify | software engineering as a certification and required an oral | defense in the same style as a PhD. | | I recognize that it's kind of gatekeeping but it feels like | more and more diploma mills are just hanging out degrees, not | to mention all the coding camps out there. | x86x87 wrote: | The grind you have to go through in a "google style" interview | has nothing to do with the actual work you normally do. It's | done to show 1) you will do large amounts of boring work | without questioning the need for it 2) you got the fundamentals | and you know what's there / when using something you can grok | what's going on under the covers. Nobody needs to implement a | sorting algorithm until they do - the risk of NIH and | reinventing the wheel is high. When you do you need to have a | good understanding of why | [deleted] | renewiltord wrote: | 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. | wiseowise wrote: | Are comments supposed to be funny? | rwky wrote: | When I did my BSc in computer science we had to do exams which | involved writing code using pen and paper without a computer in | sight. Bringing that back would solve this problem ;) | throwaway4good wrote: | What is this? Computer science Luddites?! | | Just pose better questions and more open ended assignments. | tazjin wrote: | These examples of producing known algorithms in response to | function signatures make it seem to me like Copilot is an | intelligent, vendoring "package manager", not something that | solves problems by itself. | | The perceived productivity boost that people get from it could be | interpreted as a condemnation of how verbose a lot of coding | still is even in known areas. Lots of brain cycles wasted on | doing things suboptimally that we can already do optimally. | vbezhenar wrote: | The difference is that package management hides packages | somewhere deep and you're not supposed to care about code | quality. If it popular and works, good enough. Copilot puts | terrible code snippets right before your eyes and you'll spend | more time making it better and fixing bugs rather than writing | that code from scratch. I tried copilot and for me it's not | ready yet. I guess my issue is that I don't like average code | and copilot was trained on that code, so it's as good as | average coder and that bar is not high. Or I'm too picky and | high-minded, doesn't matter, the result is the same. | [deleted] | O__________O wrote: | Curious, has anyone has seen a "cheaters" guide to programming -- | that basically teaches a predictable barebones process that | assumes unmoderated access to internet, computer, etc - and using | Google, StackOverflow, CoPilot, etc. to solve 80% of programming | issues average programmer faces? | T3RMINATED wrote: | emeryberger wrote: | Hi everyone, article author here. I was also interviewed by The | Register about this topic: | https://www.theregister.com/2022/08/19/copilot_github_studen.... | stew-j wrote: | I might have missed it today in your articles or comments here | --it's been a hectic day--but has there been some study of just | how different code would be given that the students are using | the same text from questions? Is there randomization intrinsic | to Copilot, or is it just because minor variations in textual | input causes code to be so different? | | My wife taught CS, she did catch cheaters pre-Copilot, and my | first thought it that she probably would enter test questions | and print out a reference sheet for Copilot generated results. | Barrin92 wrote: | >"Copilot is different, he said, "It actually generates novel | solutions. Not like they're super-crazy, sophisticated, genius | solutions. But it makes new solutions that are superficially | different enough that they plausibly could have come from a | student."" | | virtually every cheating student has always slightly altered | their solutions. At best copilot saves you the five minutes of | Googling and refactoring. For the committed cheater who wants | to avoid a week's worth of homework and learning that's hardly | meaningful. And in fact probably not even that because you | still need to actually read what copilot outputs because it | makes obvious bot-like mistakes quite often. ___________________________________________________________________ (page generated 2022-08-20 23:00 UTC)