It was around 1:30 in the morning when I opened my eyes. About two hours earlier, I had turned in a lengthy assignment, which would usually lead to a peaceful night of sleep. But I wasn’t getting any rest.
I’m a VC at one of the top venture funds, here’s my daily routine:
— Alex Cohen (@anothercohen) September 3, 2021
6:45 AM - wake up, 17 mile bike ride
8:00 AM - reply “sorry too early” to every email in my cold inbound inbox
8:05 AM - order an avocado toast on Uber Eats
8:30 AM - respond to all my VC friends on Twitter
I glanced across the room at my laptop and opened it up. I refreshed the CCLE tab and grabbed my phone to look out for a Duo Mobile request, tapped on the green check mark and logged in to my class’s webpage.
Submitted at 11:57 p.m., it said.
It was a coding project, one that should have consumed weeks of my quarter. Stressing about and failing to comprehend the project took weeks – writing my code did not.
Calling it “my code” was a very generous statement. The code I submitted was scrapped together in the final days before the deadline, after I spent more than 40 hours writing and deleting and writing and deleting failed solutions.
Most of my submission came from a place of desperation. Most of it came from someone else’s keyboard.
“Edit/Add submission.”
The button stared at me. Without this project, I could still pass the class.
“What are you trying to prove?” I asked myself. I had no answer.
I clenched my hands in my hair and took a deep breath. After hovering my mouse over the button for a few seconds, I closed my eyes and clicked it.
“Submission deleted.”
-d038b8a7c1a2001c205db962eed94d70.png)
Maybe it was the cushion of the spring 2020 pass/no pass policy that led me to delete the submission or a stark realization that I shouldn’t be so comfortable about the idea of academic dishonesty. But I deleted it, despite the hours I spent crying over my computer and the days I felt too anxious to type.
As a product of my own weakness and of the deeply ingrained culture of dishonesty within computer science classes at UCLA, I let myself get too accustomed to the idea of cheating.
After scraping by with a passing grade in the class, I began to question the culture of fraud within the computer science department. It was something I sensed as early as freshman year, as if every student sitting next to me in a 300-seat classroom had been simultaneously and silently inducted into the world of cheating.
Cheating is a broad term. From my own observations, there are different levels to it and different ways to do it. But after a couple of quarters in the department, the most common cheating-adjacent word one hears in the Boelter Hall hallways is GitHub.
GitHub is a website created by a company for software storage and management. To the general population, it’s a noun, something that exists. But for UCLA’s computer science students, GitHub is a verb.
GitHub
verb
1. Complete a programming assignment with the help of an existing solution, probably on GitHub.
Since GitHub hosts the work of software engineers, many student software engineers in training upload the projects they've completed. So, a simple Google search of “CS 35L GitHub Lab 2” will lead to pages of GitHub accounts that host solutions to that project. To “GitHub a project” is to look at those existing keys, which may act as inspiration for algorithm design or a source for a copy-paste.
-51058b844b12a06352373df356ccd226.png)
Hersh Joshi, a fourth-year electrical engineering student, has taken several classes within UCLA’s computer science department, some of which are widely known for cheating. According to Joshi, it’s likely that students learn about the dishonest use of GitHub early in their computer science journey.
“You start noticing it around (Computer Science) 32 or 33,” he said. “By 35L, you're fully aware of it.”
During Joshi’s time in Computer Science 33: “Introduction to Computer Organization,” he watched a large cheating scandal unfold that found about one-third of his class guilty. Joshi, along with his classmates who were not involved in the scandal, had either chosen to avoid the GitHub solution or had not yet discovered its availability.
For Joshi, solving the problem from scratch meant an extra 10 to 15 hours of work. Although a chunk of his classmates got caught, facing grade deductions or meetings with the dean, this wasn’t enough to scare other students away from GitHubbing in the future, he said.
Although I’ve noticed GitHubbing in most of the computer science courses I’ve taken so far, it’s no secret that the method is wildly normalized in what students call “an Eggert class” – a class constructed or taught by notable computer science senior lecturer Paul Eggert. Some students are introduced to him as their instructor for Computer Science 33, some see his name for the first time on their syllabus for Computer Science 35L: “Software Construction Laboratory” and some learn about his impact through memes in Facebook groups even before taking one of his classes.
I reached out to Eggert to learn his perspective on the culture of cheating. Given his intense reputation and time-consuming classes – some of which have made me question my major – I was nervous to even reach out. But, he responded to my email quickly and enthusiastically, and we set up a time to talk.
My first Eggert class, and one of the most challenging classes I’ve taken at UCLA so far, was Computer Science 35L. The course includes hefty assignments due every week, and many students turn to GitHubbing their assignments rather than constructing them fully themselves. Eggert was clearly aware of this – in fact, he classified it as a course in “ethics” more than anything else.
“Are you going to cheat or aren't you?” Eggert said. “I'm afraid we have too many students that are failing that task.”
With students and professors all well aware of the issue, academic dishonesty is still casually discussed.
“Everyone I know has cheated at at least some point,” Joshi said. “When you talk to your friends (about) how far they are in a project, a lot of times they'll openly and candidly joke about how they just GitHubbed the whole thing.”
This idea is no surprise to me. During my first quarters at UCLA, I’d hear from my upperclassmen friends about GitHub, and they’d joke about a particular profile they cherished that posted the best, most organized solutions. This specific profile holds everything from class notes to coding homework solutions for 13 computer science courses. The author acknowledges that students may be turning to their code for copying.
“Feel free to use the source code as inspiration/guidance for your own projects, but copying will be at your own risk!”
Knowing how many students visit profiles like these, I didn’t expect it to be as hard as it was to find someone to interview about their experiences using GitHub. I reached out to classmates, looking for someone to talk to. Few people were interested.
During an interview, I would ask about personal experiences using GitHub or other resources, and I was met with long pauses and blank stares, perhaps in an attempt to trick me into thinking the Zoom call was frozen.
Eventually, I was connected to a recent computer science alumna who was willing to speak with me about her experiences. The recent graduate, who requested to be anonymous in this story, had a similar experience to mine.
During a difficult upper division class, Computer Science 131: “Programming Languages,” she found herself particularly stuck on a project. As the deadline approached, she showed up at office hours and consulted with all her friends. Although there was a forgiving late policy for turning in assignments, she preferred to make the deadlines to not end up behind on the next week’s project. In order to turn something in on time, she consulted GitHub.
As the clock inched closer and closer to midnight, she remembered how she stared at the GitHubbed assignment and thought to herself, “Am I going to submit this?”
Turns out, she wasn’t. Although she had turned in GitHubbed assignments in the past, she felt motivated to stop, she said.
“There was a lot of guilt and feeling like I was being bad or not doing the right thing,” she said. “I was getting more stressed and worried than it was worth getting a good grade.”
For her and her peers, however, they sometimes felt like there was no other way to stay afloat in their classes, she recounted. They would try to help each other out but realized if they didn’t use GitHub, they would have to spend so much time trying to figure it out that they would fall behind in other classes.
Like the alumna, I myself have experienced how the assignments in some of these computer science courses take absurdly long chunks of time. Although I’m the type of person who tries to go to bed by 11 p.m., I’d watch the little clock in the upper right-hand corner of my screen advance past 2 or 3 or 4 a.m. while I coded.
As I worked on assignments that were already days late, my tired roommates would complain about the loud clicking of my keyboard, the sound probably amplified by my stressed fingers. I bought a cover for my keyboard to lessen the noise and began spending more nights in a study room on campus. And when I would finally get to sleep, I’d dream about code. After all those hours, it was still hard to feel confident in my own work.
“I feel like the attitude is that people have no choice, almost,” the alumna said. “It’s either use GitHub or spend a ridiculous amount of time trying to figure out what to do and submit it late.”
And professors like Eggert are aware, to some extent, that it’s happening. When I asked him about the different modes of cheating he knew about, Eggert was visibly disheartened, shaking his head and sighing over our Zoom call. But he made it clear that tracking down cheating was neither his main job nor interest.
“To some extent, it doesn't really matter,” he said. “Students in our department are really good at writing software, so even if we magically waved a wand and closed down all the sites that promote cheating, they could just create new ones.”
-feaa593668713dc2a2671b05fd9076bf.png)
Although GitHub is the most common culprit I’ve heard in my discussions with students, Eggert acknowledges that cheating could happen anywhere, and he can’t stop it all. For him, the most important battle isn’t to catch the cheating student, it’s to educate the honest student.
“Obviously minimizing cheating is part of (my job), but it's not the whole story. It's not my whole job,” he said.
The department takes measures to prevent, or simply lessen, the amount of cheating that occurs. Eggert has removed popular sources of cheating from the internet, he said, and several computer science courses have implemented plagiarism checking software.
But plagiarism in coding is a complicated thing, and most students aren’t caught. Instead of detecting copied words and phrases in a plagiarized essay, the plagiarism checker needs to detect copied logic and functionality.
To Joshi, success is more about understanding the code than it is about coming up with it yourself. Although he avoids GitHub, he believes his friends who performed “high-effort” cheating, intensely studying code on GitHub before trying to reimplement it themselves, had about the same level of understanding and success on exams as he did.
“If you fully understand how it works, I don't know if that even counts as cheating,” he said.
I’ve hovered on the line between cheating and being resourceful myself, and I know it’s a difficult line to understand. In my software engineering internships, I’ve been encouraged to ask for help and read through pages of sample code and open-source documentation. I’ve found comfort in the software community that fosters open-source work and the sharing of information.
Funnily enough, this is something I share in common with Eggert. Eggert himself said he was at the frontlines of the creation of open-source code, and he has been involved in the “pre-software movement” since the 1980s. He emphasizes the importance of open-source software and learning to use code that isn’t your own.
The recent alumna, now working as a software engineer, said she doesn’t necessarily believe that cheating or not cheating has affected her experiences in the industry. She said some of the classes at UCLA have helped her do her job, but the skills required depend on the position – so UCLA’s impact really varies from person to person.
Still, she added that someone who relied fully on GitHub and essentially never wrote their own code would definitely struggle with a job in which the main responsibility is writing code.
Preventing a student from graduating without writing much of their own code is a difficult task, although the alumna had a few ideas on how to decrease the amount of cheating that occurs within the department.
“More structure, more help, less ambiguity and more examples on how to do things,” she said.
Some courses do offer extra structure and examples, especially the introductory courses. The examples were helpful to my friends and me, and we enjoyed completing the homework as if it were like solving puzzles. But projects grew harder and deadlines got closer and cheating became normalized.
Joshi suggested assignments should be original every quarter, which would eliminate the possibility of using GitHub for cheating.
But Eggert argued that writing new assignments is more difficult than one would expect. He said it could take days to create an assignment, and clarifications and modifications continue to be added over time. For him and other professors, there simply isn’t enough time to create new material from scratch every quarter, he said.
Eggert has his own ideas on how to promote academic honesty. For one, he is experimenting with a new course to replace Computer Science 35L. The new course, Computer Science 97: “Software Construction Projects,” mixes Computer Science 35L assignments with original assignments and places a greater emphasis on group projects.
Although Eggert suggests that the best thing a student can do when they’re struggling is to ask for help and pursue resources such as office hours, some students like the alumna argue that department-provided resources aren’t very helpful. She felt that during teaching assistant office hours, the TAs simply didn’t have the time to sit down and understand what was wrong with her code. There were always other students waiting for help, too.
Eggert notes that students should also ask for guidance to see whether what they’re doing is cheating.
“The problem is once you start navigating through a gray area on your own, there's a chance you'll cross the line,” Eggert said.
Many students, like Joshi and the recent graduate, have their own ideas on what “crossing the line” means.
As a freshman, I quickly learned that ignoring the ethical line was a normal thing to do. It was hard to see the value in honest work when the internet had solutions just waiting to be looked at.
“I don’t really see the benefit to not cheating,” Joshi said, even though he said didn’t cheat.
I asked him why he chose not to, and he had trouble finding a reason.
In lecture halls that seat hundreds of students, I’d look around and wonder if everyone else was struggling as much as I was. They all looked like they understood what was going on or that they had already turned in the project that I had no idea how to start.
But my time speaking to students in TA office hours and interviewing students has revealed that struggle is a mainstay of UCLA computer science culture. While I fight with broken code and type into the late hours of the night, I’ll know that I’m not the only one struggling, and I hope to be focused on learning.