|
Academic Integrity in Systems ProgrammingThe work you submit for grading in CS4414 is required to be your own. Cornell's code of academic conduct spells out the penalties for academic integrity violations, which can be quite series and could extend beyond your grade. A person found guilty of violating the code cannot drop the course or expunge their grade, except by successfully appealing the conviction.In CS4414, there are many sources of help who will guide you to understanding course materials that may have confused you, and can even help you make sense of a confusing error message or bug. Do not share code with others, or receive code from others, but feel free asking for help from the course staff, Chatbots, on Piazza, or even from friends. Using web resources like the C++ online reference pages and examples is absolutely fine. The line you must not cross is where you get a solution to a homework or a quiz question or even a "very detailed answer" that basically leaves you filling in the blanks -- that would cease to be your own work. But you definitely can download standard examples from the C++ reference site and then customize them. This is a normal way to develop C++ code. Use of LLMs The use of LLMs has become pervasive, and represents a problem for our course. The best of the code-generating LLMs (Ken is fond of Claude from Anthropic) can produce superb C++ code that is genuinely very impressive. In fact the Claude-generated version of the word count example used in Lecture 1 performs competitively with the ones we looked at closely in class. The ChatGPT Cornell licenses from Microsoft is equally good. One thing this tells us is that into the future, people who do systems programming will be using LLM support more and more pervasively. However, the worst LLMs are a real concern for many reasons. Many have been trained on materials obtained illicitly, and some on materials deliberately hacked by malicious actors. If you trust a random LLM from some random source and it inserts malware into your code, you could be responsible for massive harm. Malware has literally killed people by intefering with critical care computers in hospitals, and could cost your next employer enormous amounts of money (a small part of which they will recover by firing you and perhaps, suing you too). The moment you first run such an LLM it might install malware on your own personal computer, which can enable it to steal your identity and empty your bank account, or commit crimes that will seem to have been done by you. When that LLM generates code, and you run that code, it becomes your responsibility. The larger question this raises centers on the knowledge you gain in a course, and that we assess on prelims and through homework. Obviously, when you feed the homework assignment into an LLM, then submit the code it generated, you don't have much knowledge of how that code worked (if any). If you used an LLM that produces inferior code, it may not even compile, and if we asked you questions about "your solution" you probably wouldn't be able to answer them. It would be obvious it came from some unapproved source. Moreover, Cornell has a broad policy: if you submit work that was not your own and misrepresent it as your own work, without attribution of the origin, you are violating academic integrity and could fail the assignment or the course, and even end up with a notation on your transcript! But... suppose that you hand something in and are perfectly clear in your writeup: "I used the Claude Sonnet LLM to generate this, didn't read the code, and do not deeply understand it. But it was me who prompted the LLM, and I did run the autograder before I submitted it, so in effect, I tested this code." How should we grade that sort of honest answer? Our policy is that for LLM generated solutions that compile and run correctly, we will give you 70pts out of 100 on the assignment. This is less generous than it sounds because our grading offers lots of partial credit, and it would be very rare for us to assign grades below 70. Using an LLM and being honest will earn you our minimum grade. Using an LLM and lying will earn an F. The concept of assessed knowledge and skills Suppose you've read this, decided to cheat, and you get away with it. Maybe that high-paying Wall Street job is just too important to risk getting less than an A in CS4414. But have you really helped your career? JP Morgan isn't naive about LLMs, and more and more is already using them for tasks where they can solve the problem. So the high paying job you are after probably isn't being offered to people who simply know how to feed homework assignments into Claude Sonnet 3.5. Your boss was hoping to bring in an employee who is a master of the actual material. Yet if you relied on an LLM for homework, you definitely didn't really learn to code in C++ or to understand performance in a hands-on way. Probably you did learn something -- to get an A you had to survive two prelims -- but probably not enough to fool your boss at JP Morgan for very long. And they aren't naive about employees who work this way -- they will catch you in no time. So you'll get fired after a few months. The whole concept of learning is to acquire new knowledge and skills -- for you to acquire them, which is quite different from faking it. We do our very best to assess what you learned, through exams and assignments. But yes, some people do manage to cheat and get away with it (we also catch quite a few, obviously). The bottom line is that some people decide to follow a fraudulent path through through their careers. Often, they have to lie at home too, and turn themselves into frauds. So, don't cheat. You could ruin your future. And even if you get away with it, you will feel less self-respect, your friends will feel resentment and betrayal, and you will just put yourself in a position that you may not be prepared for in that next job. It simply isn't worth the price! |