Academic Integrity in Systems Programming

The 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 in CS4414 itself.  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.  

Chatbots are an especially tricky area.  There is no question that you can ask GPT to just write the code to solve some of our homework assignments, but keep in mind that exams are in person with no assistance from computing systems, using paper and pencil or pen.  You won't get help from GPT in that setting, and exams count for more than homeworks: the credit you might lose by handing in a homework that doesn't work perfectly will often be way less than the benefit of having GPT do the work followed by bombing an exam quesiton on that same topic!  The other issue is that GPT is actually not very good at producing high-performance code, which is the main focus of our course.  So even if it does produce code that compiles, it very likely won't be A+ quality stuff.

Microsoft has a feature called Intellisense built into Visual Studio Code (a kind of CoPilot for Visual Studio).  We recommend using it, and it will point out mistakes in syntax and quite a few other kinds of common issues that C++ beginners run into.  It also offers hints -- it tries to guess what you are coding and often guesses correctly.  Using this feature is far better than using GPT.

If we have been helping you understand a puzzling issue we will know that you did start your homework on time.  Then, if it is obvious to us that you just need a bit more time, we'll grant an extension. 

Why do people cheat, even though so many helpful resources are there for them?  We don't see huge amounts of cheating in 4xxx level courses like CS4414, but what we do see seems to fit patterns.  One pattern is simply that a person is distracted or overwhelmed by things, falls behind, and then cheats because they are out of time and feel desparate to hand in a solution.  But often, this kind of integrity violation turns out to stem from a misunderstanding: a false belief that your grade in CS4414 will somehow shape your opportunities in life or your career, and a belief that companies would consider anything less than an A to be a sign of weakness.  These beliefs are not based on truth, yet they sometimes drive people to make reckless choices that cause deep harm.

That misunderstanding can mean that a person sticks to a course they are unable to follow because of a lack of preparation (or because they hate it!), thinking that if they don't take this course, recruiters will notice and doors will close.  But then, having stuck to the course, they actually find that they are way over their heads (or can't bring themselves to do the work).

In fact, many jobs don't require the skills and ideas we learn in CS4414.  If you don't like this course, don't take it, or drop it early in the semester: It won't harm your life!  In fact it may even be useful to take some courses that you end up dropping: When you try, but then decide something isn't for you, you also will learned not to take a job that centers on this kind of material!  Better to drop a class as a student than to end up in a job that uses skills you just don't have and don't enjoy!

In today's computing industry, Cornell students have huge advantages.  We are considered to be one of the world's very best CS and Engineering programs, and this is even when compared with schools like MIT or Berkeley or CMU.  As a result, you graduate with a huge plus: the Cornell name on your transcript.  A grade of B or B+ in CS4414 tells a recruiter that you are a person who challenges yourself even when an A+ isn't a certainty, sticks things out to the very end, and does your work honestly and by yourself.  There is no recruiter who would not respect this.  In contrast, a person with straight A+ grades is often seen as a person who takes no risks and does not challenge themself, especially if the courses turn out to be easy ones on close inspection.

The key to success turns out to be learning about yourself: figuring out what you enjoy and how you want to spend your future.  Those kinds of insights really pay off later.  And Cornell students can take their education in almost any imaginable direction.  There is no single pattern -- and there is certainly no obligation that an A in CS4414 be part of your credentials.

Conversely, suppose that a person were to cheat, gets away with it, and was then offered a job that requires exactly the kind of systems programming we learn in CS4414.  That company would expect you to have earned the A+, and will assign you the kinds of software tasks that a CS4414 A+ would seem to say that you are ready to excell on.  As you know, the first six weeks of most jobs is considered a probationary period.  Do you imagine that those six weeks would go well?  And yet this same individual, had they earned a lower grade honestly, might have been given a more appropriate job assignment and could see a raise by the end of that six weeks, rather than being shown the door!

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 risk!