Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!seismo!gatech!gitpyr!scott From: scott@gitpyr.UUCP Newsgroups: comp.edu Subject: Re: Cheating on Programming Assignments Message-ID: <3385@gitpyr.gatech.EDU> Date: Sat, 4-Apr-87 16:53:54 EST Article-I.D.: gitpyr.3385 Posted: Sat Apr 4 16:53:54 1987 Date-Received: Sun, 5-Apr-87 12:49:28 EST References: <248@rruxa.UUCP> <2625@phri.UUCP> <843@fmsrl7.UUCP> Reply-To: scott@gitpyr.UUCP (Scott Holt) Distribution: na Organization: Drunken Frat Boys, Inc. Lines: 73 In article <843@fmsrl7.UUCP> wayne@fmsrl7.UUCP (Michael R. Wayne) writes: >Not that I want to start a major debate but what is the real problem >with students collaborating on programming assignments? In the real >world, how many professional programmers are expected to develop code >without talking to another programmer? (Just look at usenet traffic.) >The exchange of ideas between students fosters a feeling of working >with co-workers, not competing with them (as opposed to "curving" exam >scores). I wish that people would stop trying to compare the so-called "real world" with college. A learning environment is not the "real world." The learning environment's goal is to teach INDIVIDUAL students the concepts of a particular discipline. The goal of the "real world" is to come up with a good product in an efficeint manner. The ways in which you reach these goals are different. Personaly, I feel the best way to teach programming concepts is to have students work on individual programming assisgnments wich are designed to present individual concepts. If you allow students to work together on programming assignments, they will tend to specialize on particular concepts while learning very little about others. Once you teach them some solid core concepts, then you present them with projects which require them to tie all these concepts together. There may be a place for collaboration here, but only if the project is very complex or if one of the goals of the course is to teach group methodologies. To give you an idea of what I mean by complex, the undergraduate compilers class here at Tech requires a large project. When I took it last quarter, the project was to write a compiler which implemented a small subset of Ada. This subset supported integer and real types, arrays, records, recursive procedures with parameter passing, type coercion, simple boolean expressions, loops if-then-else statments, and procedure nesting. Support for abstract data types could be added for extra credit. The project was designed to introduce fundamental concepts of compiler construction such as scanning, parsing, semantic stack manipulation and code generation, plus how certain features common to modern programming languages could be implemented. The project was assigned as an INDIVIDUAL project. Had it been done as a group project, I don't think I would have gotten as much out of it as I did. Members of the group would have taken particular pieces of the compiler and made them their specialty. Yes, we could have implemented more of the language. No, we wouldn't have gotten any more out of it. >Methinx the real issue is that is is very difficult for the instructor >to grade N people working on a joint assignment. ("Not everyone did the >same amount of work, therefore they do not deserve the same grade.") How to assign grades should never be the real issue! Grades are ambiguous and often deceptive. A grade should definitely NEVER be based on the amount of work done, but rather on how well the concepts were learned. The major problem that I see with group projects is not that it is hard to determine if a student learned all the concepts, but rather that it is impossible to guarantee that a student will be exposed to all the concepts. With an individual project, you can be assured that if the student completes the project without colaborating with classmates, then all of the desired concepts have been introduced. Group projects do have their place though. I feel however, that they should be restricted to those situations where a goal of the course is to learn group interaction (such as a software engineering course), or where you want to develop skill at handling real world problems (such as a senior design project). I will agree with you, though, that exchange of ideas between students is very helpful, but it is often difficult to make sure that only ideas are exchanged. I'll also agree that fostering attitudes of competition is bad for students. Students should be treated as individuals and graded in relation to the quality of the work that they do, not the quality of the work that their classmates do. - Scott -- So this is the earth...big fat hairy deal. Scott Holt at Ga. Tech. ARPA: scott@pyr.ocs.gatech.edu BITNET: ccastsh@gitvm1 uucp: ...!{akgua,allegra,amd,hplabs,ihnp4,masscomp,ut-ngp}!gatech!gitpyr!scott