Finishing up my undergrad at UIUC. A notable fraction of students in each course do cheat. I see two courses of action: (1) we could take the hard road and seek to catch all dishonest students and punish them or (2) we could make cheating extremely difficult with some simple changes.
I think (2) is the prudent course of action. The majority of cheating that I am aware of is only possible because professors reuse assignments and homework/exam questions from previous years. Solutions are simply passed down each year. One notable exception is in our theory classes, where the faculty make the effort to produce unique homework and exam questions every semester. I believe cheating in the theory classes is far lower as a result and I am extremely thankful that the faculty put forth this effort.
I am cognizant of the work required to generate unique assignments each semester. However, as demonstrated by how departments typically handle quals, it is doable if the workload is distributed. It is my sincere hope that this becomes standard practice. It is the easiest and most fair way to handle the cheating problem. The reason why such a system usually doesn't get implemented in practice is because it requires the entire department to commit to undergraduate education, which is quite difficult to achieve at research universities.^
Some other minor additions to the above system that have a good payoff/cost ratio: (1) static analyzers to detect duplicate code submission and (2) higher weights on exams to punish those who share complete answers on homework assignments.
^Don't take this as a condemnation of undergraduate education in the CS department at UIUC. There are incredible teachers here you'll get an excellent education if you make a little effort to avoid professors whose priorities are elsewhere.
The article posits that the question of cheating isn't a matter of catching or punishing the students. It's a matter of creating engaging learning experiences and treating students as the teacher's customers. A student will only get from a class what they want to get out of it; seek a grade at any cost and you'll find a way to earn it, seek to learn at any cost and you'll come away better off (and likely with a good grade to boot.)
So the way I see it, a teacher does have two options: (1) try to force students to learn by trying to make "learning" the only way to earn a better grade, or (2) try to encourage students to learn by trying to make "learning" feel like the rewarding experience it should be. Note that neither of these approaches involves catching or punishing students, nor does it involve forcing students to learn in order to achieve a better grade. If in the end you're a student who finds yourself with the same grade as someone who cheated their way through the class, so long as you got what you paid for (an education), why should you care?
Whoops, I meant to mention that. Creating an engaging learning experience is the most difficult option of all. It needs to be done, but there are steps that should be taken in the mean time in order to a more fair (but admittedly suboptimal) environment for students.
A couple of things unacknowledged in your argument. First, there's the practical implications of cheaters on GPA. Cheaters get higher grades than what is possible without cheating, making the curve in a class lower than what it would be in a completely honest classroom. I'll be the first to champion someone who doesn't care about GPA, but there are concrete affects that a lower GPA has on students. Even though you got a good education, it's still something to think about. Second, there's the fact that the solution you propose is not possible in the current system. The incentive structure is all wrong (read: nonexistent) for undergraduate teaching in universities. Further, the majority of professors don't even have the requisite skills to be good teachers. Even if we did get the incentives right, the talent simply isn't there. To be honest I doubt there are enough people on board with improving undergraduate education to get it done.
The reason students that don't cheat get pissed off about what they consider to be rampant cheating is due to perceived costs. While both students did pay the same for their tuition, the cheating student payed a lot less in effort than their non-cheating peers. If both cheating and honest students end up with the same grades, the honest students feel like they paid more for the same results.
I suppose this has to do with a flawed mindset about what they're paying for: they feel like they are paying for their grades and you're saying that they should be paying for their education instead. Unfortunately, like qntm said, the cheaters are competition for jobs and on paper, they look just as good as the honest students, despite paying far less for their grades. Of course, I guess that this is what rigorous interviews are for.
> If in the end you're a student who finds yourself with the same grade as someone who cheated their way through the class, so long as you got what you paid for (an education), why should you care?
Because they're competing for the same jobs as me!!
Reusing exam/written homework problems is unquestionably lax, I'd agree, but I do not think that professors should be writing new programming assignments each year.
I worked as an undergraduate teaching assistant for intro programming classes at my school, and the amount of debugging (as that's what it is) that goes into designing a good assignment is extraordinary. We had a small collection of world-class teaching professors, and each time a new assignment was introduced, there were always problems. Some starter code didn't work for students A-E. Or a requirement was so ambiguous that solutions varied in a material way.
Like everything else, writing a really excellent assignment is an iterative process. After two or three offerings, you finally have something your users (ie, students) really value: an assignment that teaches well.
And to be honest, the presence of cheating on programming assignments never made any sense to me. It's so simple to detect plagiarism: you have the source right there (and a database of all previous submissions). I really do think that CS stands out among the classes for plagiarism because of how much easier it is to spot rather than an unusual incident rate.
^Like everything else, writing a really excellent assignment is an iterative process. After two or three offerings, you finally have something your users (ie, students) really value: an assignment that teaches well.
New assignments should be just that, another iteration on the original, excellent assignment. I had a few assignments in undergrad for which even solutions to previous versions were essentially useless unless you understood the underlying principles. The professor made this quite clear from the beginning. Minor changes in input/intermediate/output structures and changing constraints on the expected solutions easily confound the copy-pasters. I think this method even enhanced the learning experience for me by highlighting early on how a subtle difference in an algorithm can make all the difference in the world.
At my University you had to be able to explain and answer questions on your assignments before they gave you a pass. So while it was possible to 'borrow' an old solution, if you didn't also study and understand the code before handing it in you'd quickly be found out when you failed to answer even the simplest questions about how the code works why it looks the way it does.
Slightly off topic, but I'm glad you're getting the most out of your degree here at UIUC. I'm in the general engineering department and it is an absolute nightmare - a complete disgrace to the prestige of the university. I honestly feel as though I gained more applicable knowledge and experience in a single year of high school than 3.5 years here. Talk about a waste.
What department? In CS I've found there are effectively unlimited opportunities for learning and exploration (if you have the basic knowledge needed to navigate the system, which while unfortunate, is the reality). I've heard General, Matse, and some parts of Civil can be pretty "traditional"....
Take classes from people on these lists: http://cte.illinois.edu/teacheval/ices/exc_teach.html. Make sure you go back at least a few years because there are several good teachers who don't teach every semester or were on sabbatical. Prof Bailey comes to mind as someone who was on sabbatical.
When you register for a class go to every single office hour and figure out which TAs know their stuff. Only go to those office hours.
Figure out how much the Professor actually loves the textbook. If he really likes it, problems on homeworks and exams will be of the same theme as the textbook. In classes like that you benefit immensely from taking notes out of the book. Note most textbooks are on reserve at Grainger, no need to buy if you dont want to.
If you haven't taken 241 already, just get through it. The department is still figuring out how to teach that class.... it's not the teachers fault. It just doesn't quite fit right and probably should be two classes.
Use 242 as an opportunity to meet good programmers and continue to work with them afterwords. The actually increase in programming ability from the course itself is questionable. Although again, not the teacher's fault. It's a really hard thing to do.
Get involved in undergraduate research. A great starting point is Lawrence's CS498la (undergraduate research lab). Professors are a lot more tolerant and welcoming than you'd think (but be ready to work hard). Note that research doesn't have to be crazy hardcore theoretical stuff. It can be both cool and relevant (studying some sort of HCI problem on mobile devices?).
Figure out who the competent Math professors are for those classes that are required. I didn't do my research here and got bitten by it. My impression is that there aren't very many good sections for Math.
Take a graduate level course in the subject you are interested in. One of the unique things about top tier programs is that you pretty much can take a course in whatever you want. So for example if dbases are your thing, taking 511 after 411 is the way to go. People who have to scale Rails applications to massive sizes need to know data bases very well... you might as well take the opportunity now to get ahead of the game.
Oh and don't leave freshman physics until your last semester. That was a major fail :P
I don't really have any big secrets, but a lot of people manage to miss most of the above. Apologies if you already know it all. :P
Thanks! That was really helpful. I took 241 last semester and 242 this one. How much more work intensive are the graduate level courses compared to the undergrad equivalents?
They're a ton of work, more so if you're not used to reading technical papers. It's also easy to get behind on the project, which is a very independent activity. Graduate students themselves usually only register for 2 courses a semester. That being said, if you make it through you'll be familiar with what is essentially state of the art. I'm finishing up the networking grad class this semester and I'm very pleased with it. Although I'm not exactly the best person to listen to when it comes to balancing work because I constantly overextend myself.
That's awesome, I have the same tendency to overextend myself. Also, I am considering taking 565 next semester. Any tips you find in keeping up with a considerable workload?
Sorry, just saw this reply. One this is that professors will be pretty forgiving if you fail. Just show that you are working really hard and people will understand if you over extend yourself. That type of flexibility goes away in grad school I think, but for now it is there. Otherwise just make sure you graduate on time. :P
..where the faculty make the effort to produce unique homework and exam questions each course.
My viewpoint is: If I'm expected to spend my time studying hard for the class, the professor better spend theirs making the class worth studying for. Which includes making the exam relevant to what we covered, rather than what was covered three years ago when the exam was made up.
I hope you're prepared to pay quite a bit more for your schooling, then. My wife is a non-tenure-track PhD and she spends probably 6 hours preparing for each one-hour lecture. She must give eight unique lectures per week. That's 48 hours of prep before you count grading and creating assignments. And she's not even expected to research/publish like tenure-track faculty are.
For this, she gets paid less than 50K per year. If you could halve her workload, she could create better lectures and better assignments and grade with more detailed feedback. But then the university would have to hire two of her to teach the same number of students.
I think (2) is the prudent course of action. The majority of cheating that I am aware of is only possible because professors reuse assignments and homework/exam questions from previous years. Solutions are simply passed down each year. One notable exception is in our theory classes, where the faculty make the effort to produce unique homework and exam questions every semester. I believe cheating in the theory classes is far lower as a result and I am extremely thankful that the faculty put forth this effort.
I am cognizant of the work required to generate unique assignments each semester. However, as demonstrated by how departments typically handle quals, it is doable if the workload is distributed. It is my sincere hope that this becomes standard practice. It is the easiest and most fair way to handle the cheating problem. The reason why such a system usually doesn't get implemented in practice is because it requires the entire department to commit to undergraduate education, which is quite difficult to achieve at research universities.^
Some other minor additions to the above system that have a good payoff/cost ratio: (1) static analyzers to detect duplicate code submission and (2) higher weights on exams to punish those who share complete answers on homework assignments.
^Don't take this as a condemnation of undergraduate education in the CS department at UIUC. There are incredible teachers here you'll get an excellent education if you make a little effort to avoid professors whose priorities are elsewhere.