Shaping the Learning Curve Through a Code.
April 16, 2002 7:21 PM   Subscribe

Shaping the Learning Curve Through a Code. Please do not discuss any typical computer science assignment solutions here. You might get a Georgia Tech student an F for inadvertently learning from non-approved materials. I wonder if there are Georgia Tech admin moonlighting for the RIAA?
posted by srboisvert (27 comments total)
What a ridiculous policy! I am also a CS student, as well as a staff member in our department's Learning Centre, where I spend my time helping students with their assignments. Granted, I don't give away the answers outright. I just help the students figure things out for themselves (although I may occasionally point out a missing semi-colon or the like).

However, I do wonder just how "similar" this particular student's code was to someone else's for him to be reprimanded. The author didn't really present the university's side of the story beyond a few carefully selected quotes, and thirty consecutive similar lines certainly seems like a cut-and-paste-and-modify job to me, which is definitely not acceptable. And the numbers given in the article don't seem out of line (187 out of 1168 students charged with cheating). I'd be willing to bet there are at least that many incompetent people copying off their friends in the classes I have taken or TA'ed.

Then again, for such a small infraction (copying a snippet of code for an assignment worth 2%) I wouldn't expect such a harsh penalty. At my school it would probably be a stern warning and a zero on the assignment.
posted by sanitycheck at 7:49 PM on April 16, 2002

I have a Bachelor of Science degree with Honor in Computer Science from Georgia Tech earned under the Code of Conduct described in the article, and I was a software engineering teaching assistant. The first rule is "Do your own work." Period. Projects are structured so that the likelihood of identical lines of code are virtually nil.

When you graduate from the College of Computing at Georgia Tech, you have proven both to yourself and your future employers that you can learn fast and achieve high standards on your own. Not just simple programming problems either, but solutions to real-world applications. When Ga Tech grads enter the work force, we demand and receive salaries well above the average, because we have earned it. If Ga Tech were to ever try and lower standards of achievement, the alumni would be screaming bloody murder and you could count on at least a couple deans getting the axe.

To put this in some perspective. I am also a veteran of the United States Marine Corps. My 12 weeks on Parris Island were a breeze compared to any 12 weeks I spent at Ga Tech.

... and Jim Greenlee is the meanest bastard who ever walked the planet, and a damn fine teacher too.
posted by mischief at 7:57 PM on April 16, 2002

Solutions to real world applications? In college? Wow, things sure must have changed since I took my last cs class...
posted by groundhog at 8:18 PM on April 16, 2002

Ridiculous, laughable, etc etc.

Eliminate grading in schools. It is an absurd and counterproductive practice. Get rid of grades and people will attend schools to become educated, instead of to become "certified".
posted by fold_and_mutilate at 8:31 PM on April 16, 2002

Isn't most programming a collaborative effort? I've had CS classes (within three different institutions) that adhered to varying rules concerning collaboration. Weaker students may get some help at times, on projects, but the wheat is definiteley separated from the chaff sooner or later. After all, projects are only a portion of your grade, right? The weaker students always freak out and bail, somewhere around the level of courses concerning data structures and discreet math.
posted by gnz2001 at 8:33 PM on April 16, 2002

"somewhere around the level of courses concerning data structures"

gnz, how about data structures and recursion on your first quiz in Intro CS?

The class Honor Code can be found at the bottom of the syllabus. Note: Intro CS is required of ALL Ga Tech student's, not just CS majors.
posted by mischief at 8:53 PM on April 16, 2002

Spoken like a true underachiever, f_&_m.
posted by mischief at 8:56 PM on April 16, 2002

I'm an overachiever, I suppose, and I agree with foldy on this one. Grading takes the focus off of learning and puts it on getting good grades. At least in certain circumstances, then, it would be ideal to eliminate grades. (Obviously, some people need grades to motivate them, but at the top schools -- Yale law school, for example -- pass/fail grading can be widespread and successful.)
posted by gd779 at 9:02 PM on April 16, 2002

Egad! Structures andfunctions in your first quiz. No wonder there's cheating. In my day we kinda ramped up to those concepts.
posted by gnz2001 at 9:17 PM on April 16, 2002

That quiz looks pretty standard when it comes to an introductory class using Scheme. I have yet to see a Scheme-based textbook that doesn't jump into recursion or data structures rather quickly. That's why it's used so widely. Scheme is relatively easy way to wrap those ideas around your mind quickly.
posted by ttrendel at 9:23 PM on April 16, 2002

Sorry, I'm a dinosaur, and clearly out of my depth here. My CS curriculum was based on C++.
But this from the honor code caught my eye: It is a violation of the Honor Code to copy or derive solutions from text books.
Ouch. So you have to re-invent the wheel?

posted by gnz2001 at 9:40 PM on April 16, 2002

It's really interesting to see the difference between CS and other disciplines when it comes to collaborating. For example, here at Illinois, the CS program's stance for collaboration is much like the one at GT. But for many of my computer and electrical engineering courses, collaboration is not only allowed but sometimes encouraged. For example, in one of my digital systems lab, the professor specifically stated that he didn't care if we copied a design off of one another. All he cared about was that we understood our design and would be able to explain the design to him.
posted by gyc at 9:45 PM on April 16, 2002

trying to fix the formatting. (there was a trailing end-div tag in gnz's comment.)

posted by moz at 10:45 PM on April 16, 2002

ah, the well-intentioned tag-closer script is preventing me from fixing the closed div. oh well. help. (!)
posted by moz at 10:47 PM on April 16, 2002

The probability of several lines of identical code between two assignments may be low, but it certainly isn't zero. The probability of this occuring increases as you add more students, so given a large enough sample size, you could expect it to happen at least once.

Suspending students' results based on probability isn't exactly a good solution to the problem. Here, we have started making assignments worth nothing towards a student's final grade to avoid cheating. If they cheat, they don't learn. If they don't learn, they fail the assignment-based questions in the exam and fail the unit.

Honour is a nice concept, but it's just a little bit difficult to represent quantitatively.
posted by Lionfire at 11:46 PM on April 16, 2002

"Spoken like a true underachiever, f_&_m."

How did you arrive at that conclusion?
posted by lucien at 1:43 AM on April 17, 2002

Speaking as a teacher, I'd be =delighted= never to grade again. I hold my head over all the "points lawyers" who quibble over every damned assignment, trying to eke out those extra couple points to boost them from a B- to a B. Feh. Pre-med students are the worst.

Still, it would be interesting to see what constitutes proof of plaigarism in this case. If it's copied code, I suppose I could see that, but if it's merely a similar logical structure, then I wouldn't be impressed.
posted by meep at 3:31 AM on April 17, 2002

He wanted to learn. That was his big mistake. The university officials who filled in the violation form were forced by the Georgia Tech rules to stray so far from their obligation as educators that they seriously listed part of the freshman’s offense in exactly these words: "He was trying to learn it."

i don't know if that's funny or just sad.
posted by juv3nal at 4:08 AM on April 17, 2002

What's funny is a thread full of comp-sci graduates comparing grades amidst broken HTML. It appeals to me at least.
posted by vbfg at 4:52 AM on April 17, 2002

vbfg: you got that right! I'm at work and trying to restrain my laughter...

Oh, waitamminnit, I forgot the programmer's creed: it's not a bug, it's an undocumented enhancement to the system.
posted by groundhog at 5:54 AM on April 17, 2002

I have a BSCS with highest honor from Georgia Tech, too, though it wasn't earned under this policy to my knowledge (I graduated in May, 2000).

When I went through 1501/1502 (the old quarter version of the class in question), Kurt (the AI guy and academic dean whose last name I can't remember, largely because everyone just calls him Kurt) got up at the front of the class and spent thirty minutes discussing the differential pattern-matching software they ran over introductory CS homework to make sure people didn't cheat. About three years later, the existence of such a system hit CNN. Before that time, it either a) didn't catch anyone, or b) only existed in myth, and maybe as a prototype Perl script. Kurt was tough but fair; it seems the new academic dean is less hacker-researcher and more university politician.

Unless things have drastically changed (it sounds from Mischief that they have), it was only the freshman classes that were so draconian about informal collaboration. Sure, other classes were draconian in other ways (Karloff's 1155, the first formal logic class, curved a 22% to a B when I went through; I never passed a lab from one of Kurt's own Lisp TA's because there was a minor formatting error in my headers that prevented the autograder from working so they just threw them on the floor, and I didn't know anything about the error because it took nine weeks to get my first lab back), but essentially, the freshman classes were designed as an "idiot filter" and once you got past them, you were accorded a little more respect.

(Some people often thought of the aforementioned Greenlee's concurrent systems class as a weeder, too - they didn't get the point. Yes, the man has a little trouble editing himself, shall we say, but 2430/whatever it's called now is hard because concurrent systems programming is hard.)

It's a shame - one of my favorite things about Tech CS was the collaborative aspect of the program. There's always someone smarter; at Tech, more often than not, the smarter person was sitting two rows behind you, or out in the commons, and just bouncing ideas off them could get you learning more quickly and with more depth than is possible in a lecture setting. Group classes like Abowd's software engineering and Guzdial's modeling and design were far more useful in simulating a real work environment than the introductory freshman stuff. Companies that don't emphasize collaboration in software development basically get what they deserve.

Nobody gets a "free ride" through the College of Computing, but from my experience in the upper classes, Tech CS undergrads can be divided into two groups: those who can collaborate well, and those who can't. The former group generally ends up making interesting contributions to the field, becoming successful systems architects and software engineers, and surviving as computer science professionals after the technologies they grew up on (mostly Java, nowadays) are gone. The latter are more likely to work as code generators, thorougly disposable by the software industry when the next class graduates and is eager to impress employers with their newfound technology knowledge at a discount of ten to twenty percent.

If this policy ends up encouraging the latter at the expense of the former, as it is apparently designed to do.... well, I'm glad I got out when I did. :)
posted by Vetinari at 6:25 AM on April 17, 2002

meep: It's copied code: identical variable names, identical indentation and other whitespace, and identical comments.

As for the kid in the story: Tech students are told throughout the semester, "If you can't get something to work, comment out the code you HAVE written and explain what you were trying to do and why you think it didn't work."

Vet: Things have changed a lot since the switch from quarters to semesters. Also, the deans do a very good job of safeguarding the identities of those they catch.

To anyone still at Tech: Are they still thinking about eliminating Freshman Calculus and pushing it back onto the high schools? I can just imagine a new swarm of Rats getting a big helping of DifEQs during their first week at college. ;-P
posted by mischief at 6:42 AM on April 17, 2002

Projects are structured so that the likelihood of identical lines of code are virtually nil.

That seems VERY unlikely, given the nature of programming.
posted by rushmc at 8:11 AM on April 17, 2002

I can't imagine they'd be able to come up with a program that would recognize two sets of functionally identical code with even freshman-level concealment - different variable names, comments, etc. etc.

I was all growed up - 35 - when I got my CS degree. By that time I had gained enough sense to know that you can only cheat yourself.

As a commuter student with a day job, you don't get to camp out at the professor's office all day and squeeze them for bits of information about tests and projects. I worked like a dog on all my assignments, and there's nothing more annoying than finding that my work of coding art was given a cursory examination by some grad student and marked down for some trivial infraction.

Vetinari, you're absolutely right - the ability to communicate and work with others is at least as important as the technical skills.

Hey, look! Somebody fixed the html! Too bad, the thread was more relevant in it's previous demented format.
posted by groundhog at 8:16 AM on April 17, 2002

Ahhh, I see, it fixes itself when viewed in preview! Matt's added another bug useful feature!
posted by groundhog at 8:18 AM on April 17, 2002

That seems VERY unlikely, given the nature of programming.

Students are told to use descriptive variable names (no single letter variables like i or x), procedure calls and function names. Each of the above requires its own comment. Whitespace is mandatory (indentation, double and triple line breaks).

As an example, Student A writes bulk of code using three-space indents, one- or two-word comments and double line breaks between all sections. However, more than just a few lines of Student A's code is identical to Student B and in this section, the indents are ten-space, the comments are full sentences, and triple line breaks separate major sections.

Some students try to get away with this level of blatancy. They don't even try to hide it. Tech doesn't bother with vague similarities, much like cops don't mess with doing 72 in a 70 mph zone. Tech goes after those doing 90 through a school zone.
posted by mischief at 9:23 AM on April 17, 2002

In my 6th term, I took a class called "Operational Systems II". The teacher was a very boring woman, who used to teach that class the same way for several terms, including the very same assignments. One of them, the final one, was that we should code a 'multi-tasking simulation' using C and running it in DOS (I'm that old). It should be coded by small groups (2 or 3 people together).

Basically, what she wanted was a screen with 4 'windows', each of them representing a different task (we could choose simple tasks, like calculating the number of days between two inputed dates, etc.). And the program should simulate switching from task to task and preserving the 'context', ie, the memory content.

At that point, everyone in class already had the code that she wanted from students that took the same class before us. It used two Borland C instructions that saved and restored the context and those instructions were inserted in the middle of the 'task coding', ie, they were not random, we could choose when the task would be halted or resumed.

I got together with one of my classmates and we wrote a completelly different code, that did not use the two instructions, that could randomly halt and resume the tasks and that delivered the same result. One day before presenting it, since we heard that everybody was doing it according to what she expected, we decided to present it to her and see if it was OK for us to use our different method. After the presentation, she told us that she didn't think it was the same thing that she expected.

Therefore, we got the very same old code from a former student. Using our skills of copy and paste and find and replace, I've changed all the variable names, all the function names, all the comments, all the positions of the comments, the four 'tasks' and the position of the dreaded instructions in the code. Just before presenting it again, we were told what were the questions that she was asking all the groups and what should be the answers. We were graded a 10 (out of 10).

My point is: we understood what she wanted and worked hard to get a different solution (there were different solutions) instead of cheating. When we checked it with her, she told us that she expected the very same cheated code. And we did understand what that cheat code was doing, or else we couldn't change it. It is fine that you should make sure your student is not cheating, but I hardly believe that they have the tools that can separate a cheater from a non-cheater beyond reasonable doubt.

By the way, when she was taking a look at our code, she asked my classmate what was that 'i++;' instruction that she seemed to notice in each and every different code. Maybe she was suspicious that it was a clear evidence of cheating...
posted by rexgregbr at 9:48 AM on April 17, 2002

« Older The Covers Project   |   an opened lettuce to sodd runtlestuntle from dr.... Newer »

This thread has been archived and is closed to new comments