Slashdot Mirror


Cooperation in CS Education?

fwitness asks: "The college I currently attend, like most colleges, is on a form of 'Academic Honesty Policy'. It has been explained to me in various ways, but mostly it boils down to: If you catch someone's code out of the corner of you eye, that's cheating, and you need to come up with your own 'original' ideas. I'm a CS major, so I write a lot of code, and I imagine when I get in the work force, I'll be writing a lot more. The difference is, in the workplace, I'll be in a team of people. I won't have control and I'll have personnel and political issues to deal with in addition to my job. So far I've had one class that actually demonstrated this principle, and I'm pretty much finished all my CS courses. I know the college has to do this so they can somehow grade 'my' code and assess my performance. Isn't there a better way? A way that students can be taught to work as a team yet still be able to tell who is pulling their own weight and who is not?" I always enjoyed working in teams during my college education, yet found that projects, where you were allowed to work with others, were few and far between. Do you all feel that technical courses should show a bit more emphasis on working with others, or is this just one of life's lessons that you pick up as you go along?

412 comments

  1. Group Projects by NitsujTPU · · Score: 3, Interesting

    In college I did group projects where we were required to document our individual contributions. Usually at the head of all of our code was a commented out section marking the dates that the code was modified, who modified it, and what they did.

    1. Re:Group Projects by Anonymous Coward · · Score: 0

      wow... you mean like real documentation just like in the real world??

      if there is one thing I WISH college graduates had was a good knowledge of source management... even if it's just writing good boilerplates, using detailed, specific commenting, and attempting to write self documenting code (no variables named a or b or c)

      After talking with my intern from UW (who is a CS major)... it seems as if they are always focused on theory... with not enough emphasis on real life work.

    2. Re:Group Projects by NitsujTPU · · Score: 1, Insightful

      Nah, my school started us out on hard core documentation by the second computer science course. As soon as we learned the first language language we learned notation to document our work in.

    3. Re:Group Projects by Sir_Real · · Score: 3, Insightful

      This is similar to what we did. We worked in groups and commented our functions. This taught black box programming, how to work with other peoples code, and how to COMMENT the code. Coders who don't comment their code should be forced to document large, obscure platform, assembly language programs.

    4. Re:Group Projects by callinan · · Score: 1

      This is true... Here at my University, documentation is reserved for those who like to play with word processors. I always make sure I comment my code as much as needed, since I get large amounts of extra credit for it. Can you imagine? extra credit!

      --
      "UNIX is an operating system, OS/2 is half an operating system, Windows is a shell, and DOS is a boot partition virus."
    5. Re:Group Projects by Cato+the+Elder · · Score: 1
      We did a lot of group projects in my college, and I thought it was really valuable. Submitting documentation of who did what seems useful as well, although if the project was conceptually hard but not too heavy on actual code it seems that planning could get undervalued.

      Putting this documentation in a commented out section in code is a waste though. CVS log will do a mutch better job and ensure that at least something is put in every time a change is made. And you don't have to scroll down past it every time you want to read the code.

    6. Re:Group Projects by Bastian · · Score: 2

      in my school, we did a very similar thing, but all our work is done on a Sun450 that the professor has root access on. All we have to do is use RCS or CVS, inital all our comments, and comment what we did when we check in the code, and the professor has a script set to run at the due time that snapshots all the log files.

    7. Re:Group Projects by SonCorn · · Score: 2, Insightful

      In my major, Chemical Engineering, all of the work we do is in groups. They are not formal groups, but we all get together, analyze the problem, then we attack it. Although there is now way to tell exact contributino of each party; it seems to work out pretty well that on each problem someone will come up with that key idea that allows it to be solved. Usually it is a variety of people that come up with these ideas, so no one person feels like they are contributing more than others.
      The way we get around people just copying is that the exams are individual and in class. Trust me, it is really easy to tell when someone just freeloads off all of the others, they tend to fail exams.
      I see no reason why in addition to group projects in CS, that there couldn't be exams to test knowledge; or perhaps the professor could interview each student to test their knowledge?

      Just some ideas.

      --
      What good is a used up world, and how could it be worth having? --Sting
    8. Re:Group Projects by DCheesi · · Score: 1, Interesting

      My CS profs. were generally of the "code should comment itself" school of thought. They certainly didn't punish large comments, but they didn't reward or encourage it, either. Of course, once I got into the real world, I realized that there only so many unique & descriptive ways to name a loop index (index_for_functionX_1, index_for_functionX_2, etc.).

    9. Re:Group Projects by stilwebm · · Score: 4, Insightful

      This is similar to what we did at my alma mater. The only addition was that we graded our teammates at the end of the assignment. Usually on a scale of 1 (contributed little) to 5, this was factored in to a portion of the project grade and/or final grade. This was usually sufficient motivation to make everyone do their part and contribute. The professors who used this system let its participants mostly govern themselves. They even suggested working on core competencies, just like a real world situation - if someone better at the input parsing, let him/her do that while another teamate may focus on the mathematics involved.

      The best way to teach responsibility is to give the student responsibility.

    10. Re:Group Projects by Anonymous Coward · · Score: 0

      What about variables named i,j,k or n?

    11. Re:Group Projects by scott1853 · · Score: 2

      They even suggested working on core competencies, just like a real world situation - if someone better at the input parsing, let him/her do that while another teamate may focus on the mathematics involved.

      Doesn't this lock people down to one aspect of development? At the college level, they are most likely better at one specific task because that's all they've learned so far. Isn't the point of college to become well versed in many things, not just one small part of the industry you want to join?

      My experience comes from working in a small company, but my tasks include website design, graphics, CGI, admin, application design and coding both new and maintaining others code, all using mathematical, logic and creativity skills. I'm not the best in the world, but all these skill were aquired over a couple years and I'd like to think that while I'm not quite to "guru" status, I'm at least in the "advanced" category. I wouldn't have learned so much from being type-cast as a webmaster or a application programmer. That's not what a programmer is. A programmer knows how and what commands to send to a computer to make it perform a specified task. The actual task is irrelevent. HTML, Perl, C++, they're all just interfaces to commands.

    12. Re:Group Projects by scottnews · · Score: 4, Insightful

      From my experience, professors do not look so closely at the individual student.

      My University does the opposite. With the exception of CS 102 and 103, Java programming 1 and 2, all of our classes are group classes. I almost every case, in a group of 5, 1 or 2 of the 5 would carry the load while 1 or 2 would do virtually nothing.

      I had software engineering last spring. Its a senior level class. One of my group members did not know how to send attachments in Hotmail. She didn't know what a .zip file was. Our project was to make a checkers program in VB. She is not from the USA, so she didn't know how to play checkers. By the end of the semester, she STILL did not know how to play checkers. The exams covered software engineering concepts from the book, not VB code. Its been my experience that the test cover concepts, while leaving the actual code out.

      Yes we had a spreadsheet to show our time, we used MS Project. But the problem is the group assignments take up a lot of time while making up only between 10 and 20 percent of our grade. You could get a D in the group, do well on the exams, and receive a B for the course.

      My last semester here and I am doing all my work alone. Both my advanced assembler and networking classes use groups. It seems the student learns more when they are by themselves. It is very easy to get by on the back of the group here.

    13. Re:Group Projects by Miles · · Score: 1

      But this only measures how much code has been written by people. What about things like design and ideas? Brainstorming ideas is at least as important as implementing the ideas.

    14. Re:Group Projects by ferringb · · Score: 1

      seriously? I go to UW-madison, and at least in the earlier course's (upto 400 level), they're practically documentation natzi's...

      Don't get me wrong, I agree... I've delt with entirely too much code that's become my responsibility that has crap for documentation, but the documentation we're required to do on our submitted code is a little bit anal...

    15. Re:Group Projects by Dexx · · Score: 1

      "Doesn't this lock people down to one aspect of development?"

      Yup. We had a project that we did as a group in the program I just finished. We were allowed to set up the group structure in any way we wanted. We set it up so that the people with the least experience in certain areas were doing the most work, 'supervised' by somebody who knew that area. This way, we all learned as much as possible.

      Unfortunately, halfway through, we had the prof look over what we had, and it sucked. We threw our prior organization out the window and had to restructure our group to get the finished product done well and done on time.

      I didn't learn as much as I could have, but I got a good mark.

      --
      Feel the fear and do it anyway.
    16. Re:Group Projects by mysteron · · Score: 1

      You could monitor participation and encourage learning from others by using CVS or some other revision control tool. It encourages you to comment changes and cooperate usefully. It can quickly tell you who the slouches are too. Revision control is a real-world subject, and gives students practical experience that can be applied to every other piece of code they'll ever touch.

    17. Re:Group Projects by stilwebm · · Score: 2

      I guess I should have phrased it a little differently. While it did leave some people to focus on one skill in all projects, the professors varied the projects enough that it was virtually impossible for a user to only ever focus on one or a few skills. The rule was invoked more to avoid grading less capable people poorly when they contribute more resources (esp. time and effort) to the project. Also, most classes where this rule was used, the groups were assigned at random. It was fun in some classes, like one where about 50% of the class was Japanese nationals. It was great experience, because otherwise people would tend to stick to groups of their own nationality.

      If someone did stick to a specific skill and avoided learning how, say, neural nets work, they would likely bomb the next test. Also, few classes consisted solely of group projects.

    18. Re:Group Projects by Anonymous Coward · · Score: 0

      I teach high school programming (using python) and it has been
      my experience that group projects are better than individually graded
      projects for the following reasons.
      (1) Collaboration is the norm in the real world.
      (2) You cannot prevent cheating or as they call it ``helping a fellow
      student.'' The only way you can prevent cheating is to put cameras in
      the bedrooms of each of your students and observe them 24 hours a day.
      Instead, I divide the students into small enough groups
      and have the project leader assign each of his members a module or part
      to build. I then judge the members on the quality of their
      individual modules and the coherence of their project.

    19. Re:Group Projects by RatFink100 · · Score: 1
      wow... you mean like real documentation just like in the real world??

      Where is this 'real world' where documentation exists? Can I go there please?

    20. Re:Group Projects by sgups · · Score: 1

      I think he meant UW as in University of Waterloo, Ontario which has a very large scale internship program in all disciplines. Yes it is theory based but a significant portion of our assignment weightage is based on documentation

      --
      Democratic USA - Government of the corporations, by the Corporations, for the corporations.
  2. Teach working with others... by nob · · Score: 1, Funny

    Do you all feel that technical courses should show a bit more emphasis on working with others, or is this just one of life's lessons that you pick up as you go along?

    Of course it has to be taught, CS students are antisocial by nature.

    --
    daed si luap
    1. Re:Teach working with others... by flk · · Score: 1

      Unfortunately, working in groups is something we all have to face. I am currently coursing through my undergraduate CS program and this semester in OS, everything is done in groups. Everybody knows that that group work hoovers! It is quite impossible to honestly divide the tasks and say that everyone put their fair share to the final product when you have one arrogant programmer who thinks he's the C guru and everyone else is just ... well ... everyone else just doesn't count. CS isn't exactly the ideal program to enforce honest group work knowing the 'antisocial ... nature' of the students.

      --
      [...]
  3. Out of touch by djweis · · Score: 1

    This would be an example of what you learn at school being inconsistent with what you need to do when you are out of school. It seems to directly contradict the existence of group projects.

    1. Re:Out of touch by Anonymous Coward · · Score: 0

      I think not. School has a bunch of students all implementing the same project. Industry, however, has a bunch of workers each implementing a different part of a project -- workers generally don't go around implementing the same code.
      If one wanted to create the true work experience in school, each student would be given an individual project to implement. Each project would be a part of the whole program. The entire class would be given a grade based on how well the whole program worked.
      Probably the closest one is likely to find is the class where teams of students work on projects. Even better if the students are randomly assigned to the teams.

    2. Re:Out of touch by AssetYoYo · · Score: 1

      True, but too many project assignements are created not to maximize the learning experience of the student, but minimize the grading efforts of the instructor.

    3. Re:Out of touch by Anonymous Coward · · Score: 0

      In nearly every large project I ended up heading it and at least half the group members were ineffective at writing good code (we won't get into designing). I had to sit down and layout exactly what I wanted done and then fix what they did. Essentially it took me longer than it would have to do it myself, but hopefully some of them learned something.

      Most students in class don't even participate in class discussions or ever really speak to professors other than complain about grades.

      It's not necessarily out of touch, it's just a difficult situation to manage in a large class size.

      In an office, contributions are clearer and there's much more interaction with workers. People are also afraid of being found to be stupid and fired so there's some motivation. Lots of students are motivated by grades alone and they can get the same grade by tagging along in a smart group working hard or not working much at all. Sad, but that's how it is.

  4. Just acknowledge collaboration by Miles · · Score: 2, Interesting

    When I went to University, collaboration was always okay, as long as it was acknowledged. Since 'birds of a feather flock together', this wasn't really a problem (ie: students performing at the same level academically--minus any collaboration--generally collaborated).

    1. Re:Just acknowledge collaboration by karb · · Score: 3, Interesting
      Yeah, at my college too ... since the smarter students were bound to help the smarter (often non-major) students in CS classes, our profs legalized it as long as the assistee mentioned in their prologue the students that had helped them.

      Other than that, I've found profs have a supernatural ability to detect who has written what code. In one case a prof not only determined that I and a (rather intelligent) friend had the same code, but that he had copied off of me rather than vice versa.

      Plus, being one of the smarter students helping other people out drastically increases your own abilities. And cheating is rare because wholesale copying will be noticed, while anything less just requires an acknowledgement in the homework.

      And, btw, many of the helpees (including myself) are now very adept programmers. At least I keep telling myself I am.

      --

      Jack Valenti and the MPAA are to technology as the Boston strangler is to the woman home alone

    2. Re:Just acknowledge collaboration by Gantoris · · Score: 0
      Plus, being one of the smarter students helping other people out drastically increases your own abilities. And cheating is rare because wholesale copying will be noticed, while anything less just requires an acknowledgement in the homework.

      That is a proven fact. If you want to learn something properly, teach it to someone else!

      You'll know as soon as you start trying to teach something if you know the subject matter well enough to teach it, if not, you go out and get to know the subject matter enough to teach it.

  5. Work Study/Internships by PinkStainlessTail · · Score: 2, Interesting
    It sucks, but on some level the classroom isn't about cooperation, but about individual achievment (or at least meeting of standards). The best schools to my mind, give course credit for work study programs and internships where you not only get to hone your skills, but might also get some exposure to how you're eventually going to deal with people in the real world.

    --
    "Slashdot is about legos and staplers." -Cmdr. Taco
  6. Source control.. by Smallest · · Score: 2, Interesting

    ...can usually tell you who did what and when. We had to use some kind of source code control system for all of our team projects. i don't know if the professor actually went through the check-in histories, but the thought that he could was a nice incentive.

    -c

    --
    I have discovered a truly remarkable proof which this margin is too small to contain.
    1. Re:Source control.. by Anonymous Coward · · Score: 0

      Since it's easy to fudge source control it is worthless as a means of tracking who did what.

  7. How about using CVS? by quakeslut · · Score: 1

    Maybe having the project under a CVS repository could allow for inspecting of individuals contributions?

    Plus it'd be good to become familiar with CVS and group coding efforts... for the 'real world'

  8. Depends by jiheison · · Score: 3, Insightful

    While working in teams is gong to be essential to just about any kind of job, people learn at different paces and in different ways. Working in a team is quite different to learning in a team. It seems to me that teamwork is almost a discipline in and of itself.

    1. Re:Depends by stevemitre · · Score: 1

      this is very true... working in teams while in school is unfair to the better (not necessarily brighter) students. I remember many times completing entire projects on my own because my partners were too drunk or stoned to care. incompetence is still rampant in the workforce too, but bosses aren't going to fire you because your team is a bunch of closet-junkies; your professor probably will fail you...

    2. Re:Depends by hansk · · Score: 1

      working in teams while in school is unfair to the better (not necessarily brighter) students

      Unless the purpose is to educate the students on working in teams. My first experience on a team project was an eye opener. In particular, it taught me to be more aware of what others claim to be doing and what is actually produced.

      And yes, when one of our team members didn't deliver and screwed our grade, I wanted to bludgeon them for talking the talk but not walking the walk. I didn't and therefore proved I had learned something from the course!

    3. Re:Depends by jiheison · · Score: 1

      I wanted to bludgeon them for talking the talk but not walking the walk. I didn't and therefore proved I had learned something from the course!

      I have doen the same, bBut what kind of lesson is this?. Should we really be teaching students that they should keep their mouths shut when someone isn't pulling their weight? This just seems to reinforce counterproductive work habits on the part of hard workers and slackers.

  9. See Your Local Hard Sciences Prof (or grad ass't) by Zoop · · Score: 3

    The hard sciences do this all the time, because that's how hard science is generally done--in a team setting.

    My dad teaches occasionally at local community colleges (physics) and has labs. Sometimes he counts on the students to police one another (political but doable) and sometimes he has a monitored lab where they do something at the bench and he can observe who is just hanging back or simply copying results into the journal, etc.

    So, not being in the position myself, I'd suggest bringing up the idea with some physics or chem prof who does this sort of thing who you may have run across. If they're at all clueful about computers, they might have some interesting ideas, or at least tell you enough for you to bring up a concrete idea to a CS prof you know and have a good rapport with.

  10. Work vs. School by FortKnox · · Score: 2

    A way that students can be taught to work as a team yet still be able to tell who is pulling their own weight and who is not?

    Bad news for you. There isn't a way to tell who's pulling their own weight out in the workforce.

    Sometimes the slackers are "lucky" enough to get on several hard working teams and get promoted.

    This is how some managers are just morons.

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    1. Re:Work vs. School by Anonymous Coward · · Score: 0

      This is so true, I just had to reply!

      Since I've graduated, it's amazed me how these slackers move up the ladder by talking about how much they do, when they really do so little.

      It really makes me miss school where it's usually the case that those who work hard are rewarded.

    2. Re:Work vs. School by KC0A · · Score: 1

      On all the projects I've worked on over the past twenty years, it was always obvious who was pulling their weight and who was just collecting a check. A good manager will know who is contributing.

      A tough technical interview will sort out the contributors from the watchers before hiring. I've learned to avoid joining organizations if the interview is too easy -- I won't like the people I have to work with.

  11. What happened when you applied for a job? by jdavidb · · Score: 1

    How many of you ever had a job interviewer look at the college on your resume and say, "Oh, I don't think we want someone from your college; they don't teach you how to work in a team."? What makes us think a student knows more about what employers need than the employers?

    1. Re:What happened when you applied for a job? by lostindenver · · Score: 1

      Actually, I tend to look alot more favorable at Applicants that have attended schools that DO teach CS majors how to work in teams. We also pay them More.

    2. Re:What happened when you applied for a job? by Anonymous Coward · · Score: 0

      Umm basicly they dont have to look at what college you went to they basicly know that you DIDNT work in a team seeing as the education system stinks....

    3. Re:What happened when you applied for a job? by jdavidb · · Score: 1

      This is mean.



      Yes, but since you just recently learned to value teamwork, I suggest there's a possibility that maybe you are overvaluing the role the college plays in teaching this.



      I didn't express myself well initially, but what I was trying to say was that students shouldn't confuse non-collaboration rules that schools put in place to enforce academic integrity with the assumption that schools are opposed to teaching teamwork. It just sounded to me like this guy was whining that he couldn't cheat.



      I would say I value the team experiences I had from my university. (In fact, I convinced one of those guys to come work for my employer.)

  12. My perspective as a current student by dozing · · Score: 2, Informative

    As a current CS student many of my classes have encouraged working with your fellow students when you get stuck. We've had a few group projects in several classes and I think its very important to have that experience at working in a group. Sometimes you get stuck in a group of people who don't know anything and you end up pulling a lot of the weight, but that just prepares you for working in the real world.

    --
    Dozings.com -- Its kinda funny... If you're as crazy as me.
  13. Software teams by wiredog · · Score: 4, Interesting
    My first job, lasted 5 years, I was the only programmer in the company. At this job I'm on a team, but I'm the C++ Guy. We also have an Oracle Guy, An HTML Guy, etc. Just because you're part of a team doesn't mean that you won't be by yourself much of the time.

    Actually, at my first job I was part of a team. A Programmer, an electrician, a machine shop guy, an Autocad/designer guy. That was the main team.

  14. There should be some of both by Ghengis · · Score: 2, Insightful

    Of course there should be team work in college CS and Comp Eng. departments. During my undergrad, we had several group projects, after all, college is suppposed to help prepare you for the real world. There should also be individual projects where you do your own work. That way, when you do get into the real world, you won't be dependent on the rest of your team, and you might be the person the rest of the team comes to for info on certain topics, since you have an expertiese of it from your individual learning. Also, there's a great sense of accomplishment from completing a project that's all your own.

    --

    "The best laid plans of mice and men gang oft agley..." - ROBERT BURNS

    1. Re:There should be some of both by Uttles · · Score: 1

      Refer to a comment posted earlier for more info

      --

      ~ now you know
  15. University Of Phoenix by lostindenver · · Score: 1

    I attend University of Phoenix. ALL of our projects are team Based. We are required to spend at least five hours a week working with each other to occmplish a task. I was very leary of the Idea (I am very independant) But I have finnally learned How to work in a team. I suggest the school to anyone who is trying to further themselves.

    1. Re:University Of Phoenix by Anonymous Coward · · Score: 0

      UoP... Good grief! You *must* know having that on your resume won't go very far. In fact, at my shop, we burn those resumes before we burn the Novell and MCSE certified ones...

      Sorry, but it's fine if you are trying to learn something (note by yourself, as the rest of the institution is not worthwhile to mention) and not necessarily going to end up putting that on your CV... then again, you learn lots more just by doing... No one in the technical world will take any degrees from UoP or any of those MCSE certifications seriously...

  16. Working as a team by NewbieSpaz · · Score: 3, Insightful

    I remember when I did a programming assignment a few years back in college, where one of the guys in the group and I did most of the work. We had told the professor that the other two were not keeping up their end of the work, but she was stubborn in not repremanding the slackers. The only reason the other guy (who was doing the work) and I continued to do the assignment and carry the other two slacks was to earn a decent grade for the project. My point in this all, it that working as a team can be a great experience if the professor keeps tabs on the situation and ensures that everyone has done their fair share. Thank you.

    --
    ------
    Random, useless fact: I type in startx entirely with my left hand.
    1. Re:Working as a team by Anonymous Coward · · Score: 0

      While it sucks to be on a team in school that has slackers, you have to know that those same people are going to be your teammates out in the real world as well. Time seemingly wasted learning to work around obstacles like them is actually time well spent.

      With the recent contraction in the job market, these slackers are probably in a much more tenuous position now than a year or so back, though. So your hard work will finally show through.

      Think about the project, though. By doing most of the work yourself, you have proved to yourself and can show to your future employer that you know what you are doing (unless the project was a huge failure, in which case you should apply for a management position).

    2. Re:Working as a team by RU_on_weed · · Score: 1

      Why should the professor keep tabs ..working in a group environment is supposed to teach the people (you and the others) how to interact and achieve a common goal. Sometimes they work out , soemtimes they don't but the point is to learn how to delegate , respond , and accomplish a goal. I have had group projects in the past where the goal (the final piece of code) was worth one mark..our marks came from documents all members had to provide..including your opinions of the other group members and they time spent working together/alone on the project. The instructor wanted to see meeting minutes, plans of action ..results , pitfalls etc etc ..the code at the end was merely something for us to do. The marks came from "team building"

    3. Re:Working as a team by cavemanf16 · · Score: 4, Interesting
      ...and to add to your comment:

      In the workplace, it takes a LOOONNGGG time to can the slackers. After all, you want to have plenty of evidence against them so that you don't get a messy lawsuit about unfair discrimination of their undiagnosed on-the-job narcolepsy after you fire them. So putting up with the slackers usually doesn't stop after high school and/or college.

      However, I do think CS students should be required to take at least one in-depth course on how to work in a team setting (and not just a senior project, I'm talking a course dedicated on how to work in a team). There are plenty of programmers and techies out there that don't work well with others, and that makes it harder to get your own work done much of the time in the corporate world.

    4. Re:Working as a team by jodonn · · Score: 1
      However, I do think CS students should be required to take at least one in-depth course on how to work in a team setting (and not just a senior project, I'm talking a course dedicated on how to work in a team).

      I actually would really not appreciate having to shell out $3000 for a course in what is essentially time management and social skills. Team working should be something that programmers should experience in college, certainly, but not as a dedicated course. Playing well with others is something we should have mastered by 3rd grade.

    5. Re:Working as a team by ordinarius · · Score: 2, Insightful

      This is _exactly_ the point. I know I used to think that the main challenge of software engineering was technical. Ha. Surprise! It most definitely is not.

      Learning a new computer language, by comparison, easy. Dealing with a protocol, by comparison, easy. Getting 5 or 6 people from different continents to not be completely disfunctional? Damn hard.

      One team member always wants to do something "new", no matter what he/she gets assigned they'll use some latest feature of language x. Another is a procrastinator, he/she does everything in back to back all nighters the weekend before. Another is extremely disciplined and wants to kill the procrastinator. Another is very quality oriented and wants to kill the "new" feature team member. And on and on it goes. Welcome to the working world my friend, its a gas gas gas :)

      - Ordinarius

    6. Re:Working as a team by nick_danger · · Score: 3, Interesting
      Way back in the days of yore, when I was in college...

      My most memorable CS class was one on software design. During the first week or so, we were to form 3 member teams. As the semester went on, the three member teams were all supposed to be working on the exact same assignment, applying newly learned knowledge to the project. There was specific deliverable at mid-term. Oh, and at mid-term, the class was then required to form 4 member teams. The prof said something about it representing job hopping in the real world (this was in '83, so it's not a new concept, boys & girls). Some teams were necessarily disbanded in order to meet the 4-member requirement. And then the project continued, with more milestone deliverables throughout the rest of the semester, including some rather off-the-wall stuff. It was supposed to mirror the real world he said. We laughed.

      And now that I'm older and far more jaded, I see he was right.

      And the dynamics of the team was: one guy took over the design work and just handled it. I and the other member took care of coding. Was it a team effort? Not every step of the way. Did some team members contribute more than the others? You betcha. But then that's the way it really works in the real world.

    7. Re:Working as a team by Anonymous Coward · · Score: 0

      Well, I agree, but remember all the tech nerds who don't have lots of social interaction when they're young, either because they're too 'weird' for their peers to play with, or because they shy away from social interaction. And yes, making you pay money for stuff you're already good at is stupid, which is why I so much wish colleges would just offer plenty of comprehensive tests that would just allow you to skip classes you don't need provided you passed the test. For instance, give me a week of 'team building' exercises, and if I pass, then I don't have to take the class.

    8. Re:Working as a team by Anonymous Coward · · Score: 0

      Wait until you are married and have kids.

      If you think your marriage will hold up by keeping score (remember, your score will be inherently positive for you, just like your spouse's will be against you), wait until you have kids.

      While it is a nice fantasy to think that your spouse owes you if he/she is sick for a day or two and can't really contribute much to the family, well...it just doesn't work that way.

      When you start working, some people might be technical slackers, lightweights, dweebs, etc. An effective team leverages its strengths and covers its weaknesses. Don't have a procrastinator in charge of setting delivery dates. Don't have a dweeb in charge of interacting with customers. Don't have a technical know-knothing in charge of the programmers. Don't have an embezzler or a style-before-substance person in charge of the budget...

      Like it or not, the world, school place, and work place are all unfair. Learn to deal with it effectively. Soon.

    9. Re:Working as a team by unitron · · Score: 2
      (unless the project was a huge failure, in which case you should apply for a management position).

      All the management positions have already been filled with the aforementioned slackers.

      --

      I see even classic Slashdot is now pretty much unusable on dial up anymore.

  17. Well... by khyron664 · · Score: 5, Insightful

    Having relatively recently graduated from college, I don't really see a way that this can be done. Most of my group experiences involved maybe half of the group caring about their grade, and the other half being ok with a C. You then end up with an extremely unbalanced work load as the ones who care the most do the most and produce the better product. Then they usually have to go around and fix up the people's work who really didn't care as much. All in all, it rarely leads to a produtive group and doesn't teach you much about the work force.

    That being said, I have been involved in good groups, and those have been fun. When the work is divided evenly and everyone wants to do well, you end up with a higher quality product for less work per person. They have lately attempted a rating system of teammates, but I really haven't seen much come out of that. That could work, but unless you see everyone's grades (and since I was a student I didn't) you can't know for sure.

    Bottom line is you can't ever differientiate any one person's work in a group effort. In the terms of code, if a module is crap and buggy, I'd rather rewrite it correctly than fix crappy code. That "hides", so to speak, the original authors work. Group work really isn't the way to evaluate individual people.

    Personally, I think the beginning years should be individual work as you learn the basics, and the later years group work. You'll have to find a way to account for each person's abliity though, which isn't easy.

    Basically, it isn't an easy thing to do. :)

    Khyron

    1. Re:Well... by beej · · Score: 1

      A prof at my school would handle uneven loads by requiring that we submit a detailed report of who did what. He would partially weigh the individual grades based on who did how much.

      If he was mistaken, the group got together and talked to him and got it straightened out. His idea was that if you were really a slacker holding the group back, there was no way you could convince the group to argue to the prof that you deserved a higher grade.

    2. Re:Well... by khyron664 · · Score: 1

      But if you have someone in your group who isn't as talented (but tries hard) as others, how do you handle that? You have to let them do something or it's not fair to that student. On the other hand, letting him do something may not be fair to the group because he A) May not be able to do it or B) Might not do it well. If he does do something and the other group members re-implement it better, that's not his fault either but it covers up his work. There are all sorts of situations like this that can't be solved fairly to all people. Not to mention most people don't have the guts to tell someone else they stink at X. Afterall, everyone in the group is a student and to say person X is better than person Y is rather arrogant. Or seems that way anyway.

      Khyron

    3. Re:Well... by Quizme2000 · · Score: 3, Interesting

      In school I always was put with the lack luster group of students. I later discovered my (good)teachers in HS and college would do this to their smart students. To truly perform, you need to be put in a losing situation and see what you can really achive. As far as real life goes, its always a losing sitution. It can be a lack of resources, mangement (too little or too much), or an impossible deadline. With hindsight, I think it is a great way to learn, if you mess up or get delayed etc. in school, you will not get fired. If you work for a company that knows its ass from its elbow about programming you'll never be left unsupervised. For real projects, you'll have 2+ team members, a team leader and a project manger. School is a place to learn from your mistakes without a pently for making them. Thats why A+ students will always have a manager, and C+ students will always be your boss.

      --
      "Get them before they get....
    4. Re:Well... by Anonymous Coward · · Score: 1, Insightful
      Most of my group experiences involved maybe half of the group caring about their grade, and the other half being ok with a C.

      What makes you think the real world differs significantly from this situation? Hint: it doesn't, but you gotta substitute "an acceptable performance evaluation" for "a C" and "getting promoted" for "their grade"

    5. Re:Well... by Logic+Probe · · Score: 2, Insightful
      Personally, I think the beginning years should be individual work as you learn the basics, and the later years group work. You'll have to find a way to account for each person's abliity though, which isn't easy.

      This sounds to me to be about the best solution. Teach the basics and grade on that, and then teach teamwork and grade on that. You can't really do a team project if half the members of the team don't understand how to code in the first place.

      Then there is the problem of putting the teams together because you have coders of varying skills. One way to do it is to make the teams even in ability, i.e., group the best coders together and then the medium coders, and then the worst coders, but then the less-enabled coders don't get a chance to learn from the better ones.

      On the other hand, you can make teams of mixed skill but then there are egos to deal with. The best coders tend to be very smart introverted people that don't always have the patience to work with someone who is not up to their level. They tend to dominate the design and coding just because they are faster and better. It's easier (and more ego-boosting) for them to do it themselves instead of explaining it. The other coders may not learn that much and just get taken along for the ride. This isn't good since neither learns teamwork.

      --

      No problems, only solutions

    6. Re:Well... by Smallest · · Score: 1
      You then end up with an extremely unbalanced work load as the ones who care the most do the most and produce the better product. Then they usually have to go around and fix up the people's work who really didn't care as much. All in all, it rarely leads to a produtive group and doesn't teach you much about the work force.

      unfortunately, i think this teaches you a hell of a lot about the works force. those people who were happy with C's don't just disappear when you graduate - they take their degrees and go on to work, just like you.

      -c

      --
      I have discovered a truly remarkable proof which this margin is too small to contain.
    7. Re:Well... by jiheison · · Score: 1

      Personally, I think the beginning years should be individual work as you learn the basics, and the later years group work. You'll have to find a way to account for each person's abliity though, which isn't easy.

      Definitely the way to go. Does it not occur to people that group projects are also where some people learn how to slack off and leech off of their peers? As such, students should have to prove their worth as individuals before they are put into situations where they can just coast.

    8. Re:Well... by Bangback · · Score: 1

      I think the way we did it was the best way I saw it handled. Make your own teams. Live or die by the consequences. If you don't like it, split up the team (teams worked roughly in parallel). Weaker teams can be compensated by allowing them extra people or more help by teaching assistants. Most people ended up pretty happy -- super egos grabbed a quiescent rider, all nighters teamed up, etc. My favorite team had a very disciplined partner who would prep and begin everything after we finished the design. I would come along for a massive concentrated effort on backshifts. She would pick up the pieces after I crashed 36 hours later, finish debugging and final features, and prep for turnin. And she still slept 10 hours/night.

      Forced teams are just plain unfair if code quality is the end product measured. MIT does it in an original way -- some forced teams get the option to go it alone for grades or accept the lowest member's grade with a "bonus". Works very well for teams confident enough to pick the second option.

    9. Re:Well... by thenerd · · Score: 1

      Maybe there's a way it can be done:

      In the world of work, you have a boss. This boss goes over with you how you think you performed, how others thought you performed, and then gives you an evaluation. They know how you work because they have seen your individual results, and usually work in the same room as them.

      So, to solve this problem, the lecturers need to go around the labs, looking at who is there, and who isn't, what people are saying, and generally getting involved. Then they will have a far better idea of the individuals that deserve to score highly, and those that don't deserve to score as highly.

      Doesn't that work?

      thenerd.

      --
      The camels are coming. I'm in love.
    10. Re:Well... by bteeter · · Score: 2, Informative

      Having relatively recently graduated from college, I don't really see a way that this can be done. Most of my group experiences involved maybe half of the group caring about their grade, and the other half being ok with a C. You then end up with an extremely unbalanced work load as the ones who care the most do the most and produce the better product. Then they usually have to go around and fix up the people's work who really didn't care as much. All in all, it rarely leads to a produtive group and doesn't teach you much about the work force.

      Oh boy can I tell you just graduated from college. What you just described is _exactly_ how it works in the real world.

      Very, Very, Very rarely will you be fortunate enough to have an assignment to complete on your own. The vast majority of the time you will be working with a team. A team consisting of:

      • 50% Morons
      • 30% Unmotivated sloths who surf the web all day
      • 10% Motivated, yet incompetent programmers who produce the most buggy, god awful code ever.
      • 10% Motivated, Competent programmers

      No this is not an exageration. This is how the real world works. The 10% of us who can pull our own weight often times pull the weight of the other 90%.

      I've never had the pleasure of being on a team where a majority of the team members were usefull or productive. Perhaps I'm just really unlucky. If that is the case, I hope you end up working with a better calibre of folks than I have!

      Take care,

      Brian
      100% Linux Web Hosting - 0% Windows

    11. Re:Well... by Rupert · · Score: 4, Insightful

      You then end up with an extremely unbalanced work load as the ones who care the most do the most and produce the better product. Then they usually have to go around and fix up the people's work who really didn't care as much. All in all, it rarely leads to a produtive group

      That sounds exactly like where I work. I don't know where you are employed that you think this

      doesn't teach you much about the work force

      but I'd be interested in hearing if they're hiring.

      --

      --
      E_NOSIG
    12. Re:Well... by dillon_rinker · · Score: 3, Informative

      Having relatively recently graduated from college, I don't really see a way that this can be done. Most of my group experiences involved maybe half of the group caring about their grade, and the other half being ok with a C. You then end up with an extremely unbalanced work load as the ones who care the most do the most and produce the better product. Then they usually have to go around and fix up the people's work who really didn't care as much. All in all, it rarely leads to a produtive group and doesn't teach you much about the work force.

      You had me up to the bit I've bolded...since you are recently graduated, you clearly haven't yet realized that what you describe is EXACTLY how most teams work. It sounds to me like you have had some EXCELLENT real world experience and have learned a LOT about how the work force works. You labor under the misconception that graduation magically changes all those mediocre people into excellent. If you are extremely lucky, you will land in a team where everyone works their tail off and is dedicated to success rather than adequacy. Should this occur, hold onto the job for dear life.

      Meanwhile, reflect on your experiences with teams in college. Learn how to motivate your peers. Let me know if you ever figure out how to turn a lump into a go-getter...

    13. Re:Well... by Mr.+McGibby · · Score: 1

      who isn't as talented (but tries hard) as others

      They get a worse grade. The world isn't about fairness, it's about who does the best job. If you aren't as talented, then you have to work harder to get the same result.

      Take Larry Bird for example. Everyone in the NBA agrees that he didn't have much talent. So he had to work. And he worked very hard. He probably worked a lot harder than most players at his level. We all have to work at different levels to get the same results.

      --
      Mad Software: Rantings on Developing So
    14. Re:Well... by Anonymous Coward · · Score: 0
      I've had similiar experiences. When I was pursuing my degrees, I had the misfortune to be part of a REALLY GOOD team.

      Yes, that's "misfortune". Because after that, my standards were much higher, and I ended up in teams where I was the only one with a modicum of [coding] sense, style, ability....

      More than once I ended up, at the last minute, throwing away all the non-working code contributed by my "teammates", and writing the rest of the assignment from scratch. I'd get an 'A' on the work, and so would my teammates, but I'd be the one so stressed (and burned) out from the all-nighters and caffiene overload, I'd get sick and miss a week of class.

      The best 'cooperative' assignment I ever had was sequential interaction. Everyone wrote a program that did $FOO. Then the professor would grade it (and we'd work on some trivial assignment), and choose the best four. Then we'd get to choose one of the four "top" programs, and add significant functionality to it, but w/o rewriting it significantly. (The only annoying thing was that you couldn't extend your own program, if it was one of 'em that was chosen.)

    15. Re:Well... by Anonymous Coward · · Score: 0

      I recently graduated with an EE degree where much of my course work was done in a group setting. The method used at my school to deter inequality in workload was to allow the students to choose their own groups. This resulted in most of the "C" (aka slacker) students working together and most of the motivated students working with each other. Sometimes a motivated student would team up with a slacker and do all the work. This arrangement did not show up in their individual grades, but they each got what they deserved. The worker put in twice the time anyone else in the class did, and usually had twice the heartache. The slacker got off easy for that project, but he really is only hurting him/herself in the end.

      So Basically I think for technical majors group projects are the way to go.

    16. Re:Well... by cjf242 · · Score: 1

      Being a CS degree holder, I understand the frustration. It seems futile to "learn" how to work on your own while knowing that your work outside of school will be done with a team. Not to mention that some of the projects can seem almost impossible to do without some help from others!

      CS is a formal discipline. What the profs are teaching by making everyone code on their own is *how to code on your own*. If one plans to become a software engineer or hacker or computer scientist for a living, one needs to know how to stare at the screen for hours (or days!) having no idea how to fix the problem. One needs to know how to stop and take a break and pace around the room muttering about how stupid the compiler is or how much double pointers suck. And one also needs to know how to try to find the answer without anyone else's help.

      Yes, sometimes, you just can't figure it out on your own and you need a resource. That's what the prof, your book, and the web are all for. If you need to get help from a friend in class, nobody said you can't do that. Just because you wrote your code yourself doesn't mean that you didn't get a verbal hint on how to solve the problem (stress the *verbal* part).

      Unfortunately, arguing that you don't need to learn how to code on your own is akin to arguing that you don't need to learn how to add because you have a calculator. Remember using that one in grade school?

      And I hate to break it to you, but although you will be working as a team, 90% of your time you'll most likely be working on your own. Your manager/supervisor/team-lead will give you a piece of code or some other thing to do, and you'll go do it. When you can't figure it out yourself, you'll go ask for help. But then sometimes ... when you really need help ... the person or persons you need to ask won't be there. They'll be at a meeting or on vacation or at lunch or out sick and you'll have to figure it out on your own anyway. And then you'll get really good at your job and then other people will ask you for help. And then you'll be the only one who knows what to do so there you'll be again: by yourself.

      Don't get me wrong, it's a really good gig. And you certainly do have to work with other people. But mostly, you really truly need to know what you're doing on your own.

      Good luck. :)

    17. Re:Well... by FireWhenRady · · Score: 1

      When I taught a Operations Research design and programming course several years ago, I had a somewhat similar approach.
      As the first part of the project, the teams had to create a work breakdown for each member and assign various team members their roles in the project. This involved a preliminary scope analysis of the project as well as an assessment of team member capabilities.
      This was worth 25% of project and was submitted jointly and signed by all members, somewhat like an RFP is done in business.
      Each team member was then marked on the quality of their contribution to the result ( the documenter was given marks for documentation, coder for code quality etc.) for 50%. Then 25% was given for overall project results.
      This emphasized the team approach while allowing marking individual expertise.

    18. Re:Well... by sonarniche · · Score: 1

      I understand the need to code on your own, but the degree to which you cannot cooperate with someone on assignments, at least at my school, seems nothing short of fascism.

      What I don't understand is, why the focus on only *verbal* help. Sometimes you need to see something to get it, especially with some of the hardcore assignments we get handed. And since so much communication in college goes through email and IM, why be so artificial about communicating?

      Even worse is the draconian measures employed by the department/profs that to me feel really demoralizing. There is nothing worse than feeling like you can't share something with your friend/classmate and that you are being constantly scrutinized. You have to intentionally stifle yourself. And you are constantly reminded and pressured about what proper behavior is between classmates. It's just ridiculous.

      No math prof ever forbid students from working together on homework. All of college, except CS, advocates a full and open discussion of what you are studying. That's the point of college. That facilitates learning.

      Being handcuffed and pressured by the profs/ta's/department is like being in some communist eastern european country, afraid of being watched at your every move, afraid to talk to someone for fear of giving to much away: it stifles creativity and makes people less productive. Obviously this comparision is a bit hyperbolic, but to a great extent that's how I feel.

      It seems that CS departments fear their students so much that they can't allow them normal, basic freedoms. If the kids in CS classes can't be trusted, then they shouldn't be in college. There's no reason for CS classes to treat us like we are always trying to go behind their back and cheat.

      If they show some respect, they will get it back. Right now it's my experience that they don't show any respect, and perhaps that is why they feel the need to be so strict in their policies. I hope that someday this changes at my school, but it's been enough to drive me away from CS, which is very sad to me. I just couldn't put up with the constant second guessing and the sadistic drive to prevent students from learning in every way they can.

    19. Re:Well... by stil · · Score: 1

      :Having relatively recently graduated from
      :college

      First, note lack of experience in real world.

      :Most of my group experiences involved maybe
      :half of the group caring about their grade,
      :and the other half being ok with a C. You
      :then end up with an extremely unbalanced
      :work load as the ones who care the most do
      :the most and produce the better product.
      :Then they usually have to go around and fix
      :up the people's work who really didn't care
      :as much.

      Second, note what has been learned.

      :All in all, it rarely leads to a
      :produtive group and doesn't teach you much
      :about the work force.

      Third, note conclusion.

      I would argue that your experiences in a group actually have taught you a *TREMENDOUS* amount about what the work force is like. You just haven't had to experience it yet.

      :)

      Wait until those former co-students are co-workers, and your group doesn't get its bonuses because you weren't able to fix all of the code the moron sitting beside you managed to type up between his AIM chat sessions.

      Oh, the times that await you...

      stil

    20. Re:Well... by jpmrst · · Score: 1

      Most of my group experiences involved maybe half of the group caring about their grade, and the other half being ok with a C. You then end up with an extremely unbalanced work load [...]

      One strategy I used in a 13-week OS/compilers class was to make one project individual, and the second a group project. Although I'd take preferences for groups, to try to avoid this problem I didn't allow groups to have people with too big of a difference on their first projects. This took care of more of these difference-of-work-expectation problems than some other group formation approaches I'd tried before

      --

      Time for a snack.

    21. Re:Well... by gorilla · · Score: 2
      You then end up with an extremely unbalanced work load as the ones who care the most do the most and produce the better product.

      Making it exactly like working!

    22. Re:Well... by audunf · · Score: 1

      Actually, working in a group does teach you all about working in the real world.

      Some people do most of the work. The others try to understand what the ones working are doing.

      --
      Now if I could only figure out which category I'm in... :)

    23. Re:Well... by Anonymous Coward · · Score: 0

      You're right, sometimes you do need to see things to get it/them. And it does seem like the department has made the student body a little paranoid at your school by all your accounts of "being handcuffed and pressured...afraid of being watched", etc.

      Verbal help is certainly not the only or best kind of help in all these situations. If something is better explained by an example on a whiteboard (or IM, if that's how it must be), then it should be explained that way. But it is very difficult to give "examples" without just giving away your code. So ideally the explanation would be verbal, then if it is still not understood then get to the whiteboard at once!

    24. Re:Well... by khyron664 · · Score: 1

      Actually, I've been in the work force for a year or so and I know exactly what you mean. However, I'm more fortunate in that I work with people who all work hrad, even if some aren't as technically gifted as others. However, the team atmospheres that I delt with in college are COMPLETELY different from the ones I have experienced in the real world. For one, there's far more beauracracy in real world decisions and very rarely do you start from scratch. Usually you're bandaiding some crappy piece of software that management won't let you re-write. That is not the situation you run into in college groups. Therefore, college groups teach you very little about the "real world" group.

      Khyron

  18. Teamwork is a really big deal by 0xA · · Score: 3, Informative

    I don't think I've ever been involved in a coding project where I haven't been part of a team. I think it would be really helpful for CS programs to do more team based assignments but it probably goes a little deeper than that.

    The more experience you can gain working as part of a team the better. Try spending time in fun projects sponored by you're local LUG, or the chess club or whatever. The other thing that will help a lot with this is sports, I played all kinds of team sports (hockey, football, rugby) when I was a kid and I think the experience really helped me with my proffessional development. The time I spent coaching a bantam (14 and 15 year olds) football team in high school was especially helpful when I became a team leader a few years ago.

    In short, it wouldn't hurt to push for more team based assignments but just about any experience you can get working or playing with others can be helpful.

  19. Ideas and individual projects by MrBubbles · · Score: 1

    At the college I attended, when we had to do individual programming projects, it was pretty much ok to discuss things with classmates as long as you gave proper credit within the code for algorithms or other ideas that weren't yours. Perhaps your school/professors would consider that as an option.

    1. Re:Ideas and individual projects by cdraus · · Score: 1

      Nearly all algorithms are not the creation of the programmer; just the implementation of the algorithm is the programmers work. They're learnt from books etc. Would be a pain in the !*# to credit them all in the source code (IMO).

      Most programming uses standard algorithms in general everyday programming, so I can't see why it's not ok to discuss and include algorithms in your project WITHOUT giving credit - unless of course you used that persons IMPLEMENTATION of the said algorithm.

      Note that I am agreeing with you here (mostly) :-)

  20. Cheating as an idea is not applicable by well_jung · · Score: 3, Insightful
    Really, how can cooperation be discouraged the way it is in CS? What it comes down to is problem solving. Small groups are ALWAYS better at problem solving than an individual.

    That's why us Math majors always did our homework together. Were we cheating? By definition, probably. But did we help each other to understand the prblems and solutions better than we would have otherwise? Definately.

    I understand and support the idea that stealing code should be punished, and straight copying investigated. But if the goal is to develop understanding, give the suspects a chance to solve a similar problem, and see if they really understand what's going on.

    --
    Carl G. Jung
    --
    "With one breath, with one flow, You will know Synchronicity" -La Policia
    1. Re:Cheating as an idea is not applicable by cdraus · · Score: 1

      Collaboration is great yeah... but I think the point of the article was that in some groups one person does the majority of the work; sort of like a personal tutor to the others in the group, while developing the SAME project. This said person then does most of the work on the project and the project is acessed as a whole and that the individuals effort is not recognised or credited.

      Sure, collaboration is great and needed but I agree with the ask /. question... how do individuals get credit for the work they've done.

      The idea of stealing implementations (code) here is not really an issue... it's an issue of who understands what, and who contributed that to the project. Possibly person-x contributed 95% of the understanding to the project, and yet the project is acessed as a whole - the person(s) contributing 5% getting the same mark/grade/credit as the person who did most of the work (the one who understands the problem/task).

    2. Re:Cheating as an idea is not applicable by bstrahm · · Score: 1
      Ah, the old assignment of credit/blame...


      I have a lot of fun at work watching people attempt to take credit for each others work, teams with brilliant programmers attracing "Project Managers" like flys to sh*t, teams that can't perform loosing management resources. Why is that, it is much easier as "useless overhead" to attach yourself to a known winner and coast rather than fix a broken team and get it functional...


      The problem is that as technical people we need to remove quite a lot of the need for personal glorification and let our skills shine through the projects that we participate in. When people start noticing that every project that I work on suceeds, people stop thinking it is luck, and maybe something with the teams I belong to, then decide it is somehow with the people on the teams I belong too...


      While this type of respect takes a lot longer in our instant gratification society, it is much easier to keep in place once you have achieved it... Assume your professors are smart, they know from the people asking the hard questions who is doing the work, and who isn't.

  21. One college that emphasizes the group effort. by Pentomino · · Score: 1

    One of the strong points of DeVry is that they give you a lot of group projects. Even writing assignments are sometimes a group project, though these usually similarly involve a group presentation. The senior project is almost always a group effort. Almost makes up for all the COBOL they teach.

    Coding projects are usually done on an individual basis, but design projects are not.

  22. Way back when I was in school... by KaiserSoze · · Score: 2, Insightful

    ...like, 3 months ago, I was in a CS curriculum that came down extremely hard on Academic Misconduct (I know from experience). The thing was, when all the employers came to recruit, I was inevitably sat down and asked questions such as "Tell me about a time you worked on a team project," or my favorite "How well do you work with others?" Overlook the fact that everyone works with others all the time (in elementary school we are taught to get along with others), and you see that they are asking how well you work on [technical] projects in a team. So, how does a student achieve that all important piece of paper that jobs are looking for while being threatened with non-paper-receiving-ness if they even think about helping each other out, or working together?

    --

    "What we elect to call imagination is mere combination of things not heretofore combined." - Frank Norris

    1. Re:Way back when I was in school... by Mister+Attack · · Score: 1
      Look, if you document your sources properly (i.e. "I got this idea from such-and-such, and on this project I worked with these classmates of mine to finish the project"), academic mosconduct shouldn't worry you at all. If you take an algorithm from some piece of OSS, without saying so, then you have a problem.



      But as long as you're honest about where your ideas come from, you will not run into academic misconduct charges.

    2. Re:Way back when I was in school... by Xofer+D · · Score: 3, Insightful
      This is a constant debate in the School of CS at my university - should schools be doing more practical training? My univeristy provides students with theoretical knowledge, and leaves practical education to the individual. Assignments are "implement this, using these language restrictions", just as in many other programs; learning the language(s) specified is up to the student. Group design work is encouraged, and group coding is discouraged. I agree with this policy - nothing is more frustrating than finally seeing the fruits of your labours, and not getting the credit for it (in a curved classroom, cheaters are stealing marks).

      For comparison to other policies, the rule of thumb is that when one leaves a meeting with other students, one takes no notes.

      So, how does a student develop practical, real-world experience working with others on large projects and demonstrating language fluency? Easy. That student works on Free Software projects.

      1. Large project. Check. Bigger than any school project.
      2. Real-world. Check. Software may be in use all over the real world, on thousands of machines.
      3. Working with others. Check, potentially thousands.
      4. Language fluency. Check.
      It's all there, plus you get to make software that you can use yourself, rather than something that has no other purpose than to demonstrate your knowledge.
      --
      The Signal/Noise ratio can be improved in two ways. Remaining silent is the OTHER way.
  23. My take.. by mgoyer · · Score: 2
    I find that for CS assignments where I'm supposed to work in a group I just end up wanting to do the entire assignment myself and not depend on anyone else but for individual assignments I often find myself talking to friends to find ways to reduce the overall assignment time. Kind of weird, but that's how I am.

    Though, overall I find that my school is very afraid of 'excessive collaboration' but the only reason that there may be excessive collaboration is because the professors and instructors are out of touch with the students and don't actually understand how difficult the assigments may be.

    Just this morning our prof tried to clarify our latest assignment and failed miserably. He then concluded that he thought that it was an easy assignment when I bet you that only 1% of the class would agree with him. So of course there will be excessive collaboration because obviously no one wants to fail.

    Matt

  24. Using CVS for class projects by jswitte · · Score: 1

    There was a colloquium here at Indiana University (Bloomington) given by Gregory Wilson (a contributing author to Doctor Dobb's Journel) entitled Open Source, Open Science which touched upon this question. He suggested using CVS to submit assignments (I think this was meant for upper-level projects, not for little six-line Scheme programs). He said, "if you have seven people submit code at about the same time five minutes after the first person does, you have a pretty good idea of whose cheating."

  25. In ebgineering... by Drakula · · Score: 2, Informative

    ...it is already done quite a bit. The system I went through did a poor job of determining who did quality work and/or pulled their own weight. But unfortunately, that is what it is like at a job. You work with a group people, some do their job and others don't. I guess what I'm saying is that school prepared me for working with people, but unintentionally.

    I also believe that you can never rely on a university to teach you anything about working a real job. Just talk to employers, they are always complaining about how students are underskilled. That is why they don't expect anything from you for the first year or so.

    The only naswer I have seen that worked well was the co-op program. If you are at a school that has strong industrial ties then yo uare all set. Otherwise, you have to learn as you go when you get out.

    --
    "It's comin' back around again..." -RATM
  26. Grading group projects by DudeTheMath · · Score: 4, Interesting
    As a math instructor at the Univ of Michigan, I assigned all homework in a couple of my classes as group homework; but each individual reported separately on both their own contribution and that of others in the group (just a sentence or two).

    In groups of four or so, this self-reporting was almost always an easy way to keep track of who was working and who wasn't. Quizzes and tests also revealed some slackers.

    I only had one truly fractured group in those terms, where none of the reports agreed. I broke them up and changed some groups.

    I would do it again. Not only did I grade fewer homework papers :), but the students learned to work together, assign responsibilities, and evaluate performance within their group, which are all important workplace skills.

    --
    You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!
    1. Re:Grading group projects by Anonymous Coward · · Score: 0

      DudeTheMath is a troll. He has the same MO as Bob Abooey, although he's not as good at it.

    2. Re:Grading group projects by brad3378 · · Score: 1

      &gtYou save only 59 seconds over 8 miles by going 75 instead of 65.

      Sounds like a good argument to drive even faster.
      ;-)

      --

  27. Think about it like math... by Gogl · · Score: 2

    I'm a freshman comp sci major, taking both a comp sci and calculus class. The reason I mention the calc class is because it's upper level and basically entirely proofs, which are surprisingly like computer programs. Both of these classes take essentially the same attitude towards cheating: if the person grading your code/proof sees that it looks suspiciously like somebody elses then you might get talked to.

    However, the two are different in this aspect. Comp sci basically says "don't work together". Math, however, encourages teamwork. Here's what they suggest. Get together with other people. Get a bunch of scratch paper, or even better, a blackboard. Solve a bunch of the problems together, but then break up, go home, and do your final draft alone. This means it will be your work. It will look like you, and be slightly different from everybody else, especially if you did most of the group work on a blackboard and therefore don't have it to copy straight.

    So when in doubt, don't copy word-for-word other peoples code or proofs or homework in general. However, working together in the name of generating ideas that nobody individually can get is a good thing, at least in my book.

    1. Re:Think about it like math... by Anonymous Coward · · Score: 0

      This is basically the advised policy at the school I just graduated from. For individual assignments students were encourged to discuss ideas for solutions, but not write anything down. Then they were supposed write out the solution "in isolation". The idea is that discussing the problem in a group helps you find the solution, but writing it down proves that you understand the solution. That is why the writing should be done seperately, if two people hand in the same thing there is no proof that both understand the solution.

      GS

      GS

  28. The problem by Shotgun · · Score: 2

    With team projects that I have experienced, the professors always expect to step back and give one final grade across the group. I usually ended up just doing the damn project, because that was a lot easier than trying to teach the lamers I was stuck with how to code. The lamers didn't mind, 'cause it was an easy A for them (I graduated with a 3.89 GPA). The situation always pissed me off. I paid to be taught, not to babysit lamers. But I wasn't about to let my GPA suffer out of spite.

    The way it should have gone was that the professor should break the project down into parts, and each student would be primarily responsible for his/her own part, with some portion of the grade coming from the overall completeness/quality of the end project. Lamers would then be responsible for themselves, and some actual communication would have to occur, because the lamers would have to ask more than, "Is it working yet?" Of course, this would require the professor to accept the role of a manager, and would require at least a cursory participation in each group. Which is why this doesn't happen.

    --
    Aah, change is good. -- Rafiki
    Yeah, but it ain't easy. -- Simba
    1. Re:The problem by Molech · · Score: 1

      Well, I have a professor(who is a jerk in many other ways) who has a good way of grading group assignments(he teaches the Electrical Engineering Senior Design course for Digital, i.e. design a microprocessor on an FPGA). He has a grade for the group as whole, and then an individual grade. As part of the grading, you document what each person does. Then he talks to each member of the group about what they did, and whether they have any clue or not.

      I would argue that thats pretty effective, its generally easy to tell whether they did what they said they did by how they talk about it, and it lets those who did all the work get the credit they deserve and those who didn't get what they deserve.

      But more important than team assignments, I would appreciate a class on WORKING as a team, not some pansy basic class, but how real effective teams work, and do a project(Our software engineering class is BS, its the "throw everyone into a team, let them go, let God sort 'em out" methodology). Of course the problem is not many people know HOW to get programmers to work as a team(especially ones of varying skill levels).

  29. Software Engineering course taught teamwork by DaveWhite99 · · Score: 2, Interesting

    I was not a CS major, so I can't speak from a pure CS point of view. However, as a Computer Engineering major, I was required and encouraged to take numerous CS courses. One of those courses was a Junior-year software engineering course that required teamwork. While accountability and credit within the group was often a problem, sharing work (including code) was not a problem. Even though that was one of the least technical courses I took as a CMPE major, it did help set the stage for the "real world".

    --
    Biodiesel : domestic, renewable, clean, and in the fuel tank of my bone stock 2002 New Beetle TDI
  30. University of Florida CS by mattbelcher · · Score: 1

    My senior year, the CISE dept. at UF switched to more team-oriented assignments at the request of the Industry folks who said that our graduates didn't know how to work in teams. Thus, every class I had my senior year had some sort of group project requirement. One class even allowed us to use unlicensed Internet code and other resources which are usually forbidden. I thought it worked well, and now that I have my first job in the "real world," I find that things work a lot more like those team projects. I found more satisfaction as the team leader of a project that actually did something, than being the sole coder on a little toy program that everyone else wrote too. The team approach also allowed our professors to make individual assignments for each team, so cheating was drastically reduced. Of course, these were all advanced classes, and everyone in them already had solid programming skills. I'm not sure if team-based projects would be good for the intro course. Far too easy for someone who doesn't know what they're doing to just slide through and and up dead-weight on an team at a later stage.

    --

    Shockwave Flash movies are the greatest thing to happen to non-sequitur humor since Japan.

  31. Be careful what you ask for by hawaiianshirt · · Score: 1

    Working as a team in college was always the best and the worst of times. Sure, you meet new people and get exposed to new ways of doing things, and that's great. But you are limited by the underachievers and slackers in your class (if your school is like mine was, that is a lot of people). Kind of think of it like the limiting reactant in a chemical equation; that reactant determines the time to complete the reaction.

    That being said, it might be the most important skill you learn. Dealing with confilicting opinions and slackers are an everyday struggle of mine (web developer). It is good to pick up these skills early.

    I actually had a very forward-thinking poly-sci professor in college that made group projects the focus of all his classes; his reasoning was that the experience of forced teamwork was more important than any specific knowledge

    --
    hawaiianshirt
  32. Grading in team settings. by magnetHEAD · · Score: 1

    I was an art major in college and one of the ways that group projects would be graded was based on participation in critiques. In this way is was more a reflection on direct participation in events that would move the project forward / as opposed to who actually did the work. We then did write-ups on team members and that's where the 'honesty' issue came into play.

    It gets very tough to not be critical of your team members if you've put a ton of time into a project. Dishonest people usually show up as being dishonest, so you don't have to worry about them. Write-ups were always a smaller percentage of the grade than participation in critique.

    Anyhow, wouldn't CVS also give teachers a great way to measure team participation in work related issues? Sure this wouldn't give a meaningful representation of design time, but in actual coding it would work pretty well.

    anyhow, just an outsiders perspective.

    -mh

    --
    Microsoft's version of sprituality:
    "Double-click the lifestone to attune your spirit to the lifestone"
  33. Re:Oh yeah by Zarnce · · Score: 1, Insightful

    When I was in school we had a few group projects. What worked the best was they would group however many the decided was needed. Then we did the work. To be able to grade how each person did with in the group we each graded everyone else in the group on how we felt they contributed.

  34. team projects +/- by shibut · · Score: 1

    In my alma mater all coding assignments were done in teams (mostly because I'm old and way back then in the early 80's there weren't enough PDP11s to go around). Teams had 2-5 people depending on platform. I think teamwork makes coding more fun and is good at preparing you for work IF you are conscientious (sp?) about it. I did have a few teams where there were slackers that didn't do anything. I think those people missed out because of the lack of resources and had they had to work on their own they would have learned more (even by copying the printout into your program, which one team did as I recall :-). I think this is a valid reason for a prof to make at least some projects individual projects.

    BTW, if I look at where the slackers are now only some of them dropped out of the CS workforce, most are chugging along just fine.

  35. It was simple when I studied CS by Sagarian · · Score: 1

    I had at least three classes where we worked in teams of 3 or 4 people (Software engineering, Graphics, and Compilers). The TA / professor would determine the grade for the team, and also solicit the team members' input on all the other team members. If there was a disparity, you all sat down together and worked it out. Sadly, that happened in 2 of the 3 cases for me, where our group had a true stand-out zero contributor.

    It would have been useful if they'd provided some rudimentary project planning and management instruction also.

  36. @Duke by dukethug · · Score: 1

    At Duke, almost all of the really important CS courses- software design and implementation, operating systems- are almost entirely team based. The most important thing in doing well in those classes is putting together the right team of people.

    This has upsides and downsides, of course. Upside: being forced to trust people to do good work, because your grade depends on it. Downside: being forced to trust people to do good work, because your grade depends on it. It's a double-edged sword to be sure, but as you pointed out, that's what it's like in the real world, except you replace your grade with your job.

    Fortunately, as it is in the real world, the TAs and professors make an effort to figure out who really did what on the project, and that affects the grades accordingly.

    Personally, I think teamwork is something that you learn in any number of different ways, through sports or activities or whatever. The skills involved transcend disciplines. I think you would gain just as much benefit from learning how to code well in your classes, and learning how to be part of a team with the other parts of your life.

  37. but make it a useful focus on teamwork, please by ethereal · · Score: 2

    I had a number of team projects in school, but unfortunately most of them did not teach the team skills that I now use at work. Most projects were small (2-3 person) teams, fairly limited in scope, with a clearly-defined direction from the course instructors. These projects were easy to resurrect if one person didn't pull their weight, and usually became mostly the work of the person with the strongest personality on the team.

    In contrast, most "real world" teams that I work on are large (up to 10 people), require the direction and many of the major decisions to be decided by the members of the team rather than imposed from outside, and require a lot of finesse to reconcile the opposing viewpoints of the many opinionated people on the team. A lot more of the work goes into deciding how to decide what things will get done, because once you're out of school, the question of how to do things is mostly a known factor (based on corporate-provided development process and the abilities of the developers). The workload of this larger team is enough that one person couldn't carry it alone (well, without putting in 100-hour weeks, which was fun when you were 20 but maybe not now) and even if one person had the ability to do so, the rest of the team wouldn't take kindly to being left out of the loop.

    I did have one class that focused on large-team development and real-world problems like this, and I probably learned the most from it as I did from any course (thanks Prof. Mowle!). But looking back, we probably should have had several courses like that, and in fact most of the last year of school should have been focused on team-driven development projects like that. Colleges are kidding themselves if they think they can grade students on their separate work, when in real life they'll spend the majority of their time building on the work of others. Grading on team projects can be done reliably - for example, we had weekly status reports for each developer to make sure that you were keeping involved, part of your grade was based on your peers' estimation of how useful you were to the team, and the remainder of your grade came from the "management" (instructor's) view of how much you had contributed. Which seems to mirror my real world job pretty reliably, come to think of it.

    --

    Your right to not believe: Americans United for Separation of Church and

  38. Academic Misconduct by Meech · · Score: 0

    Actually the school that I attend is also entering into the same sort of policy, however it varies from Professor to Professor. For example, in one class, it is illegal to see someone else's code, you can talk about it if you need help, but no code viewing. Another professor says that viewing the code is ok, but having print outs of the code is bad.

    Personally I think that no one should be allowed to view another person's code. It is in the academic world, and there are always going to be slackers who have to cheat to get by, which pisses people off who actually bust their ass to get done on time.

  39. no group work by wishus · · Score: 2

    At my school we didn't do any group projects, and they made sure you knew what you were doing by making you hand-assemble self-modifying code on the final.

    So I didn't have any "team" coding experience until I got my job. I don't think I missed out on anything though - if you can debug code on the final, you can debug code a teammember wrote.

    When it comes to designinging a product, things are a little different. You sit around and argue high-level implementation for a few weeks, but when you go to code it, it's still just like coding in college.

    Except that you are making something cool and not just another program that prints out fake bank recipts.

  40. This DEFINITELY needs to change by Uttles · · Score: 2

    First of all I'd like to bring up an old story by Cliff on academic dishonesty that was posted by a friend of mine in a class I took in my last semester at a certain university. In this class, students were all given an assignment where they had to work seperately but could share ideas, just not code. However, when the students actually did this, they were punished (the article goes into greater detail.) The very principle of that punishment is directly contradictory to the real world, where people discuss ideas all of the time, constantly, in order to work effectively.

    On a more positive note, I have to say that in my last 3 semesters of college (computer engineering curriculum) I had some rather enjoyable project classes where I worked on teams of 2 to 4 people and the experience was moderately similar to actual real world working practice. I think teamwork in education is essential and should be 50% of the curriculum. In most of my classes while in school we had labs where we worked with others, yet those projects were rather small and insignificant. I think schools should focus more on semester long or even year long projects for their computer engineers and scientists as there's only so much about those subjects you can learn from a book, the rest is really just hands on.

    --

    ~ now you know
  41. Our group projects by Telek · · Score: 2

    We chose our own groups (which usually helps to cut out the crappy people), and then the *group* was assigned a grade. We multiplied that grade by the number of people and then we each assigned every member in our group a grade. The grades per person were averaged and that was the grade that you got. This was done anonymously, so if someone didn't pull as much weight as you thought that you did, then give them less and that's more for the rest of you. I think that this idea worked out pretty well, too bad it wasn't used more often.

    --

    If God gave us curiosity
  42. Basic coding skills... by vishakh · · Score: 1
    I'm a CS major at UC Irvine. Even as a sophmore who's barely been past the basic courses, I can see that it's very important that people work on their own on coding assignments. For at least the first two years, CS majors go through classes on basic programming and computer architecture in which, if they don't code on their own, they will never learn the very basics.

    I've had many friends who had to leave the major because they couldn't cope with the coding demands. Now imagine if they were allowed to work in a team- a lot of them surely would have still been in the major, perhaps damaging their entire lives.

    We do have a few labs that are meant to be done with partners and it is my opinion that they are quite adequate as teach you team-work and more importantly, how to factor in complete idiots in your team. :-)

    --

    Posting messages for the betterment of humanity..

  43. We Encourage Cheating by Anonymous Coward · · Score: 0

    School does a terrific job of training you to be a student. Many of the rules that it enforces are fine for the classroom, but make little sense in the real world.

    For example, when I hire a young programmer, the first thing I tell him is that he's not in school any more. We encourage him to look on his neighbor's paper. We encourage him to ask his neighbor for the answer. We encourage him to take his time rather than trying to beat the clock. All of our tests are open-book.

    Some people make the transition from being a secretive, obsessive student to being a team player in the workplace - but some don't. I don't have the solution, but you should remember that once you get into the real world, the rules change pretty drastically, and you should be ready for it.

  44. Learning CS vs Learning Teamwork by Washizu · · Score: 1

    I just graduated with CS degree from American University and I have worked on projects in groups and by myself. From experience, I can say that there is a time for both team and solo work, but sadly, many times the wrong methods are chosen.

    When you should work by yourself:
    Whenever you are learning something very new, which should be about 75% - 85% of your classes. If students work in groups, it is far too easy for some students to get by without learning a thing. I have seen groups of three where one student did everything, and the other two merely wrote in extra documentation! This cheats your best students and wastes time/money on your poor students.

    When you should work in a group:
    Whenever you are applying the knowledge you have gained toward a large project that would be too difficult for one student to complete in one semester. This would be typical of your later CS classes where you aren't learning how to program, but rather, higher level concepts such as operating systems, games, etc. Good students will have much less tolerance for slackers when developing a system of 30,000 lines than they will for your standard 'implement data structure X' project.

    --
    OddManIn: A Game of guns and game theory.
  45. group work by hidden+vampyre · · Score: 1

    I think that once the required skills are taught, and this will take place [at first anyway] largely by individually playing with logic and syntax etc., there should definitely be emphasis group efforts. This is the way it is in the workplace, so that it is good training to start in school. It also makes each individual programmer reconsider the code in light of how other people's minds view it, thus expanding the breadth of understanding and improving the programmer's own skills. And it's fun.

    Wakka Smakka!!!

  46. do your part by Anonymous Coward · · Score: 0

    Freshman year in college: I was working on programming assignment in the lab. Almost done, I printed my code, noticed a bug, and threw the printout away. I noticed later that another student sneakily went throught the trash. When I checked later, my printout was gone. Later that night, the sucker had the nerve to stop by my room and ask me to help debug his code, and I saw my fingerprints all over 'his' code, almost an exact copy, variable by variable, statement by statement. He even submitted it as his work the next day. The incident was investigated by the school's Honor Court and he was kicked out a few weeks later.

    I don't mind group projects, but dislike those free riders who sleep through class and join your group to get easy A's. I tutored math in college, and always get pissed when somebody came to me to prep him up for a test the next day, when he hadn't even reviewed the material himself.

  47. different perspectvie by greysky · · Score: 1

    I graduated with a BS in Information Systems (yes, CS-lite) from CU Boulder, and the only classes where team work was not involved were the programming classes I took from the engineering school. Database, OO/SmallTalk, Systems Analysis and Design, VB, etc, were all based on team efforts, usually 4 people per team. One professor had a system where each member evaluated how the others worked, and then the final grade for a project was divided accordingly. Some people occasionally got screwed (me included) but it's no different than how inter-office politics work.

  48. Differences between work and college by bhurt · · Score: 5, Insightful

    By someone who has been in both:

    1) At work, it's OK to say "I don't know the answer to that question- try asking Bob, he may know."

    2) Work is an open book test. Sitting at my desk now, I have four different books open, and dozens more closed and stacked close to hand.

    3) If you find code lying around that someone you don't even know wrote ten years ago, polish it up a bit and use it, this is called code reuse and is strongly encouraged.

    4) At work, code you wrote years ago comes back to haunt you. Programming is like sex- one mistake and you're supporting it forever.

    5) At work, code other people wrote years ago comes back to haunt you. "Ted left the company six years ago, but some of his code has a bug. Go forth and fix it."

    6) At work, information isn't fed to you in easily digestable chunks. If you're lucky, they drop a pile of books on your desk two feet high, and expect you to get what you need to know out of them (I've had this happen to me). If you're not lucky, you need to find the books yourself (I've had this happen to me too). If you're really not lucky, the books don't exist- have fun! (Yep, that too).

    7) College students don't have to deal with tech support calls. On either end.

    There are probably more, but I need to go accomplish something.

    Brian

    1. Re:Differences between work and college by mtrupe · · Score: 2, Funny

      How about this:

      Programming is a lot like sex. I tend to get very confused and make many mistakes in the process.

    2. Re:Differences between work and college by ivan256 · · Score: 3, Funny

      #6 is missing an part... They give you a stack of books with the WRONG information in it!

      That sucks.

    3. Re:Differences between work and college by DeadMeat+(TM) · · Score: 4, Funny
      7) College students don't have to deal with tech support calls. On either end.
      Hmm, apparently you haven't been around my dorm room lately.
    4. Re:Differences between work and college by Rudeboy777 · · Score: 1

      An even scarier variant of #5:

      "...some of his code has a bug. Go Forth and fix it."

      --

      From hell's heart I fstab at /dev/hdc

    5. Re:Differences between work and college by The+Milky+Bar+Kid · · Score: 2, Insightful

      You also just described research degrees... as far as I can tell so far (6 months into a PhD..). You base your work on other people's previous work... you just acknowledge that previous work. The difference is that when there isn't a book on what you're doing, it's a good thing - you've just found your thesis subject.

      And you do have to deal with tech support calls.. from students.

      Kind of funny, when academia is the original model of the continual development of a single body of work, and they spend their time trying to stop students doing similar. This gets really tricky with languages like MIRANDA and PROLOG, where there are very few ways of solving simple problems. Hell, half my assignments in these languages were sets of one line programs - how much originality can you show in one line?

      --
      -- This post is about truth, beauty, freedom, and above all things, Karma
  49. The Dynamics of CS by Anonymous Coward · · Score: 0

    Group projects are certainly beneficial with respect to many of the classes/degree programs out there. Biology labs (at least at my own university) tend to be entertaining and informative events, in which a lab is worked through cooperatively by a group of six or so, then hands in their individual reports. It works, and it works well. Computer science is somewhat of a different matter. While much of the work done in early computer science courses could be done in groups (the programming and designing of algorithms could make for good group assignments), much of the material just simply would not be suited for that sort of environment. For those who have not done any computer science courses, they're -far- closer to your average math course than a programming-specific course, in which you get in, learn a language, and get out. Similarly, group assigment work would probably not be as beneficial in a math class either; the emphasis upon math courses is that the individual learns the processes and methods to solve a problem on their own, and will know how to apply the above if faced with such a situation.

  50. Peer assessment by Malc · · Score: 2

    My very first year of Uni. for BSc. (Hons) Comp. Sci. involved a group software engineering project. One of the big factors towards our marks was peer assessment. We had to individually assess each member of the team and discuss this the professors running the course. I think this was fair, effective, educational, gave the lazy bastards in the team a wake-up call, and ultimately has turned out to be representative of how every company that I've worked for operates.

    1. Re:Peer assessment by Amigan · · Score: 1

      Having taught a two semester course combination of Software Design (1st semester) and Software Implementation (2nd semester), I used a bunch of different ways of motivating students. Everyone had to submit a resume by the second class period and then I used those to create teams of 4-5. Each team then had to design a solution for the same project during the semester. At the end, each member rated the other members and that was used to modify grades. Students who didn't pull their own weight could be 'fired' from groups and have to do the work by themselves.

      In the second semester class, I tried to make sure that a) teams were the same; b) that they got the design from another group. Same rules as the first semester - people could be fired and then they were on their own. Only once in four years of teaching this way did I have to fire anyone from a group.

      --
      "Software is the difference between hardware and reality"
  51. Slackers! by sid_vicious · · Score: 2
    Maybe it was just my personal experience, but *almost* every group project I was on had at least one or more absolute slackers.

    It's very frustrating to have to pull these peoples' weight. To be honest, I would rather just be graded on my own ability to perform - when you have four people, profs tend to expect 4x the quality of work they would get from one person. You get one slacker, and now four people have only produced 3x the work, and everyone pays for it.

    Don't even get me started on having to deal with group dynamics when you end up assigned to a project with a complete jackass -- but then, that did help me prepare for a Dilbertian experience in America's workforce.. *sigh*...

    --
    If it ain't broke, it doesn't have enough features yet.
    1. Re:Slackers! by dozing · · Score: 1

      Unfortunatley learning to work in a group of slackers will prepare you for the real world where you're going to end up doing the same thing.

      --
      Dozings.com -- Its kinda funny... If you're as crazy as me.
  52. teamwork all the time by zal · · Score: 1

    im a CS major at the university of dortmund, germany. Here just about every course encourages teamwork, even in the teoretical classes we are allowed to work in 3 man teams. The software labs in 3 and 8 semester have team sizes of 8-16 ppl. The coding assignments in the practical courses are often designed in such a way that you need at least 3 pople to complete them on time.
    This rocks is all i can say to that. In My experience when working in teams students get stuck and frustrated far less than when having to work on their own. Talking though problems with others often significantly increases understanding the problems at hand.
    By making us work in teams the problems we are tasked to solve can be far more complex and thgus more interesting.
    Of course in the larger labs teamwork can suck, when some people refuse to do their share or simply are not up to speed, but thats life. This will happen IRL too, so it helps you build experience in dealing with this

    --
    -- never underestimate someone who overestimates himself
  53. Group work by bonch · · Score: 0

    My college has always encouraged group work, from programming projects to network designing. Usually, it's left up to the group to weed out the dead weight. If someone is slacking, the others will just kick them out of the group.

  54. the college i attend does.... by Alarys · · Score: 1

    At University of South Florida, teamwork is encouraged and actually our programs are handed in as one program with multiple names. The way that they assess the achievement of the individual is by giving an oral exam for each person after the assignment is turned in to make sure that no one is just riding along without understanding. It is actually 100% legal to copy code from other programs in our class, because in real life, you use and expound on other people's ideas quite frequently. I think this is a very effective setup for this type of course. You might want to mention it to your college. A contact name you can give them at USF is Grandon Gill, he designed the course for our university as well as a couple of others and it seems to work very effectively and creates a nice balance.

  55. It depends... by mmaddox · · Score: 2

    It depends primarily on the focus of the course itself, and the role of the university in teaching teamwork and social skills. For instance, the University of Phoenix considers the team an integral part of its learning experience, so their classes focus on the team project (including programming courses), with a part of the final grade being a grade based on your teammates' perception of you. Thus, the university really attempts to integrate the technical material with a team-based environment. Granted, the individual grades are more difficult to arrive at, but what's really the goal here? To receive a grade that is appropriately scaled within your class, or to receive a GOOD grade and learn something?

    Other colleges, of course, don't follow such paths. Ga Tech and UGa both follow a more traditional course structure, where the technical material is excellent, but making use of that material in a team environment is not stressed. Only certain graduate-level courses really use teams, generally in circumstances where a professor's research project is involved. Here, of course, the technical material is MUCH, MUCH better than the UoP, but it's rarely presented in a real-world environment. Again, you just try to get something out of the course, and receive an appropriate grade.

    Make up your mind that college is NOT about preparing you for reality, and it's CERTAINLY NOT about competing for silly kudos against your classmates. Pick up whatever useful you can find, then run like hell. Or, of course, just run like hell (like I did). Experience in the real world is a much better teacher than college.

    --

    What'dya mean there's no BLINK tag!?

    1. Re:It depends... by Anonymous Coward · · Score: 0

      I suppose many students will end up getting
      jobs slinging perl for the adult entertainment industry. Should universities prepare students
      for the needed skill sets for this job as well?

      No, universities have a higher purpose. If you want some quickie skills and ra-ra team experiences, then get a degree from DeVry. If you want a DEGREE then suck up and earn it.

  56. Declaration form by roc_machine · · Score: 1

    At my University, all comp sci students are required to print out and sign the following form for every assignment we do, except a few classes that do require teams. It's been in effect for the 3rd year now:

    On a note regarding school work in groups, we have 3 classes that allow teamwork in our comp sci dept:

    Software Engineering I (3rd yr)
    Software Engineering II (4th yr)
    Database Implementation II (4th yr)

    My plan was to take all 3, but S.E. I was such a horrible experience for me I declined to take the others. Our team bickered and had disagreements right until the end, and we weren't the only group. It would've been nice to have a course earlier in the curriculum that taught us how to work as a team. It may sound stupid to some of you, but I can tell you that my group sure could've used it.

  57. A Few Occasions by Astin · · Score: 1

    When I was working on my Comp Eng degree, there was ample opportunity in our last year to work in teams. In fact, all my major assignments were done with a team. it fell to the group itself to dictate who was responsible for what, and regular reports indicated this. Add to that the fact that if one person didn't complete their section, the whole project was delayed, and it was rare that anybody slacked.

    Along with this, it was generally accepted that with the heavy workload we all had in 4th year that there would be collaboration. As long as you referenced anybody you borrowed from or shared with, all was well. There were a few "individual" assignments that I worked on with friends and we all had answers that had the disclaimer "this question was worked on with [student name]", and it was always accepted. Generally, it's better to have a student learn how to solve a problem from a friend than be afraid of asking because their answers may be too similar.

    This seemed to be better preparation for the real world than slaving away at 3am trying to debug an assignment that you aren't even sure you interpreted correctly. If I have a problem, I turn to a co-worker and ask if they know how to solve it, or go searching for the answer online. It's no different than the arguement of "Why should I have to memorize this formula? In the real world, I'd have the book on hand if I didn't know it."

    --
    - In hell, treason is the work of angels.
  58. The school is correct by macgames · · Score: 1

    In the real workforce (and I've been in it for over 12 years) things don't work the way you might think. You need to learn the basic skills that will be required of you in order to contribute to the team once you are in the real world, and that is what the school is teaching you now.

    As a junior engineer you will be tasked with small projects (bug fixes, etc) until you prove your abilities, and then be allowed to contribute to the larger picture (design and such). Until that time, you are effectively a non-voting partner in the team relationship.

  59. Not unique to CS... by singularity · · Score: 2

    It should be pointed out that this is not unique to CS. As someone else pointed out, most of the hard sciences are the same way. I think you could go ahead and argue that most any field is the same way.

    I was a CS major for three semesters and while there was some colaberation, there was not a lot. Of course, that may have been unique to the school. Later on, as a math major at a different school, there was a lot more. Homework was worked on in groups, or at least compared. I think this happens quite a bit.

    I think you could easily write an Honor Code that covers this sort of situation. I know that when I helped people with their work, and when they helped me on mine, I made sure that there was not just rote copying, but actual understanding of the underlying concepts.

    So you just have to make sure that Honor Code assures that you are helping students out as peers, and not just letting someone copy. Defining what that means could be up to the Judicial Administrator and the school.

    One real test (no pun intended) is the exam. One of the many reasons that my classmates made sure we understood certain problems was that we might see it later on the exam. It does you no good to get that 1 point on a problem set by copying if it them means that you lose 10 points on an exam because you did not know how to do that type of problem/proof.

    Work in groups, but be ready for individual exams (although written exams were always so strange in a CS class).

    --
    - (c) 2018 Hank Zimmerman
  60. Assessing performance in teams by CrosseyedPainless · · Score: 2

    I'm taking a course at Northern Arizona University, which focuses on team design and implementation skills. For evaluation, we use peer reviews. Team members contribute to an average factor which is multiplied by the team grade. The faculty member supervising that team gets an offset he can add (or subtract) from the raw score. Seems to work, assuming you don't piss off your team or teacher (which seems pretty much like RL).

  61. How to grade collaboration by slappy · · Score: 1

    I recently graduated from a Information Systems track which was located in the business department. We had a number of development projects, and a fair portion of them required working in groups. In fact, that was the number one complaint about our coursework -- not enough solo projects. Anyway, each member of the project was required to thoroughly document the work not only done by themselves but also done by every other member of the group. It was a pretty effective way of keeping people honest. That, and in many projects there were status updates during the project that required the same level of reporting, so the instructors found out early on in projects who wasn't performing.

  62. Group work by Phalse+Impressions · · Score: 1

    I found over the years of both in school and out that something came to light.

    You can work in groups all you want. Heck you can have the entire class as a group BUT you all get marked together. Some teachers allowed for peer review but most didn't. I can see their reasons why.

    If you are doing in a group when you are in a work enviornment you don't assess the success of the project to any individual over another. Either the project works or doesn't. If you find that someone in the group isn't pulling his/her weight then you can get rid of them. Assign them to a different group or in the real world...."Fire them".

    You can't have group work and not mark heavily on the individual because it is group work. Otherwise you might as well assign individual projects.

    There are times for both it is just tricky finding out when it is good to do each.

  63. Co-ops by jrsimmons · · Score: 1

    The only way to truly get the type of experience you are looking for is to take summer or (even better) a part time job in the CS area. I recently graduated and am now working for IBM. The thing the helped me stick out from the crowd was my work experience in IT for 1 and 1/2 years while attending school and a 3 month co-op in Germany. Job experience is the most effective learning tool any school can provide, and most schools do have programs to help interested students find jobs in their area of study. Classroom learning is a totally different type of learning and, while it has its place, is not nor will it ever be as effective at teaching practical skills as is the work place.

    --
    If you would like to be a leader with a large following...drive slowly down a windy two-lane road
  64. Software Engineering at Virginia Tech by jchenx · · Score: 2, Interesting

    Towards the end of my undergraduate career here, we had plenty of group-oriented projects. Most notable was our Software Engineering class. The idea behind it was marvelous: The class separates into 4-person groups. Each group is responsible for designing their own project. (Being CS majors, most groups chose games, heh)

    Here's the catch though ... you weren't allowed to code the project you designed! You had to "hire" other people in the class to code for you. (In the meantime, you also looked for jobs as a coder or tester for other groups)

    It was a wonderful little course that taught us more about communication and design/testing, than merely coding. Also, it's a great class to describe to recruiters who get a kick out of it.

    --
    -- jchenx
  65. 59.311 - Software Engineering by Chris+Brewer · · Score: 2

    Down here in New Zealand, a paper I did in 3rd year had it's main assessment from a team based project. We joined into groups of about 8, elected team leaders, and organised everything from defining the requirements to giving a 'sales-pitch' presentation at the end of the year.

    Part of the assessment of this project was from us as individuals assessing our team members, and their contribution. Another part of the assessment was from the presentation where the other teams gave us marks.

    As an aside, the top 3 teams (my team was one) redid their presentations in front of the Chief of Sun Microsystems NZ, but while his assessments weren't towards our final marks, it did help one of the guys in our class to score a job with Sun and become the first Java programmer in NZ.

    --
    Consultancy: If you're not part of the solution, there's money to be made in prolonging the problem
  66. There is no I in team... blahblahblah by Rackemup · · Score: 2
    Every time I ended up in a group project I had to do most of the work. It didnt matter how much planning we did, no one pulled their weight. Maybe that's why I hate programming so much now.

    In first and second year CS classes I can understand why a prof would want people to work on their own projects. It's an easy way to see who's learning the basics and who doesn't have a clue.

    By the time you hit third and fourth year there should be lots of group projects and collaborative efforts to get people used to working in the real world.

    Sadly my college viewed CS as "part of the math dept" and put most of their money into the arts programs (this was only back in 95-99). Had they put more effort into developing the CS program, hiring more profs and developing the curriculum they could have had a nice program. Maybe things are different now, but I doubt it.

    1. Re:There is no I in team... blahblahblah by salesgeek · · Score: 1

      But half of tEaM is ME.

      --
      -- $G
  67. Cheating and its consequences by Phaid · · Score: 5, Insightful

    Sadly, in the real world most projects are really written largely by one or a small group of "hero" programmers with the rest of the cast and crew along for the ride. My guess is that the people who are the "heroes" were the ones who actually did their assignments, while the idlers are the ones who copied their homework from others.

    Realistically, you have to have both: individual projects where sharing is prohibited, so that you can hone and demonstrate your own skills ; and group projects later on, where you can learn to effectively coordinate and work on parts of a larger system. It's no use having group projects in beginning level courses, since really the students don't know enough to accomplish anything and putting them together just increases the confusion. Later on when everyone has mastered basic skills and design concepts, you can benefit a lot from a group project.

    1. Re:Cheating and its consequences by rufusdufus · · Score: 1

      This is absolute nonsense. You are working in an incompetent company with incompetent boobs if this is the way you think the real world works. A smart manager never lets his project be dominated by one programmer, because if that programmer quits, dies or for any reason is unable to finish the job, the project is screwed.

  68. Group Projects by MikeyNg · · Score: 1

    Group projects are fun, exciting, and provide education outside of just the regular academic assignment. I feel that they're extremely useful for people to begin to understand group dynamics. They also provide the opportunity to assign harder than average work because a group works "smarter" than a single person in that you get to bounce ideas off of one another.


    What about freeloaders? Well, what about them? In case you didn't notice, they exist in the "real world" also. But if a person (or their parents) is going to be spending thousands of dollars for an education and then cheat themselves out of it, who's really losing here? Are people really considered that immature that they won't learn the material? If you "cheat" and don't benefit yourself, will I, as an instructor, really care? You're only hurting yourself.


    As an instructor, there is also the safeguard in that people get to choose who they'll be working with. By the end of the semester, the freeloaders will probably have loafed themselves out of any of the elite groups. People will still tend to be loyal to their friends, but being able to forge friendships is also a valuable lesson, don't you think?

    --
    Where the wind blows, the tumbleweed goes.
  69. coperation in CS by Samuel+Nitzberg · · Score: 1

    I took a bunch of cs classes (CS undergrad, Masters in Software Engineering, Completed all CS Ph.D. coursework).

    What I really saw was that - besides the odd course here and there, e.g. a networking class, where groups within the class might design a network (each using different requirements/models), group projects were pretty much limited (by definition) to being held within the Software Engineering courses or curriculum, where the focus is on methods and techniques for completing technical work in a group environment with limited resources. Unfortunately, if someone doesn't hold their own, it can also damage (F*ck up) the group.

    Another issue is that unless the problems are original (they usually aren't), there is a limited number of ranges of possible solutions and implementations that are truly viable. Hmmmm how many different programs are there to do a quicksort of n integers with a given partitioning algorithm? Not that many that are really very different... The biggest problem for submitted projects that the University likely faces is probably people just submitting solutions that are letter-identical to previous submissions. Some professors have developed programs to identify how similiarly programs reflect previous submissions.

    -- Sam Nitzberg
    sam@iamsam.com
    http//www.iamsam.com

  70. software design? by Double+A · · Score: 1
    are there any software design courses offered at your school?

    while i was at university, i found myself embroiled in a lot of competition with other students, but i was the biggest source of it. i personally find it rather difficult to trust someone else's code, especially when we're graded on style, when my marks are on the line and my name goes in on the project. of course, most software is written in a team, so i'll have to learn somewhere.

    this problem of mine eventually led to a burnout and i'm currently "between schools" ... what was offered at my old university is a course in software design where you were forced to work on a project as a team, and it was much more involved than most group projects. i was waiting to take it in my fourth year (which never came) and i certainly regret it. it would have helped a great deal. i think courses like this are being offered at more schools each year if they're not already common. people like me are all too common in this field ...

  71. Surface comparision of class teams and work teams by Anonymous Coward · · Score: 0

    I work for a major telecommunications firm, and can tell you that not everyone does the same amount of work within a given project. Everyone is loaded to the limit of her capacity, however, since there is more than one project to work on (truth of life, everything needs to be done ASAP, or sometime in the distant future, and you usually rely on your boss to make priority decisions). Within a single project, the work is divided by interest and ability as much as possible, and the dates are pulled in to minimize float for everyone. So, the way management evaluates performance is by whether or not these not-completely-realistic date goals are met, and the quality with which the product is delivered (measured by the number of problems found with the software once it is released by the development team). In all of this, there is at least one major difference than most school projects: everyone is doing different work than everyone else, and everyone's code needs to work correctly with everyone else's by consensus standards. Another major difference is that individual performance can actually be less important sometimes than group performance: you may or may not be fired eventually for being a slacker, but if your team does well despite you you'll last longer. Team projects where everyone does a different job are interesting and fun, and are much closer in dynamics to the working world. You don't get an individual grade, though, in the working world; you get raises or not, promotions or not, nifty neat jobs with people you want to work with, or not.

  72. Good ole' fashioned tests? by ClarkEvans · · Score: 2

    This is *exactly* the reason why I have a B.S. in Mathematics instead of computers. In my opinion, students should be allowed to chat and share ideas on their programming assignments -- even copying is good, as long as the student learns the subject matter. Here are some ideas...

    1. Give frequent quizes, mid-terms, and final exams. Construct these tests so that it covers ideas which one would have to struggle with when solving the programming assignments.

    2. Give an incomplete program (their own?) and have them complete one of the classes or functions. If they really wrote it (or understand the concepts), this won't take long at all.

    3. Focus on "ideas" and "history". These are very testable, and probably a better yardstick. Use in-class essays; hire grad students to help grade them.

    4. Have group projects to *encourage* knowledge sharing. Have each person write an essay about what they learned from the group project. Grade the essay, not the program that resulted.

    5. Focus more on requirement gathering and other "fuzzy" stuff as well as the concrete programming. Give room for the those with good communication skills to shine and partner with those with good technical skills.

    Just thoughts...

    1. Re:Good ole' fashioned tests? by blazin · · Score: 1

      even copying is good, as long as the student learns the subject matter. Here are some ideas...

      You're right, copying is fine as long as the student learns the subject matter. But this is not usually the case. What motivation would a student who is copying an assignment have to learn what is done in the assigmnent? If they were really interested in learning the material, they'd do the code themselves, and maybe collaborate if they were stuck on one piece after struggling for awhile.

      I don't think that allowing straight out copying is a good idea, but collaborating as long as both parties are learning the material is great. In fact, it can even help the student who already successfully completed the code by forcing them to think about and explain why each piece was done the way it was.

  73. CVS by Anonymous Coward · · Score: 0

    Just a thought, but isn't there a util that will report on CVS checkin's and checkout's (as in, the amount of the code that was changed, when it was changed, by who, etc.)? Would it not be possible to use such a utility to figure up who did most of the work, or whether it was fairly balanced? I could've used that in my college days... ;-)

  74. "encourage" participation by Foos · · Score: 1

    What a coincidence, I am sitting in the computer lab right now TA'ing a software design class where the students are working in teams. The way that we try to reduce the "slackers" is by allowing everyone to change teams after every lab. Groups can also to refuse to let someone in their group if they are a known slacker (or actually for any reason).

    --
    :wq
  75. Individual work is too important by bartle · · Score: 2

    I know the college has to do this so they can somehow grade 'my' code and assess my performance. Isn't there a better way? A way that students can be taught to work as a team yet still be able to tell who is pulling their own weight and who is not?

    Just like in the real world, a team is a haven for slackers. Far too many people got through my CS classes simply because of who they knew. Insofar as college is designed to accredit individuals, it is necessary for nearly all of the work to be done as an individual.

    Now most of the problem is that when students divide into teams, the instructors have the tendancy to view the team as a single entity. College professors are an unsympathetic lot and the easiest thing for them to do is judge the team with an external eye. Once the team members' fates are linked, it is often times easiest for the most industrious students to simply take on the burden of the work. It is rare that I see a team in which the doesn't occur, in both academia and the real world.

    I understand where the author is coming from, I learned a great deal during the little time I was forced to work in a team in college. But my lessons were in politics and sociology, relatively little computer knowledge was involved. Students should spend some time in groups, but not too much. It is nice in some ways for college to be more idealistic than the real world.

  76. RE: Cooperation in Education by Aelyew · · Score: 1

    I guess I have the opposite tack to the original contributor. Having worked in industry for 11 years and slowly gaining on the completion of my PhD which I have recently gone back for, I find this argument to be disappointing. Almost every computer class I have taken has insisted on team projects, inevitably you always get a slacker and your project suffers as a whole. Additionally, it's very easy to get pigeon holed into working in a specialized area and not getting exposure to the other components of the project.

    I would strongly argue for projects that can be performed by one person. No more than one class in your educational curriculum, like a Software Development Practicum should involve team work.

    Sure in the business world teamwork is necessary, but typically businesses will completely retrain a college new hire anyway. We're looking to see that you are well balanced, intelligent and that you're a fast learner. If you've been working as a team member for all of your college years, I believe you'll be lacking in certain areas of your development.

  77. advocate for project-based learning by Anonymous Coward · · Score: 0

    Some colleges, like Worcester Polytechnic Institute, base all their classes on project learning. There are individual assignments, but the vast majority of projects are done in groups of 2-4. You end up learning more than just the subject matter- how to deal with lazy group members, primadonnas, and stubborn people.

  78. Voluntary Groups by Anonymous Coward · · Score: 0

    I think one good way to go about this problem is to make the use of groups voluntary. If you can get into a group of people who you know will contribute, it really helps the learning process. If you are forced into a group of people who won't put forth any effort, it just makes your life hell.

  79. I would prefer... by The+God+Soldier · · Score: 1

    ...if this article discussed "Conception in CS Education"

  80. I feel that new problems are needed in CS courses. by tkrabec · · Score: 1

    Just how many ways are there to write "hello world".

    I have been programming since the late 80's and every language I learned formally, at a school/uni, they taught the same programs just a different language. (SOSDL)

    I would like to see programs that make the student's think not just learn how to do a bubble sort then apply it to a standard data set, the same as the 200 students before you and the same as the 30 students in your class. Of course there will be similarities

    -- Tim

    --
    TKrabec Pahh
  81. Computer Engineering at University of Toronto by Mr.+Shiny+And+New · · Score: 1

    I'm taking CE at University of Toronto, and all our fourth (final) year work is team work. There used to be a 'thesis' which could be done alone or in teams, but now it's a 'design project', and it has to be done in teams. Also, a lot of my lab work in the past years was done in teams of 2-3 people. This year, the teams are 4+ people.

    The thing is though, that team work in school is not like team work at work; I've worked for a year on a co-op placement and the teamwork was very different because everyone was always around... we didn't all have different classes to go to or things like that. We were all basically full-time team-mates, where in school we are only part-time team-mates.

  82. My experience by Dop · · Score: 3, Funny

    I had one course on software development processes. Where the group had to design what they were going to do, write the code, and run tests on the code to make sure it works. The problem with this kind of work is people like me. I hate groups. I knew I was the strongest coder too.

    I wrote all of the code one morning before ever having the first group meeting. I didn't want to deal with having them argue about how to do it and having it take several days. Then I told them to do the testing without me.

    I realize this doesn't work in a large corporate environment, but when it's a small project for a class when you've got other classes and work, there will be students that do the work on their own faster and don't care if the other students take credit for it or not.. just as long as yours truly gets a decent grade. The rest of the group is likely to go along with it because it's less work for them.

    So basically, I think it's very difficult to pretend that people will react the same way in a classroom as they would in a corporation. The fact of the matter is, a lot of students initially show up at college to learn, but in the end they just want to get the hell out of class so they can play on their own.

    1. Re:My experience by Anonymous Coward · · Score: 0

      Could you please post your full name, college, and year of graduation for the record? This information will be helful to our recruting department. Thanks!

  83. In Relation to 3D Animation by quantax · · Score: 1

    Currently I am attending college for a degree in 3D animation, and almost all emphasis is being placed on the individual effort. I have not had a single project so far that involved a group. Maybe this is because of the singular nature of art in general, but once you leave the classroom and goto the 3D studio environment, you're always working in a group. No one person models, textures, lights, animates, etc an entire scene in a movie; thats done by a group of people, varying in numbers. Most of the emphasis is placed upon your personal abilities with the software (in this case Maya), so its unfortunate we will not have a group project where we can see what its like to work with a group, and the advantages and disadvantages of each system. I guess they expect us just to learn on our own once we get into the field on our own.

    --
    "What can a thoughtful man hope for mankind on Earth, given the experience of the past million years? Nothing." -Bokonon
  84. Peer review by Anonymous Coward · · Score: 0

    In our EE group projects, peer review scores were a component of our grade...we were the early 'survivors.' Sociologically, those who get along and are seen as having value for the team score better in this area. Should like-ability matter, though? This scenario does make people try to appear to be working hard on the project.

  85. well by Anonymous Coward · · Score: 0

    At the school I go to they handle this rather nicely. First of all, they try to do both individual and group projects. This way your professor tends to get to know your coding style fairly quickly (relativly small classes). We also have _very_ strict style guidlines. Blocks of code must have proper commenting, and RCS (Revision Control System) must be used. What this does, is allow the files to be self documenting as to what work you did. Every tiem you make a change, you check in your file, RCS records the user name, date/time into the file and adds a personal comment by you as well. This way, you have a "history" in each source file for every change that was made and who did it.

    On top of all this, after a group project we all submit reviews of our group partners work.

    Overall, it is a nice system after you get used to it. Making sure you use RCS is the biggest "hassle", but it has saved my ass more times than I can count, so i am greatful.

  86. As usual... by Nijika · · Score: 1

    University education does not reflect reality. At my workplace you're encouraged to share code and ideas, because through this process everybody excelerates quickly. You can't code in a vaccum, and this kind of thing shows why some are doing, and others are just teaching..

    --
    Luck favors the prepared, darling.
  87. Technical University of British Columbia by talonyx · · Score: 2

    I attend the Technical University of British Columbia, and almost all of our IT work is done in teams. We have to write up our contribution and grade others on the amount they have done for projects.

    Coding styles can be hard to combine, so often we each write routines with standardized ways of having them talk to each other instead of directly working on the same code. Probably when we get better at it, we'll be able to adobt a GPL style development system, with everybody checking each other's code and being able to figure out what the heck it's supposed to do! :-)

  88. Go to MSOE for college if you want team projects by ogreRulez · · Score: 1

    I am a software engineering student at MSOE. Our program is extensively team based. We do get graded quite well because we provide feedback on our peers and because our class size is really small. (There are only 15 in most of my SE-related classes). When I get out of college, I will have skills that many do not. So, if you like programming and would like to learn how to "engineer" software (not simply write it), check us out.

  89. Re: CVS - Gregory Wilson's idea by jswitte · · Score: 1

    There was a colloquium given here at Indiana University (Bloomington) by Gregory Wilson (he was a contributing editor to dr. Dobb's Journel) called Open Source, Open Science which touched on this question. He suggested using CVS for class projects, and said "if seven people submit their code at about the same time five minutes after the first person did, you can be pretty sure whose cheating."

  90. hey doormat by ReidMaynard · · Score: 1

    sounds like you're ready for the real world

    s/professor/manager/ and this could be any real world situation.

    --
    -- www.globaltics.net

    Political discussion for a new world

  91. School != Real World by Anonymous Coward · · Score: 0

    School is not the real world, and its not meant to be. I have a CS degree, to get it I had to take all sorts of classes including chemistry, drama, math, figure drawing, physics, and fencing. Not once in my work have I been asked to separate and identify elements in a beaker (the famous "sludge test") or draw my boss nude (thank god!) but I uses those analytical skills every day to solve programming problems.

    School is there to build your underlying skills. If you want "real world" experience than join the "real world" take a part-time job or save your folks the money and get a fulltime entry level position.

    That said, I think more "team building" classes would be a good idea, but only in the last year. You should have the underlying skills before you team up or you run the risk of using your team mates for a crutch and earring a degree you don't deserve.

  92. Software Engineering vs. Computer Science by ctrimble · · Score: 3, Insightful
    By and large, if you're getting a degree in CS from an American university, you're not learning how to write software applications that will be deployed in the Real World. You're learning about things like algorithmic complexity, data structures, NP completeness, and other theoretical issues. Now, these things are nice, but I've never been on a project that's failed because someone used a linked list (O(n)) instead of a hash table (O(1)).

    A computer science degree gives you the foundation that you need to become a computer scientist. It's the background you need to pursue advanced coursework in computer science, in the same way a degree in physics gives you the background to do advanced work in physics. A degree in physics does not mean that your competent to build bridges, despite all you know about the law of gravity, harmonics, and tensile strengths of materials.

    Schools need to have two separate programs -- computer science for budding computer scientists and software engineering for budding software engineers. And I guarantee that the demand is for the latter, but most schools only offer the former.

    As a former developer, then later system architect and project manager, I found that my CS education was essentially wasted. It's nice to know how to do matrix multiplication using dynamic programming, but I've never used it. I would have traded in my entire algorithms class for a class on testing software. I'd trade data structures for a class on project lifecycles. I would have traded theory of computation for a good design class.

    So, yes, I think schools should teach how to work as a team, and there are already ways to determine who does what -- the same way it's done in the real world. When I was a project manager, I knew who was pulling their weight and who wasn't. Of course, as a professor, I'd be too busy doing research and writing grant proposals to deal with my students, but that's a problem with education in general. But here's an example of a solution -- pick the top scorers on the first exam and make them team leaders for the projects. They have to manage the project (as well as code) and they have to evaluate their fellow students. The other students fill out an evaluation of their team lead.

    Incidentally, Steve McConnell (author of Code Complete) has written a brilliant book on the failures of the Software Engineering industry and what needs to be done to fix it in After the Gold Rush: Creating a True Profession of Software Engineering.

    1. Re:Software Engineering vs. Computer Science by Anonymous Coward · · Score: 0

      By and large, if you're getting a degree in CS from an American university, you're not learning how to write software applications that will be deployed in the Real World. You're learning about things like algorithmic complexity, data structures, NP completeness, and other theoretical issues. Now, these things are nice, but I've never >been on a project that's failed because someone used a linked list (O(n)) instead of a hash table (O(1)).
      -----------

      You must be working on very boring and trivial projects if you can use a linked list everyplce you need a hash table! It is that attitude which means reports take days to run not minutes or seconds.

      Besides a Computer Science degree is meant to teach you computer science! It isn't a degree on implementation techniques or software engineering or any of this boring crud.

    2. Re:Software Engineering vs. Computer Science by nels_tomlinson · · Score: 2
      It's nice to know how to do matrix multiplication using dynamic programming, but I've never used it.

      You've never used it; I've never heard of it. I know about dynamic programming; it's a recursive method for doing calculus-of-variations stuff. I know about matrix multiplication, too. How do you use the first to do the second? Could you point me to a reference, please?

    3. Re:Software Engineering vs. Computer Science by ctrimble · · Score: 1

      I'm sorry, this was my error. I didn't mean matrix multiplication, I meant matrix-chain multiplication. The dynamic programming comes in in determining the optimal order for multiplying the matrices. The process and algorithm are described in 16.1 of Introduction to Algorithms (Cormen, Leiserson, Rivest), but you can also find it on Paul Chew's Algorithms course page (lecture 11)

  93. global search and replace by JimmytheGeek · · Score: 1

    I was in a team in an intermediate C class. A teammate had trouble getting her code to work so she did a global search and replace on everyone else's code, eliminating all those asterisks because "they don't seem to work"

    Oddly enough, ampersands didn't work much better.

    Do not make test scores part of the grade for a programming class.

  94. Play Little League by Ledge · · Score: 1

    Working as a group is a skill that should be learned long before college. There will always be people that milk the group. If you need to learn to play well with others at the age of 19....yer screwed.

    --
    If it ain't a Model M, it's a piece of crap.
  95. Software Engineering? by Meech · · Score: 0

    No groups for a software engineering course?

    Software engineering is a course based around a lot of people working on a large programs. I strongly believe in no group work for the majority of classes, to ensure that you know what the hell you are doing, but in *real life* groups are used, and working in groups should be a part of some courses.

    Besides, working well with others is a skill that many computer science types lack! We could use the help.

  96. what do you expect by KevinMS · · Score: 2

    School evaluation often involves completely artificial situations that have nothing to do with real worl application of the knowledge you are learning. Flame on please.

    --
    Sneakemail is to spam filters what an ounce of prevention is to a pound of cure.
  97. Not for CS101 classes by Macrobat · · Score: 1
    Co-operative projects are something that would work well in an advanced class. Beginning classes are there to assure that you, the individual, know how the basics of programming work. The kind of assignments I remember from 280 (which was the intro class at Michigan back in the day) involved C language rudiments and some basic data structures, the kind of thing that, even if you were on a team, you'd work on alone for the most part.

    In an advanced course, I could see team projects. But I would also expect the project to be much, much longer than 1000 LOC projects you see in intro classes.

    --
    "Hardly used" will not fetch you a better price for your brain.
  98. dont use grades by oogoody · · Score: 1

    Don't worry about grades and just worry about
    learning, then your lame partners won't matter.

  99. the simple solution by dagashi · · Score: 1

    ...A way that students can be taught to work as a team yet still be able to tell who is pulling their own weight and who is not?"
    From the CS code of ethics:

    1.1.2 Camping.
    The fragged players has to keep watching the game and scream "NO CAMPING LAMER" really really loud til the camping players keep moving!

    geesh i thought someone with a major in CS would know!

  100. Working in Teams is Good for You by Anonymous Coward · · Score: 0

    I recently finished my masters in Information Systems. Our degree program is offered through the College of Business, not Computer Science. Although there is a College of Computer Science and Engineering, as well. I have taken classes from both colleges in my degree program. The courses I took from the Information Systems department of my college were team work happy. I mean you couldn't take a course without there being a group project. This could be collaboration on a paper, development of an application, or both culminating into some group presentation. However, I never had a team project in my classes from computer science. In that college, things were more of an individual effort. The team projects were good because several skills were learned and practiced, such as group dynamics, delegation of tasks, integration of subprojects, etcetra. This is the type of environment that one can expect from the _real world_. Companies weigh heavily your ability to work well in a group to accomplish tasks in a timely and cost effective manner. This is sometimes more important than how many programming languages you know because if you have the technical skills to learn a language like C/C++ or Java, then you can learn another language that they might want you to use like C# (God forbid!). However, if you cannot get along with others or work out differences or not be a control freak, then the company cannot work with you. To the issue of attributing credit for source code, there are a couple of things that can be done. One is to provide a comment in your sources that attributes that this code is patterned after code found in such and such a place (not blatant plagerism, but a design patterns sort of thing.) or offer comments in the code to individual effort within a team. Another idea is to do peer evaluations after a project milestone has been completed. The peer evaluations are taken into consideration for each members grade for that particular milestone. So, the project is given a grade based on the assigned parameters, but then that grade is adjusted downward for non-contributing members based on confidential peer evaluations. This is a common practice for my group projects.

  101. An important educational issue by Carmody · · Score: 1

    Studies have shown that most students actually do best with a mix of group work and individual work.

    The issue is that good group work contains within the implementation individual accountability (Johnson, Johnson, Smith). The group task should also be a task where it isn't EASIER for one person just to do it all, it should contain within it some room for controversy and debate (Brufee) or just the need for more than two hands or one brain.

    One way I have been successful in fostering individual accountabilty for projects is this: Each student, at the end of the project, gets to assign 100 points to him/herself and the group members, based on what percentage of the work was done. Each turns their assessment in to me privately. If they all are roughly pulling their weight, then that is fine.

    Another thing I do if there are several projects, is I put the slackers in one group. After the intitial "Duuuude! This isn't going to write itself" moment, the slacker groups often wind up doing VERY well together.

    If you have had bad experiences with group work in college, think: Is it the concept of group work itself that was the problem, or was it the implementation?

    --
    God is real unless declared integer
  102. From the instructor's point of view... by blazin · · Score: 4, Insightful
    I teach a data structures course at a Colorado university (not CU). Two weeks ago, I had two students turn in nearly identical code, and two others turn in completely identical code, down to the exact same spacing and comments. There was no difference in the second.

    The first example had some differences, such as variable names being slightly changed, comments were changed but all in the exact same place, and the logic was all in the same order. Other than that, just a few if statements were changed but in ways where it meant and did the exact same thing, ie,
    if (a) b(); else c();

    or
    if (!a) c(); else b();
    I asked a former professor what to do and she said that in cases like these she has thrown the book at the students. She said even if there is just a hint or suspicion of cheating, it should be submitted to the Dean, but that I should check with the department head. He went the complete opposite route and said that we didn't really have any evidence that cheating had occurred, and to just talk to them and tell them that they needed to work more independently. I thought I had more than enough evidence since one set had identical code. I confronted the first group (identical code) and they admitted to working together. I told them to meet me after class and they admitted to working together. I told them that this was a bit more than just working together and that it wouldn't happen again or there would be consequences. I then had a meeting with the other two and they explained that they did work heavily together, but would never ever copy, etc. I told them that they just needed to work a little more independently as their code was extremely similar. Consequently, the students that were copying did not do well on the exam last week and I believe it is due to them not knowing how to code on their own. Students need to learn to code on their own since most code in the Real World is not already made for them, and the code that is there is written by someone else, and it will be thier responsibility to know how to maintain it. You can't maintain code if you can't code in the first place.
    1. Re:From the instructor's point of view... by Bugmaster · · Score: 1
      There is a difference between "working together" and "cheating", and I wish more college curriculi (curriculae ?) supported this notion.

      If the students "work together" by spontaneously organizing a team, brainstorming the solution, and then teaming up to find bugs, that is actually a very good thing. It means that the students understand the ideals of good programming practice intrinsically; they don't have to learn XP because that's how they already work. It also means that they will understand the subject matter at a much higher level, since part of working in a group is being able to explain things to one's teammates. It is impossible to explain anything without having a deep understanding of the subject.

      On the other hand, if by "working together" the students mean "Alice writes all the code, and Bob, Cindy and Dave copy/paste it", then it's clearly cheating. Unfortunataly, most college professors assume that all students are lazy, dishonest losers, and thus assume that cheating always takes place. This greatly deteriorates the learning process.

      --
      >|<*:=
    2. Re:From the instructor's point of view... by pi_rules · · Score: 2
      I was in a CS program for a few years, and I agree that during the very early courses students should be watched carefully for blatant copying. However, as others have noted here, hard scienes are usually something people work on in groups. It was never uncommon for the CS students around me, myself included, to ask questions of other programmers. When dealing with a new language and unsure of the syntax you'd ask the guy next to you what in the world was breaking the compiler. He'd point it out, you learned, life was good.

      Quick and easy way to tell if a student was cheating... when they hand it in, look at the code and ask them a few simple questions about it. Even if you "cheated" by copying another student's code as a template, re-worked it line by line until you "got it" so long as you can actually explain what the code is doing, and why, what's the harm in that? Granted, I'm assuming that the person you're learning from -knew- you were using their code. Poking around on the network and grabbing some other student's work behind their back is just plain wrong.

      One of my favorite programming assignments was in a data structures for C++ class, where we had to make a simple program to create a histogram showing how often a word of length X was appearing in a document. I had so much fun because another programmer and I had the exact same ideas for how to implement it. A group of us were working, and the two of us discovered we were taking the problem on in the same way. So what'd we do? We raced our prgrams. Sat there for hours trying to optimize tight loops, runniing the thing on 20MB of the Bible, eeking out a few cycles here and there.

      We were the only two who took this approach to the problem (inherit off the std::string, re-work it to act like Perl's definition of a 'word'). Smallest code base out of anybody else in the class we saw, very proper OO design IMHO, and excellent re-use of existing objects. Well, we got either a D or an F, I forget. Prof wasn't too happy with us, because there weren't enough classes in it, and we had used what I consider the real definition of "word". The literal string "The" was a word of length 3 to us, not 5. ?????dog?,.; would also be a word of length 3. The string Don't was of length 5, etc. Apparently ???dog:, is actually a -word- of length 8. I beleive there was also a note on our papers about our methods being too close together. I was irked, but I didn't do anything about it. I was even more irked when I found out that other students who had wrapped a class around "float" to meet the minimum requred 3 classes were given full credit for the assignment. To the prof I'm sure it looked like one of us got this zany idea and the other one copied it. Far from the case, here's why we came up with same design:

      • We read the same books. Bjarne's The C++ Programming Langauage was a staple for us. I would wager tha nobody else in the class knew who Bjarne was
      • We both knew Perl, and liked it, hence our definition of 'word' was different than most people's.
      • Both Unix/Linux nuts. We'd code projects in the Linux lab, then "port" them to the DOS compiler before handing them in.
      • Heck, we both used -Emacs- ... The only code we copied verbatim from eachother were .emacs files
    3. Re:From the instructor's point of view... by Bugmaster · · Score: 1

      As a sidenote - I don't know perl, but the definition "a word is a string with spaces on the sides" makes no sense to me. Spaces are separators, the letters are the token. Java works this way, and regexps (in any language) do also. So, your prof must have been on crack or something.

      --
      >|<*:=
    4. Re:From the instructor's point of view... by gmarceau · · Score: 1
      I'm sorry to hear that. If that make you fell better, I go around yelling at people with such experience to switch university while there is still time. My teaching at McGill university had none of such nonsence.

      The three classes I had though by the head of the cs undergrad had the best rule of all : we could work togheter all we wanted. You only had to write who you worked with on your assignement and nobody would complain. Except, if you did very in the assignement and bombed the test, and in particular if you parterner did well, he treaten to call you in for an oral test - to check out how much you realy knew. From the tone in his voice, people learned fear, and cheating was few.

      --
      This post was compiled with `% gec -O`. email me if you need the sources
    5. Re:From the instructor's point of view... by bollox · · Score: 1

      I am glad to see that you did not penalize the students too heavily. In my college days I used to get in trouble at least once a year for being involved in "Similar Code" incidents, reason being that I would never refuse to sit down with anybody who has a problem with an assignment and work through the problem. In doing this I would sometimes, when the fellow student just wasnt getting it, show them my code which I would never let them keep. They would then come up with a similar solution and bang we would both get in trouble again. I now lead a team of 6 developers and the one thing which I encourage more than anything else is for the more senior members of the team to spend time with the other not so senior members bringing them up to speed. I dont care that they are wasting a little time doing this because it is always increasing the overall competency of the team...

    6. Re:From the instructor's point of view... by blazin · · Score: 2

      I dont care that they are wasting a little time doing this because it is always increasing the overall competency of the team...

      The thing is though, if they are increasing the overall competency of the team, then they are not wasting time.

      We had a professor when I was taking class who would let us sit down, discuss the code, show the code, etc, but nothing could be written down, typed, etc. The only things you could come away with were the things you remembered. I think that way is effective as well, at least in a college/classroom setting.

    7. Re:From the instructor's point of view... by pi_rules · · Score: 2

      English was not his native langauge. This created a huge barrier in the class. I stopped attending almost all together when I was unable to explain why passing the same variable as a reference to a recursive function (his method) was less efficient than creating a static local variable within the function and -not- passing it to each call. Aside from not grasping why it's more efficient not to pollute the stack with the same pointer over and over again he was so bold as to say my method wouldn't even work. In all honesty I didn't actually write the code on the board for him to examine, instead I only spoke it out loud. When it came time to hand this project in I gave him two copies, one using my method and one using his. Both worked, logically mine was more efficient because it made less use of the stack. Perhaps if I had written the code on the board for him to see he would have gotten it -- but it's a bit silly for students to be explaining things to the prof by example. Alas, I quit attending the univeristy all together at the end of the semester in disgust.

  103. Academic Honesty by Arandir · · Score: 2

    The purpose of education is to learn. When you are attempting to learn programming, it does absolutely no good if you don't do it yourself. Or to put it another way, you will learn a LOT more if you try to figure out how to create your first linked list by yourself, rather than having your buddy tell you how to do it. Problems the professors give you are meant to make you think. It does you no good if someone else does the thinking for you.

    You will learn more about "off by one" errors if you spend hours trying to figure out what's wrong with your code, than if your buddy says "hey, don't forget to count to foo-1 instead of foo".

    This is for lower division courses. For upper division, when you have already demonstrated you know the languages and basic constructs, then working in groups should be standard.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  104. Heck yeah. by SkewlD00d · · Score: 1

    I've worked in many CS course team projects, and they tend to end up in one of three situations:

    1) One person does most the work.

    2) The professor forces accountability and each person has to do their share.

    3) The group splits up the task logically and has clear leadership and delegation.

    1 & 2 are most likely, 3 is *rare*.

    Btw, many big companies are spending lots of money on software engineering productivity. They've found that high-level languages like Java, VB, etc. are the cheapest to produce and maintain apps. They've also done a ton of work on "Team Coding," that's where two or three people take turns coding per machine (two+ minds are better than one). In school, there is rarely a requirement for reusability across different courses, though there should be a strong urging, if not mandate that code should be reused from course-to-course.

    Are there any indications that a curriculum could be formed, whereby code and extending projects flow from one course to the next?

    SkewlD00d

    --
    The biggest trick the devil pulled was letting lawyers become politicians so they can write the laws.
  105. Difference between physics and compsci by Glyndwr · · Score: 1
    I have recently graduated as a joint honours physics and computer science person from the University of Cardiff, here in Wales. This means I (nominally) spent 50% of my time doing one subject and 50% the other, and the difference in the attitudes to teamwork was quite marked.


    In physics, we were encouraged to work through problem sheets in a group whenever we wanted; it was just the Way Things Worked. We didn't have to acknowledge it or anything. I actually got the distinct impression that the tutors didn't think we did enough of it.


    In compsci, for all of our work except one piece we had to sign a "this is all our own work" disclaimer, and cheats who got caught were treated pretty harshly. Although there was, of course, some informal discussion it was pretty frowned upon.


    The exception was the specific group project which we did in the second year, which which nominally of eighty hours length; we were divided up into groups of six or so, given a fairly meaty project, and we had to organise ourselves and work through it.

    Personally, I thought the group project was very worthwhile. It was designed to be a mirror of conditions in industry (right down to slackers in the group!) and it was a fair stab at that (I've also worked out in the Real World), although of course it wasn't perfect.


    This group project system is pretty common in the UK, IBM run a nationwide inter-University competition around it. The best group from each University gets an all-expenses-paid trip on behalf of IBM to a two- or three- (I forget) day competition. The winners get to take brand new Thinkpads home, so it's pretty decent. My team didn't get in though :o(

    --
    You win again, gravity!
  106. Cooperative learning by foeclan · · Score: 1

    I took a 'Programming in C' course at the University of Minnesota a couple of years ago. The way they handled it was by having us work in teams for our labs (if we wanted; we could work individually if we preferred), and then on the written tests during the lecture, we had to work on our own. Since all of our projects could be done outside of the lab environment, they really wouldn't have been able to control who we worked with, but on the tests they could make sure we were doing our share.

    I'm generally a 'go it alone' sort when it comes to coding, but now that I'm actually writing code for a living, I'm finding that being able to read other people's code and collaborate with them is quite useful. Without some collaboration skills, projects with multiple people will take longer or even fall apart. I've even found it easier to learn APIs, because it gives you some better insight into what another coder was thinking if you're used to working with someone.

  107. Evergreen State College by jhealy · · Score: 1

    The Evergreen State College in Olympia, WA, USA doesn't use a typical grading scheme. Instead of grades, you receive an "evaluation", which is a written summary of your accomplishments and how well you performed. It works very well, and for those slackers that think they can get away without grades, it's not as easy as you think. If you really aren't doing the work, you'll just lose credit and won't get anywhere. I went there for a while, and I think it's a really great system. They stress teamwork and cooperation. They have computer science-y stuff too! The Evergreen State College

  108. Teams/groups can cut productivity by ShaunC · · Score: 1

    Speaking personally, I've always hated group projects and collaborative efforts in education. All through high school I grimaced anytime a teacher gave a group assignment. In my experience, the group or team members were always a hindrance to my own progress. Schedule conflicts, the inevitable group member(s) who just wanted to fuck around instead of doing any work, etc.

    I've found this to be especially true when it comes to programming. Like a lot of coders, I do it best when I'm in my "zone." For me, the zone is sitting in a room with some white noise (machines whirring), with a cold drink on the desk and a pack of cigarettes in reach. In this environment I'm comfortable, and I can relax and focus on doing what needs to be done. The problem is that everyone's zone is different. Some people work best with loud music going, some people have to have a very bright room, etc. Try to get 4 or 5 people with different comfort zones working together, and you're going to have productivity problems.

    Given just about any task, I can get it done much faster if I'm working on it by myself, in my own comfort zone. I realize that at many places this isn't an option, but I'm far more productive working on my own. Fortunately I haven't been given any group assignments to do in college :)

    Shaun

    --
    Thanks to the War on Drugs, it's easier to buy meth than it is to buy cold medicine!
  109. School != Work by Therin · · Score: 1
    In schools such as you're describing where you are all given one assignment to complete, you're competing with others, and all of you are working toward individually completing one goal.

    In work settings, that would be nuts - typically you will be given something to work on, one sub-goal of a team goal, while others are working on a different sub-goal. So cross-pollination is fine then; it's not stealing others' work, but contributing to the final product. In school, you and you alone are being evaluated by your work; so using someone else's work gives inaccurate and wrong results, hence it is punished. At work, you're all going to be looking for jobs if the company fails, and you'll all be better off if it's successful (ignoring union complications, idiotic companies/PHB's, etc.).

    In short, the real world (tm) is not like school. Don't get hung up on expecting it to be the same.

    --
    John 17:20
  110. Teamwork is extremely valuable by sswanson · · Score: 1
    In my undergraduate work, teamwork wasn't talked about, but it was required for at least one project in each class. It sure made me learn a ton! Not just the details that I was tested on, but also about how to work with people. In the few years of wrok experience I have had, the skills I learned in working with (and occassionally manipulating) coworkers has proved invaluable!

    As far as fairly evaluating contributions goes, it was rather hit and miss. Usually we were told to grade each of our teammates. Sometimes those grades were open to those same teammates scrutiny, other times they weren't. This worked in varying degrees. The most interesting system I saw was used in a business psych class where the prof was using the class as a test bed. He actively put people together so they would be most likely to have problems in their groups! Anyway, we were given a grade in points and had to choose how to divide the points among ourselves. The result had to be unanimous and you weren't alowed to give everyone the same number of points. Fortunately my group was fairly reasonable, but other groups came to screaming matches and occassional blows (catfights). It was something to remember. After the project was complete, we had to write a paper on the experience, of course applying the principles of the class.

    In another group, I was not there the day that groups were selected and ended up getting placed with a group of friends, who were mostly interested in non-acedemic interests (read - partying all night and sleeping all day). I ended up doing all the work and then they all banded against me and said that if I didn't say they deserved an A, they would all say that I didn't do a thing. So, I said we all did equal work, and the prof didn't believe it! He asked them a few questions and marked them all down signifigantly! Just goes to show, that no matter what system you use, you have to have an impartial judge.

  111. ask slashdot: by Anonymous Coward · · Score: 0

    Whose death was weirder : Danny Casolaro or Philip Taylor Kramer?

    1. Re:ask slashdot: by Anonymous Coward · · Score: 0

      ive never heard of either. who are they?

  112. 2+ heads are better than one by garoush · · Score: 2

    I believe the title said it all to give you my view on working as a group.

    Now on getting work experience, those schools that offer "co-op" are best when you want to get a feel to how it is "outside" the school system before joining the workforce.

    As for the "zero" tolerance for cheating, schools put such policy in place to protect their bottom line: "preserving their name". Schools are there to prepare you for the future (and "life" if that's how you want to see it.) So, if you can "cheat" without "cheating" yourself out, I say do it for which "cheating" is a necessary evil just like being "honest".

    --

    Karma stuck at 50? Add 2-5 inches.. err.. 2-5x Karmas Count to your pen1es.. err.. Karma all naturally and private
  113. Having been on both sides by Darkseer · · Score: 1

    I've been on both side of the equation as both a teacher of CS and a student, I can say that this is one of the most difficult problems both teachers and students face besides the homework :) On the student's side is the age old question "Whats considered cheating?". Is it ok to copy a printf or cout so that you can use some cool formatting or just get an idea of how those funtions work? In other words, where is the line between original thought and reference material, how much help is too much. As a teacher, my reservation about assigning group work was determining who did what. Did one person work tirelessly on this for a week or was there equal contribution. Then there is the additional burdon/art of balancing the groups so that everyone has a chance to complete the project and the quicker students don't take the attitude "I would have gotten an A if it wasn't for my groupmates". Often you have to sacrifice the interesting projects to become somthing easier because at this stage of the game its as important to work well with others as it is be be knowledgable in CS. All in all its an art, and it depends on what the teacher is trying to teach. I know its a cop out but its true, the value of doing a group assignment is taken on a class by class basis usually. The teacher has to trust the students to "play nice" so they get somthing out of it because in the end, and this is the scary part, there is no real way to tell who did what when the instructor is so far removed from the teams interactions and creative process.

    --

    BOFH, My model for being a sysadmin :)

  114. Incoerence by Karpe · · Score: 2

    The same people who teach you how its dishonest to steal other peoples code, teach you how it is important "code reuse".

    Most of the time, you will not have to come up with a very beautiful solution to a problem already solved, you will only have to find out which is the existent solution that best fits the problem. Thats what I use as a guide to my education, I try to learn the basic about a lot of things, so I know what to use when I have a problem. After all, one of the reasons of calling it computer *science* is because we stand on the shoulders of all who came before (most mathematicians, physicists, engineers) and improve the stuff they built.

    My politics on "lending" code for classmates to use on university is as follows. I can give my code for you to take a look, as long as you will hear for me what I was thinking while I wrote it, and understand what I think is nice and what I think are hacks, and try to correct the hacks. Sometimes I check tasks based on code form me that are really nice some semesters later. It usually works, in that at least the person learns/knows how the code works. It is often said that the only way to learn a computer language is to write programs with it, but if you dont have good algorithms to implement in this language, your programs will suck. So I add that it is also important to check out other peoples code to see how they implemented theyr solutions. That is one of the most important aspects of free software, that is many times overlooked: education.

  115. Azusa Pacific University... by antdude · · Score: 2

    When I took computer science classes (CS major) at Azusa Pacific University (class of 1998), we had projects that required group work especially with two required Software Engineering courses. Each of us did different tasks. I did the software quality assurance and graphics. Everyone had to do documentation (e.g. business and technical requirements) which is always important in software engineering.

    The few beginning courses' projects were not group work. In other higher level courses, we had smaller projects that did require group work. I am surprised to see your university doesn't require group work in some classes.

    --
    Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
  116. Teamwork is irrelevant by scott1853 · · Score: 2

    There is nothing you will learn by working in a CS team in college. The whole point of college is to learn as much as possible and hopefully learn information relevant to your major. Working in teams means not everybody has to work as hard or learn as much.

    In the real world, teams are used to decrease the amount of time it will take to complete a project. That is all. Any one person in the team should be able to complete the project on their own, given enough time to do so. The goal of teamwork in real life is to get a product to market as fast as possible. The goal in college is to learn as much as possible. The relationship between time and number of people do not work the same for both scenarios.

    While we're on the topic, I'd just like to send a big F.U. out to all the college students that post messages in newgroups, asking the intelligent people to do their homework for them.

    1. Re:Teamwork is irrelevant by ethereal · · Score: 1

      Of course you could get along without teams in the Real World. The point is that management will rarely choose that course, so you're destined to work in a team whether you like the idea or not. Thus, you should learn to work with a team.

      One of the previous comments had it exactly right: first you teach the actual concepts of programming, then you teach people to use them in a team. The two skillsets are disjoint and (for most people) equally important.

      You're right that teams in college aren't used to decrease the workload per person or to increase the time to market. Teams in college are used to teach people what teams in the real world will be like, and that is a very valuable lesson.

      --

      Your right to not believe: Americans United for Separation of Church and

    2. Re:Teamwork is irrelevant by scott1853 · · Score: 2

      "Teams in college are used to teach people what teams in the real world will be like, and that is a very valuable lesson."

      Good point. It does have merit, although I still tend to disagree. Working in a team is the same whether its in software, marketing, medicine or sports. It's just communication with the rest of the team, which is better left to other general courses to teach.

      Hopefully the colleges are telling the CS students that TALKING to people will be a requirement of their future jobs. Programmers don't just get locked up in the basement anymore.

    3. Re:Teamwork is irrelevant by blazin · · Score: 2, Insightful

      Any one person in the team should be able to complete the project on their own, given enough time to do so.

      I don't think so. The purpose of a team in the Real Word is not just so the project gets done faster, it's because in the Real World, not everyone knows everything. Sure, anyone may be able to get through the whole project by themselves, but that would be after a whole lot or research and learning completely new things.

      The teams allow people with different specialties to come together and share their expertise, with each of them working on the part of the project most suited to their area of expertise. There are very few people who are experts in all areas of any decent sized project.

      Joe may be great at network code, and even know XML and HTML, but he may not be able to code his way out of a paper bag in Java. Sure, he could learn Java, but that would take time, whereas Sue knows Java, and can also do interface design, but she doesn't really understand TCP. Sure, she could learn TCP, but that's a lot of time when instead we get these two working together along with Bob and Aaron, and soon we've got experts in all sorts of areas and some cross-over expertise and we can get a complex project done.

      There are few projects in the real world that can be done by just one person. With source code in the millions of lines, it is not feasible or realistic to expect everyone in the company (or the department) or the team would be an expert or even be familiar with all the code in a complex project.

    4. Re:Teamwork is irrelevant by scott1853 · · Score: 2

      I agree completely. Teams are used in the real world to complete projects faster. Bringing people that are specialized in one type of development is a natural aspect of this. However, at the college level, Johnny Network should not already have been type-cast as a network programmer.

      Colleges exist to provide education, not restrict it, because when Johnny Network gets out into the real world, he's going to find that his job options are going to be more limited if he's already accepted that he is just a networking guru and is apprehensive about other computer jobs. Colleges aren't about tunnel vision.

    5. Re:Teamwork is irrelevant by ethereal · · Score: 1

      Well, in some respects technical communication is a little different than just general teamwork.

      At my school we did have a generic "communications" class, but it was pretty worthless. It was more about "giving a presentation/talk effectively" rather than "how to work with a team towards an objective". Most colleges do end up teaching teamwork to most people, but only as a side effect of having to work on teams for other direct educational objectives. Which is why people can still come straight out of school and have no idea how to work in a team.

      --

      Your right to not believe: Americans United for Separation of Church and

    6. Re:Teamwork is irrelevant by JennyWL · · Score: 1
      There is nothing you will learn by working in a CS team in college.

      Nonsense. You will learn a great deal about people, about teams, and if your professor has designed the projects well, about group self-organization, progress monitoring, upward reporting, and how to motivate or cover for the less-able and less-motivated.

      My university has a 2-class series (covering 6 months) in which you and your teammates get a one-paragraph project description and must
      • research the subject until you understand the problem,
      • learn on your own to use the tools you will need to solve it, and
      • actually build the thing.
      Some projects were hardware, some were simulations, some were pure software. The single most valuable part of this course was that we had to write one-page weekly progress reports saying what we had gotten done that week and what we would be doing the next week. Next most valuable was that we had to maintain project notebooks with our data, training materials, those same progress reports, and meeting notes from team meetings (format was specified).

      Note that I have NOT said the project itself was valuable--my team couldn't even get most of the separate parts of our simulation to compile individually, much less work together, and I know from many hours in the lab that most of the other teams didn't finish either. What we were learning was the basics of project management and good team behavior. Sure, my team had to make up the gap when 1/4 of our number went missing early in the first term. And our meeting notes reflected the three who remained trying to take up the slack. Progress reports came back with notes that we were spending too much time planning, or critiquing our meeting management skills, or suggesting areas that needed more (or less) emphasis, just like a GOOD manager would do. I haven't used Verilog once since that class, but I've written plenty of progress reports and kept many a meeting from veering into a rathole, using the skills I learned back then. In 6 years of bachelor's and master's studies it's the one I remember most clearly and use most often.
  117. Great programmers steal code by jabber01 · · Score: 4, Informative

    There is an old addage in CS.. Good programmers write lots of code, and great programmers steal lots of code.

    (Of course the distinction needs to be drawn between programming and 'true' CS/Information Theory etc, but you get the point)

    The thing is, CS education treats programming too much like English - code may be 'speach', but it is not an essay. Yes, outright copying of code is still plagiarism, since you did not do your own work, but...

    In the 'real world' you rarely find a situation when people solve the same problem in parallel.. So comparing implementations for 'originality' is not an issue. 'Parallel' problem solving should only be used in introductory courses. After you know the language/concept (around the upper 200 level classes) you should not have many 'solo' projects.

    Instead, most projects should be solved by the group, and should be large enough to include a 'project management' component as part of the assignment. The problem should be too large for an individual to address in the time given - barring brilliance. Forced decomposition of the problem, division of the work into separate tasks, accountability on how well each part is done.. These are the things that will make for a successful team project.

    Should cooperation be restricted? Not at all, but everyone should have their own area of responsibility.. You can have teams that compete, but better yet, involve the whole class and rotate responsibility.. Allow students to assign roles to themselves, and watch top coders, and star organizers emerge..

    Idealistic? Sure.. Will some lazy bums slip through the cracks by riding on the coat-tails of their more talented and industrious peers? Of course.. All systems can be circumvented unless you want a full-time TA watching each student.

    So what? These people will only do themselves a disservice in the 'real world' by demonstrating incompetence if they choose the wrong field - or, well, hey, what's wrong with coordinating and pilfering the efforts of others, as long as the job gets done?

    If the coders can't make the pieces fit, but someone else can, that someone is a valuable asset to a company.

    How many of the Linux developers out there have rewritten the kernel from scratch, just to add a feature? Everyone stands on the shoulders of those who came before.

    --

    The REAL jabber has the user id: 13196
    What you do today will cost you a day of your life

  118. College Faculty Cheating Students by ChuckDivine · · Score: 1

    This student's complaint highlights two problems with current educational practices:

    • College course work is an inadequate preparation for the post college world.

    • College faculty don't really know their students.



    Teamwork is important in the real world. It's not all there is to work, but it is a significant factor. Even "lone geniuses" such as Einstein used other people's ideas and discoveries in their work. By treating students only as autonomous units, schools are significantly failing in their work.

    And what about the "slacker" on a team? Yes, slackers are everywhere -- and sometimes they're hard to spot. Who's the slacker? The person who writes a 100 lines a day but whose code breaks 6 weeks after they leave or the person who writes 10 lines a day but whose program still works 5 years later (and can be modified by successors to keep working)?

    A faculty member who knows the students in a class will be far better able to spot those same students' problems (whether "slacking" or rushing too quickly through work) than the faculty member who wants to "teach" 600 people and use traps to find "cheaters."

    --
    "Beer is proof God loves us and wants us to be happy." -- B. Franklin
  119. Limerick by 575 · · Score: 1

    Once some pupils, in pairs, at a school
    Had a project (display text was the tool)
    The first one a jerk
    Number two did the work
    Said the program: "My partner's a fool!"

  120. school vs work by Winnower · · Score: 1

    Here's my take as software developer who got a BS in CS in '99.

    Groups in school are hit and miss, and the students are learning how to handle it. You don't have a good idea how to divvy up the work, working with various schedules suck, and everybody is pretty much inexperienced software engineering wise. So you're going to get various amounts of effort - some because you weren't able to plan well and some because you have slacker teammates.

    In the real world, tasks are usually individually defined. Even though you're in a group, you are given individual tasks which are the bulk of your work. These individual works are then integrated by a subset of the group working together. There are still important group activities - during the design phase and to keep everybody on the same page. But the majority of development work is done individually.

    Groups in school try to get you a taste of what software engineering is about, but in my experience schools do a good job with the theories and the basics, but don't have the time, resource, or experience to really prepare you to working in a large group.

    So yeah, I think your school is doing the right thing on testing you indivually on a large part of your work. Small group project (2-4 people, 5 weeks, 3 or 4 credit hour course) don't do much to teach you real world skills or experiences (though group interaction often aids in the learning experience of the topic at hand - just not in regards to software engineering).

  121. Re:See Your Local Hard Sciences Prof (or grad ass' by ClarkEvans · · Score: 3, Interesting

    The hard sciences do this all the time, because that's how hard science is generally done--in a team setting.

    The originality in the "Lab" occurs during the report. Where one explains what was done, why it was done, and what the results were. Perhaps this can be taken into computer science, where the group works on the "code"; but the reports are turned in individually -- each person explains in their own words how the requirements, the design, how the program is structured, how it operates, what it's limitations are, etc.

  122. Right. by Anonymous Coward · · Score: 0

    In the "real world" team based development is broken into managable tasks. Then they are programmed by a single programmer. And if you're in a good shop you do code reviews.

  123. Group Grade w/ Internal Grading by Anonymous Coward · · Score: 0

    Hrmm, seems like if the members of the group graded each other, with the weight of the grades equal to half of the total project grade, everything would be pretty close to being balanced, even with spiteful members, "buddy" members, and "buddy fucker" members.

  124. The biggest part of being good is being humble... by javabandit · · Score: 1

    Wow, there are some real telling sentences here:

    1) I hate groups.
    2) I knew I was the strongest coder too.
    3) I wrote all of the code one morning before ever having the first group meeting.
    4) I didn't want to deal with having them argue about how to do it and having it take several days.
    5) Then I told them to do the testing without me.

    Where do I start?

    First, you hate groups. So you are basically a non-gregarious person when it comes to the workplace. Big minus.

    Second, you have a tall self image. You think you are the best coder, but coding is really only half of the battle when developing software. Big ego.

    Third, you went and did all the work by yourself without consulting your team. Self indulgent.

    Fourth, you didn't want the team to participate in any discussions about your project. Basically, you wanted all the glory for yourself, and didn't want to be bothered with their input. Selfish and uncaring what others think.

    Fifth, after you single-handedly went out on your little coding expedition, you then play dictator and tell them all to do the testing. Seeya later.

    No offense, guy, but you are my worst nightmare. I have fired probably five or six guys just like you over the last few years. You need to get lessons on how to really develop software. Why people skills are important. Why complete team input is important. Why you don't know half of what you think you do.

    Like the title says, be humble. You have a lot to learn. Even though you may not think so.

  125. Re:See Your Local Hard Sciences Prof (or grad ass' by nobody69 · · Score: 1

    Excellent idea. Back in the day I was a bio major and biochem grad student/TA. We would get group projects in two situations - lab work and presentations. For in-lab stuff in the lower level classes it was pretty much "Find a partner, cut this up and answer these questions." while in the higher classes (like Gross Anatomy, which I TA'd for a semester) the group work was more involved, but the TA's were around enough to tell who earned the lab participation points and who didn't. The students often made that pretty easy - "Hey, does anybody remember so-and-so even touching a cadaver? No? OK, adios to you, buddy", but these options aren't very applicable to any decent size CS project. For the group presentations that we did, we were assigned a grade based on the whole presentation that everyone shared. Theoretically, this forced everyone to work together so we would all reap the benefits of our labor, but some groups had people who slacked off knowing that the grad student and/or pre-med major would cover the work to save the grade. This never bothered me much since I figured that the slackers would only contribute poorly anyway, but YMMV. If you combined the shared grade approach with a way to reliably track what each group member did (CVS? code commenting?), you could weight the individual students grade relative to their contribution. A way to reliably do this is left as an exercise for the reader:)

    --
    "Bugger this, I want a better world." - Jenny Sparks
  126. A different approach by The+Man · · Score: 1
    One of my professors encouraged his students to work together on any project as much or as little as they liked. It was perfectly acceptable for the entire class to turn in the exact same code. There was a catch, however - you had to give credit for anyone else's code or ideas that you used. The grading policy was that you would receive credit for the part of the work you did. So you could easily use a few ideas from other people, and give them a few as well, and earn a high grade. If you failed to give credit, you received an F in the course.

    There were also separate team projects, which seems like a pretty realistic scenario - most times, you'll be given a small part of a project and told to just go do it. Later you'll integrate it with others' parts, but for the most part they're independent if well-designed enough. You can get ideas and help from others but you can't rely on coworkers to do all your work for you. Pretty close on parallel in my experience. Maybe the real problem is the "academic honesty" policy. Code sharing is not necessarily cheating.

  127. Doesn't group work happen automatically anyway? by JayDiggity · · Score: 1

    I'm a CS major at a University, and, in a lot of classes, coding is supposed to be done alone. However, a lot of groups form naturally to help each other, no matter how illegal this all is - it's a matter of friendship and survival. If mandatory groups were assigned, friends would still get together, but that whole group would benefit. Is this wrong and immoral? Quite possibly, but so is downloading MP3s.

    As a sidenote, my Computer Architecture professor says "Feel free to work in groups of 2 or 3, but if you can't do the work on your own, you're screwed for the exam."
    And my CS Theory professor says we can only meet in groups but "cannot walk away with anything written on paper." That's like telling a 2 year old "Be sure not to play with that fun-looking toy!" - it'll never fly.

    1. Re:Doesn't group work happen automatically anyway? by scott1853 · · Score: 2

      my CS Theory professor says we can only meet in groups but "cannot walk away with anything written on paper." That's like telling a 2 year old "Be sure not to play with that fun-looking toy!" - it'll never fly.

      So maybe it won't fly with everybody. Some students will copy others work. Maybe the prof. won't find out and they'll get a good grade. They'll graduate and go on to their first job.

      Then the interesting things start to happen. Such as they'll have to start explaining why they can't learn basic skills associated with the companies software. They'll have to explain why they can't get any projects completed on time. This is actually a good thing, because it makes the job market that much better for me :)

  128. Forced Team Work by mage_6x · · Score: 1

    I am currently attending StonyBrook University in New York and am forced to work in a group for one of my CS classes. There are numerous ways in which you can potential take advantage of the situation, so that other members do more work than you. However, the few checks that are down, is on top of the work required for class (as a group) we must provide a list of what we have done over the course of the week, as an individual, which is a powerful check, when checked against current project performance, as well as what other people have submitted. So cheating is not a huge issue.

    I believe that there is a huge need for this type of work, because without it we would all be ill prepared for the real world, and even with such projects we will still be ill prepared.

    When you work on projects in groups (greater than 2) you become aware of different personal expertices, and how to best use those to achomplish your goals as fast as possible.

    It is hard at first, but it is a great way to learn. Group work allows you to persue larger projects than you could persue on your own, which helps to improve the class enviorment.

    Overall group work is good. There is a time and a place for it. In some classes you do need to learn all of the basics, such as in your intro level classes, however once you have the basics down there is no reason to continue to work on your own when productivity and real world teaching would be better served by group work.

    links of interest: http://www.cs.sunysb.edu/~cse308 - course web page
    http://virtucom.codearama.org - group project page

    --
    -mage-
  129. Attributing shared ideas by staplin · · Score: 2

    When I was in school, most of the projects were individual as well. But the CS department also realized the disadvantages to working in a void.

    Therefore, it was not considered cheating to work out algorithms, etc, in a group provided that that group was attributed in the source code. For example, if I ask Joe Coder for help with a method, my comments had better give him some credit. And if I work out an algorithm as part of a group, I'd better have a big comment at the top of the file listing the members of the group.

    It's hard to enforce the attribution of help from individuals, but if it's a group attribution, you can just cross-reference the members' credits. And if someone has the same code that isn't listed in the group, you have a list of people to check with (it's not impossible a name got left out by accident).

    Of course, this doesn't mean that all the code will be verbatim. You still want students to avoid wholesale copying, but sharing in ideas is fostered. And it becomes fairly obvious if a student has a bunch of group attributions to all of his code, and very little code written on his own.

  130. It's the assignments that suck by gelfling · · Score: 2

    Back in the Middle Ages when I went to school, the assignments were boring and rote and professors and GA's would mandate that there was ONE solution. Feel free to think freely as long as you do exactly and only what I'm thinking of right now. So of course all the assignments, if they were right at all, looked nearly identical.

    The problem is that in the workplace this is a GOOD thing. It's called good change management and version control. You want a consistant repeatable way to do something even where, especially where it is not optimal. In the workplace there are rarely if ever purely isolated competing teams trying to solve the same problem. Maybe that's a luxury in some specialized arena like embedded systems defence avionics or strategic weapons systems but in the commercial world that never happens. At least not to me in 20 years.

  131. Teamwork in college isn't so hot by nemesisj · · Score: 1

    I am currently a junior at a fairly well respected school with a great CS department. My experience has been one of dread concerning group projects. It usually boils down to the professor picking the groups, and then one or two people end up doing the entire project either because the others don't care or because they can't coordinate properly and fall behind. The worst are the "Business Systems" classes that combine us CS majors with Business majors. That is a complete nightmare as the BS people can't even do an html page properly, and the CS people end up doing everything, even the writeup because the BS people can't understand what they're writing up. The end result of all of this though is that this is probably close to how it's done in the "real world" and therefore this is good experience.

  132. I got good teamwork experience at school by baalz · · Score: 1

    At my school most of the later classes focussed on team developed projects. OS and compiler classes were pretty straightforward big group efforts, but the real interesting one was my Software Engineering class. The project, which spanned the entire semester, involved three interworking modules, with each person in the class working on an individual implementation of one of the three. After an initial design and preliminary developement period everyone reviewed a certain number of other people's work, and "bought" the two other modules they needed ("bought" modules gained significant grade points). As the project progressed and support for different things for different "customers" was called for, modules could be returned and new ones "bought" with "economic" (read grade) penalties for both dropped vendor and customer, though the newly "bought" module gained points. At the end of the semester the overall projects were graded on a speed test given a specific large input set (i.e. the fastest one got the highest grade).

    Generally, once you had proved you have basic coding skills (as in you're in upper level CS classes), the teachers would encourage working together, pretty much most stuff short of cutting and pasting code was cool most of the time. There was an official "intellectual honesty" policy, but really it was just there for the teachers to use in the case of blatantly lazy students. Pretty much it was just an extension fo the study group idea...

  133. Isn't college a little late? by Anonymous Coward · · Score: 0

    I don't know about you guys, but I started collaborating with my peers in kindergarten. I think that if you haven't learned to work/play well with others by the time you get to college, something is quite wrong.

    As an undergrad CS major, my courses took a variety of approaches to working together. In some classes, it was clear that you were supposed to do all the work yourself. In others, it was okay to discuss the assignments, but you still had to turn in your own work. In yet others, you could work in pairs or small groups and turn in a single copy of the assignment with the names of all collaborators listed. The policy for each course tended to depend on the subject matter and the size of the projects. Software engineering classes, where the idea is to learn about designing, developing, testing, and managing projects, lend themselves to collaboration. First year programming classes, where each student really needs to learn all the basics, don't.

  134. Small groups are great with the right group by Brighten · · Score: 1
    I largely agree: small group projects are great, if you get the right group.

    I'm a CS major at Carnegie Mellon. I've had only a few group programming projects. In particular, there's an operating systems course here which is a big deal, with lots of big projects (a shell, a terminal driver, a kernel, and a filesystem). I felt that I really got a lot out of working with a partner on these projects. The most useful bit was discussing the entire design together. When we both agreed that a design was workable, we split up the coding and went at it. We each saw a lot of things that the other didn't see (design considerations, bugs, etc.).

    I do wish I had an opportunity to work on more small-group projects like that. However, there are some considerations:

    • In a one-semester course, there isn't enough time to build a huge application. So, more than 2 people on a project probably isn't efficient.
    • If you're working with one other person, you really need to make sure that you have a good partner. And not just to get your A: if you're going to be working with someone for 10 or 100 hours, you need to work well with them in order to not go insane.

    That said, even though I've only had a few group programming projects here at CMU, I think that my education -- combined with experience in internships -- has prepared me well.

  135. Group work by MJN222 · · Score: 1

    I can't really speak for other colleges, but here at CMU much of the work for our "core" programming courses is done in teams of up to 2. However, the vast majority of the students here are motivated enough to actually do work on the projects. I like working in small groups such as that because you have the opportunity to tackle problems that, although still small, are actually interesting and non-trivial. One example is creating a decent Othello player and entering it into a competition at the end of the project :-). If we were forced to work alone, one of two things would have happened; 1. The quality of the players would have been extremely low, or 2. This interesting (to most) project would have been replaced by something annoyingly simple.

    --
    ---- Yay! I have a sig!
  136. "Teamwork" in college coursework overrated by MarkMac · · Score: 1
    It has been my experience that "teamwork" exercises at the undergraduate or instruction level (versus say a funded research project or non-graded group endeavor) almost always are failures. Failures in the sense of not being realistic. Firstly consider whether the instructor actually has any experience him/herself working in a team. Academia is not a team - these guys and gals are often at each other proverbial throats - individual empire-building is the norm. Secondly, you can't create much of a "team" or real team effort in just a couple of months when you are only working together a few hours a day at most. Thirdly, teams are usually graded as a whole so the slackers on you team are going to often get the same grade as you but by doing half of the work (and you don't have a manager watching over things ...).

    In college it is far better to focus on academic learning and also how to get along with different types of people. Leave learning the real teamwork stuff to your apprenticeship as an intern and first few jobs. You'll quickly discover that "teamwork" in the workaday world has many different meanings - few of which you'd ever learn in a classroom.

  137. Many are missing the point of a college education by johndoh · · Score: 1

    Many people feel a college education is structured with a focus placed on getting the student a job. This is how many students take it, in reality colleges and universities want to enrich the student as a whole. This is how most of the people in academia would like it to be. Of course starting salaries and big corporate sponsors are good for the bottom line. Working in groups may be a good skill for a programming job, but only through individuals practicing and working with pieces of code can they become enriched. Being enriched students they can then apply those skills learned through individual study to a "job skill". Just a view from a student AND a member of the work force.

  138. what ever happened to team sports and coaching by Anonymous Coward · · Score: 0

    A lot of people have related their experiences, but I have to ask, "is the problem of team work simply a lack of people skills?" There will always be problems with slackers and cheating, but that's real life. Deal with it.

    Every basketball player can't do what Michael jordan does and every programmer can't be great. For a bunch of geeks(mself included), we often forget the lesson of the bell curve. Those who are naturally talented and accelerate will carry those who are not as gifted. Sure people could benefit from more team centered projects, but how about take a step back and improve yourself outside of programming. Even if your classes do not support/encourage team projects, you can do it on your own. School are primarily there to provide the environment. It is up to the individual to take advantage of the situation.

  139. edumication by Anonymous Coward · · Score: 0

    The purpose of a CS curriculum is NOT to simulate the work environment. In school you are paying to learn. In the work environment, you are getting paid to use what you have learned.

    The purpose of a CS curriculum is to develop some mathmatical sophistication, and understanding of data structures and algorithms, experience with some popular software development models and some experience writing some useful code; in that order.

    To learn those things, you have to actually DO them. You don't get a good feel for, say balancing an AVL tree in an OO environment, if you only do a third of it while your two teammates do the rest.

    There are some projects that are more amenable to collaboration. A senior project that is designed to pull together many things you've already learned is ideal. Software engineering classes are also useful group projects.

    In my experience, the students who complained most about not being able to collaborate were students who either couldn't or wouldn't do it on their own.

  140. Lol, you think GPA matters? by Anonymous Coward · · Score: 0

    GPA only matters at your first job. After that it's all experience. You'd be better off trying to get a job with practical experience instead of doing an entire project alone. My wife graduated Suma Cumme Laude (or however it's spelled) and can't find a fucking job b/c a bad degree choice (which req's grad school) and my measly 2.97 GPA has me making 120k/year doing s/w engineering & admin. Hell if my company takes off i'll be loaded and none of it is related to group projects or GPA.

    1. Re:Lol, you think GPA matters? by Shotgun · · Score: 2

      GPA only matters at your first job.

      Agreed. But it matters at your first job. It determines whether they're jumping at you, or whether they're considering using you to fill in some holes. It makes a difference whether you're invited to IBM's exclusive job fairs like I was and then given first pick at openings for new grads, or having to go through the cattle line with everyone else.

      A good first job can make all the difference in a career. 8*)

      --
      Aah, change is good. -- Rafiki
      Yeah, but it ain't easy. -- Simba
  141. Sounds like a job for CVS... by base10 · · Score: 1

    Get a bunch of people working on the same project, and keep track of who did what, and when? That's pretty close to the project goal of CVS. Just have each class member log into a CVS repository to make their code changes and commits. Then, an audit of the history would show who did what, and who didn't.

    I use it here at work to see which of our production artists screws up my ASP/PHP code with their WYSIWYG HTML editor the most often, and then, of course, fix it. :)

    -e

  142. Class = solo, resarch project = team by leperjuice · · Score: 2
    My experience in getting my CS degree was thus:

    The work that you do in class should be a solo effort. It's job is not so much to teach you how to be a good coder, but to teach you the fundamentals. It goes without saying that while a good coder can write code to solve a problem, a great coder knows how to reuse other good code and save time and effort. But, of course, you have to pass through the initial stage of becoming a good coder. So classes are better for you to develop your internal skills.

    Conversely, joining a (slightly large) research team (for credit) is the opposite of being in a class in that you are taught to borrow and reuse what you can and to work and learn from others. Whereas a professor and a few TAs in a large class may only have a cursory time to go over your work, if you're in a research project you can bet that all involved will see (and critique) on what you've done.


    I did that and one of the first things I learned is how hard things can really be in the (pseudo)real world of a research project. Though I do reccomend arranging some sort of "Sempai-Kohai" relationship between graduate and undergraduate students. Often the Professor is so occupied with teaching and getting funding that they can't spare much time with the student except when things go wrong.

    --

    -- "I am disrespectful to dirt. Can you not see that I am serious!"

    1. Re:Class = solo, resarch project = team by Anonymous Coward · · Score: 0
      Good Points, as a C.S. professor group projects are only for good students, weak students can't or won't contribute to the group effort. A good student (actually any good practitioner) is characterized by
      • aptititde - ability to contribute and come up with innovative solutions if solving it using a known technique is not feasible
      • background - suitable education level to understand the problem and apply known techniques to solving it
      • motivation - the willingness to try. Trying is hard, a lot of people don't like to try, but trying and aptitude can make up for a weak background given enough time.


      As an ex developer (5 years between my B.S. and Ph.D.), I was amazed at the range of skill levels. I've seen people out of Ivy league schools with 4.0 GPAs who cannot program their way out of a paper bag, and people without degrees who were sound application and systems programmers. I saw the same thing in graduate school, and I'd say that group projects make it possible. While many students were really good and motivated, there were a few that relied on group support. Among certain international student groups, the pressure to carry weak students seems to be especially strong (many of their friends don't want to be responsible for their failures and try to protect the weak student from failing/being deported). Now programming is not everything for a computer scientist, but if you can't program not many people will want to work with you on computer science oriented projects in the real world or academia.

      As a professor, part of my responsibility is making sure that I reward the good students. The way to do this is to limit the resource allocation to the poor students and give good students interesting projects and offer them the chance to work in groups. Group projects can only work if the selection of the team is well done.

  143. RyeHigh by Gumpy · · Score: 1
    One of the "weeder" courses here at Ryerson has a resonable approach to this. The students work together in groups of about 4 on the core project but are supposed to do individual work on several assignments. The group members rate each other's contribution.

    The course is *killer* and if you want to do well you *must* have a good group. The individual rating helps, but if the group does poorly, 75% of 0 is still 0.

  144. Modular design by Mike1024 · · Score: 2

    Hey,

    Isn't there a better way? A way that students can be taught to work as a team yet still be able to tell who is pulling their own weight and who is not?

    You could put people into groups, and tell them to design code in a modular style.

    That is, you could put people into groups of about five people, tell them the task, and get them to divide the task into modules themselves, documenting the modules and to whom they are assigned. You could then mark each module's functionality, and the program's functionality as a single unit.

    For example, if you were designing a CGI script from scratch in Pascal, the group would divide the program into units, i.e. Get submitted data and parse into array, Convert hex-coded characters to characters and removing HTML metacharacters, designing output HTML and graphics, etc. etc. etc.

    They'd need to work out interface specifications themselves, etc. but if someone didn't pull thier weight / produced bad code / whatever they could be held individually responsible, whilst still working in a team.

    Just my $0.02

    Michael

    --
    "Goodness me, how unlike the FBI to abuse the trust of the American public." -- The Onion
  145. Leader two-way rating by SuperKendall · · Score: 2

    I had a team C++ programming class in college that I thought worked well - there were three projects, you worked in teams of three, and you got to be leader once - for each project the leader rating the two workers in various categories and the two workers rated the leader (or at least I remember it working that way). The team members were randomly assigned. I think your grade was weighted more heavily by the project you were team lead of.

    I think such classes can be very instructive - one project I was on was great, the team members were all great and the project turned out well. On one of the other projects, one of the team members kept saying he'd have his work done... then the weekend before the project was due we found out he was out of town to attend a programming contest! Just like in a real job, I had to stay up 24x7 to try and carry the load for the slacker and put something together to make things work so the whole project was not a total failure. Even with that experience I thought it was one of my more useful and enjoyable classes.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  146. Recognition by nick_davison · · Score: 2

    "Isn't there a better way? A way that students can be taught to work as a team yet still be able to tell who is pulling their own weight and who is not?"

    Unfortunately, in the 'real' world, all too little attention gets paid to who pulls their own weight and who doesn't. Even if you're lucky enough to get a manager who's good at doing it, you've still got the end user who doesn't care who pulled what weight, they just expect a finished product from the whole team.

    Arguably, therefore, having even less consideration paid to who does what is the 'better way'. It's certainly the more realistic one.

    I keep explaining to friends who are still finishing their degrees that the actual subjects you study at university are probably the least important part of what you are taught. It's the things you learn around the edges that have the real value.

    University gives most people their first experience working with uncooperative, unmotivated or outright incompetent team members. It gives you experience of managers (lecturers) who really don't have a clue how to manage, set hugely open specifications and then complain when you don't achieve the one tiny bit they were interested in, yet never spoke about.

    Along the way you get to make your first attempts at dealing with these issues and hopefully learn from the experience. At first you try the unproductive methods (yelling, trying to do all the work yourself, complaining to managers [lecturers] that don't care). Then you start to stumble on to the better solutions like understanding why the others are apparently so bad and looking at how you can encourage/help/cajole them. At first you get bad grades because the specifications are so wide, then you start learning to ask more questions, really probing to find out what they're after. You don't get to be great at dealing with these things during your time at university but at least you hopefully get to have made your first truly painful mistakes in a safer environment.

    Why doesn't anyone tell you all of this when you're going in? Why do the lecturers pretend it's about learning C++ and converting database designs to BCNF? Partly it's because a lot of the lecturers really, genuinely, don't give a damn about you, they're there for the easy life (as, sadly, are some managers) and partly because you have to learn these things the hard way and you'd only skip the lecturers anyway.

    So, to sum it all up: The less fair your team working exercises, the more realistic they'll be and the better preparation for the real world. It may suck but it's better you learn it in the safety of university - it'll be the best education you get there.

    These are all hard lessons to learn. After all, we nerds are generally tech focused, taking degrees in comp sci so we can do something fun rather than be politicing HR folk or whatever. The reality is that you'll rely on the teamworking skills about as much as the tech ones (besides, you'll probably be sent on some course to learn entirely new tech skills six months in to your first job) right from the start and will find yourself doing a lot more managing than tech within suprisingly few years.

    1. Re:Recognition by MikeBabcock · · Score: 2

      In sum, you learn how to deal with people.

      Unfortunately, the workplace and school both involve other human beings ... these will get in your way some times, but often aren't removable without jail time.

      Cross-reference Dilbert.

      :-)

      --
      - Michael T. Babcock (Yes, I blog)
  147. I know by Anonymous Coward · · Score: 0

    How about working in a group, and then if somebody
    does not "pull his own weight," he gets voted off
    the islan^H^H^H^H^H group

  148. Feeding the Cheaters by ChaoticCoyote · · Score: 2

    I get one or two messages a month from professors who've found some of my code in their student's work. I also hear from various students who want to download code from my books -- hoary and ancient as some of my C++ texts may be! ;) You'd think they could at least type in the code from the printed book... ;}

    Then there are the obvious students on the newsgroups, who ask questions that obviously came from their homework assignments...

    Yup, yup... I figure I've unintentionally helped thousands of students pass their classes in the last decade. I don't see much way to avoid it; given the size of the Open Source / Free Software community, and the number of lines of code available from all sources (freshmeat.net, anyone?) for download, it doesn't surprise me that many college grads can't actually code when they get into the working world.

    Many of them grow up to be developers in software companies, where they continue to succeed by "borrowing" or "reworking" publicly-available code. Or do people here really think that commercial companies don't quietly steal Open/Free source? ;)

    Frankly, I'd be less concerned about peaks at other student's code than I would about the overall ethical climate. It isn't much of a stretch to go from downloading MP3s to taking Free/Open code for use in schoolwork or workwork... after all, how can it be "stealing" when "information wants to be free?"

    1. Re:Feeding the Cheaters by MikeBabcock · · Score: 2

      That said, part of being a good programmer in the real world is knowing when to take something that's already been done and just improve on it instead of re-inventing the wheel.

      One way around this behaviour when its not desired is to force students to use cvs or another versioning system on a regular basis; their code modifications as they go along are saved along with comments. Your ability to comment your code for others' perusal is noted alongside how you went about designing the project.

      Just some thoughts ...

      --
      - Michael T. Babcock (Yes, I blog)
  149. Figuring out something for yourself... by gatkinso · · Score: 1

    ...is the best way to learn.

    Stealing your coworkers work (or shoddy code from the net) and passing it off as your own comes later. When you are a PROFESSIONAL. We call this "reuse."

    Now, get back to drinking beer... er, I mean doing your assignments.

    --
    I am very small, utmostly microscopic.
  150. That's pretty much like the real thing... by Fluid+Truth · · Score: 1

    If you think that, once you get into the work force, everyone is going to pull their own weight, then you're in for a serious reality check. In school, it may not be fair when one person slacks and gets a good grade based on the rest of the group's work, but the exact same thing happens in the "Real World(tm)." Unless you're in a very small company (or division, perhaps) where everyone can tell how much each person is doing, you're going to have the same situation where the whole team is recognized for the work that maybe only some did.

    I guess in that way, school really is preparing you for your career.

    --
    Apparently, of the rich, by the rich, for the rich.
  151. All we do is colaborate by Anonymous Coward · · Score: 0

    At my college we are required to work in teams on all programming projects. In the class I'm in now, I have a homework partner that I do all my assignments with. In my class next semester, the class with be split into 2 or 3 teams (it's programming in GL on these large immersive VR systems, and there are only two of them).

  152. I make assignments for the first "Team" Course by gte910h · · Score: 1

    At Georgia Tech, I write assignments for the first team course (cs2335). Its pretty easy to force the type of teamwork that you want to demonstrate if you word the project correctly. If you give a project that has clearly conceptually diffrent parts, you will often find teams split the assignment and each do a part, then integrate their parts together.
    Another consideration is that coding ability is NOT all that is necessary to make teams work well. I personally am weakest at banging out code, however my design awareness, and ability to communicate and realistic scheduling make teams that I am a part of do extremely well.
    The "group as a whole" philosophy is shown in the grading of most assignments in group classes. Who cares if X did 38% of the work and Y did 62%. Y learned that much more. The important thing is for them to do this intentionally, and to both gain from the experience.

    --
    Want to see every step I took to start my company? http://www.rowdylabs.com/blogs/pitchtothegods
  153. Nothing You Can Do by kjell79 · · Score: 1

    My experience has been that it is best to have individual coding assignments. I was in a group coding project at college and one of my partners was so bad that I flat out told my professor that if he was in the work force any manager would have fired him by now. I am a huge advocate of individual work and not group projects. I hate to have to bust my butt even harder because someone slacks off, then the slacker is rewarded with a good grade. CS courses should instead focus on an individual's ability to grasp and implement coding priciples. Whereas you can save group projects for more abstract software engineering courses that focus mainly on the analysis an designing stages of large computer programs.

  154. I'm not sure about this... by Anonymous Coward · · Score: 0

    Grading your code, they definitely do... Assess your performance? Well, that is rather rare these days. Usually it is only an assessment of your test taking skills and/or a method of just weed eating. Except here, they like to weed eat the small sprouts that haven't matured yet and look 'plain' yet months later find out they have all weeds and no foliage or vegatables... mmmmmm vegatables.

  155. Cheaters by greesil · · Score: 2, Interesting

    This is kind of a side blurb, but I thought it might add to the discussion. At my university, I had the good fortune (it was a requirement :) ) to take a basic programming class where we were taught C. We five homework assignments, each one getting progressively harder. Each assignment was logically a computer program, not yet compiled. All work was turned in electronically via the CS school's server.


    Anyway, there is a search algorithm that scans the code you just turned in and looks to see if it is similar to any previous assignments turned in. It doesn't just scan variable names and function names, but it also scans the way your program is set up (logic trees?). If it finds a high probability match, it informs the professor.

    Some people were really stupid and just copied their friend's homework line for line... some were more clever and changed the variable names. As it turned out, something like 10% of the class was cheating. They normally don't pursue cheaters--ie. the red tape is impossible to cut through to get someone punished, but in this case they did their damndest. This was last year's freshman/sophomore class...



    -greesil


    "When in danger or in doubt, run in circles scream and shout" -- Lazarus Long

  156. How 'bout open-source projects... by fleeb_fantastique · · Score: 1

    Perhaps the instructor could find a variety of different open source projects with individual bugs that need to be repaired, and assign these bugs to the students to resolve.

    In this way, the student learns to work within the context of a team (the open source project in question), the instructor gets to see how well the student works, and cheating becomes difficult because each student has different problems.

    Admittedly, the instructor would have a lot of work cut out for him to assess the difficulty of each assigned bug. The students should receive bugs that aren't so impossible as to make the student feel a failure, yet not so easy as to be ignorable.

    However, such work would be about as realistic as you can get in a scholastic setting. You're dealing with real problems that exist in the real world. You'd be working with real people on real projects. And bug-fixing constitutes the majority of what entry-level programmers find themselves doing anyway; it's a great way to learn common coding problems, and by constantly examining other people's code, you may learn their idioms and tricks.

    --
    And so it goes.
  157. Academic Honor and other silly notions by Anonymous Coward · · Score: 0

    While I think there has to be something to prevent the wholesale theft of IP, code, etc. at a University, I think the way most schools handle it(including mine) is a complete waste of time. The long and short of it is that it doesn't stop the people who are truly cheating. Our policy in most cases is to have us sign a meaningless statement stating "we didn't cheat and we'll rat out anyone who did". This is absolutely useless - people who do cheat still sign, and those who don't usually won't know someone else is cheating anyway because they are too busy doing their own work, and not looking out for cheaters! To make matters worse, the prof leaves the room during the exam! When we have blue book exams(you provide your own paper) people write notes in the margin and erase later, TI/HP calculators are programmed with text files with important info. Some profs have tried writing scripts to mass comparisons on electronically submitted work - they often have a few years worth or submissions databased so blatant cheaters will not get caught, but the people who survive by cheating will almost never be snagged.

    What is so bad about all this paranoia about everything being 100% your ideas, sprouted from your brain is that most people are incapable of working in a TEAM! People don't open up and discuss, they are hesitant to do anything outside of what they are assigned by the group(like debugging other code), etc Add that to the fact that most engineers are severely lacking any social interaction skills....but that is another story. In my OS class, well over half of the class dropped groups after the first project led to terrible scores due to a lack of cooperation.

  158. Group Projects... by Vuarnet · · Score: 2

    Well i've had both good and bad team-work experiences in college. And what I've learned is that choosing the right team-mates has more influence on the outcome than the difficulty of the project.

    In one case, I got assigned a team-mate (a friend of mine) who had a programming style just like mine. We both thought of the same things while programming, and we had a lot of fun during the semester. In the end, the project was a complete failure: we didn't complement each other, we were both lacking in the same areas, and therefore the project suffered a lot.

    Next semester, while taking the same class (ouch!) I got assigned another teammate (even though my friend from the last semester wanted me to be his teammate again). This time, having learned from my previous experience, we started out dividing and assigning most of the work, depending on our areas of expertise. I was good at coding, he was good at planning, we were both good at database designing.

    That was the best project I've done in my life. We were finishing it days in advance of the rest of the class, and although we did spend a lot of sleep-less nights coding (we drank so much coffee it looked like we had a Starbucks franchise in his kitchen), the result was really worth it. We got an A+.

    So what did I learn in those cases?

    - Don't confuse friendship with teamwork. You can have great friends who make lousy team-mates, and viceversa.

    - Always work ahead of the schedule. It doesn't matter if you get zero sleep in the first weeks of the semester, you'll be thankful in the end, when everyone else has a ton of schoolwork to do and can't help you.

    - Find team-mates who complement you. You suck at DB design? Get someone who's good at it. You haven't learned to code well? Join someone who can, and make yourself useful drawing diagrams and designing the project. Oh, and learn to code while you're at it.

    - Drink lots of coffee and get used to the lack of sleep.

    - If you're stuck with a team-mate who's dragging you down, talk to your teachers. You can't always save a big project by yourself, and if you try you could affect your other courses. Sometimes it's better to get a regular score in a project than to waste your time trying to save it. Besides, many of the teacher I had, when confronted with this situation, decided to split the score according to each student's contribution, so you had teams where the good student got an A or B by proving he had worked well in the project, and the other student failed the course.

    - What's good for the team is good for both. If you can learn something, anything, from your teammate, try to do so. And viceversa, try to help him (him, her, whatever) in the areas in which he's lacking.

    - CYOA. It's your future that's at stake here. If you find your teammate is cheating in the project, try to make him stop. If he doesn't stop, talk to your teacher. It may be true that nobody likes a snitch, but you're risking a LOT by helping him.

    I hope all this drivel actually helps any CS students out there. Good luck!

    --
    Tongue-tied and twisted, just an earth-bound misfit, I
    Learning to fly, Pink Floyd.
  159. Team work is all very well but... by shankark · · Score: 1

    There are certain issues in having people work in a group on an assignment.

    1. First of all, as you rightly point out, how would you measure each one's capability? The issue isn't to find out who is actually pulling his weight around. That would be unfair to the others and also tough for the graders to figure out. The issue is to define problems in such a way that they can be divisible and each person can be assigned one segment that he can finish, and then when everyone is done, work in a group to co-ordinate the segments into building the whole. The problem with this is not all problems can be divisible into equal effort sub-problems.

    2. There is also the issue of what teams one would form. Again, there tends to be unfairness in this. If given the freedom to form a team, the real good coders will group up, and beat the shit out of the weak coders in terms of how much they can do.

    3. Thirdly, in one of the courses I am taking, the assignments were originally expected to be done in teams of three. But then, there were some off-campus students who were also taking the course, and they felt they would get a raw deal out of this. With more and more courses going online, I am not sure if teachers will look at teamwork as a viable alternative.

  160. It Can Be Done by Knight2K · · Score: 1

    In my senior year, I took a class which focused on the process of software engineering, and less about the code itself (though a useable program needed to come out of it). The mechanism that help in the evaluations were regular reports to the professor from the individual groups on where the schedule stood and who was assigned, which task. Actual coding was fairly collabrative. The class mostly graded our understanding of group design and project management, so we had to produce reports and specifications on our own.

    More importantly, a project lead was chosen out of the group who had a limited amount of influence on the final grade for each team member. So in theory, good work and effort was rewarded, and slackers were punished. Of course, you had to have a fair-minded project lead, but you need to have that in the real world as well. ;-)

    --
    ======
    In X-Windows the client serves YOU!
  161. Teamwork is overrated by Whip-hero · · Score: 1

    This is going to sound like a troll, but I'm really not trying to stir up a fight; this is my honest opinion and the product of a lot of deliberation. This question seems to apply directly to Software Engineering courses... I took a couple of different Software Engineering courses in college, and they only taught me one directly applicable principle of the real world:

    When working in a team, the slacker who's just trying to get by recieves the promotions, and the talented individual who cares about his work gets to stay exactly where he is (until he gets fed up and goes for the bare minimum like everyone else).

    In my case, I carried my SE team by single handedly finishing the project. The other members passed while I was flunked, even after I complained to the instructor. I think what actually happened was the manefestation of the instructor's "Engineering Ideals". He believed that teamwork was vital to a successful project, so he made sure that teamwork was the only way to pass.

    In a broader sense, I think that engineering's typical "teamwork mindset" is far too conventional. You never hear about truly revolutionary advances coming from large group efforts- people like Einstein, Feynman, and Newton worked alone. Genius is never attributed to a team. I'm not trying to cut down great team projects like the Apollo program, or large construction projects; I'm saying that they always take conventional ideas to a grand scale. Even the revolutionary elements of their design can be trace to an individual.

    --
    --WH--
  162. CS major at Virginia Tech by Kupek · · Score: 3, Insightful

    I'm a junior computer science major at Virgina Tech, and I have noticed this problem myself. I can not work in groups in school, but I will have to when I graduate.

    A corrolary of this is that I only see my own code . I can't see classmate's code because that would be an honor code violationg. And I can't see my professor's solution to the problem because they don't want their code floating around, in case they ever do a similar assignment, or if another professor does a similar assignment.

    In my math and physics classes, the most effective way to learn how to work out a problem is to see someone who knows what they're doing do a similar problem. There is nothing analagous in my CS classes.

    In my physics class, it's encouraged for us to work in groups on the problem sets--it helps us understand it. When I went for help in my first physics class, the first thing my professor asked was if I was studying in a group.

    In my programming intensive CS courses (most of them), we work in a void.

    This is in direct opposition to the job experience I have had. I continually was asking questions in order to get a better feel for what I needed to be doing. For one of the bigger projects I worked on, it was an aside comment my boss made one time during lunch that prompted me to realize the best way of implementing the system. Real people do not work in a void.

    But CS majors do.

  163. Special Code Editors could be used... by Saltine+Cracker · · Score: 1

    Perhaps something like this would work:

    I once worked for a company that had customized an editor (this was on a VMS system and I can't remember the name of the editor). The editor was tied into a source control system which required a username and password. So when you fire up the editor it prompts for the uname/password and logs you into the cvs-like system. You put in the source file you wanted to work on and the editor checks it out. Then as you make changes (in what looks like the original file) you actually make changes in a tmp buffer. When you write the changes so you can compile and run them, it takes the tmp buffer and makes special comment tags showing the user and date/time stamp for the change. It also was setup to make a special comment tag around any code that was directly changed or removed (as opposed to new code added). This way there's a history of the code's evolution...not only the who/when aspect, but the what aspect as well.

    Personally, as a college intern who hadn't programmed the language before, I thought this was awesome. I mostly worked bug fixes so it was great to be able to see what the original coder had done and to know who he was, or what he might have changed that created the bug.

  164. hence SW Engineering Classes by robi2106 · · Score: 1

    The University I go to teaches several classes at the senior level aimed at narrowing the gap between real world and academic programming environments. One class is a semester long group design project. The project is for a real world customer (one group coded a web front end for the schools class registration DB). This class is a taste of the coding industry. You use a file version management tool (like Clear Case) you develop time lines, goals, everything. The other class, which is taught before the group design class, is a SW Engineering class taught by a SW group manager at HP. Everything involving the control and flow of a SW project is covered extensively.

    Both of these classes give a very good taste of the jobs in store for the CS grads.

    robi

  165. Instructors should be more clever/thoughful by Anonymous Coward · · Score: 0

    How hard would it be to have a group project, where like in the real world, individual development tasks (i.e. build the framework, build the gui, build component X, build component Y, etc....) were given to individual team members. All components, and the framework should be near equivalent in work/skill needed, and relevant to the course material. All team members need to work to get their project working to do system tests, but if one or more members didn't pull their weight, the instructor could plug the component of the hard working student into his framework and mark it, or use the framework of a hard working student, with the instructor's components. This way, you get real world team experience, learn how to follow project deadlinees; learn how to follow design documentation to interact with other co-worker's code; yet you can be marked individually.

    this is more work for the instructor, and in my experience at university, this means that 99% of them won't do it.

    just my 2 cents.

  166. more theory, less co-operation by gumby42 · · Score: 1

    I actually do not like this 'practical' stuff. I feel that computer science studies are far far too much just pereparing for the real world get a job type plan. IT annoys me to no avail, as most computer science students know nothing about computers, and only want to leran to get a job. I think this is a poor reason to learn. I wish that computer science classes were far more filled with theory and much less practical stuff. northeastern university for example, even has co-op, and forces you to go on 3 co-ops, which does not really help you if you just want to go on to graduate school, and then gasp, onto research and not become one of those business office working droids who sole purpse in life is to get more money.

  167. They teach programming, not software development by gosand · · Score: 3, Interesting
    I think the biggest problem with college courses, in CS anyway, is that they teach PROGRAMMING, and not SOFTWARE DEVELOPMENT. There is such a huge difference.

    The best course I took was a senior level class called Software Engineering. I worked with 3 other guys on a project all semester, and we didn't write a line of code. We had to come up with requirements, a schedule, a budget, test plans, designs, etc. But we didn't write any code at all. The goal wasn't to program, it was to design software. There is so much more that goes into software in real world companies.

    I don't even know if they still offer that course, it was back in '92. I still have the book from it. I ended up getting into Quality Assurance, which they DEFINITELY don't teach you in school.

    When I interviewed at Motorola after I graduated, I brought my project from that class. I was to interview with 5 or 6 people throughout the day. I showed the project to the first person I interviewed with, and she said to make sure I showed every other person I talked to. I later found out that it was a big part in getting me the job.

    You can talk all you want about "being able to work in a team" but until you do it, you don't know how tough it can be. Organizing, planning around people's schedules, and yes, dealing with people who aren't as motivated as you are all real world applications.

    Maybe things have changed in college since I was there (there was no internet back then - ack!). But knowing that the instructors probably are having a hard enough time keeping up with trends, they probably haven't. I think in addition to programming, they should teach sound software engineering principles as well.

    Michael

    Fight the monopoly and the evil
    More at poundingsand.com

    --

    My beliefs do not require that you agree with them.

  168. Re: CVS - Gregory Wilson's idea by Anonymous Coward · · Score: 0

    When I was in school, everyone seemed to submit their code at 11:59 PM, since the deadline was usually 11:59:59 PM.

  169. groups by mlong · · Score: 1

    For my last senior year class, the entire class (about 20 people) had to program a real-world program that would be used by the university to track housing assignments. We split the program into logical sections and 2 people worked on each part. The professor basically did nothing during this period, so we had to take complete responsibility for it. It turned out fine and I think we all learned something. I think the key is to wait until senior year or so as the early classes have a lot of people who are not serious about their degree or college.

    --
    //m
  170. Speaking from experience... by Lostman · · Score: 2

    I dislike working (in a class) in a group -- ESPECIALLY in upper level math and computer science classes...

    When you get to a certain level, people tend to either "know their stuff" or dont... (no real in between).. in all the groups I have been "placed" in it has always started with me having to first reteach the lesson/example to my group and then walk them through what we have had to do. Havent had to work in these groups any more since I explained this to my Profs (and scored 99-100% on all tests I have had)...

    Of course, in a workplace environment we expect to have weeded out all the people who didnt understand it.. you will be working with (more or less) equals... so it is assumed that you can actually HELP each other, rather than just foisting your work on another person in the guise of asking for help...

    So (in other words) I am against working (forced working) in groups in a college/educational setting...

    1. Re:Speaking from experience... by pkesel · · Score: 1

      Of course, in a workplace environment we expect to have weeded out all the people who didnt understand it.. you will be working with (more or less) equals... so it is assumed that you can actually HELP each other, rather than just foisting your work on another person in the guise of asking for help...

      You're lucky if you've found such a workplace. It's not uncommon at all to drag dead weight with you throughout your project. What's worse is that while you're getting things done the dead weight is telling everyone how hard things are and how 'the team' is solving it. The clueless bum gets tons of face time with management and comes out shining.

      --
      - Sig this!
  171. Cheating / Group Projects / Professors by battlinbill · · Score: 1

    I got a CS degree not too long ago and I remember all too well this policy of cheating. I think that the code you write in college has no place in the real world other than to judge your own abilities. By copying someones answers you will have just defeated the purpose of the assignment. All I know is that because of having to do all my assignments myself, I feel confident in my own abilities which in turn will greater benefit a team. On another related topic is group projects. When I was in college (all but 2 years ago) I had a handful of courses that emphasized group work. Some courses suffered from having assignments done as group work and some couldn't have been done without it. One class the professor decided that it was time students learned to work in groups, so we were divided into groups of 4 to tackle a project that was meant to be done individually. His motives were good except he also forgot to teach us the essentials of working in a group as opposed to on our own. This led to 1 student doing and 3 students watching - a very poor idea. On another front I had great group assignment in a later class where we had to write compression / decompression utilities from scratch. It taught us a lot about planning and dividing work up since the professor went through how we could tackle this assignment efficiently. One final thought to all this is that if you are in college you must remember that all the lessons you learn there are not the final solutions. Wherever you go after leaving will decide exactly how you will work.

  172. Team work in college by blazin · · Score: 1

    Team work in college is great if you empower the team like they would be elsewhere.

    I had a team I was involved with in college where we had one individual who didn't pull his own weight whatsoever. This was even ok to a point since the rest of use could pick up the slack.

    However, this same student was responsible for keeping track of all our project materials and presentation slides. On the day of our presentation, he neglected to show up at all, so in effect, if he'd been doing nothing we would have been better off than what happened.

    We talked to the instructor and found we were allowed to fire the student. This responsibility fell on my shoulders and I had to take him aside and tell him that he was no longer in the group and would no longer be part of our project. Since it was near the end of the semester at this point, he wasn't able to find another group that would accept him and he ended up having to repeat the course.

    Tough, I know, but fair, and he saw it that way as well in the end.

  173. Teamwork isn't everything .... by Anonymous Coward · · Score: 0

    I go to school right now as a CS major. Before you go into the workplace and work in a team you need to have people who can do things individually. Working in a team together doesn't let teachers ensure that each student can do what needs to be done by themselves, at least in all of the lower division classes.

    In classes that are designed to teach you about bigger software projects you do work in teams at least at my school, however that is usually on a final project.

  174. CVS Anyone? by vtechpilot · · Score: 1

    I don't see what the big deal is, having students use a properly set up CVS system will show exactly who made what changes when, and in what order. Of course you do have the issue of students writing code that never gets committed to the repository because it is bad, wrong, or ugly. This to wouldn't be a bad thing because even if it does get committed and then rolled back, rewritten and recommitted it shows that the students saw something that could be better and fixed it. That would be tangible proof that the student actually learned something. What CVS isn't part of the course? Personally version control is something any CS major should understand, and qualified CS teacher (Prof. or T.A.) should be able to teach.

    --
    Slashdot is an anagram for Has Dolts, and I am Dolt number 468543
  175. 2 College courses. by Manax · · Score: 1
    I had two classes in college where I worked in teams. One was a software engineering class, the other was a OS class where we wrote an OS.

    In the SE class, we broke ourselves into teams of 4, and managed the best we could. I don't remember how exactly this was done, but I do remember that we were told that if we didn't get a finished product produced, we should have a test harness to show that our part works. I think this is a good step useful for begining classes.

    In the OS class, we had to work as a team to produce a real OS. Typically the only people who took this class really CARED about OSen and so would put in heroic effort to get the thing working. The grading was done in several parts, one being a final presentation, and another being a form used to grade yourself and your peers.

    If you thought you did a lot of work, but the others weren't pull their weight, you could say so, and presumably once the prof looked at all the reviews, he could figure out sorta what was what and who was doing good work or not...

    Incidently, I did something a little, perhaps, controversial (although I didn't really think too much about it at the time). One of the tasks I had taken on was to create an ethernet driver for our OS, based on some code we got from Sun (these were 3/20s I think). Myself and another guy within a different group got access to this code, and we were the first to attempt to get it working. I never did, but he did. I therefor attempted briefly to take a copy of his working code and use it within our OS.... in this I was also unsuccessful.

    Well, during the presentation, I was going through the list of things I had worked on, including the enet and the fact that I had taken his code and attempted to use it... I'm suprised I didn't get talked to or repremanded about that, but I had two things going in my favor. 1. I didn't attempt to deceive anyone about the origin of the code, 2. I didn't actually get anything to work.... I hope the honesty was the real key. It shouldn't be a big deal that I took some of someone elses code, but that I give proper attribution. In lower level classes, the doing is the important part, whereas in the higher level ones, the understanding is presumably more important...

    So, to summarize, I think it would be good to have team projects like this, where you can do several things:

    1. Provide a mechanism to give feedback on all teammates and yourself.
    2. Provide a forum to evaluate each individuals understanding of what they provided.
    3. Provide a mechanism for individuals to demonstrate their own piece, when/if there is a conflict about "who's fault" something is.
    4. Provide constrained environments where sharing of code is encouraged.

    These two questions seem to be recurring. "How can college mimic real life better?" "What are college courses really trying to teach?"

    These are certainly difficult questions, ones which need continual reevaluation, as society/industry changes and evolves...

    Hope some of this helps, even though it is real late in the discussion...

    --
    "Why should I be content to simply live in this world, when I, as a human being, can CREATE it?" - Oertel
  176. Reality COLLEGE by newSlashUser · · Score: 1

    Yeah yeah, lets have one of those reality college's with the weakest link theme's. That would totally work out like you want :-D

  177. Good balance at Utah by mac.newbold · · Score: 1
    Doing a BS in CS here at the Univeristy of Utah, I thought they kept a good balance between allowing collaborative learning and preventing cheating. The general policy in most of my classes was this:
    1. You can work with other people while thinking out your solution, even to the point of working out some very high level pseudo-code together.
    2. When it comes time to write the code (or other solution), it better be your own.
    When I was a TA for an introductory class, we used a program out of Berkeley called MOSS (Measure Of Software Similarity) to check for cheaters.

    It made it very easy to check for people who had copied and modified code, or worked from the same printout. If you feed it examples in the book or from the lectures along with the submitted solutions, you can also find out who worked independently from a common starting point.

    After completing the program there, I can say that it definitely did create an environment where students could learn from each other without having to worry about being accused of cheating. We frequently left our collaborative discussions with a much greater understanding that if we would have simply done the assignment alone, and that type of learning is something a school should allow, foster, and encourage.

    --
    Does the name Pavlov ring a bell?
  178. Rose-Hulman Inst. of Tech. by Anonymous Coward · · Score: 0

    At Rose-Hulman, just about every CS course has some sort of final project that takes several weeks at least to do and is almost always done in teams of 3-4 (give or take). Lectures are for learning theory and ideas, projects are for putting them to work.

  179. Two approaches by CheapVerbiage · · Score: 1
    Different professors ran their team projects in different ways, which can be grouped into two categories:

    1. The students were broken up into assigned groups, usually by something arbitrary like the spelling of their last names. This produced a mixture of competency levels in each team. The outcome was as described in other posts, where the people who cared the most about doing well in the class carried the others. (I especially liked the one post that called a person who did all the work a "doormat" -- it's easy to make someone else into a doormat when you have nothing to lose.) These projects were effectively no different than working alone or with one other person.
    2. The students were given the option of doing the project alone or in teams. Based on my past experiences, I initially wanted to work alone, but something really interesting happened: other students in the class approached me and asked me to join their team. I knew them to be some of the better students around, so I agreed, and we spent some very productive time working together on the projects. I got a lot more out of that course than I would have if I had chosen to work alone.

    The moral of this story: the battle for successful teams can be won and lost in the initial selection of the team members. If you can't find good colleagues, you are better off working alone. If you can find good colleagues, you're a fool if you don't collaborate with them.

    --

    Measure your wealth in hours, not just dollars.

  180. Working together is just *one* thing to learn by urdak · · Score: 1

    True, working in a team is a useful skill. It is something you may need to learn (though most people already have that skill by the time they leave high-school and polish it on their first job), and maybe even practice.
    But if a typical CS student (say) 40 classes, isn't it enough to practice teamwork in, say, 4 of those classes? If all those classes, or even half of those classes, emphesized teamwork, you'll end up generating graduates who are great at team work (this includes professional slackers, who have perfected the ability to cause others to work for them), rather than people who actually know the material.
    If you want to be a "programming drone", then by all means, perfect your skills of choosing and working in teams that will make you look good (regardless or not if you actually did good). But if you want to be a really good programmer, worthy of your CS degree, you'll need to always be tell yourself the following: I *can* do this all on my own. I *am* good enough. The reason I am cooperating with others now is to finish the job more quickly. However, If you are cooperating because others know more than you, especially when you're in a stage where you're supposed to be learning (i.e., during your CS studies), you're just hurting yourself.

  181. Problem with group projects... by gothic_wolf · · Score: 1

    The problem I find with "group projects" is that a lot of times they are a cop-out because the teacher is too busy to actually teach. Plenty of people DON'T pull their weight when in a group project. (although maybe less so in the software related courses) And it often can be a joke and waste of time to the smarter students.

  182. small groups of 3 by bobaferret · · Score: 1

    I went to Earlham college, where one of the main overall ideas for the campus was community. Most of our classes expressed this idea by doing things in small groups. In the CS Dept. We usually had groups of no more than 3 people. The professors usually tried to make very balanced groups of skills and personalities. They evaluated both how the group did as a whole in meetings with each group. during those meetings they also got a feel for how each member was contributing to the group. Politics were part of the whole process, and you just had to deal with them. That was one of the things they were trying to teach. However, our class size was very small.
    I think at a larger university, you could also do this, but you would have to have a very good GA pool. And professors who would let the GA be a little more autonomous.

  183. Opposing Idealogy ? by UnknownSoldier · · Score: 1

    In Acadimia, if you work with others it's called "cheating"
    In the workforce, when you work with others it's called "cooperation"

    *shrugs*

  184. Well by fizban · · Score: 1

    You should first make sure you have a good definition of what working in a team means in the workforce. YES, you have people around you who are all working on the same project you are, but in reality, you have your own code that you're in charge of and your own timeline that you have to keep. So, it's not like you don't have to pull your own weight in the "real" world.

    Having individual projects in college really helps you find your own strengths and weaknesses and helps you develop good work habits that are yours and yours alone. This should be what the majority of work you do at college is about.

    But, you should also have the chance to work in a team in 2 or 3 classes so that you can get a feel for how your individual talents will play out in a team environment. Perhaps your school needed to add a few more classes like these, or they did have them and you just needed to sign up for the specific classes that offered this type of work environment.

    There needs to be a good balance, but having gone to a large University where we had both team and individual projects, I would say that your college experience should stress the individual part first and foremost and then add in team-based development every so often.

    If you need extra work on your teamwork skills, join some student groups and work on them that way. That will also get you interfacing with people outside the CS department, which will also come in handy in the work world as well.

    Good luck!

    --

    +1 Insightful, -1 Troll. What can I say, I'm an Insightful Troll.

  185. Marking using demonstrations by darrellpfeifer · · Score: 1

    I am a community college instructor who teaches a second Java programming class. I used to use the traditional technique of marking individual assignments but found that students used a lot of each other's material, particularly when they became very busy.

    I mark a majority of my student labs now by asking the students to demonstrate them. Beforehand, I tell the students that

    1) The can use any learning style they want, including copying the work of others.
    2) I am most interested in their understanding of the material.
    3) I caution them that people who go through the pain of learning through practice are usually more successful than those who look at other's solutions.
    4) I encourage the students to work cooperatively, but not just pass on solutions.
    5) I tell the students that if they don't know/understand the material they are demonstrating, it will be a very uncomfortable time for them.

    During the demonstration I ask the student to

    1) Give me an overview of the code.
    2) Show me some of the important bits.
    3) Describe the flow of the program.
    4) Tell me how they would perform a simple modification (I usually have a number of them up my sleeve). This is often the best indicator of their knowledge since making a simple change often means changing code in several places.

    In general, I find that asking the students to demonstrate their programs works very well. It allows for immediate feedback and often some extra education, tailored to them. On the drawback side, it can be intimidating for the student, particularly the first few labs, and it is a bit harder to ensure that the marking objective.

  186. At Portland State University... by yorgasor · · Score: 1
    We have a "Senior Capstone," a group project for an actual customer in the community. It's great because you get real world experience (sometimes connections with big companies in the area you may want to work with), and you usually get to experience the entire development cycle.


    To handle the "who did what" scenario, you send in a weekly report to the teacher and you have regular group meetings with him. The end result is generally more fair than most group projects I've experienced.

    --
    Looking for a computer support specialist for your small business? Check out
  187. Explicitly disallow collaboration sometimes by Miles · · Score: 1

    In one of the courses I had, we were always allowed to collaborate, except on one assignment where we were told explicitly not to do so. I think this mode of working is fine every once in a while, because in the real world, you are occasionally asked to get something done, and everybody else will be too busy to help you.

  188. Absolutely by zpengo · · Score: 3, Insightful
    Coders that learn to depend on other people will find themselves struggling in a world where their coworkers will range anywhere from heros to zeros.

    Share the workload if you can. If you can't, you must be able to do it on your own.

    --


    Got Rhinos?
    1. Re:Absolutely by Taurine · · Score: 1

      Also in the world of work, look out for hero coders with a bad attitude. There are guys out there that have got to their point of power in the organisation by doing a lot more work than anyone else. Then they make sure that no-one else knows how to work with their stuff. They will do anything to keep anyone from being able to replace them or ever be able to be a hero in the same areana.

      Fortunately, these people eventually paint themselves into a corner. At my company, there is this one guy that thinks he is the top coder. He works on the company's first generation Internet app, where he was put to get the thing going. By making himself difficult to replace though, he now can't do what I did, which was get lifted out of the now practically legacy stuff, and move onto the new and exciting stuff. There are quite a few talented guys on his team, and they will all escape before he does ;-)

  189. It works ok at my school. by Elwood+P+Dowd · · Score: 4, Interesting

    Here at UPenn we're sortof balanced. One of the expenses of being balanced is that some cheaters don't get caught and some people get accused of cheating when they haven't. But most classes do allow us to talk to each other about our code. And, we have an elective group project class available after freshman year. Junior year is a required group operating systems project. You write a toy operating system to run on solaris. Senior year you have to do a project that can be group based or not.

    It would be very very detrimental to be a CS major here without taking the elective software project during your sophomore year. I'm not sure how anyone can survive junior year without it. In our (small) project, one of our team members basically lied about how much work he had done. We allowed him to procrastinate the integration and we were totally screwed.

    We wrote what he should have written in the wee hours, and had learned several valuable lessons. And those lessons certainly saved our asses several times in our next project. Most notably when we picked group members.

    Also, for those concerned that their partners' diligence wouldn't match their own, why on earth were they your partners? Did the prof choose for you? The best solution to that issue was what they did in my highschool. All major assignments were group projects. If the assignment was worth 100 points for four people, you would get a grade out of 400, and had to unanimously decide how those points were allocated to individuals. I had an A+ in every class that worked that way. And I cared more about my work then than I have in college.

    --

    There are no trails. There are no trees out here.
  190. The ArsDigita University experience by abe+ferlman · · Score: 2

    The policy at your University sounds very backwards. I can certainly understand the need to occasionally assess your individual skill to make sure they don't dilute the value of their diplomas, but without cooperation I don't even see how Computer Science can be taught non-cooperatively.

    I attended ArsDigita University last year, and it was explicitly the opposite of what you describe. Although there were individual tests and grades, the lab (where pretty much all interaction took place barring lectures) was built with about 40 computer workstations in an open-plan type office, with no walls separating the students from each other or the faculty. Most of the programming projects were collaborative group projects which were broken down into individual chores within the groups, and as a result we were able to do some pretty interesting things in a pretty short period of time, like building a Java-based Gnutella client in our January Java Class (which, like all of the ADU lectures and course materials, are available freely online, although the lectures are recorded in the unfortunate realvideo format). Here is a picture of some students collaborating intensely (or at least looking at something really interesting on Kevin's monitor :)

    Having someone nearby to talk to when you're going crazy trying to find what to someone else will be a really obvious bug, or to bounce your design ideas off of, or to help you recall the syntax for a rarely-used but difficult-to-remember-the-name-of linux command can be absolutely invaluable. This experience is hardly exceptional, as any number of books and websites devoted to Extreme Programming will tell you.

    There is a little friction when it comes time to decide who deserves what grade and why, since those within the group know better than the faculty who was really responsible for the work that actually got done, but this pales in comparison to the acceleration in learning that happens when you discuss specific pieces of code with another interested human being.

    Hence, I think you are right in thinking that your administration is wrong.

    Bryon

    --
    microsoftword.mp3 - it doesn't care that they're not words...
  191. Group Programming? What's that? by DCheesi · · Score: 1

    I actually did much more group programming in college than I have ever done in the real world. In my CS and EE classes, it was common to assign group programming projects. After some planning, we'd usually pick the fastest typist to enter the code, and the other(s) would stand over his shoulder and make suggestions/corrections.

    When I got out and started my new job, I did this exactly once; and that was my first project, done with a 'mentor' type (ie. somebody bucking for a promotion to management). After that, it was solo work in the ol' cube farm; even when working closely with someone, we hardly ever looked directly at each others' code as we wrote it.

    When I read my first article on eXtreme Programming methods (with pair programming), I thought back wistfully to those college days of yore. . .

  192. redundancy by abe+ferlman · · Score: 2

    but without cooperation I don't even see how Computer Science can be taught non-cooperatively.

    Obviously I meant "taught at all"...

    --
    microsoftword.mp3 - it doesn't care that they're not words...
  193. Moderated the wrong post... by javabandit · · Score: 1

    Well guys, you might want to mod the right post next time. The next post about the 'recruiter' was the 'funny' one.

  194. Problems with Group Work by Anonymous Coward · · Score: 0
    I recently graduated from a B. Ed. program and found out how problematic the group work issue is. Throughout the field of Education, group work is lauded as being an excellent experience for students as it teaches them so many different skills. From my practical experience in teaching in group settings, it rarely works this way. The basic inequalities of work load never go away, no matter how mature and responsible students are supposed to be at higher levels.


    Now that I am doing a second degree in CS, I am seeing how different it is to have classes taught by profs that do not know how to educate people. They use random groups and have people grade their partners. This is a horrifically irresponsible way to grade students in a University setting. All the typical problems of group work rear their ugly heads and cost people grades. It's very political and unbalanced.


    Of the group work models I have studied, their was one that may be able to work in upper year courses. A jigsaw group work model involves grouping students to work on individual parts of a problem and then members from each part group are grouped together to tackle the problem as a whole. Basically, you have a group of 1's, 2's, etc that are each working on an individual part of a problem. After a while, new groups are created with one member of each of the component groups. This means that each group will have a "specialist" assigned one part, but not limited to that part. There will be some overlap, due to collaberation at the beginning, but that will likely change within the problem groups. This can also help with having weaker students in a group as they will have one group help with their component and then another for the final product. This tends to be a much more equitable model, in amount of work and quality of work. In an object-oriented language, this can work pretty well.


    However, in early CS courses, this is pretty useless, as is the idea of group work. Programs are all fairly small and should be completed by individuals so that they can get a basis to work from.


    Also, most universities have a grade review board. Any group work model will tend to give higher grades and can cause profs problems when everyone in their class gets an A. Could lead to more curving.

  195. From the teacher's point of view: by Brian+Hatch · · Score: 4, Interesting
    I taught a number of programming courses at Northwestern University, and have offered group projects as an option for clasess. Those that wanted to do group projects - and I encouraged it - were allowed to do so, and said projects needed to be proportionally more complex than those submitted by individuals.

    Part of the writeup for a group project would include a brief (1-2 line) explanation of who did what part. Knowing this was part of the material turned in, it encouraged the loafers to make sure they did enough to claim part of the project. I also stressed that they needed to know how all the pieces fit together, not just understand their standalone part.

    The final exam for the class always was in a similar format as the midterms, with sample code to write, comment on, correct, questions about the topics covered, etc. This was worth 50% of the grade. The last 50% of the grade consisted of the following questions:

    1. How did your program do what it did, explaining in some detail your sections of it.
    2. Describe in detail the problems you had with your part of the project.
    3. What do the following snippets of code do, and where are they found in your program.

    The snippets would be taken from two sections of the actual project code, one which they (claimed) to have written, and one which they hadn't.

    I was extreemly pleased to see that, in fact, most folks had divided up the work evenly, and had a good understanding of the project as a whole. Now this could have been due to other members of the team explaining it to them, rather then them figuring out the other participant's code manually, but isn't that what you'd do in the real world?

    Those folks that could explain problems they'd encountered often noted that they asked for help from other members of the team. By this point in the class, I could already recognize the coding style of each student anyway, but I really appreciated the honesty, and how they did work together to produce something.

    Yes, there were some (I'd say 5%) that were tricked up on the exam and showed that they didn't actually write much of the code, nor understand it. However overall folks did a good job acting like they would in an ideal group coding environment.

    The only problem I had with group projects was with Thurston Howell (or at least that's what I called him in my mind, due to his attitude and voice) who had one of the classic coder failings. He got so caught up with getting the perfect interface -- being able to use emacs-style data entry editing abilities and such -- that he never got any of the backend stuff even started. Those in his group didn't know where to go, since they had nothing to plug their code into. Here's where a normal group may have a manager who could step in and help out, and they didn't quite have the real-world mentality that would have allowed them to come to me and tell me what was holding them up. But other than this one incident, group projects have always been an excellent thing.

  196. Aren't you taking classes that 'TEACH' co-op? by Anonymous Coward · · Score: 0

    I took three classes as my undergrad (the third because I 'wanted' to - the others were required); and though by no stretch of the imagination did I particularly *enjoy* the setup, but we were encouraged to work in teams .... and by that point in my education, you knew what you could write, and you were ready to share (or even 'flaunt' it) ... it's so amazing how important this would become.

    In my graduate days, I took two "team coding" classes, and both were unforgettable experiences: the first was the worst class I ever took, *because* of the group-think (I actually considered re-taking it so I could learn more about the material), and the other was the best - both due to the team dynamics involved. In the former (the one I hated), there was one group member that knew the least of the code - so guess who was in charge ?? of course, this kinda prepared me for the real world ....

    But the one that was a great experience, well, what might I say and not get misty-eyed about it ... we all worked our a**es off, we all learned the project inside out, we *continue* to keep in touch (one lives in Pakistan right now, btw), and for a few years we even exchanged gifts for the holidays.

    Are you hurting yourself if you don't fit in with a good team dynamic? Well, yes. Do you learn more in this kind of dynamic? Definitely. So should you learn to code on your own? I'm sorry, I forgot the question -- didn't you just read anything I just said?

  197. Real Group Wrok by XgregX · · Score: 1

    I am currently attending a state university in Minnesota and we have several classes that focus on group work in the computer science major. The class I am in this semester is called Systems Analysis and Design. One of the main goals is to work together with a small group (4-5). We take an actual database design problem from local companies and try and work trough them. Our professor allows us to "vote" students out of a group (sorta like survivor). If a student is voted out they get all group work up to that point then work the rest of it on their own. I am glad that we have the faculty that we do, because with out them I do not think we could have these types of courses.

  198. University of Toronto (caveats...) by Anonymous Coward · · Score: 0

    I was a teaching assistant at the University of Toronto CS department for about 7 years.

    We had a simple rule for individual assignments:
    You can discuss all you want about an assignment with anyone, including scribbles on blackboards, etc. But you can't take written notes with you away from the discussion, and that includes computer files. That is, you may have gotten ideas, but you still have to realize them in code/writing yourself. It's a simple rule, and a good rule. It keeps the spirit of cooperation but still gets the person to produce the end result themselves. We *do* want people to learn (especially from their peers), and prove it.

    And let me tell you, any experienced TA can pick off cheaters without a problem. You see the same crap over and over and over again. And if you think that's easy to circumvent, well that's what exams are for...

    (Caveats: my possibly faulty memory, things may have changed, etc. YMMV)

  199. Lower vs. upper-level classes by Lish · · Score: 1

    Personally, I feel that work done in introductory classes should be done individually, with group projects in upper-level classes. There's a few reasons for this.

    One, in intro classes, the purpose is to teach basic skills/concepts that everyone needs to know. If you work in a group, you miss out on some part of the project, and don't necessarily pick it up on your own. Working solo is the only way to guarantee that everyone learned what was needed.

    Two, lower-level classes are often where students figure out that a major is not for them. I've been in the unenviable position of having a group member drop the class halfway through a major project: it's not a good situation. This is more likely to happen earlier in a degree program, as people switch majors.

    Three, students at introductory level are often at very different skill levels. One freshman in CS might have been coding in C since age 14; another might never have coded before. Putting these two people in the same group at this point is unfair to both. Once the intro classes are finished everyone (supposedly) has the same base level of knowledge, so nobody is as significantly dragging the group down.

    Lastly, upper-level class projects tend to be more complex and lend themselves better to dividing among multiple people than simpler intro-level projects. By that point the basic skills are down and you are learning to apply them to real problems; part of that is figuring out how to plan and subdivide problems into smaller, manageable pieces. You're problem-solving, not just learning how to code. Larger projects make more sense to divide up.

    This is all just my opinion, of course, based on my experience. YMMV.

    --
    "This message is composed of 100% recycled electrons."
  200. Advice from someone who makes *hiring decisions* by rufusdufus · · Score: 1

    There are a lot of opinions out there thats for sure! I havent seen too many from the people who make hiring decisions though. I have made hiring decisions for hundreds of programmers, so maybe you should listen up.
    While working in a team is a great skill and every manager wants that, rarely can they test that ability before the hiring decision. What they can test is your technical knowledge and interpersonal skills. Sadly, especially of late, the vast majority of applicants are failing the technical knowledge portion; the number one reason programmers fail to get hired is lack of skill. The reason for this is that the schools are teaching crap these days, and giving degrees out to people who can't "program their way out of a paper bag".

    Thus, my advice to you is, hunker down on the technical skills. Teamwork you can learn on the job. [or for those lucky enough, in internships and co-ops. the best way to learn]

  201. another quality of a "well-rounded" education... by dnos9 · · Score: 1

    the other day on slashdot someone asked why you have to take all these other bs classes when you just want to learn how to be a computer programmer and today someone is asking why you don't learn anything else except how to program. maybe these two slashdot posters should get together and talk. :P

  202. Sheesh. by Anonymous Coward · · Score: 1, Insightful
    We've had this topic brought up at least three times, all from college students.

    I understand that collaboration is wonderful and instructive, but you are bound to the rules set by your university/CS department. And I'm sure that those rules seem horribly unfair. But in the true Slashdot fashion, instead of trying to change things at your school, you come here to whine about it! And since slashdot always seems to have a good crop of naive college students who have nothing better to do than post comments, you get plenty of your peers to whine with you.

    Kids, pull your own weight, or make waves where it counts. Trust me, your university isn't going to give a shit about 200 slashdot comments backing you up, probably because they know that the people posting on slashdot are at least as lazy as you are.

    Or at least find another forum to post this on. Don't worry, Slashdot will still be tiresome and repetitive without the whinings of "I want do do my homework as a joint project with my friends!"

  203. BEST undergraduate Computer Science programs ? by Anonymous Coward · · Score: 0

    Which universities have the best undergrad CS programs in the USA?

  204. this is easy by jjshoe · · Score: 1

    CVS

    --
    -- botsex is {grep;touch;strip;unzip;head;mount} /dev/girl -t {wet;fsck;fsck;yes;yes;yes;umount} {/de
  205. cs by LowOrderBit · · Score: 1

    I am also a CS major and i hear what you are saying about working together as a team.. Although, I think the skills being presented in my courses are focused more on how well you, as an individual, can contribute original ideas to the team.. How well you can form your own solutions and analyze logic from your point of view.. Once you have developed that skill, then you may bring it to the table where other developers may then apply their analytical skills to your ideas.. this will allow many indivduals to bring their own ideas to the table and combine the best ideas of the individuals to create the best product from the team...

    e0-

  206. Pick your own groups by BoffoTMC · · Score: 1

    I found that in my higher level classes, slackers, idiots, and free riders were less of a problem than they were in lower division classes. That's because it was a small enough department that by then we all knew each other. Once we could pick our own groups, all the smart, hard workers would gravitate together. The slackers would end up in groups with other slackers, and turn in crap.

  207. Who put the work out? by ilsa · · Score: 1

    If the Pointy-Haired Bosses of the world can't tell that thier "team" consists of two guys doing the work and 5 leeches, what makes you think the pointy-haired college professor can? I mean really!

    --
    -- I Am Not A Terrorist.
  208. Group Projects Suck by EvlG · · Score: 3, Insightful

    Evey time one of my teachers gets the bright idea to assign a group project, everyone groans. Why?

    These projects pit you with people you don't know, and don't care to know. They don't want to do the work, and they are happy with making a C. However, if I want to make an A, I have to make up the slack. Inevitably, there is always at least one person that just doesn't care. Everyone else suffers.

    The real problem with this is that, in the real world, you can fire someone if they don't do their job and replace them. In a group project, you never seem to have that luxury. Instead, you are stuck pulling the weight of the slackers who don't care.

    Additionally, group projects seem to waste a lot of time because of the need for consensus. In reality, design by comittee is very problematic. However, you often can't explain that to group members. They see it as one person dictating his or her ideas. Sure, you need other people's input, but the endless back-and-forth trying to agree on something just wastes everyone's time. Additional time is wasted on all the communication, and the need for meetings. In real life, everyone works the same hours (or a reasonable approxiamtion thereof). That way you can just pick meeting times and be confident that its not going to be a problem having everyone attend. In a school project, you have to schedule meetings around everyone's work+home+school schedules. Often it means meeting late at night, or on the weekends. Who wants to waste their weekend time meeting for a stupid school project?

    The only real advantage I see to most group projects is the one for the teacher: less grading.

    I think a better idea is to encorage pair assignments. It's been my experience that I get a lot more out of a 2 man "group" than I do a 3, 4, or 5 person group. Its easier to communicate, easier to divide responsibilites, and it makes it possible to share information and approaches without losing a lot of time. The project has a much more cohesive feel to it, and the concepts are better represented. However, the pair approach still has the problem of the disinterested party. Encouraging students to choose their own pairs would help to alleviate that, as students often take classes with a friend.

    Group assignments do have benefits, but I think the problems that go along with them in a school setting tend to outweigh those benefits.

  209. At Aalborg University everything is teamwork by Zuul · · Score: 1

    At Aalborg University which i attend everything is teamwork.. about 2/3 of your semester grade us evaluated on the basis of a Problem oriented group project.

    This means that you have to work together with 6 or 7 people on a projekt. You have to "agree" on everything, cause we are all equally responsible for the outcome.

    After the paper has been turned in app. 100-120 pages + product, there is a 5 hour exam.
    At this exam you present your project and your project-counsler and a sensor asks questions. After the exam each student is individually graded.

    Ofcourse there are upsides and downsides to this approach, but as a whole you learn a lot because you are forced in to discussing almost every decision. OTOH some students can get by pretty easely and lets his group do the work. (It is possible to kick someone out of your group if the don't take their part of the work, or always comes in late. etc.)

    Anyways, if you like working in groups come to Aalborg University, Denmark.

  210. Cheating by Anonymous Coward · · Score: 0

    Well, i went to Colorado State for C.S. in the early 90's. There were efforts to have the students work together. What I saw, appalled me. No less than 6 students pretty much cheated there way through the C.S. program. I like the idea of 300 on up working together, but below that, no way.
    BTW, I have occiasinaly checked up on some of these. The ones that I know became business ppl. One married one of the others and started a consoluting company in denver tech. Another has struggled to get somewhere, but hasn't. Humorous.

  211. Groups of two to three work; otherwise, forget it! by Helevius · · Score: 1
    I hardly had any positive experiences with "group projects," from gradeschool through my master's program. In almost every case weaker group members sought to "free ride" on the talents of the stronger group members. This tendency increased with group size.

    The most extreme example involved a class of twenty doing an engineering project senior year in college. When the rubber met the road, only five of us truly cared enough to finish the project. We received A's for our efforts and the rest of the class received B's and C's. Who's smarter?

    On the positive side, working in pairs or groups of three (maximum) seemed to work out. It's not easy to be a free rider when there's only one or two other people to leech!

    Helevius

  212. Re:The biggest part of being good is being humble. by Dop · · Score: 1

    I also bent the truth a little bit to prove a point. So I guess I'm a liar too. Settle down.

    The point is that people do this which makes it very difficult for small group projects to work.

    Forcing a group to work together for an entire semester (like many senior design classes do) tends to be a little better of a scenerio.

  213. This is a good example of real life by Anonymous Coward · · Score: 0

    There are several things that school shelters you from, but real life always seems to invade.

    There will always be ways around doing the work. If you get good at that then you will probably go pretty far without knowing anything. Why do we go to school for CS anyway? Fun? I think I went to get a good job.

    I pose that the problem is people unwilling to stand up for their work. I see and hear about people giving into pressure to let someone cheat off them all the time. If you don't want them to cheat, don't let them cheat. What are they going to do? Beat you up? If you feel you are pulling their weight in a project, tell the prof. Either that or shut your mouth.

    I always collaborated in school whether it was allowed or not. Very rarely was it not. But I made sure I wasn't being taken for a ride nor did I want a free ride from someone else.

    School can only mask real life so much. And just like in school there are so many ways to succeed on the job that go beyond how well you know C.

    When you think about it, rules are a joke unless you can believe in them. Accepting them all is accepting that all people who make rules are smarter than you.

  214. Engineering curriculum example by David+Ishee · · Score: 1

    As a Mechanical Engineer, our curriculum had alot of group design projects in your junior and senior years. Every major class had at least one group project, sometimes more. It was always frustrating to get put on teams with slackers. Some people were slackers on the team because they were dumb, others slacked because they had an insane course load, or they worked many hours so they just didn't have time. The result was the same either way.

    Some professors had students rate each other, but most didn't. Groups were usually picked at random.

    I hated the group projects because of the slackers, trying to coordinate schedules to work together, and because you usually were working with strangers.

    Group work at work is better because people aren't strangers, scheduling problems aren't as big of a deal, and so far, I haven't found any big time slackers around here.

    In school, the best group size seemed to be 3 people. It minimized scheduling conflicts and gave you some help if one other person was a serious slacker.

    If you got an uber-slacker on your team, then people would usually go to the professor about it. Some group projects had group reports, others had individual reports.

    --
    Your password has expired, please login to change it.
  215. Adjusting for unequal skills by crystall · · Score: 1

    You'll have to find a way to account for each person's abliity though, which isn't easy.

    This does happen in the Real World. Where I work (state government), we have some very talented folks, some that work hard but are less talented, and others who are very motivated, but inexperienced. We do have a few (very few) that seem to be warming seats, but they mostly work on the legacy systems, not the web apps.

    A good project manager tries to match the skills available in the team with the work that needs to be accomplished. No, it is not easy, but it can be done.

  216. I'll second that by m0ng00se · · Score: 1

    I had the GPA and those friggin slackers knew it. Every group project I've done (save one where I happened upon extremely exceptional teammates) has ended similarly: the slackers slack while I pull the whole darn project together. At least the problem with group consensus was not present because the prevailing attitude from my team was 'yeah, whatever.' They knew I wanted the "A," so they left me out to dry.
    Screw 'em.
    It's different out here but in the college setting it's a lousy thing to do to the summa cum laude student who has enough load to tow without that kind of added grief.

    --

    --


    Is madness a syptom of genius or vice-versa?
  217. A fine line... by blackbeaktux · · Score: 1

    ... exists between collaboration and excessive collaboration. There's absolutely nothing wrong with seeking help from your peers - but it's important to know what standards are being used to determine academic dishonesty. But then again, there's that saying in academia: "Copying the work of one is plagiarism. Copying the work of many is research"

    I know of many friends who would not be in CS if it weren't for their friends. But there's only so many ways to get a program to print out "Hello, world"

  218. A couple methods I've experienced by brink · · Score: 4, Informative
    The way the CS program at Indiana University, South Bend has it set up (for the most part) is as follows:
    For small projects, if you talk with anyone or get ideas from websites, etc, you have to cite your sources/collaborators. This doesn't mean wholesale copying of code from sourceforge or friends (as more than one student has discovered), but it at least lets the prof know if you had outside input.

    For the team projects I've been on, there were a few methods used to get around some of the problems like slackers and code accountability:

    1. You pick your team members. If you know that someone is a slacker, you can try to avoid being on the same team.
    2. Projects involve numerous separate tasks. This helps in terms of delegating code to ALL the team members, so one or two people aren't stuck with all the programming.
    3. Team member evaluations. At the end of the project each team mate gives a grade to every other team mate (anonymously) for their code quality and project involvement. Each individual's grade is then composited from the Project Grade and each member grade. The assignment can get an A, but if you slack off, you can get a D or even F because your team mates graded you poorly.
    Additionally, big projects are broken up into different stages, so you end up having a grade for each stage of the assignment, which is coupled with number 3 (above) to give an accurate reflection of the student's abilities.

    All in all, the system seems to work pretty well. The nice thing is, if it's a REALLY big project and your team has no hope of completing all the functionality, the prof can still evaluate your abilities based on what has been done.

    Maybe not the best, but it worked for me :)

    --
    - Jonathan
  219. Must be the school by yolfer · · Score: 1

    I'm in the Informatics program at the University of Washington and we do almost 100% of our assignments in groups. The method of making sure everyone pulls their own weight is simple: group evaluations. Everyone in the group evaulates the others and themselves.

  220. The one way I've seen this work... by TheEviscerator · · Score: 1

    The one way I've seen this work is through well defined seperation of work. In other words, the instructor should provide each group with a well-defined project definition, and describe the work that each student needs to do for their part of their group's project.

    For example, we wrote a simple web server in my CS class, and each member of the group had a different responsibility - I was responsible for writing most of the network code, and another student had to write the parsing of the HTML, etc. Each student works on their section individually, but you must work as a group to define APIs, and to integrate each disparate module of code. This doesn't *truly* mimic the real world, but it comes close.

    Slightly off-topic, but most CS departments look at group projects with a certain amount of scorn - in their opinion, it's not the job of the CS department to teach software enginnering (which is what a group project proports to do); they'd rather teach fundamentals of CS (algorithms, data structures, etc), and leave the theories of software engineering to the workplace.

    --
    The pomposity of the professor is inversely proportional to the difficulty and importance of the subject being taught.
  221. Plagiarism, citation and intellectual property by sneakerfish · · Score: 2, Interesting

    The point is not stealing verses inventing everything from scratch. The point is attribution and the creation and improvement of intellectual property. After all, we are all "standing on the shoulders of giants" when we use things like UNIX, C and day I say Perl.

    In liberal arts "stealing" other peoples work is called plagiarism and there are well established policies for dealing with it. Of course one is allowed and usually encouraged to read other peoples works and even include them in your own WITH PROPER CITATION. The distinction is that you must cite your references.

    The same should go for CS. If you cannot solve the assignment go ahead and use someone else's code, but you should cite it as their code and not call it your own. Calling it your own is plagiarism and the same thing as ripping the copyright notices off of BSD kernel code. If you must use others code, you should try and improve it or you should expect a lower grade.

    In a group project there seem to be a few possible metrics. These things seem to mirror what happens in a real world development project anyway in my experience.

    1) Allow /. style peer grading within the group. Slackers will get graded poorly by their peers.

    2) Define good interfaces and use contract style programming to allow individual members to work independently on their own parts (a class, subroutine, etc.). The group gets graded as a whole on the quality of the design which can be seen in the interface definitions (or problem decomposition if you will) and of course the overall quality of the resulting software.

    3) Use CVS and track how many lines of code are committed by whom and when they do it. Lines of code isn't the end all of metrics, but it does show people are doing work. If you look at the commit log and see that one student worked steadily thruout the project period and another hacked it all together in one night, you might take that into consideration too.

    Just my $.02.

    Dennis

    1. Re:Plagiarism, citation and intellectual property by gorilla · · Score: 2
      1) Allow /. style peer grading within the group. Slackers will get graded poorly by their peers.

      I have to disagree with this one. This will end up being a popularity contest.

  222. My Bachelors... by Woodie · · Score: 1

    Hi -

    my bachelor's degree in CS essentially followed the following pattern:

    Start off working on small, toy problems - how to sort things, how to read mouse input - basic low-level stuff. This was done individually, and each student submitted their homework and lab work seperately. Discussion wasn't forbidden - but you were expected to try to solve these problems on your own. In classes of no more than 20 students the professor had a good handle on things.

    Later, you worked up to larger projects - still working largely singly - but learning to work with existing code libraries. Some computer related classes started to involve some team work in terms of doing studies and presentations.

    In your last 3 semesters teamwork was more stressed, with 3 large, group projects, one per semester. Teams of 4 to 5 students working on a software system each.

    I think that this pattern worked pretty well. You do sort of have to get the cheesy basics down first, as it will accelerate your pace of work when you team up.

    My $0.02

  223. Does good SE come from good CS? by Anonymous+Brave+Guy · · Score: 2
    By and large, if you're getting a degree in CS from an American university, you're not learning how to write software applications that will be deployed in the Real World. You're learning about things like algorithmic complexity, data structures, NP completeness, and other theoretical issues.

    Would that that were true. From what I've read on-line and the people I've met, what many US universities are teaching in "computer science" courses has precious little to do with CS. Witness the number of courses teaching "Windows programming", or the slavish following of the language of the day (currently Java).

    Schools need to have two separate programs -- computer science for budding computer scientists and software engineering for budding software engineers. And I guarantee that the demand is for the latter, but most schools only offer the former.

    I respectfully disagree. Most of the good software engineers I know are also good with computer science. They understand the significance of data structures and algorithms, in particular, when it's important to use a highly efficient one, and when a simple solution will do. They understand the underlying principles of OO design or functional programming, not just the syntax of Eiffel or ML, and they design and code much better as a result. Most important of all, they know when to look things up, and where to look, because they have a broad exposure to the field.

    Now, don't get me wrong. Software engineering as a discipline does not come for free with CS knowledge, and I do agree that universities teaching CS should consider teaching basic SE skills as well (e.g., project lifecycles, why we have different types of testing, the pros and cons of different development models). However, from personal experience, the average CS prof is woefully unqualified to teach these things. This knowledge isn't theory, it's practical, and such knowledge comes from time in the industry, not time as an academic. Much of the SE taught during my CS course was 20 years out of date, and quickly unlearned when I started as a professional developer. Actually, one of the smartest things they did on my course was get a few successful alumni in to give single-lecture presentations on their experience. That was in Business Studies (aka "The basics of running your own company") but it would be just as applicable to Software Engineering, IMHO.

    As a former developer, then later system architect and project manager, I found that my CS education was essentially wasted. It's nice to know how to do matrix multiplication using dynamic programming, but I've never used it. I would have traded in my entire algorithms class for a class on testing software. I'd trade data structures for a class on project lifecycles. I would have traded theory of computation for a good design class.

    I could have done without the massively theoretical subjects, such as Computation Theory. But give up the basic stuff? No thanks. I've used the basics of Numerical Analysis (aka "How floating point works"), Data Structures and Algorithms, my Graphics and Databases courses, and more, not to mention investigating the ideas I first encountered in the various language courses, which I'd probably never have seen without doing the CS.

    So, while I appreciate your point that Software Engineering is not Computer Science, I ask you: does good SE rely on good CS as a basis? Can someone possibly be a good software engineer without a basic knowledge of CS (whether or not they learned it on a CS course)?

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  224. Degrees? Grades? Doesn't mean much by Anonymous Coward · · Score: 0

    I've been a senior developer for a while and have to approve all hiring for my group. The reality is there are more worthless CS degree holders out there than good ones. I would guess 10% good, 20% satisfactory, 70% poor. I don't bother looking at degrees anymore. In fact, I've hired an equal number of developers who taught themselves to formally educated ones. What do grades really mean anyways? My litmus test for an interview is this:

    I assign a simple but challenging project that has to be e-mailed back to me the next morning. The interviewee returns home and can use any book he wants, any reference, ANY thing. If (s)he can do the project then in a followup interview I try to get a feel of his design process since I have the person explain WHY this way and not this way. (one person i'm certain had someone else do it, he couldn't explain anything. GPA 3.7)

    The moral is the degree and grades will get your foot in the door but staying there means you have to know what you're doing.

  225. RIT by Apreche · · Score: 1

    I'm actually in the CS Lab at RIT right now, posting this comment on an Ultra 10. We do group projects here in CS at RIT as well, and we also have a very strict academic honesty policy. Recently I did the first part of my project with another student, as was directed in the project description. We only had to submit one program design, but we each had to submit a partner evaluation. (All our stuff is submitted electronically using a UNIX program called try). Basically you wrote a few lines about how you felt about your partner's work. If you did the whole project and they slept, you said so. And vice versa. The professors alter grades accordingly. Very rarely is someone so immature as to be disonhest on the evaluation.

    --
    The GeekNights podcast is going strong. Listen!
  226. CS: Groupware for Slackers by dasmegabyte · · Score: 2

    At my university, you are pretty much expected to work in groups, to the point that some professors assign them at the beginning of the semester and all of them warn you of the dangers of stealing. They do this because CS CAN BE TOUGH, especially for some of the non-techs that were in my CS department. We got a lot of students who were aiming for careers in consulting, IT or MIS and needed a degree but not necessarily the knowledge. Knowing this, most professors expect you to work in groups, where you can design alogirthms and modules together but present different finished projects. After all, five students debugging a stack is a lot more efficient than each doing it alone. Furthurmore, since our school gets mainly foreign graduate students as TAs, who are often hard to understand or who don't have any formal teaching instruction, we often get together in groups where students help each other understand difficult concepts -- the notes from these sessions generates code that may seem stolen.

    However, I hated working in groups, mostly because I ended up doing all the work. It seems to me that this sort of groupwork encourages slacking -- certainly, I had a number of logic design labs where I did all the work while my partner tried to score with the engineering babes. As a defence mechanism, I developed a series of coding styles that mildly obfuscated my code in such a way that cheaters who didn't really reengineer it before submission would be handily caught...namely, I began developing a style which involved a lot of recursion, some unusual object style modularity (a lot of inlining, a trick most students don't use for clarity's sake) and so forth. I also made sure to hand in all the labs slightly ahead of anybody who i was "helping." My professors (I have one in mind, an adjunct who worked at IBM during the day) usually caught on pretty quick that I knew what I was doing and that if other people submitted code that looked similar to mine it was probably a result of group debugging and not copying or cheating. In any event, the key is to DO your own work even when working in a group...to understand modules you use even if they're written by other people. Otherwise, you'll not have the knowledge necesary to transcend the next level -- which is why so many people who pass our CS 240 (data structures) fail out when they hit CS 340 (OOP -- built on the concepts of 240).

    --
    Hey freaks: now you're ju
  227. Introverts are pople too! by sketerpot · · Score: 1
    I have trouble working with other people. I can write programs or do most such things easily, but in a group I just don't work well.

    I groan when someone says, "Couldn't we do this in a group?"

  228. CVS logs... by tve · · Score: 1

    would be a really practical way of handling this, especially since your using CVS anyway, right?

    --

    If there is hope, it lies in the trolls.
    1. Re:CVS logs... by tpledger · · Score: 1
      [CVS logs] would be a really practical way of handling this, especially since your using CVS anyway, right?

      Absolutely. That approach also fits neatly with the "contribute to some open source projects, and refer to your code in your CV, so that I can see your handiwork for myself" recruitment technique.

      A disadvantage is that it takes more effort to mark (grade) the whole history of a project than the final snapshot.

      --
      You have received this message in error.
  229. Alternate evaluation methods. by Anonymous Coward · · Score: 0

    Using modern collaborative software it is possible to build learning communities in which collaborative activities such as code building can be done online. Since the various contributions of individuals are recorded, plagarism isn't an issue, and it is easy to see who posts relevant contributions. One such groupware project/product is Knowedge Forum (www.knowledgeforum.com). The research page should give you an idea of what they are about (http://www.knowledgeforum.com/Research.htm). Of course, Knowledge Forum (KF) is not the only such software, but it's the one I know best.
    Disclaimer: I am a Ph.D. candidate at the University of Toronto and am on the Knowledge Forum research team. KF has been successfully used in university courses and provides a number of alternate evaluation methods, quite different from the traditional ones.
    Don Philip
    (It won't seem to take my nickname and password)

  230. My University by CFTM · · Score: 1

    I'm currently in my second year as a CS major and my University has the same academic policy but pair programming is not only encouraged it's needed given the scope of many of the projects. First year we all worked alone but the projects were a joke, second year everything a good deal harder and a partner is a must. All the upper classment have partners for all their classes and assignemnts. Hell on our quizes we're allowed to use any resource save another person to answer the questions {http://www.google.com here I come}. The point that my prof has been attempting to make is that it is important to learn how to research things and to work with other people.

  231. Tough question by Pedrito · · Score: 2

    I've done both "lone-gun" programming and team programming. I prefer the latter, especially when it's with really bright, motivated people (like my current job), where you learn a lot.

    The problem with school is the same problem you have in most companies. You have a few people doing most of the work. It's hard for a teacher to grade an individual's achievement in a group like this, so it's understandable why they hesitate to let people work in teams.

    An anonymous team member rating system where team members rate the contributions of their team mates (at several levels: Skill, Effort, Teamwork, etc), may be one way to go. I think encouraging teamwork in software design is important. The day of the lone-gun programmer creating great software is more or less over. I realize there are exceptions to this, but they are few and far between.

    Teamwork is an essential part of developing medium and large scale systems. That's the hardest part about hiring people right of school, I find. They don't have the skills for working as members of a team. They tend to try to do everything on their own without asking questions when they should be asking their co-workers for advice and learning from their experience. They tend to be defensive of their work instead of taking constructive criticism and using to write better code.

    These are skills you learn as a teammember, and it takes time to learn them, so I think at some point universities should address this and incorporate it, one way or another, into their courses.

  232. Educational Environment by shwim · · Score: 1

    I've always thought that there should two types of technical classes. Using CS as an example, there would be classes on algorithms, structures, etc.; and then there would be classes in the implementation of these concepts.

    Most classes try to combine these, but I believe the conceptual part of the class need to be separate from the implementation part of the class, i.e. a lecture/recitation/lab separation.

  233. Handling Group projects responsibly by xenocide2 · · Score: 2, Interesting
    The best way I've experienced to do group projects is to let students choose their own groups, and let us do it on their own time. If you don't feel someone is putting forth enough effort into the project, you can simply take their name off the final product, leaving them stranded, since the proffessor hasn't a clue who is in what group. In addition, choosing your own group means that you knew what you were getting into when you accepted these people as co-workers.

    It also seems to help to have two parts to the project-- the group collaboration part, and a part that everyone does by themselves beforehand in preparation. It makes it easy for the group to spot slackers and threaten ostracism.

    At least, this method's worked well for me so far in combatting slackers.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

  234. cheaters always prosper by Anonymous Coward · · Score: 0

    I was a CS teaching assistant while I was in school (a few yrs ago) and the assignments I graded were rampant with plagiarism. Some students were so lazy they actually photocopied other students work, and some forgot to take the other students' name off altogether. I even caught a phd student once blantantly cheating despite the fact that this was an easy undergrad course. There are so many free-riders (I'd catch 7% of the class every week), and the current style of group projects evaluation only makes it easier on them.

    School evaluates individual performance in the end, and the dishonest people (they're the people with the same degree as you that couldn't bubble sort to save their lives) know that their grades are maximized by putting effort into individual assignments, and ignoring group work almost completely. I really don't see a way around this without the profs getting off their asses and checking this stuff out for themselves. They expect to be able to evaluate an individual's ability in a group by evaluating the group's ability. It'd be laughable if it wasn't so unfair.

  235. Don't get me started... by mickeyreznor · · Score: 1

    I go to VT, and while we don't drive our honor code up the wall like some other school, our CS dept very much discourages any group work whatsoever. Basically, if you haven't holed yourself up in complete isolation till the program is due, you've probably violated the honor code somewhere along the line. They're so fervent about it they have a program running(i forget what's it's called, moss something or other) that will look for similarities between everyone's code. I'm not sure how well it works, but i know a few friends of mine who were caught cheating on a program their freshman year(though they submitted identicle code, so as far as i can tell they deserved it).

  236. Group Work by archivis · · Score: 2, Interesting

    I am a student in an Electronic Game Design program at a Canadian College (I myself am American). As a requirement for graduation from the two-year program, a student must be a member of a group that has a final project - referred to as a Product - that is of sufficiant quality to be at the very least an excellent demo in ones resume. Ideally the product should be of sufficient quality to attempt to be published - and at least one product I can think of that has come out of the program has been published as a B title.

    In the program, the product development groups form fairly early in Term 2 (the Winter Term) and the rest of the two years in the program is spent, barring breakups and expulsions, working with those same people. The groups spend the first year documenting their product - our detailed design document fills a couple big 5" binders to capacity.

    In the second year the product is expected to be coded and built, to the specs laid down in the documentation. There is a prototyping process in place as well that expects a functioning prototype to be ready around the end of the first term of the second year (Term 4).

    With all of this time spent working on a major project with a group, with weekly meetings with a faculty mentor and regular design review meetings with a board of instructors, those people who are not doing work are identified fairly quickly. There are procedures in place to remove these people from groups where they are not being productive. In fact, the group I am a member of has such an unproductive person who is skirting right now with removal from our group.

    When I came into this program I had only had very negative experiences working in groups at other Universities and in High School. I have learned that group work is very good experience but it must be done over time with a large amount of close interaction with the faculty, so they and the students can constantly keep tabs on the expectations and performance of those on both sides of the classroom.

    --
    In July O7, I got a mac pro. There's no punchline. Just endless joy and wonder.
  237. What is cheating? by Anonymous Coward · · Score: 0

    I taught a couple of semesters of "Introduction to Computing", and encountered some odd opinions about cheating.

    Three groups turned in essentially the same thing, nearly-identical code with only the variable names changed.

    The first group (three students) denied that they had cheated, and then ended up taking the position that I hadn't said they could work together, soit wasn't really cheating. None of them could explain how the program worked very well, and one didn't even know what his own variable names stood for. (Note to students - saving space is not your friend. Choose variable names that will provide a clue about what they're for.)

    The second group (two people) even chose variable names that were the same number of characters -- when you stacked the printouts and held 'em up to the light, they matched. Exactly. Including the typographical oddity 2/3rds thru the program ( basically \n\t\t;;;\n ). They denied working with each other, full stop. Apparently they figured I was stupid.

    The third group, (again, two people), had perhaps the most variation. It was a guy and a very pretty girl -- and when I showed them how close their code was, they both agreed that it was very damning evidence. She said that she had never actually *seen* his code -- but she could explain everything about her program. And he said that he finished his code early, and that she was having problems writing her, so he'd helped her -- and a bit at a time, apparently, rewritten her code into a close approximation of his. (And naturally, he had no problem explaining his code to me either.)

    They were the only ones to apologize, and to express a willingness to accept a zero for that assignment ("for having been careless to the point of stupidity"). For the sake of two, the other five avoided being turned over to the University for discipline...

  238. Ughh group work by FLaMeBoY · · Score: 1

    I agree that you should be able to cooperate with other people without it being cheating. At the moment several of my lecturers will let us discuss problems and look at each others code/assignments as long as we don't copy and your work is unique enough. Others just ignore the fact that people are copying (two individuals got caught copying verbatim in 3 papers last semester and weren't kicked out).

    I hate formalised group work.. last group assignment I had to do was in a group of 6, 3 dropped out quickly, 1 stuffed us around before dropping out the day before due date and another guy who was willing to work but not too bright.

  239. Re:Oh yeah by octothorpe99 · · Score: 1

    I had this technique used in my graduate CS courses as well.. the projects were all too huge to be completed by a single person in a reasonable time.. we always grouped up.. typically 3-4 students.. it was very productive and since we graded each other for contribution, we kept ourselves honest.. not did we "downgrade" slackers, we also "downgraded" over-contributors who wanted to do it all themselves..

    but on the other hand.. i think not allowing code re-use was a BIG minus.. in the real world i find that being able to reuse code and WRITE reusable code is what its all about.. u HAVE to teach CS grads how not to go about reinventing the wheel EVERY time they need a database connection class (for example) thats just a waste..

  240. at my school by Anonymous Coward · · Score: 0

    you can work on projects and labs in groups, but the tests, which are 78% of your grade, are individual. i think it's fair, you can get help from others and hopefully be prepared for what really counts- the test.

  241. CS/OMISS by Anonymous Coward · · Score: 0

    Where i go to shcool you can always tell CS majors from OMIS majors in the computer labs,

    CS majors are told if there code looks like anyone elses there going to be kicked out of school

    OMIS majors are always working in teams to accomplish projects ...seems like alot more fun to me

    O.M.I.S. -- Oh Man Im Stupid

  242. Group Assignment in Australia are pointless by Ferretski · · Score: 1

    I'm doing a course at Monash Uni in Australia called Business Systems (dept. of IT), and over here the "group assignments" are fundamentally flawed:
    1. they are too short to be able to divide it, we're talking...3-4 hours work...3 major sections...amongst 4 people
    2. the people who do these group assignments lack ability, or drive, or both. Meaning that in the end, one person does the work and the rest "ride" their way to a pass, while dragging down the guy who worked his arse off.

    In the real world, inadequate people get the sack, and arn't a problem anymore. In uni, they get a free ride.

    To top it off, the people who run these subjects "encourage you to figure it out" - read: don't care

    Scrap the group assignments...all they do is drag down the people who care about getting more than a pass.

  243. Group Projects Done Badly by humblecoder · · Score: 2, Insightful
    First off, the purpose of a school isn't to be pseudo-companies. The purpose of a school is to teach. Schools need to ask themselves if group projects achieve this goal. In most cases, I think the answer is a resounding no.

    In classes that teach basic programming and other CS concepts, I think students are much better off writing their own programs and doing their own work. How else are they going to learn these basic skills?

    There are classes where group projects may be appropriate if done right. The classes I'm thinking of are software engineering type classes where much of the subject matter centers around being able to organize projects into modules, code the modules, and integrate these modules together.

    However, if a class is going to teach teamwork, it's actually got to teach it. Professors can't just divide up the class in to groups of N, give them a project that is N times a normal, single-person project, and let them go. As others have pointed out, that is a recipe for disaster!

    They actually have to instruct them in how to go about dividing up the work, designing interfaces between modules, integrating code, using source control to track changes, etc. Otherwise, they aren't really learning how to program as part of a team.

  244. at the wrong uni by snuffle_upaguss · · Score: 1

    I go to uni at UQ (brisbane australia) and have team projects coming out of my ears! 2nd and 3rd year we have 1 whole subject a team project with elec, comp sys and software engineering students working in teams together on a product. "Software testing" I'm doing all the assignments are in teams. Each team has to split the marks between each other and each member has to sign their approval. In some cases we give marks to the other members of the group. In one subject that has only group assignments and a final exam, if you don't go as well on the final the assignments don't bump your mark up. In robotics all our labs were group work. There's a whole year group IT compulsory subject. In fact everyone get's rather sick of group work - you always end up putting in more effort cause other members slack off.

  245. Some colleges (like mine) are project-oriented by dmorin · · Score: 3, Insightful
    Worcester Polytech (WPI) in Massachusetts used to be entirely about projects. You have a series of multi-year projects that take up a number of class units toward your final grade. Toward the "well rounded education" approach there is a sufficiency project (humanities), interactive (social sciences), and your major qualifying project which is of course in your major. You choose an MQP usually by the beginning of your second year, if you're lucky, and find an advisor who'll accept the project as valid. He then would often assign you your project partners, and you had up to the next 3 years to make it work.

    Once upon a time this was the only system WPI had -- classes were really only for learning what you needed to know in order to make progress on your project, forget about grades. But toward the end of the 70's they started to get pressured to come up with a system that would more easily allow students to transfer credit when leaving the school. By the time I arrived in 87 they were shifting away from the 2grade (AD/AC) system they had developed into three grade (ABC), but the projects are still central to your grade. If you spend 16 class units on your project and get an A on it, then 16 A credits go onto your final transcript. Not bad. And by the way you don't "fail" courses at WPI, you simply receive "no record" that you ever took the course.

    When the teachers and students both agreed to this system, it worked well. Many's the time a student would fail a course because he was working too hard on his project, only to have the teacher let him squeak by because the teachers knew that the class grades were a formality. I deliberately failed one class because the teacher had set it up so that the project work (writing code) was about 40% of the grade, while the two exams were 60%. I aced all the code and failed the exams, on purpose, and told her "I came here to learn how to write code, not how to memorize answers out of a book so you can write an arbitrary letter next to my name in your book." I got a 67 in that class, which is failing at WPI, but she gave me a C anyway.

    Did you sometimes hate your partners? Of course. Just like in real life. Did your partners sometimes get credit for work they didn't deserve? Yup. There's no good fix for that problem, that I can see. But whether your project works perfectly or fails miserably, it's all good lessons for the real world. I have many stories from college projects that I still use with my employees today (and none of them start with "This one time, when I was hammered.....")

    For the record, my humanities project was an examination of the approach to the tragic hero in Shakespeare (Hamlet), O'Neill (Long Day's Journey), and Miller (Salesman). My major qualifying project was teh development of natural language software for educational purposes, and my interactive project was to gather a day long workshop of teachers and discuss the impact of "highly networked sources of data and information" on how children would use the computer in the classroom, specifically social studies. Did that in 1990. So the projects were no small potatoes.

    d

  246. always liked my prof's explanation of cheating by pres · · Score: 1


    This is what he always said.

    If you talked to someone about an assignment in detail or saw a code fragment (say helping them debug something), anything you can still remember after an hour or two of going off and doing something else (ie. another homework, read a book, watch tv, or whatever) is fair game.

  247. CS Class with Teams by MrChina · · Score: 1

    I'm a CS student at Syracuse University, and my data structures course is set up as follows: all homeworks and labs can be done in collaboration with 1 or 2 other people. One copy is submitted, with names attached. The exams are still solo, so your individual ability is reflected in your final grade. I think this arrangement is an extremely effective one.

    --
    ________________ James McCollough
  248. drivel by Anonymous Coward · · Score: 0

    Whaddabout pair programming? In my 'advanced' compilers class we were highly encouraged to use pair programming for our final project. I was really surprised at how effective it really was.

    Here's a
    link with more word turds on the subject. I'm sure there's better out there.

  249. sometimes cs profs get it by uberLiz23 · · Score: 1

    i am in a programming class this semester where our professor encourages us to collaborate. he's told us that we'll get better code in the same time or faster working with a partner. if you work with a partner (of your choosing), you both get the same grade. we aren't required to work together, however, and can switch partners with each homework,so those who don't want to carry someone's else weight don't have to. the result is, i understand the homework better than just muddling through on my own, and those who work better alone can.

    now if we can just convince the rest of the professors to do it... =)

  250. Wake Up by elephantman · · Score: 1

    No matter how prestigious you think your school is, at *least* half of the students there are complete dumbasses (which, coincidentally enough, mimmicks the real world...). Every single group project I have ever done, from first grade on up through college, is an exercise in taking advantage of the Smart Guy. We all know it's true, and the stupid people pretend to ask for "real world" group experience because they are lazy, plain and simple. Working in groups for school is NOTHING like the real world because in the real world, the people who sit and stare while the rest work get fired.

    It is impossible for a professor to really evaluate who did what unless they're sitting there while it's happening, but in the real world, the idiots will eventually be found out.

    --

    C++ programmers do it with class.
    Perl hackers do it quick and dirty.
    I've gotta learn perl.
  251. Weekly Group Assignments by sandvirm · · Score: 1

    In the CS class I'm taking right now I have a new group project almost every week. It's a lot of work but the material has been easy so far (for me).

  252. Upper Division Courses REQUIRE collaboration by Sysanalyst · · Score: 1

    Actually, at the school that I am attending, ALL of the undergrad 4000 series (senior) CSC courses require collaboration. You are required to work in groups of 2-4 and to document your contirbutions to a project. Each member of the team is evaluated both by their peers and by the instructors. It seems to work out fairly well, especially since many of these classes require some particularly hefty programming requirements.


    It probably would not be a bad idea for you to talk to the Dean of your college or the Chair; if they have a lick of sense, they will realise that most of the bad programmers became MIS majors about the end of the Sophomore year, and that the remaining students need that sort of collaboration. Point out that more sucessful graduates bring in more DM/$$$/Whatever of contributions than do non-sucessfull graduactes.


    -Sysanalyst

    Pardon me, but would you care for a jelly baby?

    --
    Would you care for a jelly baby?
  253. How we managed slacking on team projects by billstewart · · Score: 2
    I took one course in college that did team programming projects. (This was ~25 years ago, in a computer simulation course.) We had groups of 4-6 people to work on projects. The prof set up one ground rule, called Assassination, which says that any group of N-1 people can assign any grade they want to the Nth person. The primary purpose was to boot slackers, but it could also be used to reward people who deserved it.

    Working in teams is one of the most critical skills that computer programmers need to learn - I hope it's taught more today than it was back when I was in school, though the institutional demand for gradability makes it hard to do. It's more common in graduate school, where research projects often need to be done as a team, but the current market has been for undergrad-producing factories to feed the dot-com boom - perhaps that'll change a bit.

    Some of the important skills include how to coordinate work on shared code, how to divide up work when it is more separable, how to tell the difference, how to cooperate on design, how to find out the real requirements (since customers seldom hand you those on a plate, much less do so correctly...), how to tell when there are personality conflicts or ego problems, how to back off when you're the one with the ego problem (:-), how to match up different individuals' skills with the problems to be solved, .... Some of the new "extreme programming" approaches especially have to deal with these problems, but everyday business and amateur programming environments do as well.


    Oh, and if by any chance Karl, Setsuko, Renee, or Temporary Emergency Acting Professor Eric are reading this, hi!

    A few fnords to distract the form-error trap;...

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  254. more cs classes by deathscythe257 · · Score: 1

    at my college- there isn't enough programming within the curriculum. People who want to program in their lives go through this program, but if they don't want to learn C, java, perl, or anything else- they don't have too. The little bit of programming available/required is not enough for a programmer to know what they are doing once they hit the market. Is this a common thing? Do employers tend to teach programming on the job? seriously, i'd say 75% of the students in my class will graduate without knowing much more than how to define an int.

  255. Group Projects by Anonymous Coward · · Score: 0

    In my current programming class we have the option of working in groups. To do so we have to submit the names of members of the group to the prof. After receiving the homeworks she schedules "interviews" with the group members to ensure that everyone has an idea of what they were doing. Plus, exams tend to expose those who do nothing anyway. Her reasoning for this is that the exchange of ideas between group members can assist in our development.

  256. CVS is the "way" by Anonymous Coward · · Score: 2, Interesting

    I cannot claim to be a CVS guru, but I have been using it for the past several months, and trained many others to use it. I have used it in several projects, and started using it for almost anything I write. Maybe I'm a little extreme, but I found it to be extremely useful.

    I have then started using it for my school projects. Not only does it create motivation to be creative and innovative, it motivates to actually do the work. So, in a group project, where you are usually required to submit a group analysis, you instead have a log of changes throughout the course of the project. What change there is, who has submitted, when they did.

    I have it setup so it cvs logs are sent to a mailing list, and have the groups join the mailing list. It serves as a driver for doing the work. Each time someone submits a change, you get a message, with a short log telling you what has been changed, and who did it. It is a healthy form of peer pressure.

    You don't have to write group analsys reports, sometimes avoiding being brutally honest about some of your teammates performance. It's not your problem, the CVS logs will show everything. A web interface is usually the best way.

    CVS is the way.

  257. How to make collaboration work at the university by ODBOL · · Score: 3, Interesting

    I teach CS, and I see at least two related but separate things that we usually miss in classes with software projects:

    1. fitting class work into a larger context of code;
    2. collaborating on the software.
    Each of these can be addressed by assigning work in definite teams, or by other sorts of interaction. There are at least two obstacles that limit the amount of interaction we allow in class:
    1. many instructors don't have much experience with useful interaction on software;
    2. a lot of extra work is required to define and supervise interaction, and universities almost never reward that extra work.

    For some sorts of classes, I've found that I can allow unlimited collaboration, and then evaluate each student based on a private interview in which she presents project work. I evaluate the insight shown in the presentation, rather than whether the student presents her own work or others'. This is very effective in cases where the project work leads to a deeper understanding of the material, rather than merely demonstrating understanding derived from books and lectures. It flops miserably with students who are extremely shy, or who cannot express themselves verbally, but I don't get very many of them.

    I have never yet specifically assigned students to work as teams on these projects, but I've allowed them to form teams if they like, and to share work as much as they like. I think that the ability to discuss work completely freely, and to share pieces of code, has helped a lot. But to my surprise, in more than 5 years no students have actually formed a team.

    Mike O'D.
    U. Chicago
    --
    Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/
  258. Re:See Your Local Hard Sciences Prof (or grad ass' by Zoop · · Score: 2

    The originality in the "Lab" occurs during the report.

    Good point.

    In some (probably most) cases, that's how it's done. However, there are cases (see the reply below yours for an independent example) where the person running the lab does enough QA and monitoring to ensure that true deadweights do not get credit.

    Maybe a combination of individual reports and monitored collaboration might work--and hey, in the real world, I've had to deal with people who would slough off work and I had to put in the extra time to make the client happy. (What, you mean not only do I have to program these functions but you can't even teach the client how to use our standard back-end CMS???) Life lesson learned early ;-).

  259. Individual Skills v. Group Skills by Anonymous Coward · · Score: 0

    All of the group skills in the world won't help you if you cannot actually preform the job you have been hired to do; I am sure many people can relate stories of people assigned to a team and then given busy work to keep them happy and out of the way. College is, first and foremost, a time to develop your skills as an individual, and throwing "group process" into the mix, at least too early in the game, is not conductive to that end.

    Once your personal skills are up to par, however, the ability to work with others to accomplish that which you could not do on your own will be key. I believe that this is why most group work is held off until the end of a college curriculum. Also, but the senior end of a bachelor's degree, or the start of a Master's, one can be fairly sure that the people in the class both want ot be there and are capable of holding there own, which results in far fewer "I did all the work, he got the same credit" complaints.

  260. EE majors need more of this as well by slipnfall · · Score: 1

    At least at my school(Penn. College of Tech.). I'm enrolled in the Electronic Engineering program and the only group-work we will see is near the ends of our educational career.(like 4 yrs from now!). The labs are excellant, but groupwork should be integrated more than it is.(nill).

    Regards,
    -Jamie

    --
    *-PGP Please!-*
  261. One Solution by Anonymous Coward · · Score: 1, Interesting
    One of my professors had a very nice solution to this problem:

    The final exam asked very specific questions about the project that you supposedly wrote. Things like:

    Each group had a file that implements frobbing. Your group's file was named:
    (a) frob.c
    (b) frobulate.c
    (c) frobnicate.c
    (d) Frob.c

    Most groups searched through a graph in some way. Your group implemented this through:
    (a) Depth-First Search
    (b) Breadth-First Search
    (c) Linear pass through all nodes
    (d) My group did not search through a graph

    Each group had a data structure for storing bars. Your group's data structure was:
    (a) A singly-linked list
    (b) A doubly-linked list
    (c) A simple array
    (d) A heap

    And then there were a number of questions asking you to identify your group's code from a list of code snippets from each group.

  262. Re:See Your Local Hard Sciences Prof (or grad ass' by slam+smith · · Score: 1

    If I were teaching college I probably wouldn't make any special effort to catch cheaters. Somebody who bases thier whole education on cheating will eventually fail. In the long run, it is just easier to learn than to cheat. Especially when you get to upper division courses. If you don't know the material from the lower division courses you won't even know where to begin to cheat.

  263. Re:Well...Grades not Learning are Motivation by Darth_Burrito · · Score: 1

    Well, I had a long winded argument that got erased after I previewed it, so here's the short version. People will never contribute equally to a project unless they are adequately motivated to do so. Some people don't care if they get an A or a C so why should they spend all that extra effort on something to get an A. From their perspective it just doesn't make sense.

    Here is the problem. Too many people take a class because it is required to graduate, they attend, do homework, and code projects to get a grade (A,B,C, or D). The real motivation ought to be aquisition of knowledge and practice in your field, however somewhere in the world of academia the primary goal for many became a grade/diploma. What's the best way to make people do work because they want to? Remove the grades. Make the work more interesting/applicable.

  264. In the ACMs, teamwork is required by pojo · · Score: 1
    The Association for Computing Machinery holds programming competitions that college students can be in.

    In the ACMs, you get three people, four problems, four hours, and one computer.

    I haven't done it yet (I'm a sophomore; its pretty difficult to get very far), but I know I will at least be going to prelims this year.

    Maybe this is something profs should recommend for students that have a hard time integrating themselves. Don't force it like torture, but the competition aspect can make it pretty fun, and so non-team-oriented students might find it interesting and challenging.

  265. Integrated team programming by Lappie · · Score: 1
    I know of one university in Holland (that of Nijmegen to be specific) that has a course called GIP house (for something like Integrated Programming IIRC) in which a full project sequence is ran (with the full complement of Quality Assessor, Project Management and programming as a team, etc.).

    Students in their first year CS take part in the programming team, in their second year do a bit of project management, etc. And, BTW, these are full, real-life projects that have to be delivered and meet a deadline. No simulations what so ever.

    Even in Holland I believe, this is a rather unique concept that seems to work quite well (although I've never done the course myself; I didn't do CS).

    I can't find links for all the parts of the course but a description can be found here (Dutch, Babelfish probably needed; look for a link "colleges", upperleft grey box, then in the small print column on the left look for GIP4)

  266. Re:See Your Local Hard Sciences Prof (or grad ass' by DrEspenA · · Score: 1
    I teach college, and I try very hard to catch people who cheat (that is, I don't start trying until I have a suspicion, such as very similar reports, but then I am relentless.) I wish I could agree with you about the cheaters eventually failing, but in my experience that can take a long time, damage some other people's careers and companies' profitability, not to mention the reputation of the college. As a college prof., I think it is my fiduciary responsibility to ensure quality of students as well as quality of teaching.

    As for group work, there are ways to get around the "free rider" problem. I have experimented with peer review: Each student in the group gets 100 points per other member, and have to distribute those points among the other members, but cannot let two students have the same number of points. Works well when I spring it on the students after the fact (it is a fairly new method) but could be tricky if the students get wise and start gaming the system. Peer review is uncomfortable for the students, but they are much harder graders than any teacher I know...

    --
    Espen
  267. Re:Group Projects (OT, rant) by Cederic · · Score: 2


    Hmm. I hate comments. I tend to write one comment for every 2000 lines of code, if that.

    Y'know what? My code is clear, readable and maintainable.

    Y'know what else? Some code I've taken over recently has one comment for every three lines of code. And it's a nightmare. It's unreadable (the comments break the flow of the code, the variables are named badly, it needs to be run through a beautifier and it follows no known design patterns). 20% of the comments are wrong. 90% of the rest tell me what the next line of code is going to do. I don't need a comment saying

    // increment the counter
    i++;

    I'd far rather have a line of code reading
    numSausages++;

    Suddenly I know that the number of sausages is being incremented, I haven't had to read a comment that doesn't tell me what the counter does, and I don't have to cope with a variable called 'i'.

    If people focussed more on writing code properly and less on commenting it they'd be better developers.

    ~Cederic

  268. Depends a couple of things by Hasie · · Score: 1

    If you are using large groups then there is a lot of opportunity for people to do nothing. In groups of two or three there is no way you can hide the fact that you have done nothing (or at least it is very difficult).

    During my undergrad education we did all our practicals in groups of two people and you got to choose your partner. Choosing your partner was also great because it meant that you could pick someone who you knew you could work with. The slackers got known very early on and people who wanted to do good work avoided them.

    Lastly, working together should not be completely removed even if students have to hand in their own work. I would rather have a student be able to do the work after asking a friend, than not be able to do the work at all. Of course, each student still has to do their own work, so work that is nearly identical is still unacceptable.

    There is no perfect solution to group work, but these ideas might help.

  269. i liked it our way by jsebrech · · Score: 1

    The university I go to had a reasonably good solution.
    Some projects would be solitary, and you wouldn't be allowed to cooperate. Some of the projects (often the more theoretical ones) would be solitary, but cooperation would be allowed, and some of the projects would be group assignments.

    The group assignments often worked the same way, where during the project you had to regularly come tell what everybody did. The C++ programming project was very good in the way that every week every teammember had to put on the site what they did. If someone coasted by it was very obvious from what they typed on the site. If someone lied about what they did there would either be work not in the result (coming down back on them), or dual entries in different logbooks, which also was obvious very quickly.

    Eventually we got one person who didn't cooperate (there's _always_ somebody in the team not cooperating), and we had to bring it up to the higher management (the team coordinator). They guy got a zero for his group assignment, while the rest of us got high marks.
    You don't have to take it if someone doesn't add to the result. What is crucial though in a team is well defined leadership. somebody (or sometimes two people) needs to be in charge and his or her decisions are final. Otherwise you lose half your time in discussions.

  270. Yes and No by steveheath · · Score: 1

    There's a lot to computing! I think I will discuss the field as split into two distinct parts: achedemic studies that further the field and create new and exciting directions; and engineering where building for robustness and predictability are paramount.

    In achedemia, the individual does a lot alone. New depths are probed and exciting issues are researched. There is rarely the scope for putting several people together to work on one research point. The preparation for this is the achedemic study you do alone at university. Learning the basics of search/sort algorithms, data structures, language constructs, IO and communications, image or sound processing, etc. These things are best done alone and can be tested individually to give results. No matter where you go with computing, you'll need these basics.

    In engineering, you work in a large team to create a robust and predictable system. Each member brings something to the team, even if it's "just" key-tapping programming. Essentially, nothing is particularly new and everything ought to be tried and at the very least tested. Time is important too, so using well known techniques is mandatory and research almost out of the question. If a University is preparing someone for 'real' work the group projects are the order of the day. Assessment becomes more like a workplace review, peer-reviews are useful too.

    In my experience, these two distinct items are often mixed up and learning/research tasks are hindered by group politics. Groupwork tasks are blown out of the water because the research aspects overrun. Perhaps I'm saying that my experience is that I was often taught by stealth, not really knowing what I was supposed to be learning in a particular excersise/module/etc.

    Mebbe the system needs to change, mebbe I should have taken more notice of what was going on.. but I hope Uni-starters get something from these ramblings to help deal with the apparent mixup I felt :)

  271. It should depend on the course by Aapje · · Score: 1

    Courses which teach basic skills like programming Java or assembly should be done by a single person. The university has to be certain that the groundwork is laid for future courses. This is similar to exams which are per person (math exams for example). You need to prove individual prowess.

    Courses which teach concepts are often best done in groups. Students can assist each other in the understanding of these concepts. Examples include courses on graphics programming, network programming or neural networks. This is similar to papers written by a group of students on advanced concepts. The understanding of the concepts is more important in these cases than the assurance that you can program a particular problem.

    You need not be able to program a neural network yourself, but you have to understand the concepts so you can learn it quickly when necessary, communicate with a neural programmer and understand the limitations/possibilities of the technology. That is the difference between a college and a University, the first mostly teaches skills, the second mostly teaches concepts. The University will allow you to become a broadly educated person. They expect you to mostly build up your own applied skills with this knowledge.

    I think that a self-selected group of 2 people is usually best. They are compatible and will assist each other in understanding the more challenging concepts. Leaving the entire exercise to the partner feels wrong and might mean that the partner won't be your partner in future courses.

    In larger groups there is a strong tendency for weaker team-members to leave the work for the others. The smarter team-members will also find it too much work too spend effort on spurring/assisting all the less intelligent and/or lazy team-members. I have had this problem a few times, writing something myself was less work than first having to whine for a lazy bum (who was assigned to my group) to do something and then correcting the work to be A material. And even then the writing wasn't that good (don't judge me on my spelling in this post, I'm Dutch ;) ). But I also got sick of assisting a friend of mine who tries hard, but just isn't that good a writer. The problems caused by the size of the group just took so much of my time that I was unable to assist/steer him properly.

    Groups > 4 are usually a drama. We had a course with 20 students, to learn how to cope with this. Very educational and extremely frustrating. The larger the group, the more uneven the contributions of team-members will become. I know of no good solution except to limit the size of the group and/or prevent weak students from being part of the group. Once you're in a large, uneven group you're fscked.

    I have also become more and more self-reliant during my study. If somebody wants to get by on by back, I don't care anymore (although I won't invite them to do so). Studying isn't about getting a BSc or MSc, but about learning and improving yourself. The people who lean too much on others will get hurt at the final assignment (we have a 5 year program, with a 1 year individual project at the end to show your prowess) or when working at a company.

    Besides, I also had to lean on people on a few occasions, sometimes an assignment just is too complicated for you or you can't keep up with your partner. Helping each other isn't wrong, up to a point.

    PS. The University has to assume you have a basic level of computer expertise. We are expected to know Word, while students of Chemistry get a course. It would be a waste of time on 99.5% of us, so it's a good decision. The 0.5% needs to pick it up themselves. The gal who didn't know zip should partner with a few others of the less informed and assist each other in these things. They shouldn't hamper you with it. Unfortunately some professors like to randomly assign groups. I've never seen much good in this, having little choice in selecting your own group is frustrating enough.

    --

    The Drowned and the Saved - Primo Levi
  272. Industrial Programming Courses by pcardno · · Score: 1

    I also did a CS course at university and in fact designed and wrote my university's automatic anti-plagiarism system as my final year project. So I know how strict they are on copying.

    However, I now teach my company's Structured Programming course to new graduates starting here, and the first thing I try to hammer into them is that there is absolutely no point whatsoever in trying to do something yourself first - it's quicker, easier, and will probably be more reliable if you copy some existing work.

    Obviously, this is entirely at odds with the University system, but re-use and sharing of code is an incredibly important issue in the "real world". In my opinion there's no room for code and knowledge hoarders in a large organisation (such as mine, with thousands of people employed in IT).

    Paul
    pcardno@mmm.com

    --
    --- Band: Joey Ultra
  273. Nothing wrong with looking at other's work by Anonymous Coward · · Score: 0

    To hell with stupid rules, there's nothing wrong with looking at how someone else solved a problem and then working from there. American universities are clearly a little clueless about how humans work and learn, besides being far too competitive. No wonder everyone is so dysfunctional.

  274. My experience by Martin+S. · · Score: 2

    The college I currently attend, like most colleges, is on a form of 'Academic Honesty Policy'. It has been explained to me in various ways, but mostly it boils down to: If you catch someone's code out of the corner of you eye, that's cheating, and you need to come up with your own 'original' ideas.

    IMHO this is a complete stupid policy. One of the key objectives of any degree is to learn how to research a problem and find the best solutions. This is why traditionally you 'read' for a degree; this maps to CS skill of recognising when & how to avoid constantly re-inventing the wheel. My own 'original' ideas was how to earn a Phd, not a first degree. Providing you properly attribute your sources you should receive extra credit for research not less.

    I'm a CS major, so I write a lot of code, and I imagine when I get in the work force, I'll be writing a lot more. The difference is, in the workplace, I'll be in a team of people. I won't have control and I'll have personnel and political issues to deal with in addition to my job. So far I've had one class that actually demonstrated this principle, and I'm pretty much finished all my CS courses.

    I agree it's important, however it is fraught with dificulty. My CS degree included a similar final group project, and to be frank it was such a disaster that it was dropped from the grades. There was no proper structure and nearly every group degenerated into chaos. The problem being that some teams had too many cheifs and not enough indians or vica-versa. I think the main problem was that no roles where assigned, a small multi-discipline/role team (drawn from across modules), with assigned roles would be better. A Project Officer (planning), a Project Champion (requirements/domain expert), Analyst, Designer, Chief programmer (standards), Team Leader, Coder(s), Tester(s), Commissioner(s). Depending on the team size some of some people would assume different roles, i.e Domain Expert & Tester could easily be the same person in different roles.

    I know the college has to do this so they can somehow grade 'my' code and assess my performance. Isn't there a better way? A way that students can be taught to work as a team yet still be able to tell who is pulling their own weight and who is not?"

    It sounds like a poorly designed excercise/assignment to me. The key to sucess is about division of labour, so unless they've assigned a Project Manager you need to assign different responsibilities to the members. Play to peoples strengths, a strong personality as the Project Manager, a visionary as the designer, pedant as the tester, etc.

    I always enjoyed working in teams during my college education, yet found that projects, where you were allowed to work with others, were few and far between. Do you all feel that technical courses should show a bit more emphasis on working with others, or is this just one of life's lessons that you pick up as you go along?

    I agree; Team's can be both more fun and more effective, In my 12 years post grad, I've always worked in teams some-times small, some-times large, but always teams. Teamwork is a key skill in developers and in my experience a small well managed team will always produce better results than a lone hacker, even the very best lone hackers.

  275. Group Assignments with TA's by Anonymous Coward · · Score: 0

    I'm currently a Computer Engineering student at GMU in Fairfax, VA. In most of our classes at least a few TA's (Teacher Assistants) are assigned to a class. If on some higher level CS courses group projects involved students and a TA, the TA could act as the project coordinator and accept the code from each member in the group. In other words, the group would work together on a large assignment. The TA would be a member of the group, but he/she would be able to evaluate everyones individual performance on the group project. Just a thought.

  276. Why didn't they teach MS API's? by pacc · · Score: 1

    Well I'm glad they didn't,

    the pedagogic misery of using the best programming language for each academic viewpoint made me learn:

    Simula, Smalltalk, Modula-2, Pascal...

  277. I teach and find students are less than interested by guisar · · Score: 1

    I teach computer science course and programming courses in particular (www.uml.edu). I DO encourage students to work together and to add to a project on sourceforge or freshmeat but find they are hesitant to do so because they are all so competitive. Even on the groups I force to exist, the students tend to work on their own and from scratch with little real cooperation like I've experienced in the workplace. I'd be interested in suggestions (which have worked) on how to get past this barrier and encourage them to form teams that work together.

  278. Speeding is good? by bgarcia · · Score: 1
    >You save only 59 seconds over 8 miles by going 75 instead of 65.
    So during my 25-mile commute, I save about 6 minutes by doing 75 instead of 55.

    That's six minutes during which it will not be possible for me to cause an accident!

    The moral: if everyone speeds, you won't be driving as long, and cause fewer accidents!

    I never thought of it that way before! Thanks!

    --
    I'm a leaf on the wind. Watch how I soar.
    1. Re:Speeding is good? by DudeTheMath · · Score: 1
      >The moral: if everyone speeds, you won't be driving as long, and cause fewer accidents!

      Actually, that's part of my point. 75 and 65 are only for example. Basically, if it only costs a minute to travel at traffic speed rather than trying to "beat" everyone, then everyone is safer. But it's hard to put all this in a sig!

      --
      You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!
    2. Re:Speeding is good? by Anonymous Coward · · Score: 0

      Do not feed the trolls

  279. Interviewing college hires by RedRhonda · · Score: 1

    I occasionally do interviewing of college hires. I like to ask questions like "Tell me about a project where you worked with other people." and "What was your role in the project?" If it sounds like the candidate has never worked in a group or doesn't get along with others, I will usually take a pass. In our workplace, the ability to work in a group is crucial. I think that colleges should insist that at least some projects are done in a group.

  280. Groupwork by 7s · · Score: 1

    At the school I'm currently attending, our upper level CS\IT classes are lock-step (you're with the same classmates in the same classes through the whole curriculum) and our teams carry over through the whole program. This has it's ups and downs.

    For one, the fact that you're in the same team through the whole program brings a new level of accountability into play, because if you let your teammates down, you WILL hear about it (and yes, you CAN get kicked off the team, it's equivalent to failing). This also tends to model workplace teamwork fairly well because of the timescale.

    Basically, every class has a team project, whether it's a programming class, networking, databases, etc. and your team gets a grade on the project that is then weighted based on a peer review at the end of each class.

    This also has the side effect of forcing the quicker learners in each team to tutor the rest of their team.

    The only problems with this system I've encountered so far (I'm about 9 months into the program) is that some people learn alot faster than others and tend to carry more of the workload simply because they catch on quicker.
    After all it's a highly accelerated program and deadlines are deadlines.

  281. Re:See Your Local Hard Sciences Prof (or grad ass' by budgenator · · Score: 2

    My little brothers had a program he expanded from free stuff on the net until it was about 90-95% accurate in Identifying the author of source code when compared to know samples. In fact it usualy hit 85% accurate when comparing code written in different languages. This was an excelant tool for detecting plagerism, but guess what they didn't care, because software engineer is more about understanding the implimentation than it's about the actual code. If the instructor grades on how well a student explains why the used algorthm is better than an other one, who cares where the grunt work came from. I guess that's why the client programmer assumes the server programmer checks the message length for buffer overflows and vica versa.
    Most Students copy from the textbook examples and add minors differences anyways. We had to write a program in our finals, guess how depressing it is to work for hours on a program that doesn't work for a final grade. Instructor finaly said "I can't find the problem either, must be a compiler bug". Our's was a programming course not a comp sci course

    --
    Apocalypse Cancelled, Sorry, No Ticket Refunds
  282. Isn't group work actually doing it's job? by Britcoal · · Score: 1

    If you stop and look at it, your average group project is kind of teaching the lessons of the work place. I know where I went to school we usually had a group project in each class. You learned over time who you'd like to work with and who you wouldn't. Some people were satisfied with a C... just like in the workplace (you know the guys.. the ones that *aren't* reading slashdot with their morning coffee but salon.com/sex instead). There are people who want to do well but are just dumbasses (like the girl in my third year project who was not aware that you had to "unzip" some files and had no grasp of an "object" despite three years of java homework) and you hope these guys aren't hired in the first place. Then there are the guys I usually never see in the workplace: the guy who knows nothing and is convinced it will be easier to spend his career getting the work from someone else rather then actually doing it. (One guy we worked with once insisted he did not know how set two columns in a MS Word document).

    So group work kind of prepares you for all the loonies in the end. Depending on how much drive you have you can still do well with a team of dolts.. or you can do just enough to get by.. or if the team really clicks you can excel. Just like the workplace.

  283. componentize by Hard_Code · · Score: 2

    You need to learn how to "work alone together" ;)

    You need to know how to partition/factor conceptually distinct parts of a problem, define interfaces/APIs between those parts, and then all go to your own caves and write the implementation. When you come back, you should all be able to work together to fit those pieces together. One strategy is for the professor to have a design in his head, and give certain groups a chunk of the solution. Then the class as a whole should be able to all come together, and form a complete solution.

    --

    It's 10 PM. Do you know if you're un-American?