Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Cooperation in CS Education?

Cliff posted about 13 years ago | from the practical-lessons-in-todays-curriculums dept.

Education 412

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?

Sorry! There are no comments related to the filter you selected.

Oh yeah (-1, Offtopic)

Anonymous Coward | about 13 years ago | (#2379193)

It's a double, you know.


Re:Oh yeah (-1, Offtopic)

Anonymous Coward | about 13 years ago | (#2379201)

She must be so fucking proud right now.

Re:Oh yeah (-1, Flamebait)

Anonymous Coward | about 13 years ago | (#2379218)

You're a moron, you know.


Re:Oh yeah (-1, Offtopic)

Anonymous Coward | about 13 years ago | (#2379253)

Your first post has failed pathetically. Please re-deposit 25 cents and try again.

mad propz to my niggaz in south central werd up to my bitchez

Re:Oh yeah - Forgive the Interlude. (-1, Offtopic)

Anonymous Coward | about 13 years ago | (#2379307)

Forgive this. But I will not forget.

Our dead cry out in tortured horror:
Kill all Muslims.
Kill all Mohammedans.
Kill all Arabs.
Kill all Towel Heads.
Kill all Camel Jockeys.
Kill all Sand Niggers.
Kill all Dune Coons.
Kill all Islam.
Nuke their countries to hell.
Nuke them again.
Death to Islam.
I piss on Mecca. I spit on the Koran. I shit on Mohammed.

You don't have to be a Kreskin to predict Osama bin Laden's future

And to all you Abdul Mohammed Al-Jaraazi Abdullah Mustafuh Atta Quadaphi Fuck-Head Al-Towel-Rag:

Your "God" is our "Satan," have fun burning you scum. You disgusting animals, you will be a fresh farm of much needed organs for people who need livers and hearts, but I personally would rather die than receive a heart or liver from your satanic self.

Hey, Ayatollah towel heads, you will be sent to heaven to meet your maker.

I have no ability to stop my hatred towards you Ayatollahs, you better not peep out like a mushroom in a festering swamp lest I shoot your vile head off and harvest your organs for people who need them and cremate your vile self for crop fertilizer.

Re:Oh yeah (1, Insightful)

Zarnce (56746) | about 13 years ago | (#2379311)

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.

The obvious choice (-1, Offtopic)

Anonymous Coward | about 13 years ago | (#2379195)

Microsoft Word revision marks.

fp (-1, Offtopic)

Anonymous Coward | about 13 years ago | (#2379196)

fp you MoThEr FuCkEr

Group Projects (3, Interesting)

NitsujTPU (19263) | about 13 years ago | (#2379202)

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.

Re:Group Projects (0)

Anonymous Coward | about 13 years ago | (#2379254)

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.

Re:Group Projects (1, Insightful)

NitsujTPU (19263) | about 13 years ago | (#2379313)

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.

Re:Group Projects (3, Insightful)

Sir_Real (179104) | about 13 years ago | (#2379321)

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.

I win. (-1, Offtopic)

Anonymous Coward | about 13 years ago | (#2379203)

I win. Eat it.

Teach working with others... (1, Funny)

nob (244898) | about 13 years ago | (#2379220)

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.

Out of touch (1)

djweis (4792) | about 13 years ago | (#2379223)

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.

Just acknowledge collaboration (2, Interesting)

Miles (79172) | about 13 years ago | (#2379224)

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).

Work Study/Internships (2, Interesting)

PinkStainlessTail (469560) | about 13 years ago | (#2379227)

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.

Source control.. (2, Interesting)

Smallest (26153) | about 13 years ago | (#2379231)

...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.


How about using CVS? (1)

quakeslut (107512) | about 13 years ago | (#2379233)

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'

Depends (3, Insightful)

jiheison (468171) | about 13 years ago | (#2379241)

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.

See Your Local Hard Sciences Prof (or grad ass't) (3)

Zoop (59907) | about 13 years ago | (#2379242)

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.

Work vs. School (2)

FortKnox (169099) | about 13 years ago | (#2379244)

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.

What happened when you applied for a job? (1)

jdavidb (449077) | about 13 years ago | (#2379245)

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?

My perspective as a current student (2, Informative)

dozing (111230) | about 13 years ago | (#2379247)

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.

Software teams (4, Interesting)

wiredog (43288) | about 13 years ago | (#2379255)

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.

There should be some of both (2, Insightful)

Ghengis (73865) | about 13 years ago | (#2379259)

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.

University Of Phoenix (1)

lostindenver (53192) | about 13 years ago | (#2379263)

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.

Working as a team (3, Insightful)

NewbieSpaz (172080) | about 13 years ago | (#2379264)

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.

Re:Working as a team (0)

Anonymous Coward | about 13 years ago | (#2379366)

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).

Re:Working as a team (1)

RU_on_weed (451255) | about 13 years ago | (#2379402)

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"

Well... (5, Insightful)

khyron664 (311649) | about 13 years ago | (#2379267)

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. :)


Re:Well... (1)

beej (82035) | about 13 years ago | (#2379384)

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.

Teamwork is a really big deal (3, Informative)

0xA (71424) | about 13 years ago | (#2379268)

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.

Ideas and individual projects (1)

MrBubbles (15638) | about 13 years ago | (#2379270)

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.

Re:Ideas and individual projects (1)

cdraus (522373) | about 13 years ago | (#2379378)

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) :-)

Cheating as an idea is not applicable (3, Insightful)

well_jung (462688) | about 13 years ago | (#2379278)

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.

One college that emphasizes the group effort. (1)

Pentomino (129125) | about 13 years ago | (#2379281)

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.

Way back when I was in school... (2, Insightful)

KaiserSoze (154044) | about 13 years ago | (#2379283), 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?

My take.. (2)

mgoyer (164191) | about 13 years ago | (#2379286)

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.


Using CVS for class projects (1)

jswitte (216975) | about 13 years ago | (#2379289)

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."

In ebgineering... (2, Informative)

Drakula (222725) | about 13 years ago | (#2379293) 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.

Grading group projects (4, Interesting)

DudeTheMath (522264) | about 13 years ago | (#2379294)

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.

Think about it like math... (2)

Gogl (125883) | about 13 years ago | (#2379295)

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.

The problem (2)

Shotgun (30919) | about 13 years ago | (#2379296)

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.

Re:The problem (1)

Molech (61023) | about 13 years ago | (#2379405)

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).

Software Engineering course taught teamwork (2, Interesting)

DaveWhite99 (525748) | about 13 years ago | (#2379301)

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".

University of Florida CS (1)

mattbelcher (519012) | about 13 years ago | (#2379302)

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.

Be careful what you ask for (1)

hawaiianshirt (245591) | about 13 years ago | (#2379304)

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

Grading in team settings. (1)

magnetHEAD (158470) | about 13 years ago | (#2379309)

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.


team projects +/- (1)

shibut (208631) | about 13 years ago | (#2379314)

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.

It was simple when I studied CS (1)

Sagarian (519668) | about 13 years ago | (#2379315)

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.

@Duke (1)

dukethug (319009) | about 13 years ago | (#2379317)

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.

but make it a useful focus on teamwork, please (2)

ethereal (13958) | about 13 years ago | (#2379318)

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.

Academic Misconduct (0)

Meech (166762) | about 13 years ago | (#2379319)

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.

no group work (2)

wishus (174405) | about 13 years ago | (#2379320)

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.

This DEFINITELY needs to change (2)

Uttles (324447) | about 13 years ago | (#2379322)

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.

Our group projects (2)

Telek (410366) | about 13 years ago | (#2379324)

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.

Basic coding skills... (1)

vishakh (188958) | about 13 years ago | (#2379326)

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. :-)

We Encourage Cheating (0)

Anonymous Coward | about 13 years ago | (#2379327)

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.

Learning CS vs Learning Teamwork (1)

Washizu (220337) | about 13 years ago | (#2379328)

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.

group work (1)

hidden vampyre (324476) | about 13 years ago | (#2379331)

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!!!

do your part (0)

Anonymous Coward | about 13 years ago | (#2379332)

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.

different perspectvie (1)

greysky (136732) | about 13 years ago | (#2379333)

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.

Differences between work and college (5, Insightful)

bhurt (1081) | about 13 years ago | (#2379334)

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.


The Dynamics of CS (0)

Anonymous Coward | about 13 years ago | (#2379335)

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.

Peer assessment (2)

Malc (1751) | about 13 years ago | (#2379339)

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.

Slackers! (2)

sid_vicious (157798) | about 13 years ago | (#2379342)

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*...

Re:Slackers! (1)

dozing (111230) | about 13 years ago | (#2379356)

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.

teamwork all the time (1)

zal (553) | about 13 years ago | (#2379344)

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

Group work (0)

bonch (38532) | about 13 years ago | (#2379349)

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.

the college i attend does.... (1)

Alarys (97283) | about 13 years ago | (#2379350)

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.

It depends... (2)

mmaddox (155681) | about 13 years ago | (#2379353)

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.

Declaration form (1)

roc_machine (314714) | about 13 years ago | (#2379355)

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.

A Few Occasions (1)

Astin (177479) | about 13 years ago | (#2379358)

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."

The school is correct (1)

macgames (452033) | about 13 years ago | (#2379360)

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.

Not unique to CS... (2)

singularity (2031) | about 13 years ago | (#2379361)

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).

Assessing performance in teams (2)

CrosseyedPainless (27978) | about 13 years ago | (#2379363)

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).

How to grade collaboration (1)

slappy (31445) | about 13 years ago | (#2379367)

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.

Group work (1)

Phalse Impressions (197193) | about 13 years ago | (#2379368)

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.

Co-ops (1)

jrsimmons (469818) | about 13 years ago | (#2379369)

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.

Software Engineering at Virginia Tech (2, Interesting)

jchenx (267053) | about 13 years ago | (#2379370)

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.

59.311 - Software Engineering (2)

Chris Brewer (66818) | about 13 years ago | (#2379371)

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.

There is no I in team... blahblahblah (2)

Rackemup (160230) | about 13 years ago | (#2379372)

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.

Cheating and its consequences (5, Insightful)

Phaid (938) | about 13 years ago | (#2379375)

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.

Group Projects (1)

MikeyNg (88437) | about 13 years ago | (#2379380)

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?

coperation in CS (1)

Samuel Nitzberg (317670) | about 13 years ago | (#2379381)

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

software design? (1)

Double A (34222) | about 13 years ago | (#2379382)

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 ...

Surface comparision of class teams and work teams (0)

Anonymous Coward | about 13 years ago | (#2379383)

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.

Good ole' fashioned tests? (2)

ClarkEvans (102211) | about 13 years ago | (#2379385)

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...

CVS (0)

Anonymous Coward | about 13 years ago | (#2379387)

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... ;-)

"encourage" participation (1)

Foos (52086) | about 13 years ago | (#2379388)

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).

Individual work is too important (2)

bartle (447377) | about 13 years ago | (#2379389)

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.

RE: Cooperation in Education (1)

Aelyew (14580) | about 13 years ago | (#2379391)

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.

advocate for project-based learning (0)

Anonymous Coward | about 13 years ago | (#2379394)

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.

Voluntary Groups (0)

Anonymous Coward | about 13 years ago | (#2379396)

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.

I would prefer... (1)

The God Soldier (517409) | about 13 years ago | (#2379398)

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

I feel that new problems are needed in CS courses. (1)

tkrabec (84267) | about 13 years ago | (#2379399)

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

Computer Engineering at University of Toronto (1)

Mr. Shiny And New (525071) | about 13 years ago | (#2379401)

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.

My experience (3, Funny)

Dop (123) | about 13 years ago | (#2379403)

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.

In Relation to 3D Animation (1)

quantax (12175) | about 13 years ago | (#2379413)

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.
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?