Collaborative Software For Pair Programming? 302
DavidMatuszek writes "I will be teaching Java again this Fall. Students work in pairs, but unfortunately (after the first hour) typically not physically together. I would like to find collaborative software that is (1) dead simple to use, because that's not what the course is about, and (2) free. Google Docs would do, but students will be sharing code — plain text — not RTF or HTML or Word files. Is there such software for plain text?"
Please (Score:3, Insightful)
Please don't make them work in pairs, it's a horrible way to learn programming. I'm assuming you have enough computers, why not?
Sure--learning to work on a program with others is a necessary skill, but you should already know the basics first.
Re:Use subversion either hosted or your own server (Score:5, Insightful)
Good grief (Score:2, Insightful)
Gnu screen (Score:4, Insightful)
If the course is about Java, why do you expect them to do pair programming? (I assume you mean Pair Programming, not just cooperating to solve the tasks. If you mean the latter, it's just a matter of revision control using SVN or whatever, which they should do anyway.)
Anyway, one free tool that comes to mind is screen(1) (aka Gnu Screen) in multiuser mode. That makes two or more users share a bunch of Unix terminals in real time.
Just Plain Stupid (Score:2, Insightful)
Just cancel pair programming (Score:5, Insightful)
Cancel the pair programming. All that happens is one student in the pair writes all the code. They might swap back and forth, or more likely one will end up doing it all.
Re:Complicated Solutions Exist, So Dumb Them Down (Score:1, Insightful)
Please don't dumb them down.
I'm sorry--the solutions out there aren't that complicated--it's just that students have very real experience on 'interesting' projects. Don't introduce them to some 'dumbed down' VCS... my last crop of interns from the local university thought CVS was something that came with eclipse and didn't understand they could just use the CLI to work with it (they also don't understand what classpath is, and think it's something you edit in eclipse...why would you use apache ant?)
On top of that--they didn't *want* to learn how to type "cvs update" and ...actually use the different abilities of it. If they couldn't figure it out in eclipse, they couldn't do it even with the manual.
As it is, they were basically helpless when confronted with "make a branch for your ticket, and merge back onto the head when you're done."--even after walking some through it two or three times--they just didn't understand *why* you would use a branch. It never occurred to them there might be multiple versions, releases, or even an "always stable" portion of an application--much less that there could be a tool to help with it. Version control to them was just a sort of abstract filesystem.
And that's just CVS--I wonder what would happen if they encountered GIT or mercurial...
By simplifying the interface, you're not doing anybody any favors. Get them on a real, commonly used tool--I don't care if it's CVS, SVN, or even source safe--just get them using the real thing.
Some tools I use... (Score:4, Insightful)
Etherpad for real-time text file collaboration
Yuugu for sharing desktops
Ventrilo for voice communication
Whatever source control solution you wish (TFS, Subversion, Perforce) for non-real-time collaboration with text documents (programs)
Yahoo IM or the chat/IM client of your choice for casual low-bandwith and non-time-critical conversations and sharing of information, links, etc
Email for everything else
Re:Use subversion either hosted or your own server (Score:2, Insightful)
Re:Use subversion either hosted or your own server (Score:5, Insightful)
Um, he's doesn't appear to be talking about a repository, but rather, software to enable pair-programming, only with the pair not sitting next to each other (or in the same room). Say, some software like SubEthaEdit on MacOS X, where two people can simultaneously edit the same document, along with say, Skype or some other voice/video service where the two people can view/interact with each other.
At least that's what I gathered from reading TFS.
Re:Just cancel pair programming (Score:3, Insightful)
If they are supposed to learn how to do this, then I would say yes.
Most likely one student will just not learn anything.
Re:How about gobby? (Score:3, Insightful)
Hmm. It seems they've made great strides since I last played with the thing. I really hope Sobby is easier to set up than it used to be. Last time I tried to get anybody to use this with me, they objected to its difficulty in use and poor user interface. I'll need to look into this again. (I don't remember it having syntax highlighting; I'm really glad it does now.)
Also, watch for Google Wave later this year. (Somebody's bound to write a plugin for syntax highlighting.)
Re:Just cancel pair programming (Score:3, Insightful)
Re:Use subversion either hosted or your own server (Score:5, Insightful)
I vote for the central server. And for having it in the hands of the teacher.
That way he can far better check whether one student does all the work while the other is doing the homework for another class for both of them. Yes, it's also a way to share the burden, but not the way it's meant to be. The server could be made tamper proof and if something's suspicious he could always check the versions and see what was done by what student. Even if they're smart enough to hand both logins to one person and that person fakes doing work as his partner, the IP addresses would give it away if they cheated.
Re:Just cancel pair programming (Score:2, Insightful)
It's true. Unless you end up pairing two students who think they can program better than their counterpart.
Then you get 2 students handing in seperate Code, both amazing in their own right, saying that they wrote it themselves and had no help from their partners, insisting they get a better grade in the class.
And then the consequences of the pair of students with NO programming experience, and are having trouble learning, and end up handing you a page that is well documented but not at all functional.
Re:Just cancel pair programming (Score:4, Insightful)
You assume the hardworking student will just let that happen... that's not my experience (i had 4 years of compsci study where every programming course was done in pairs. This was in the late 80's). When one of the pair was slacking, the other one tended to either do the same (and both failed the exercise), or just do everything himself and complain to the assistents about it, generally leaving the other with an F.
Uh, no. You really think the hardworking student is going to allow himself to get an F? You forget that our teachers have been exposing kids to this collaborative stuff since 1st grade now, hell, including peer teaching, in which the teacher explains something to the class, and then the smart kids explain it to their not-so-smart friends. They won't complain to their TA, they'll just roll their eyes and do all the work, like they're used to.
Speaking from personal experience, teachers love pair programming because it halves the amount of homework they have to grade, and because if you have limited seats in a computer lab, you can squeeze more people in.
That said, I actually do like doing pair programming.
But pair programming is only useful when both people already know how to program (you're not towing an anchor), but you're doing something complicated enough you're worried about bugs. In my neural nets class, the math was so hairy that Bob Boyer and I really had to go over each line of code in order to make sure it was correct. I don't think either of us would have been able to do it on our own (or at least, not without a lot of pain). Our work's been used in various open source spam filters and referenced in patent applications, so it's pretty cool. =)
Re:Use subversion either hosted or your own server (Score:2, Insightful)
-m
Re:Just cancel pair programming (Score:3, Insightful)
Re:Good grief (Score:4, Insightful)
That's all fine and good if you both are hired at a company, for instance, and have to work as coworkers. If, on the other hand, you're paying good money, you shouldn't have to cater to other peoples' needs in a learning environment.
On the other hand, if you're paying good money, you might want an opportunity to develop a skill which will help you when you eventually are hired at a company and have to work as somebody's coworker.
Sitting Next to Each Other (Score:2, Insightful)
Re:Use subversion either hosted or your own server (Score:3, Insightful)
Re:Please (Score:3, Insightful)
Re:My first assignment for your students would be (Score:3, Insightful)
. . . to do some research, and choose for themselves whatever suits their needs best.
Chances are the students don't have the necessary permissions to install new software packages on the school's computers, so this would be a non-starter.
Screen (Score:2, Insightful)