Slashdot Mirror


Collaborative Software For Pair Programming?

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

302 comments

  1. Use subversion either hosted or your own server by ls671 · · Score: 5, Informative

    I would recommend to use Subversion. You could setup your own server but there is also hosted solutions available. I searched Google for "hosted source control" and I found this link :

    http://weblogs.asp.net/fmarguerie/archive/2005/04/27/Hosted-source-control.aspx

    The bonus would be to teach your student how to use version control and how to work together on the same files. Subversion (and older CVS) integrate into Eclipse and most other development environment. There is also standalone clients available if your students use a simpler editor like vi or notepad ;-))

    --
    Everything I write is lies, read between the lines.
    1. Re:Use subversion either hosted or your own server by the+eric+conspiracy · · Score: 2, Informative

      Mercurial would be better for this because both students would have their own repository and no central server would be required.

    2. Re:Use subversion either hosted or your own server by RichardJenkins · · Score: 4, Insightful

      If you're willing and able to release the source code, why not encourage them to use a free account on sourceforge or github?

    3. Re:Use subversion either hosted or your own server by sys.stdout.write · · Score: 3, Funny

      I would recommend to use Subversion

      I agree. But don't forget to do the thing the students will care most about: shave your beard.

      You look like Richard Stallman.

    4. Re:Use subversion either hosted or your own server by localman57 · · Score: 1

      I agree. You could run a local subversion server in your lab. Require each student to have a flash drive (the 128MB ones they sell at walmart for $5 would be fine) where they can do checkouts. Each student pair would have their own repository.
      Do the checkouts / checkins from the flash drive in the lab at the beginning / end of class. That way the students can hack code at home on anything from Win98 / Notepad to Vim on their Mac. They wouldn't even need internet at home.
      Because you could do all the setup before the term started, the students could concentrate on the basics of what you want to teach them, ie programming constructs and software development methods.

    5. Re:Use subversion either hosted or your own server by SanityInAnarchy · · Score: 3, Informative

      Seconded.

      Well, actually, Git would probably be better, but that's a matter of opinion. But even with a central server, Git is faster and simpler than SVN for most things.

      --
      Don't thank God, thank a doctor!
    6. Re:Use subversion either hosted or your own server by HaZardman27 · · Score: 3, Informative

      If these students are embarking upon a journey into computer science, I would say that they should get used to scraggly beards.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    7. Re:Use subversion either hosted or your own server by Anonymous Coward · · Score: 0

      I wouldn't say "simpler". Git can be quite complex. Just the fact that the repository is local and must be pushed and pulled in addition to commit makes it more complex. However, I agree Git is better.

    8. Re:Use subversion either hosted or your own server by zorg50 · · Score: 2, Insightful

      I think that you're answering a different question than what the submitter asked. Subversion is great for people working on files, but has no collaborative/teamwork aspect to it (with respect to encouraging pair programming, anyway). A program that would allow multiple people to use voice or text chat while editing a document, etc, would be more along the lines of what David is looking for.

    9. Re:Use subversion either hosted or your own server by Roxton · · Score: 1

      That's not paired programming, though. This guy needs some kind of shared VNC + microphone setup.

    10. Re:Use subversion either hosted or your own server by davester666 · · 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.

      --
      Sleep your way to a whiter smile...date a dentist!
    11. Re:Use subversion either hosted or your own server by 0100010001010011 · · Score: 3, Funny

      And that's just the women.

    12. Re:Use subversion either hosted or your own server by Joe+Snipe · · Score: 1

      But don't forget to do the thing the students will care most about: shave your beard.

      I beg to differ

      --
      Sometimes, life itself is sarcasm...
    13. Re:Use subversion either hosted or your own server by ls671 · · Score: 2, Interesting

      > I think that you're answering a different question than what the
      > submitter asked.

      Well, I could be, sorry if I am.

      Subversion allow you to enter comment for every change you make and these comments won't go in the source code.

      For the voice/text chat part, we usually just use messenger or something similar.

      Also, I think this would be a great opportunity for the students to learn how to use a real-life tool instead of something they are less likely to reuse in the future.

      But as you said, maybe this is not what David is looking for but I answered to the best of my knowledge ;-))

      --
      Everything I write is lies, read between the lines.
    14. Re:Use subversion either hosted or your own server by greg1104 · · Score: 3, Funny

      That would be very limiting, because you can't write a successful programming language without facial hair

    15. Re:Use subversion either hosted or your own server by tbischel · · Score: 1

      Another alternative that I like is Fossil, which is about as easy as it gets to use, and comes with a wiki and bug tracking built in.

    16. Re:Use subversion either hosted or your own server by Opportunist · · Score: 4, 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.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    17. Re:Use subversion either hosted or your own server by SanityInAnarchy · · Score: 3, Informative

      Well, svn is also quite complex. Compare a git merge with an svn merge.

      I suppose I should say, easier to use, once you know how. The learning curve might be sharper. On the other hand, it's much easier to set up a Git server than an SVN server -- ssh access is all you need.

      --
      Don't thank God, thank a doctor!
    18. Re:Use subversion either hosted or your own server by jackb_guppy · · Score: 1

      I read more of a VNC type of approach.

      Maybe TEAMVIEWER works with windows and I believe mac. I am using to get access to family machines at "remote locations" without driving there.

    19. Re:Use subversion either hosted or your own server by ImNotAtWork · · Score: 1
      --
      open source sub sim. I might start coding again for this. http://dangerdeep.sourceforge.net/contribute/
    20. Re:Use subversion either hosted or your own server by Anonymous Coward · · Score: 0

      goggle gobby - a text based collaborative editor

    21. Re:Use subversion either hosted or your own server by mzs · · Score: 1

      Yeah any revision control system should be fine. Give them accounts on one of your machines. There should be a computer lab in the CS dept. When the students need to work together they should go there and grab two stations next to each other and work from there once they ssh into your box. Other times they can just work from where ever and just email, call, or text each other.

    22. Re:Use subversion either hosted or your own server by FlyByPC · · Score: 2, Interesting

      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.

      If the students used Remote Desktop, nobody would know. I'm posting this during my lunch break at work, but you wouldn't know it from the IP address...

      --
      Paleotechnologist and connoisseur of pretty shiny things.
    23. Re:Use subversion either hosted or your own server by silent_artichoke · · Score: 1

      Teamviewer also works amazingly well under Wine.

    24. Re:Use subversion either hosted or your own server by asurry · · Score: 1

      Yeah, but seeing one of the requirements for it to be "dead simple to use" really rules git out. It was my first thought too though.

    25. Re:Use subversion either hosted or your own server by morganmcguire · · Score: 2, Insightful
      Absolutely! I use svn in all of my courses now (with the command line, not a GUI) and it works great. Some bonuses:
      1. Teacher can see whether students are working on projects, with a log of who did what, when. This is great for resolving extension requests and for grading group projects.
      2. Teacher can help students with their bugs from home at 2am, rather than having to come into lab to see their code.
      3. Students can move files between operating systems
      4. Use revision control as a way of submitting projects electronically, with timestamps
      5. Easy permission and group control allows making projects available, but read-only after deadline
      6. Put reports in HTML or Latex right in with the code and data

      -m

    26. Re:Use subversion either hosted or your own server by Dragonslicer · · Score: 1

      What women?

    27. Re:Use subversion either hosted or your own server by Gible · · Score: 1

      That is one of the coolest useful tools I've seen!

      --
      ~/ One man's opinions is a lifetime of pain. /~
    28. Re:Use subversion either hosted or your own server by Nemyst · · Score: 1

      Why don't I have mod points when I need them?

      While I do love my Subversion server, for something like asked here, Mercurial seems like the perfect choice. Subversion distributed on multiple hosts with no central server, in essence!

    29. Re:Use subversion either hosted or your own server by enFi · · Score: 1

      I think you're missing requirement (1):

      (1) dead simple to use, because that's not what the course is about

      Having been both a student and a TA in this program, I can say with confidence: (a) svn is available for students / courses to use (although there's some overhead to getting it set up), and (b) although there is some command-line education component to the course, these students (depending on which course this is) have plenty to think about with interpreting tracebacks and remembering whether arrays start at 0 or 1. (That dead simple.) They don't need to think about svn quite yet.

      Also, like the OP said, he's looking for concurrent collaboration. As other people have suggested, SEE is the right idea, though cross-platform is a must and web-based is probably better. Mercurial or svn or git are solving a different problem.

    30. Re:Use subversion either hosted or your own server by Anonymous Coward · · Score: 1, Informative

      I agree that git is great, but I must point out that subversion works perfectly fine with plain ssh access. That's what we use at work, and we never needed any other server solution.

    31. Re:Use subversion either hosted or your own server by FooAtWFU · · Score: 2, Insightful

      Emacs in screen -x. Or vim. But they'll freak out with modal editing, I promise. :P

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    32. Re:Use subversion either hosted or your own server by julesh · · Score: 1

      I would recommend to use Subversion.

      You're missing the point of the question. Pair programming involves both partners working on the code, watching as it's written, and one making live suggestions to the other as it's done. VNC would be a more appropriate solution to the problem, or if you're willing to drop the 'free' requirement, I've heard good stuff about this system, which at $100 per user isn't exactly break-the-bank kind of stuff.

      Well, I guess that depends on who you bank with.

    33. Re:Use subversion either hosted or your own server by drago · · Score: 1

      Using a version control system should be mandatory anyways. It does not really matter which one, although I also like git best, the most important thing here is to bring your students to getting used to version control systems. They should embrace them as a normal and invaluably useful thing which can be used not only for programming but also for e.g. managing the work on their next thesis paper.
      But anyways, that's not the point in pair programming. The point is to sit next to each other and do the work together, at the same time in the same file. If physically sitting next to each other is not possible that's a pity because I think it cannot be as effective remotely, but well, when this is the constraint in your case, you have to deal with it. Several tools have been named already, but not the most basic one: screen. It is installable in every Linux version I know (and of the BSD's at least on OpenBSD) and simple to use. Just make it setuid root, start it on one of the hosts, enter ctrl-a ":multiuser on" and ctrl-a "acladd " to allow access from another user. Let the other student log in to the machine and execute "screen -x". Now they share a shell and each can see what the other one types. The drawback of course is that they are limited to using old-school text editors like vi or Emacs and no fancy GUI editors. On the other hand this has the advantage that they really learn how to program and not only to click together some pretty looking stuff without having any idea at all how it works.

    34. Re:Use subversion either hosted or your own server by giles+hogben · · Score: 1

      This stuff: http://etherpad.com/ is really cool for collaborative text editing. It says it is intended for team coding too, although I haven't tried it.

    35. Re:Use subversion either hosted or your own server by antic · · Score: 2, Funny

      The bearded ones disguised as men.

      --
      'Thats they exact same thing a banana wrench monkey.'
    36. Re:Use subversion either hosted or your own server by vantango · · Score: 1

      Bazaar http://bazaar-vcs.org/ does not require a dedicated server.. maybe this would be better than svn?

    37. Re:Use subversion either hosted or your own server by ls671 · · Score: 1

      > Using a version control system should be mandatory anyways

      You would be surprised how many projects I have seen that did not have source control. When I work on such a project, I just use my own CVS repository to store project files. I just can't seem to be able to work without source control.

      Well, this could be a good time to teach the students the importance of source control as you stated above.

      Some other posters have mentioned David might be looking for something more like VNC or screen to better simulate pair programming. Well I think real pair programming should be done in person.

      The next closest thing I have used in my life was using messenger, Skype or similar, cutting and pasting code snippets into the chat tool and doing a commit/update after writing say ten lines of code to the source code file so both developers would be in sync. Do we really need to watch the other developer as he types, will it be wasted time compared to spending that time in writing another method than reviewing both method together ?

      Also, I have worked with Google docs in "remote pair editing word documents" and I did not find that useful the fact that it updated the document in real time, I found it more bothering than anything else. Plus, the amount of versions, close to one version per keystroke, made the history unusable.

      Google docs seems to simply auto-commit/auto-update close to every time you hit a key ! ;-)) There might be some setting for this behavior that I am unaware of although ;-))

      Of course this is my own opinion, others may thing differently.

      As a side note: I use VNC to remotely teach people how to use Eclipse and the SVN/CVS plugins. VNC is great for that. We have never used VNC to do collaborative coding although. Turn on line numbering in your editor and you should be fine with messenger, Skype or something similar and SVN.

      --
      Everything I write is lies, read between the lines.
    38. Re:Use subversion either hosted or your own server by Anonymous Coward · · Score: 0

      Seconded. I would have loved to learn how to use Subversion (or some alternative) in college. It took me a couple of years afterwards before I even discovered that sort of repository even existed.

    39. Re:Use subversion either hosted or your own server by Opportunist · · Score: 1

      Of course it's possible. But the bar is a fair lot higher.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    40. Re:Use subversion either hosted or your own server by Gulthek · · Score: 1

      Yeah, but that's using the repository. Setting up the repository is quite another matter.

    41. Re:Use subversion either hosted or your own server by skeeto · · Score: 2, Informative

      Emacs can actually do this by itself with X, with each user getting their own cursor so they can type at the same time too. The command is make-frame-on-display, which simply asks for what display to use in addition to the current one. This will even work with Emacs running on one machine, and being displayed on two other machines which have X forwarded via ssh.

    42. Re:Use subversion either hosted or your own server by dhasenan · · Score: 1

      I think he's asking for a way to work together on the same code at the same time. If this is the case, a solution like SSH and Screen would be more to the point.

      http://ubuntuforums.org/showthread.php?t=299286

    43. Re:Use subversion either hosted or your own server by zopf · · Score: 1

      We use SSH tunnels all the time at work to hop from server to server on different subnets. Any clever college student could figure it out, and the teacher would be none the wiser, unless he had packet sniffers on the network.

      --
      Did you see the pool? They flipped the bitch!
    44. Re:Use subversion either hosted or your own server by ls671 · · Score: 1

      Well I have come to realize that and this is what I posted :

      http://slashdot.org/comments.pl?sid=1308949&cid=28761879&art_pos=7

      Then I thought about it some more and here is my final post:

      http://slashdot.org/comments.pl?sid=1308949&cid=28766925&art_pos=4

      Basically I think I question the pertinence of the requirement, which a good consultant should do when he feels it needs to be done ;-))

      Note that once I have expressed my concerns, I will respect the needs of the customer if he decides to stick with his first idea ;-)

      --
      Everything I write is lies, read between the lines.
    45. Re:Use subversion either hosted or your own server by Anonymous Coward · · Score: 0

      Facial hair is as essential to programming as coffee.

    46. Re:Use subversion either hosted or your own server by SanityInAnarchy · · Score: 1

      That was my point. When I say "SSH access is all you need", I mean I can create a remote repository with:

      git push foo@somewhere:/path/to/repository

      All that's needed is SSH access. With SVN, I believe you're going to need to setup some sort of backend database.

      --
      Don't thank God, thank a doctor!
  2. Complicated Solutions Exist, So Dumb Them Down by eldavojohn · · Score: 2, Interesting

    Your e-mail address indicates you hold a position at UPenn. While I understand you trying to facilitate their collaboration by providing the right tools, shouldn't they be developing/discovering these tools themselves? I mean at U of MN, we each Unix accounts where we could create directories and set permissions on them. I would create a directory under the directory for that class and grant permissions to my partner and then we would both work on that directory through telnet/ssh/sftp/whatever and keep communicating. Most of the time, we would sit side by side in the lab brainstorming and talking about the project.

    I suggest this because it's ... well, probably more important to my career as a developer than learning Java.

    If collaborating while writing code isn't natural to them, you should be pushing it. I'm not sure what server resources you have at your disposal. What if they have a lot of files? What if you need different permissions for each pair? I would say set up a SVN server but for each pair? And there goes complexity although I found TortoiseSVN to be very simple. It's great experience for them to work with a source control system though.

    So what you should do is write a guide (or better yet, have an grad student write a guide) telling them how to share directories between each other and only each other.

    If these are going to be one file projects (likely) and you don't care if everyone can see/modify everyone else's project (unlikely) why not make a Wiki with ground rules? Just put your code up on you and your partner's page and the whole history is right there.

    Your other option is to go to a higher level course or your department and ask for a solution. You're in a computer science department and you're looking for a particular solution that isn't out there. Everything is too complex: cvs, git, svn, etc. So write up some basic requirements and give it to a class of grad students or someone looking for a research program. I'm thinking like a dumbed down interface to git is all that is needed to be developed. You know, like some really simple java application that points to your local directory and then server and then updates, commits or a few other basic commands? And open source it when you're done coding it :)

    --
    My work here is dung.
    1. Re:Complicated Solutions Exist, So Dumb Them Down by MaerD · · Score: 1

      I would say set up a SVN server but for each pair? And there goes complexity although I found TortoiseSVN to be very simple. It's great experience for them to work with a source control system though.

      I find SVN pretty easy to use for just about anything that's plain text. Also, you don't need one for each pair. Honestly a main tree with a "branch" for each pair should be plenty.

      If these are going to be one file projects (likely) and you don't care if everyone can see/modify everyone else's project (unlikely) why not make a Wiki with ground rules? Just put your code up on you and your partner's page and the whole history is right there.

      Uhm, if it's in svn there's no real reason to keep them from being able to see it. If cheating is your concern (on a project that involves creativity, if it's basic simple stuff or "from the book".. who cares) svn gives you the ability to easily compare code. Also, if someone purposefully overwrites someone elses project branch, you simply revert that change, and punish the student. (Accidents may happen, but if someone does bad things to someone else's project on purpose... an F and/or expulsion is probably called for).

      --
      I put on my robe and wizard hat..
    2. Re:Complicated Solutions Exist, So Dumb Them Down by Anonymous Coward · · 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.

    3. Re:Complicated Solutions Exist, So Dumb Them Down by wjousts · · Score: 1

      my last crop of interns from the local university thought CVS was something that came with eclipse

      At least they didn't think it was a drug store.

    4. Re:Complicated Solutions Exist, So Dumb Them Down by Simon80 · · Score: 1

      And that's just CVS--I wonder what would happen if they encountered GIT or mercurial...

      I think it's a misconception that somehow, because CVS (or SVN) is less flexible than git, that it's easier to learn. It is true that there is some added complexity, but it can be summed up as follows:

      • -a is needed for git commit, to tell it to automatically include all differences between tracked files in the working copy and the last commit (I rarely use this myself, it's better to instead make sure that nothing is accidentally included in the commit by learning how to use git add)
      • git push is needed in order to push commits back to a central repository
      • git rebase origin/master master is needed to deal with concurrency, since you might have multiple commits that you haven't pushed out to the remote repository

      I think the added learning curve here is far less harmful than not having atomic commits, as with cvs, or not being able to edit and manage branches and commits without publishing them to the central server, or not being able to rebase branches on the latest code before publishing them. Merging in the usual way (including git merge) is harmful, because it becomes much harder to track history, but there's no alternative for this in cvs and svn.

  3. Pastebin? by caramelcarrot · · Score: 1

    One of the pastebin-type sites may well fit your criteria - some of them include revisions or even test-running code.

  4. How about gobby? by StylusEater · · Score: 5, Informative

    How about gobby... http://gobby.0x539.de/trac/ ?

    1. Re:How about gobby? by Anonymous Coward · · Score: 0

      Wow, a realtime, cross-platform and actually functional collaborative native editor, even meant for programming. Performance feels great as well.

      I had never seen this before. This will be very useful, thanks! Just what you need when you interactively collaborate (pair programming and stuff).

    2. Re:How about gobby? by Anonymous Coward · · Score: 0

      I second this, I've used gobby extensively with a colleague and it has been a great solution.

    3. Re:How about gobby? by gd2shoe · · Score: 2, 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.)

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    4. Re:How about gobby? by leothar · · Score: 1

      Except it barely works. :(

    5. Re:How about gobby? by buchner.johannes · · Score: 1

      If it is pair programming, you could also just use VNC to connect one student to the other for seeing the same text in an IDE.

      Or, you know, suggest the people sit physically together?

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    6. Re:How about gobby? by gregarei · · Score: 1

      There is also a KDE alternative, Kobby: http://greghaynes.github.com/kobby/ Both Kobby and Gobby can work together.

    7. Re:How about gobby? by tepples · · Score: 1

      Or, you know, suggest the people sit physically together?

      Much of the salary would go to the airlines in such a scenario.

    8. Re:How about gobby? by radez · · Score: 1

      I use gobby for pair / collaborative programming often. I would recommend it. Super easy to start a session and collaborate on a document.

    9. Re:How about gobby? by iotaborg · · Score: 1

      I use gobby a lot at work for collaboratively editing latex documents with my co-authors. I particularly like that it is cross-platform, so I can be using linux and they can be using windows, no problem.

      It just doesn't have an undo feature, which is frustrating! And some weird bugs occasionally.

    10. Re:How about gobby? by buchner.johannes · · Score: 1

      You are teaching off-campus students pair-programming? Fail! At least that was the original requirement, pair programming.

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
  5. Etherpad by BSDevil · · Score: 5, Interesting
    Try http://etherpad.com/ -

    EtherPad is the only web-based word processor that allows people to work together in really real-time. When multiple people edit the same document simultaneously, any changes are instantly reflected on everyone's screen. The result is a new and productive way to collaborate on text documents, useful for meeting notes, drafting sessions, education, team programming, and more.

    --
    Cue The Sun...
    1. Re:Etherpad by Anonymous Coward · · Score: 0

      Try http://etherpad.com/ -

      EtherPad is the only web-based word processor that allows people to work together in really real-time.

      When multiple people edit the same document simultaneously, any changes are instantly reflected on everyone's screen. The result is a new and productive way to collaborate on text documents, useful for meeting notes, drafting sessions, education, team programming, and more.

      It isn't the only.

      http://zeus.cs.drexel.edu

    2. Re:Etherpad by mrbene · · Score: 1

      I've used EtherPad to collaborate on text - it's great for fine tuning wording. The larger the file, the less likely you are to be in the same place at the same time tho - and your students might not need to have as immediate an interaction.

    3. Re:EtherPad by Anonymous Coward · · Score: 0

      Use gobby... you host it locally (well, the gobby client can act as a server, or you can run a standalone server, sobby).

      http://gobby.0x539.de/trac/

    4. Re:Etherpad by Jazzer_Techie · · Score: 1

      I second this suggestion. I've used etherpad quite successfully for real-time collaboration for between 2-4 people. Pair programming is even one of the suggested use cases on the website.

    5. Re:Etherpad by jd · · Score: 3, Informative

      Uck! Marketroid speak! It's not exactly new, there was a multicast-based text editor as part of the MICE suite, and there were some very nice "whiteboard" programs out there which allowed you to use OLE linking to share data between two applications real-time.

      The first certainly was around in the early 1990s, the second was around in the mid 90s.

      EtherPad may be "new" in that it uses HTTP as the underlying protocol, but collaborative editors are ANCIENT. The biggest problem they've faced is that so few people have used them that they have never really maintained critical mass.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    6. Re:Etherpad by Anonymous Coward · · Score: 0

      Seconding this, i helped test some of it and they got it done perfectly, much better than the horrible experience i had with Google Docs collab. (sadly)
      There were some load issues, but those have more-or-less been solved.

      The only fault was not so much a fault of the system, but a fault of the users, and that is ctrl+a abuse.
      But it would be nice to have a setting for the creator to disable ctrl+a events.

    7. Re:Etherpad by Anonymous Coward · · Score: 0

      list of real-time collaborative text editing software

      http://en.wikipedia.org/wiki/Collaborative_real-time_editor#Real-time_collaborative_text_editing_software

    8. Re:Etherpad by Jack9 · · Score: 1

      Uck! Marketroid speak!

      That was inflammatory. It happens to be the product I use for pair programming you insensitive clod.

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    9. Re:Etherpad by Anonymous Coward · · Score: 0

      If it is pair programming he wants to teach (and that's what the OP talks about), then yes, it is a real time interaction we're talking about.

  6. etherpad by bradkittenbrink · · Score: 1

    for simple plain text stuff: http://etherpad.com/

  7. Please by Anonymous Coward · · 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.

    1. Re:Please by doroshjt · · Score: 1

      Are they programming a shared program, like each tackle a separate module, or is one watching the other type?

    2. Re:Please by Sparr0 · · Score: 0

      Do you realize that "sitting together at one computer" has nothing to do with Pair Programming?

    3. Re:Please by Anonymous Coward · · Score: 2, Informative
    4. Re:Please by mdarksbane · · Score: 1

      From my personal experience as a student: have everyone work on the same problem, on their own computer, in "groups" where they are encouraged to bounce questions off of each other at will. This has always been in my experience the best way to code almost anything. There is no substitute for having someone with whom you can easily go "hey, wait, this doesn't make sense, what do you think" any time you get stuck.

      You get all the experience of doing the code completely yourself, all the logical benefits of working through problems with a partner like in pair coding, and none of the boredom of having to wait while someone writes out their method declarations. Just get the kids skype and make them write their programs at the same time.

      In has been my strong experience that pair coding is only helpful for conceptually difficult code - it isn't that useful to have someone catch your syntax errors, that's what the compiler is for. But it is also useful to have a second mind available at any moment when you just aren't sure of the way of something.

    5. Re:Please by FooAtWFU · · Score: 2, Insightful

      I do pair programming for a living. It's great for the senior guy to teach the junior guy what the heck is going on. That said, there needs to be a senior guy first.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    6. Re:Please by Anonymous Coward · · Score: 1, Informative

      Yes it does
      Do you even know what you're talking about ?
      http://en.wikipedia.org/wiki/Pair_programming
      Its kinda like two people trying to drive a car at the same time ..

    7. Re:Please by julesh · · Score: 1

      I do pair programming for a living. It's great for the senior guy to teach the junior guy what the heck is going on. That said, there needs to be a senior guy first.

      When I was a CS student there was enough disparity between us all that in any randomly picked pair, there was a pretty good chance of one having a lot more experience than the other.

    8. Re:Please by Anonymous Coward · · Score: 0

      Do you even know what you're talking about ?
      [...]
      Its kinda like two people trying to drive a car at the same time ..

      Do you ?

      The usual metaphor is one driver and one navigator. Don't try do dismiss an excellent practice just because you can't manage to make it work...

      Plus the guy has a really good point. Just because you're sitting behind the same screen doesn't make it pair programming, and with the right tools, you can pair program without being at the same physical location (the whole point of the post).

      Next time you try and be sarcastic, make sure you don't end up looking like the fool.

    9. Re:Please by rstackhouse · · Score: 1

      Pair programming is more about the two different modes of thought engaged in by the driver and the co-pilot. The driver is thinking tactically: i.e. how do I get this method to do what I want it to do? The co-pilot should be thinking strategically: i.e. how do I keep this class/method from creating side-effects in the rest of the code base. So one person is concerned with the task of synthesis while the other person is concerned with analysis. Modes of thought that cannot be undertaken simulaneously by one person. I suggest you read "Pragmatic Thinking and Learning" for more on this. That senior/junior relationship is nice, but not completely necessary. If you have a "senior" though, the "junior" should be allowed to drive 50% of the time or better.

    10. Re:Please by Knara · · Score: 1

      Yeah but there's no guarantee that the student with "more experience" is going to be able to do things "the right way", any more than the student with "less experience".

    11. Re:Please by sjdude · · Score: 1

      Please don't make them work in pairs, it's a horrible way to learn programming.

      Totally agree. If some aspect of their project fails, how do you know which of them didn't "get it"? How do you know to help that person? Or is it good enough that only one of the pair "gets it" and does all the work? That's usually how it works out and is a shitty way to teach, if you ask me...

    12. Re:Please by KeithIrwin · · Score: 1

      Actually the research shows that it's a very good way to teach programming. The studies done have show that students who are involved in intro classes which give two-person projects generally have better final test scores, create better programs, are more likely to complete the class, and are more likely to take additional computer science courses.

      Dr. Laurie Williams provides a good round-up of the research here. Her papers are provided there, but unfortunately, many of the other paper links are to papers at ACM Portal or IEEE Xplore, which cost money. If you're in a university setting, you can probably access them through your school library. If not, Google can sometimes help find the paper on an author's web site.

  8. Archane by Anonymous Coward · · Score: 0

    I use www.pastebin.com for my code sharing.

    a friend and I use it at least once a week to look at code and make changes. plus you would have access to see it as well.

  9. SubEThaEdit or some other choices... by liquidhippo · · Score: 5, Informative

    If you are working on Mac OS X, then SubEThaEdit is a great choice for collaborative coding. As for other options, check this wikipedia page: http://en.wikipedia.org/wiki/Collaborative_real-time_editor

    1. Re:SubEThaEdit or some other choices... by modmans2ndcoming · · Score: 1
  10. Could try by gubers33 · · Score: 1

    JCreator, it is an easy to use java compiler that would work fine for an introductory Java Class, I have used it to write games. You could use a TortoiseCVS as a share on a schools server. Both programs are free opensource.

    --
    Just because you are wrong and I called you out on it doesn't mean I am a Troll.
    1. Re:Could try by peterjb31 · · Score: 1

      JCreator is not open source and the light edition is only free if you are using it in academia. The free version also doesn't have a built in CVS client. In this situation there are many other IDE's out there which are Open Source and have many more features (Netbeans or Eclipse) and are cross platform for an added bonus.

      --
      There is no place like /home
    2. Re:Could try by AceofSpades19 · · Score: 1

      JCreator is windows only and why would you use CVS nowadays?

  11. SubEtha? by galego · · Score: 2, Informative

    SubEthaEdit (Hydra once upon a time) allows live collaborative editing. not sure of the security or other implications/issues. I tried it once or twice. Was a decent editor otherwise ... no real big frills.

    --

    Que Deus te de em dobro o que me desejas

    [May God give you double that which you wish for me]

  12. Plaintext? by Dan+East · · Score: 1

    but students will be sharing code - plain text - not RTF or HTML or Word files

    I'm with you on Word files being binary, but RTF and HTML are both plain text.

    --
    Better known as 318230.
    1. Re:Plaintext? by jd · · Score: 1

      I'd consider RTF to be RatherObscureText, rather than PlainText, and HTML is more ModeratelyobscureText. Both can be contrasted with TeX, which is AlmostPlainButBloodyAnnoyingText.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  13. discussion forum by poetmatt · · Score: 1

    even good ole discussion forums where everyone quotes eachother and modifies, creates new threads for other topics, etc would work just fine. Subversion would make that easier and the google docs suggestion or open office can do this too.

  14. Github by Anonymous Coward · · Score: 0

    If you want private, pay, otherwise it's free and super easy to use.
    http://github.com/

  15. My first assignment for your students would be .. by PolygamousRanchKid+ · · Score: 3, Interesting

    . . . to do some research, and choose for themselves whatever suits their needs best.

    If they make a good choice, they will be all smiles. If they make a bad choice, they will have learned something that they will encounter again in their careers.

    --
    Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
  16. Good grief by Anonymous Coward · · Score: 2, Insightful

    Don't hold your brighter students back because you want the class to learn together! You have to accommodate all minds, not just the slower ones. I went through this, and quite simply I didn't learn anything but how to pretend to be interested.

    1. Re:Good grief by St.Creed · · Score: 1

      What?

      I take it you don't know much about pair programming. It is not 'to drag down the brighter students', it is a best practice for programming that has been used at least since the middle of the 1980's when teaching programming. Later on it became a staple of the 'extreme programming' method that gave us a few other useful things such as testing frameworks etc.

      I tried to introduce it to my workplace, but (and this wasn't a surprise) the worst programmers didn't want it because 'they didnt like people looking over their shoulder'. The good ones didn't need it as much, so it was out again.

      Summary: this is not so much to help the bad students, as it is to help everyone program both faster and with less mistakes, i.e. more productivity. Similar to teaching them not to use 'goto' statements.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    2. Re:Good grief by pjt33 · · Score: 2, Interesting

      Not that it's what this is about, as someone else has already pointed out, but getting the brighter students teaching the slower ones benefits both groups. Being able to communicate things which are obvious to you to people for whom they aren't obvious is a valuable skill.

    3. Re:Good grief by Anonymous Coward · · Score: 0

      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. What if, the next time the class is offered, all the students are of an extremely high caliber? Should my money be worth less education because of the random luck of the draw as to what students are in my class? A resounding no, in my opinion.

    4. Re:Good grief by Phroggy · · Score: 3, 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.

      --
      $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
      $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
    5. Re:Good grief by swillden · · Score: 1

      If, on the other hand, you're paying good money, you shouldn't have to cater to other peoples' needs in a learning environment. What if, the next time the class is offered, all the students are of an extremely high caliber? Should my money be worth less education because of the random luck of the draw as to what students are in my class?

      So you're saying the school should ensure there are some slower students in the class so you can get full value, and learn the skill of explaining things?

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    6. Re:Good grief by Kadin2048 · · Score: 1

      This is typically called "diversity," and yes, a lot of schools spend a lot of effort maximizing it. Even at the cost of admitting 'slower' students.

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    7. Re:Good grief by swillden · · Score: 1

      Yes. Read the GP's post. He was decrying classes that required him to spend time working with others who he didn't perceive as up to his standards -- completely missing the GGP's point. I was reinforcing the GGP's point, that it's a good thing to learn to explain to work with others who don't think the same way you do, and a valuable skill you may acquire during your schooling.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  17. Adobe Buzzword by Anonymous Coward · · Score: 1, Interesting

    adobe buzzword
    simple to use
    can export it any format

  18. Gnu screen by jgrahn · · Score: 3, 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.

    1. Re:Gnu screen by jellomizer · · Score: 1

      While the course may not be about working in teams and having the students learn to collaborate. You should teach them that anyway. It is a valuable skill in Real Life (c) [tm]. Now you should have them do it their own way but give them guidelines on what they should consider. Use a versioning system sure. Emails IM to make sure they are not stomping on each foot. Or do it the Old way (GASP) write out what they will do each of their responsibility make a project plan and who will do what and when. Make prototypes etc....

      You don't need to grade them on their project management. However learning isn't always about the class you teach.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    2. Re:Gnu screen by Unoti · · Score: 2, Informative

      Teach them screen, yes. We use it constantly where I work, which is an environment where we have distributed developers working together all around the world. Screen is not dirt simple, but it's a real life practical skill that's worthwhile to teach the students. I'd rather take the extra time to get everyone comfortable with screen and have them do real collaboration than to mess around with pretend solutions like Google docs or etherpad. We use Etherpad and Google docs, too, but for pair programming and troubleshooting, Screen is hard to beat.

    3. Re:Gnu screen by charlesnw · · Score: 2, Informative

      I think that screen is very easy to use.

      ssh
      screen -S "blah"
      ctrl + a :multiuser on :acladd user (repeat for every user you want to have access)

      Took just a couple minutes of googling to find a howto the first time I did it.

      --
      Charles Wyble System Engineer
    4. Re:Gnu screen by Anonymous Coward · · Score: 0

      Using it at work at the moment for pair programming like so:

      1) Create an account that both of us can access (let's call it 'foo').
      2) ssh to foo@server
      3) Start up a screen session there:
            screen -S outer -e^yy
            (This starts up a screen named 'outer', with ctrl-y set to the escape code)
      4) Inside the screen, create another screen:
            screen -S inner
      5) Have the other person ssh to foo@server
      6) Have them connect to the outer screen:
            screen -x -S outer

      screen -x allows you to share the session, but using a screen-within-a-screen means we both control the inner screen - we can switch switch between terminals and editors easily to make a point. This can be very useful if you keep design docs in a window to refer to...

      We even spent a day on the phone, swapping every 45 minutes - it worked beautifully. Some of the best code I've worked on recently.

  19. Windows Live Mesh by bivaughn · · Score: 1

    The currently in-beta Windows Live Mesh (www.mesh.com) allows multiple users to share file folders and synchronizes changes of the files inside each folder between them transparently. It is amazing.

    1. Re:Windows Live Mesh by iamapizza · · Score: 1

      Another vote for Live Mesh - I use it as a 'lazy source control' at home. They've got versions of it out for the OSX and Windows Mobile already, I just wish they'd make one for Linux*.*. You (plural) may recall a /. post earlier about how many of us still haven't switched completely to Linux because there's always some software on Win*.* that we need that isn't available on other OSes. For me, this is it.

      --
      Always proofread carefully to see if you any words out.
    2. Re:Windows Live Mesh by h4rr4r · · Score: 1

      Use rsync, find and cron. If a file has been changed in the last X minutes move it.
      TADA!

    3. Re:Windows Live Mesh by johanatan · · Score: 1

      LiveSync is better for syncing between personal computers (no storage limit and no need for central server). Mesh also has bugs around deleted, renamed, moved files etc. If you want a Mesh-like solution (i.e., with centralized storage) try: http://dropbox.com/ (it handles complex file operations perfectly and intelligently [unlike Mesh]).

    4. Re:Windows Live Mesh by shaka · · Score: 1

      You might wanna take a look at Dropbox. It lets you sync files with an account at their servers, and also lets you share folders between groups of people. There are clients for Windows, Mac and Linux, and it's nicely integrated in the file system (I've only tried it on a Mac, though). It also comes with built-in undo.

      It's free with 2 GB of data and 30 days of undo, and they've got 50 GB for $9.99 per month, 100 GB for $19.95, both with unlimited undo (I think).

      I have no affiliation with Dropbox other than being a happy user, however, if you decide to check it out I would be happy if you used this link to sign up, since that would give me a little extra space!

      https://www.getdropbox.com/referrals/NTExODQ0NDg5

      Best regards,
      Linus

      --
      :wq!
  20. Just Plain Stupid by pdxguy · · Score: 2, Insightful

    IMHO, writing software, in Java or any language, is a creative effort. There are many fields of creative endeavor - artists, musicians, developers, etc. Pair programming is just plain stupid and nuts IMO. Do you ever hear of pair painting (canvas not houses), pair sculpture, pair composing, pair solo singing - no you don't. I had hoped this pair programming nonsense had faded into oblivion - I guess not, but let's try to push it over the cliff and into the abyss of poor ideas.

    1. Re:Just Plain Stupid by tthomas48 · · Score: 2, Interesting

      Actually yes. Modern music is almost always collaborative. Sculpture is often done with more than one person. And modern theater is pretty much gotten to the point where you frequently have multiple collaborators (not to mention musical theater which has been paired pretty much since its inception).

      I find that some people are not compatible with paired programming, but when it works it can be amazing. My old boss and I would write code for entire days without getting up once. Not particularly healthy, but ridiculously productive.

    2. Re:Just Plain Stupid by SomeJoel · · Score: 2, Funny

      pair solo singing

      I believe this is called a duet.

      --
      <Complete your profile by adding a signature!>
    3. Re:Just Plain Stupid by Jupiter+Jones · · Score: 1

      Actually, there are tons of good examples where pairs resulted in fantastic creative endeavors. Go see a Rogers and Hammerstein musical, or a Gilbert and Sullivan operetta. Or watch "The Matrix" or "The Big Lebowski" while sitting in an Eames lounge chair.

      Programming is an art, sure. But no more or less than any other engineering discipline. Go tell the Wright brothers or Hewlett and Packard that working in pairs is "just plain stupid".

      There are valid arguments against Pair Programming. However, the old "creativity is a one-man show" idea isn't one of them.

      JJ

    4. Re:Just Plain Stupid by snaz555 · · Score: 1

      Do you ever hear of pair painting (canvas not houses), pair sculpture, pair composing, pair solo singing - no you don't

      Pair composing is extremely common.

      I remember learning programming in the late 70s (7 or 8th grade probably) by sitting with a friend next to a computer and working together on programs. Both BASIC and 6502 assembler on the Apple II. This wasn't part of any training course or intentional teaching scheme; it was simply a necessity since there were two neophyte programmers and one computer. I think it's a good experience and an effective teaching aid. I also think it's completely useless and counterproductive for more than getting started. Once they can write working programs (not necessarily pretty, but functional) collaboration is more useful. Get used to reading svn commit mail and see what changes others make, review them, and look for improvements. Also teach them to look over and review their own changes like if someone else had made them.

    5. Re:Just Plain Stupid by Chabo · · Score: 2, Informative

      Actually, there are tons of good examples where pairs resulted in fantastic creative endeavors. Go see a Rogers and Hammerstein musical, or a Gilbert and Sullivan operetta. Or watch "The Matrix" or "The Big Lebowski" while sitting in an Eames lounge chair.

      Except that pairs almost always divvy the work between them in a very delineated way:

      With Rodgers composing the music and Hammerstein adding the lyrics...

      Gilbert, who wrote the words... Sullivan composed the music...

      Partnerships between two people with very similar opinions and skillsets (the Coen brothers, for instance) are extremely rare.

      --
      Convert FLACs to a portable format with FlacSquisher
    6. Re:Just Plain Stupid by modmans2ndcoming · · Score: 1

      It is idiots like you who are the reason we have such badly written programs out there.

      Writing software systems of any significance is an engineering task, not an artistic task. Engineering requires team work and methodology.

    7. Re:Just Plain Stupid by Knara · · Score: 1

      Modern music composition is only consistently collaborative in the sense that multiple people are required to serially work on a project until it is put into a recorded form.

      Music composition is still very frequently a solo endeavor (not to say that "jam sessions" can't come up with good songs, but lots and lots of songs are written solo and only slightly modified collaboratively).

    8. Re:Just Plain Stupid by Knara · · Score: 1

      Managing the construction projects for software requires methodical, systematic approaches.

      Even the most stodgy, boring books on software engineering will note, however, that "practioner" software writing practices vary widely, and that actually writing code is still very "artistic" as opposed to "mechanistic".

    9. Re:Just Plain Stupid by modmans2ndcoming · · Score: 1

      And they mention that because it is a problem.

      Practitioner structural engineers follow methodology because we have learned the best methodology to build physical structures to increase their safety and strength.

      The software development world is transitioning from artistic approaches to professional methodological approaches. To continue to use artistic approaches to building a software component is inappropriate.

    10. Re:Just Plain Stupid by Knara · · Score: 1

      No, they mention it because while software engineering *planning* and *project management* should be regimented and methodical, writing the code itself never will be, until it is no longer written by humans.

      The methodologies are there to compensate for the human factor. Having set, well-researched workflows provides the proper QA/QC that will catch those human idiosyncracies if they are problematic, and allow them to flow through if they are not.

  21. Bespin or Cola by illumina · · Score: 2, Informative

    https://bespin.mozilla.com/ - is a pretty slick in-browser code editor, that, if I'm not mistaken allows shared editing like Google Docs.

    There is also an Eclipse plugin called Cola that allows simultaneous editing, but I'm not sure how stable it is, I've only seen a video demo.

    And whichever method you choose, source control should be mandatory, ideally distributed (git or mercurial), though SVN is better than nothing.

    1. Re:Bespin or Cola by Anonymous Coward · · Score: 0

      I second the Bespin advice, very nice and designed for this kind of task.

      AC

    2. Re:Bespin or Cola by Anonymous Coward · · Score: 0

      It does and if they mean simultaneous editing like Google Docs this is the closest you'll get. The other suggestions of Git and Subversion don't come close. If Bespin was integrated with Google Wave that'd be even better but I don't think that exists yet.

  22. Git? by grungy · · Score: 1

    Why not use git? Or cvs or any other source control, really. If it's really pairs, they could just email the source back & forth, and that might be easiest, provided they can manage conflicts on their own. With three or more that could be a hassle, and then I'd set up source control. Heck, make your departmental sysadmin do it! Then it'll be painless :)

  23. VNC by dgym · · Score: 1

    If you have somewhere to host them you could set up some VNC servers running a desktop and all the applications they need. Two people can share the same VNC desktop so you can do the joint development. What this doesn't do is coordinate things at all, but for that I would suggest VOIP as it doesn't need mouse or keyboard input.

    One bonus is that they don't have to set up much software, just a VNC client and a VOIP client. Setting up the VNC servers is easy too, you only need to get a host installed with all the right software and then run as many VNC servers as you need on top of that.

  24. Just cancel pair programming by h4rr4r · · Score: 4, 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.

    1. Re:Just cancel pair programming by indre1 · · Score: 1

      Does it actually matter if both the students know exactly what each line of code does? In many cases, programming might just be a "side course" for some other specialty where understanding some code makes your life a bit easier.

    2. Re:Just cancel pair programming by h4rr4r · · Score: 2, 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.

    3. Re:Just cancel pair programming by PolygamousRanchKid+ · · Score: 1

      One of my profs used to say:

      "Most students say that they learn the most in this course from the lab exercises."

      "Actually, I think that they learn the most from their lab partners."

      --
      Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
    4. Re:Just cancel pair programming by GreatBunzinni · · Score: 2, Insightful

      It will also force socialization and it's an excellent way for students to learn how to work in a team. That alone is more important than whatever grade they will get in any "learn how to program" course.

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    5. Re:Just cancel pair programming by Anonymous Coward · · Score: 1, Informative

      In education you get out of it what you put into it. If one of the pair wants to slack and learn nothing that's his problem.

      Your spending the money to get the education. Do the Work. If you find that your partner is doing all the work speak up, be an adult, and take charge.

    6. Re:Just cancel pair programming by Monkeedude1212 · · 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.

    7. Re:Just cancel pair programming by St.Creed · · Score: 1

      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.

      In general pair programming is a best practice for programming. If you need to explain what you're doing, you tend to avoid a lot of bugs before you even write the code.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    8. Re:Just cancel pair programming by Anonymous Coward · · Score: 0

      Thank you. I was starting to think that I was the only one who thinks all this emphasis on pair programming is ridiculous.

    9. Re:Just cancel pair programming by elloGov · · Score: 1

      Writing the code is putting ideas on paper. It's the planning, brainstorming and communication that brings out the power in pair programming. IMHO, pair programming is best practiced with 2 developers sitting behind one computer. One can only operate the keyboard obviously, however, you will find that the second person will be right there watching the code written and second it for assurance or suggest improvements. If the idea is not understood, second person can take over the keyboard momentarily.
      Although I like Subversion, there is a learning curve. You might be able to forgo this by setting up the SVN server for all your students and going over the basic commands they will need. Subclipse plugin Eclipse can put a GUI interface to SVN. That is if you guys are using Eclipse for Java Dev.

    10. Re:Just cancel pair programming by MpVpRb · · Score: 3, Interesting

      I am SO glad that this stupid idea did not exist when I started learning programming.

      If it had, I probably would have quit the class.

      I just happen to learn better alone, just me and the machine.

      I don't want to have to win a debate with another person before trying something, I just want to try it...now.

      ...BTW...now that I know what I'm doing, I work VERY well as a member of a team.

    11. Re:Just cancel pair programming by ShakaUVM · · Score: 3, 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. =)

    12. Re:Just cancel pair programming by story645 · · Score: 1

      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.

      So you switch the pairs after the first assignment, or better yet use a combination of survey and quiz to figure out who's at what level and assign the pairs based on that. And give quizzes/exams based in the material, so that the weaker student still needs to learn it. One professor let us pick our final partners based on a survey, and it seemed to work out well for all the teams involved. And sometimes there is awesome karma: I had a friend who got a D in a course when his team wouldn't put his name on the final project 'cause he didn't contribute to it.

      --
      open source modern art: laser taggi
    13. Re:Just cancel pair programming by upuv · · Score: 1

      But what do the students say?

    14. Re:Just cancel pair programming by JeffTL · · Score: 2, Insightful

      That's cute, but these are university students who have already sat through 13 years of that in K-12. They signed up and are paying for a class on computer programming and should get what they pay for, not an occasion to "force socialization" -- that's for down at the bar after the assignment deadline.

    15. Re:Just cancel pair programming by Anonymous Coward · · Score: 0

      I'm no fan of pair programming in the professional world (leave me alone while I'm working unless it's very important, your just slowing me down).

      As a teaching aid I really don't see any problem with it at all. Pair the strong students with the weakones. Have the weaker of the two do all the typing while the other explains and double checks. The strong student learns patience, leadership team work and code reviews (they're usually the loners in the bunch and need to be forced to work this way) while the weaker student gets a tutor and second set of eyes.

    16. Re:Just cancel pair programming by Anonymous Coward · · Score: 0

      When I was in Uni I took a course that I found extremely interesting (probably the most interesting computer-related course I've taken in my entire degree). During the first lesson the teacher said that we can submit our assignments in pairs. During the break someone I've never seen before asked me if I could put her name on my assignments. I said yes, and she got a very good grade without attending a single lesson (she didn't even bother staying till the end of the lesson).

      There wasn't an exam at the end of the course - it was a software project which I wrote alone and presented alone (giving some excuse for the other student).

      I wasn't affected by this (I found the course extremely interesting, didn't mind working hard on my assignments and on the final project), the other student got a good grade, and the teacher had less work.

    17. Re:Just cancel pair programming by GeckoAddict · · Score: 1

      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

      Is there a reason you couldn't work out the algorithm and design first, and then code different parts independently, and just review the other's work? As long as it matched the design and algorithm you developed, you should be good. And reviewing will be easier since you're familiar with the design, and you can unit test parts of the code separately. I do completely agree with your statment about the hardworking student just doing all the work. He wants to get an F just to screw with the other lazy person, but we all know that he cares too much let it happen.

      Back to the OP: The only thing I ever figured out from 'pair programming' was how to burn time while we switched off coding the design we came up with together. Let the teams come up with a design together, but let them code it independently. If they have questions, they have the same design and can help each other out and be a resource for the other. Much more valuable if you ask me.

    18. Re:Just cancel pair programming by GreatBunzinni · · Score: 1

      Why exactly do you believe that a programming language class requiring the students to deliver a work assignment somehow means that you will not learn how to program? Moreover, did your K-12 curriculum included learning how to be a part of a team writing software?

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    19. Re:Just cancel pair programming by shaka · · Score: 1

      Nice nickname!

      Please tell us a bit more about the code, I'd like to look at some hairy neural net code right now, actually.

      All the best,

      --
      :wq!
    20. Re:Just cancel pair programming by smash · · Score: 2, Informative
      Just thought i'd respond to this.

      Back in the day, when I was about 15 and starting out trying to write demos (as in demoscene - we managed to replicate a few effects we'd seen back in the 90s from other big groups - after going "Wtf, how does that work?"), a friend and I started coding together.

      The actual CODING is a one man job, sure; but when you're trying to solve a problem, having 2 minds work on the ALGORITHM gets you better results, quicker IMHO.

      Sure, you'll possibly end up with the same algorithm/code eventually anyway, but having a second set of eyes and brain analyzing the process you're going to use picks up potential problems earlier. While you're thinking you're clever with some part of the problem, the other person is finding the glaringly obvious bug that you haven't seen (yet).

      2c.

      --
      I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
    21. Re:Just cancel pair programming by MpVpRb · · Score: 1

      Today, at my present skill level, I agree.

      I prefer working with a good partner.

      But...I still believe that learning for the first time is better alone.

      It's too easy if your partner finds the bug.

    22. Re:Just cancel pair programming by Froggy · · Score: 1

      I teach an introductory CS/intermediate Java course, and we use pair programming for most of our lab work -- it's not so much about saving marking time as about getting to give students better-quality feedback. We mark all our labs in class, so we get to quiz the students in person and let them tell us the reasons behind their design choices, but that means our marking time is fixed.

      So what we do is mark each student on his or her comprehension of the solution, as demonstrated in the marking interview. Weaker students get little benefit from riding on the coattails of stronger students. We do find the odd strong student who's not willing to let his or her partner touch the codebase though. Pairs like this we either counsel or break up.

      We also don't let students have the same partner more than three times during one semester, so they get practice at working with programmers of different skill levels.

      --
      It is a woman's prerogative to change other people's minds.
    23. Re:Just cancel pair programming by Anonymous Coward · · Score: 0

      Uh, no. You really think the hardworking student is going to allow himself to get an F?

      The snag happens when you get bright students paired together in more than one class. "Right, you do the CS302 work, I'll do the CS303 work. Sorted." (Not that I'm speaking from past personal experience or anything... we both got HDs)

    24. Re:Just cancel pair programming by JeffTL · · Score: 1

      My issue is principally with the comparative importance of some sort of social intervention and collaboration lesson versus the skills advertised in the course catalog, which might be better handled in an individual format. This is particularly the case in an intro class where most of the students may well not be CS or software engineering people and are likely to code individually if at all beyond the final exam.

    25. Re:Just cancel pair programming by bjoernfan · · Score: 1

      With Git, you can tell who submitted any line.

      git blame configuration/squid/squid.conf | head -n 1
      ^a41f13c (Bj&#246;rn Pettersson 2008-12-25 03:27:54 +0100 1) dns_testnames localhost

      (Also: Yes, you can call me Bjorn. ;))

    26. Re:Just cancel pair programming by St.Creed · · Score: 1

      If they're really that bright, they'll probably realize quick enough that actually doing both assignments together increases the speed AND accuracy with which they'll complete them...

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    27. Re:Just cancel pair programming by St.Creed · · Score: 1

      Uh, no. You really think the hardworking student is going to allow himself to get an F?

      No, what I said was: the hardworking student will complain and have the OTHER student get an F. Ofcourse the one doing all the work would just get a normal grade.

      Well, that'll teach me never to imply things on a slashdot posting :P

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    28. Re:Just cancel pair programming by St.Creed · · Score: 1

      Is there a reason you couldn't work out the algorithm and design first, and then code different parts independently, and just review the other's work? As long as it matched the design and algorithm you developed, you should be good. And reviewing will be easier since you're familiar with the design, and you can unit test parts of the code separately.

      On tricky algorithms you're probably much better off to have 4 eyes scanning the code while typing, because it prevents a lot of bugs. If one person goes off to do something else that won't work ofcourse.

      I do completely agree with your statment about the hardworking student just doing all the work. He wants to get an F just to screw with the other lazy person, but we all know that he cares too much let it happen.

      That was a misinterpretation of my post. I was suggesting the hardworking student complained about the lazy one. I've seen this happen. The lazy one either got an outright F, or had to redo it all - solo. The hardworking one was graded on the assignment normally.

      Back to the OP: The only thing I ever figured out from 'pair programming' was how to burn time while we switched off coding the design we came up with together. Let the teams come up with a design together, but let them code it independently. If they have questions, they have the same design and can help each other out and be a resource for the other. Much more valuable if you ask me.

      This really depends on how much time you want to spend fixing bugs as opposed to preventing them. It also depends on the complexity of the task at hand. Given that the material is new to the students, and for them complexity is high, the following quote might be applicable.

      From 'The effectiveness of pair programming: A meta-analysis', by by: Jo E. Hannay, Tore DybÃ¥, Erik Arisholm, Dag I. SjÃberg.

      "Several experiments on the effects of pair versus solo programming have been reported in the literature. We present a meta-analysis of these studies. The analysis shows a small significant positive overall effect of pair programming on quality, a medium significant positive overall effect on duration, and a medium significant negative overall effect on effort. However, between-study variance is significant, and there are signs of publication bias among published studies on pair programming. A more detailed examination of the evidence suggests that pair programming is faster than solo programming when programming task complexity is low and yields code solutions of higher quality when task complexity is high. The higher quality for complex tasks comes at a price of considerably greater effort, while the reduced completion time for the simpler tasks comes at a price of noticeably lower quality. We conclude that greater attention should be given to moderating factors on the effects of pair programming."

      Not a complete vindication of what I wrote, but it provides some insight nevertheless.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    29. Re:Just cancel pair programming by ShakaUVM · · Score: 1

      Nice nickname!

      Ah, so you're the guy that took the Shaka name. =)

      Please tell us a bit more about the code, I'd like to look at some hairy neural net code right now, actually.

      Hmm, my old UCSD account is no longer active, but various people took our code and made open source projects out of it. I didn't follow it, but maybe this is one of them:
      http://variant.ch/phpwiki/NeuralNetworksForSpamDetection

      The math was the tough part - segmenting 56-dimensional spaces in optimal fashions, essentially.

    30. Re:Just cancel pair programming by ShakaUVM · · Score: 1

      No, what I said was: the hardworking student will complain and have the OTHER student get an F. Ofcourse the one doing all the work would just get a normal grade.

      Well, that'll teach me never to imply things on a slashdot posting :P

      I TAed introductory computer science a number of quarters and never once had a student complain to me that their partner was an anchor. Even when it was brutally, painfully obvious from watching a pair work in the computer labs that one of the partners was completely clueless.

      Instead, one of the classes went with an alternate route and a massive cheating network popped up for all the anchors.

    31. Re:Just cancel pair programming by ShakaUVM · · Score: 1

      >>Is there a reason you couldn't work out the algorithm and design first, and then code different parts independently, and just review the other's work?

      We'd already worked out the design, and the other bits of the program were trivial (and we did split them up). But the math bits were complicated enough that it was important we both watched it go in so that it was implemented correctly.

    32. Re:Just cancel pair programming by ToddlerArmyofOne · · Score: 1

      To talk about what you are doing is a great learning tool. If you pair a smart student with a bad student you will give that bad student teaching that you cant do yourself. If two equally gifted students work together they will learn from each other. It is however very easy to give out tasks that are only time sinks and not enough thinking. Then there is no gain in collaboration.

      The difficult thing about group tasks is that you have to be a lot smarter as a teacher and be sure of what you want the pair programming to accomplish. There is no magic in group work. You have to add the magic by perhaps giving them different roles, or ask them to do different parts that must fit togheter, or whatever.

      One trick I like is to hand out a test and then group students according to result. That will give all incentive for the test, and allow good students to learn from a matching partner.

    33. Re:Just cancel pair programming by GreatBunzinni · · Score: 1

      If you haven't noticed, a company is nothing more than a social organization, along with each department and even coding teams. When anyone is interviewed for a job, the interviewer not only evaluates the candidate based on his technical prowess but also if he is socially able (i.e., can work in a team and as a team, is able to help others, can adjust to a team in order to accomplish tasks, etc...). If a school only focuses on the technical aspect (i.e., learn the language) then it may even be able to dump in the job market tons of people with encyclopaedic knowledge but if they haven't learned how to work well with others then those graduates may as well file for a job at MacDonalds.

      And also let's not forget that a university is supposed to make the so called elites, the "leaders of tomorrow" and that every relevant business transaction is, at it's heart, a social interaction. You are free to try to minimize the importance of learning how to socialize and handle yourself in social interactions. Nonetheless, don't fool yourself by believing that it isn't a vital skill in a professional environment. And let's not forget that it's far easier to teach someone how to program than to teach him how to deal with people.

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    34. Re:Just cancel pair programming by Anonymous Coward · · Score: 0

      If you haven't noticed, a company is nothing more than a social organization,

      It really loses its value completely both for socializing and at work teamwork when its all done over the wire.

      The teacher should go to the effort of pairing them up based on their ability to physically meet (ie geographically close, similar free time etc) and allow them to work individually if thats impossible. Technology isn't always better.

      I do however think revision control should be used for all homework. Sometimes you add that extra feature just before you hand it in and when you test it the next day, nothing works. You could nominate your previous revision, if you were using revision control.

  25. Make the students figure it out.. by Anonymous Coward · · Score: 0

    I recently graduated and although no professor had "forced" us to use collaborative tools on our projects we always ended up doing so.

    Google Code was popular, as were a few other cheap/free SVN driven online solutions..

  26. No Special Software Needed apart from Chat by loom_weaver · · Score: 1

    When I pair program, what works best is to have two computers. One person does the typing with the 2nd watching. However, when needed, the 2nd person can use their computer to look things up and do research on the fly when needed to support the 1st.

    If information (such as a URL) needs to be passed from one system to the other then a simple chat client does the trick.

  27. Re:Obvious answer is obvious by ravenlock · · Score: 1

    I think the OP is going for collaborative editing, not sharing code via a SCM. The feedback cycle is entirely different when you can just type up something and the other party sees it immediately, instead of having to commit, notify the other, then have them do an update.

  28. Have you also considered fruits? by iamapizza · · Score: 1
    --
    Always proofread carefully to see if you any words out.
  29. Some tools I use... by SpryGuy · · Score: 3, 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

    --

    - Spryguy
    There are three kinds of people in this world: those that can count and those that can't
    1. Re:Some tools I use... by Anonymous Coward · · Score: 0

      Screw that jumble of inconsistent programs. There is a single answer for all of that:
      EMACS (http://www.gnu.org/software/emacs/)

      I am pretty sure it does all of that. You may need to download and customize an extension or two, though.

    2. Re:Some tools I use... by cbhacking · · Score: 1

      Why in the world use Ventrilo + an IM client? First, Vent servers need to be set up, the free ones are limited, etc. Second, Vent has built-in chat, but it's kind of week. Third, and most importantly, why not just use something like Skype for the communication? Free (of charge), fully cross-platform, excellent voice calls, and built-in IM capability. Also supports conferencing, if this is important.

      --
      There's no place I could be, since I've found Serenity...
    3. Re:Some tools I use... by SpryGuy · · Score: 1

      Because Skype doesn't have the simple 'push to talk' that Ventrilo does.

      Ventrilo works really well for us, and nothign else we've tried... from IM clients that allow voice, to Skype, has come even close to being dead-simple and easy to use, and yet fully flexible for our needs (with various "meeting rooms" as well as the common 'bullpen' for our team, and everyone just a single push-to-talk away, without keeping a line open at all times, having to dial or connect to someone, etc.)

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
  30. Set up a Ning network (classroom). by bughuntr · · Score: 1

    I would suggest looking at using http://www.ning.com/ I have taught several classes on technology, and rather than set up a server, or using "collaborative" software clients, I've used ning as my online classroom for students. It does take some configureation on your side, but it's rather simple to set up and customize. You can also set it up to be a closed network, so only your students can get into it.

  31. Microsoft Live Mesh isn't bad by farina · · Score: 2, Informative

    If you want a folder based sharing solution for Mac or Windows...Microsoft's Live Mesh works fairly nice. I use it for my small company and share all sorts of files with my co-worker.

  32. What about Kibitz? by Anonymous Coward · · Score: 0

    Doesn't seem that anyone has mentioned "kibitz". This is a shell program (*nix) that allows two users to share one shell session. I find it works quite well for this kind of thing.

  33. Eclipse DocShare (Cola) by slim · · Score: 3, Informative

    I initially read the question as being about real time remote collaboration.

    If that's the case, there's Eclipse's DocShare plugin: http://wiki.eclipse.org/DocShare_Plugin

    I haven't tried it, and I don't know how mature it is. But I watched a video presentation on it a while ago and it looked very promising.

    1. Re:Eclipse DocShare (Cola) by greg1104 · · Score: 2, Informative

      There are a couple of presentations, perhaps including the one you allude to, as well as other answers to this question all right where you'd expect them to be: pair programming.

  34. Eclipse DocShare by Anonymous Coward · · Score: 0

    Try the DocShare Plugin for Eclipse:
    http://wiki.eclipse.org/DocShare_Plugin

  35. Google sites or PBwiki by prajjwal · · Score: 1

    http://sites.google.com/ should be a good place to start, or some other free wiki hosting site such pbwiki.com. A wiki is good for text sharing, very easy to get started with, and allows extra functionality (cross linking, multiple pages) that help collaborate, and is also good for submitting a final report!

  36. Could it be... by grepya · · Score: 1

    Could it really be someone who's teaching programming at a major US university doesn't know about source control systems ??

  37. EtherPad by Hortensia+Patel · · Score: 1

    Realtime, web-based collaborative text editor. If you don't especially care about the data being hosted out there amongst the tubes, free. (I suspect that the people suggesting SVN et al don't quite understand what pair programming is...)

    http://etherpad.com/

  38. shared screen by karlh626 · · Score: 1

    vi through a shared screen

    1. Re:shared screen by wizzat · · Score: 1

      I've used a shared screen + telephone (cell, usually) and it works great.

  39. VNC, RDP + Yahoo IM/Skype for voice. by HashDefine · · Score: 1

    I have paired up remotely using VNC to share the editor session, and skype for the voice part. It works surprisingly well.

  40. Google Wave? by AndrewNeo · · Score: 1

    I know that it's not out yet, but isn't this a perfect example of what Google Wave is for?

    1. Re:Google Wave? by Anonymous Coward · · Score: 0

      Someone needs to write a bot for Google Wave for syntax highlighting for that exact purpose.

  41. Git, SVN, CVS, IM, IIRC, Jabber, Skype, and ACE by Anonymous Coward · · Score: 0

    Code version control: Git, SVN, CVS,
    Text communications: IM, IIRC, Jabber, AIM, whatever. gtalk
    Screen Sharing: Skype - video, voice, text chat, desktop sharing all in 1.

    Phone and conferences: google voice, & skype. The goal being free conferencing withot any long distance costs.

    Interactive Text editing: ACE http://freshmeat.net/projects/ace

    Good thing I've never thought about this at all.

  42. You have programmers... by Anonymous Coward · · Score: 0

    You have programmers and don't have an obvious solution to your niche problem. It sounds like you could have them, or an older year class, make it a project to solve that problem. Getting students to solve actual problems is important to getting them to realize what type of problems are actually out there and what it takes to solve them.

  43. Try Gobby by Ashcrow · · Score: 1

    "Gobby is a free collaborative editor supporting multiple documents in one session and a multi-user chat. It runs on Microsoft Windows, Mac OS X, Linux and other Unix-like platforms. " It is GPL, easy to use and lets you code together very rapidly. http://gobby.0x539.de/trac/

  44. Plone is a good choice by Anonymous Coward · · Score: 0
    Plone is a free and libre content management system written in Python, for the Zope Web Application server, that has quite easy to get up and running and is a good choice for your scenario:

    You don't really need to customize anything as these extra features are available as plugins, which are easily installable. As a plus, you might feel the need to ditch Java for Python ;)

  45. Eclipse + ECF + XMPP (Jabber) by jazzkat · · Score: 3, Informative

    Eclipse offers realtime collaborative editing via XMPP and the Eclipse Communication Framework:

    http://www.infoq.com/news/2008/06/eclipse-ganymede-ecf

    Set up a Jabber server and away you go.

    I have not tried this, so I can't speak to its quality.

  46. Mercurial hosted by BitBucket by ptuxdev · · Score: 1

    I used BitBucket in my 2-4 developer teams - we all live far from each other or had to work late at night - BitBucket combines versioned code, via the distributed SCM Mercurial, with a wiki and bug tracking system which were all indispensable in helping us design, code, and test our project. This can all be done privately, commits made over the web with ssl or through and ssh tunnel, and BitBucket offers OpenID integrated authentication to their website along with traditional passwords. Best of all, your first 150MB of server space is free! and AFAIK eclipse and netbeans have a mercurial plugin

    --
    Paul M. Nguyen; B.S. Computer Science; Registered Linux User #370740
  47. Groups by peterjb31 · · Score: 1

    As part of my degree we had to do some group development projects and chose to set up a google group to put all the work on as it allowed us to upload any type of file. We also used the page creator in it to make links to versions as they changed. This was pretty simple to set up and use though slightly tedious as times.

    --
    There is no place like /home
  48. Google Notebook by Scraps232 · · Score: 1

    Google Notebook has been easy to use and could work out. I don't think it's plain text because it creates links out of www.example.com but it is easy to share a google notebook and allow access to it to multiple people.

  49. NetBeans Collaboration Project by Anonymous Coward · · Score: 0

    You might also want to check out The NetBeans Collaboration Project:
    http://collab.netbeans.org/

  50. Re:VNC or TeamViewer by JonahsDad · · Score: 1

    If you can use VNC, go for it.
    If that won't work, but you're both using Windows or OS X, try http://www.teamviewer.com/
    Free for non-commercial use.

  51. Netbeans Collaboration services by Anonymous Coward · · Score: 0

    Take a look at the Netbeans Collaboration tools. http://collab.netbeans.org/

  52. Skydrive by Demonantis · · Score: 1

    MSN has a service just like Google Docs, but built more like a "cloud"(hard-like) drive on the internet. If I remember correctly its skydrive.live.com or google it. I used it to trade code between lab computers at school.

  53. Google Code by AncientPC · · Score: 1

    My professor went through many solutions (including our CS department's own subversion repositories) and eventually just settled on Google Code. It's easy enough to set up and use with a 30 minute primer on subversion (how to import, check out, commit, resolve conflicts).

    The biggest drawback / concern was that you cannot make code hosted on Google Code private. However in our case we were working with 6-7 person groups on a major project so stealing code was not an issue since each team's implementation was radically different from each others.

  54. UNA IDE by HillfireXP · · Score: 1

    If the OP is a professor at a university looking for something that will allow real-time collaboration on a source code editor (syntax highlighting, build tools), I have only heard of one solution: UNA IDE. The software is proprietary and made by n-brain. http://www.n-brain.net/ I would suggest the OP contact the company and discuss educational license options. It is likely they would negotiate some reasonable pricing for class usage. I would highly recommend that the students also use a VOIP tool during coding sessions.

  55. How to do it by Anonymous Coward · · Score: 0

    Modularize the code and each write separate modules.

  56. github by PAjamian · · Score: 1

    github is good in that they can host their code for free (as long as you don't mind that students can see each others code) or there is paid hosting if they need to keep it private. You could also run your own git server.

    --
    Windows is a bonfire, Linux is the sun. Linux only looks smaller if you lack perspective.
  57. 'pair programming' overrated... by Junta · · Score: 2, Informative

    At least it is overrated outside of an educational lab.

    At least when I was in college, pair programming required two people looking at the screen and no more than one typing at a given time. You could use GNU screen, vnc, whatever for this, but realistically speaking, it is inefficient and by and large isn't feasible in the real business world after the days of .com ended.

    At the other end of the spectrum, if you operate in a vacuum, there are definite high penalties of problems being caught later than they should and requiring more rework then they should to acheive the goal.

    I personally go with a revision control system which emails me the patches the other person does, encourage frequent checkins, and review every change. I don't have to sit through them typing and reworking their snippets of code as they catch their own mistakes in their own logic flow, and yet I review the changes shortly after they make them and can offer feedback within the hour. It takes me much less time to review the diff than it does for them to create and 99% of the benefit is still acheived. It's a very happy medium. Most any sane revision control system will let you set up checkin hooks to email changes to appropriate distribution lists.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  58. Well nobody else said it... by Bill_the_Engineer · · Score: 2, Informative

    You're teaching Java and need pair programming...

    Sounds like you need netbeans... http://collab.netbeans.org/http://collab.netbeans.org

    I think it sounds tedious, but you did ask...

    --
    These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
  59. Only ssh interface. Nothing else, period. by Anonymous Coward · · Score: 1, Interesting

    Today there's little technical reason to offer any other interface into a UNIX host than ssh. If they need some other interface, they can setup a tunnel.

    FTP, telnet should be actively DISABLED. WinSCP team, shame on you for adding FTP into your otherwise fine program.

    The number of "developers" I've seen who thought FTP was require when ssh was available is staggering.

  60. Simple, easy by MalikyeMoon · · Score: 1

    Having completed part of my education via UoP, which requires students to work in teams for every course (I was pursuing an IT BS, so coding courses did exist in my curriculum), utilizing a simple means of communicating and sharing work was important. What is wrong with a simple instant messenger? Skype, and AIM allow you to chat via IM, or verbally 1-on-1, and in small groups. You can also file transfer .txt files with your code back and forth in seconds. This was the easiest method of remote collaboration. It was up to the group to decide how to handle things like delegation of the workload, etc. The pair should be able to handle splitting up the assignment, pasting together their parts, and file sharing .txt files to work on a project together.

  61. eclipse shared editor by Zecheus · · Score: 1

    eclipse has shared editor capability: http://wiki.eclipse.org/DocShare_Plugin I saw a demo about a year ago. I thought it was pretty cool. I don't have much need for it. I'm a loner. Regards.

  62. SubethaEdit by Anonymous Coward · · Score: 1, Informative

    There is a great Mac app called SubethaEdit, I highly recommend it, and is a great collaborative text exit app, allowing many ppl to contribute simultaneously.

  63. GoToMeeting + Skype by Anonymous Coward · · Score: 0

    Hate to say it, but the commercially available GoToMeeting (citrix stack) and a Skype account is pretty much all you need. Goes beyond VNC in that it allows for more refined desktop sharing controls (individual windows, IO capability toggling, simple whiteboard tools). Only requires 1 license for whomever does the hosting. There's a trial mode.

    Skype ... duh.

  64. YuuGuu & Skype by polymonic · · Score: 1

    Skype is for voice communication and YuuGuu is for screen sharing. That should get you virtual pair programming. Both are freely available and pretty simple to use.

  65. ubuntuone by cpscotti · · Score: 1

    Use ubuntu's shared folder/cloud storage... dead simple! The students can share the same folder (integrated with nautilus) so that they can have codes/binaries shared.. (svn would be the best option but, since you asked for DEAD SIMPLE)

  66. Different things by mordejai · · Score: 0

    I think you are mixing concepts here.
    For source code sharing, this is probably a good time to introduce them to source control tools, either centralized (Subversion) or distributed (Mercurial, GIT, Bazaar).
    For actual pair programming, which implies two people looking at the same screen (one of them actually typing) I'd recommend any screen sharing application (SharedView, NetMeeting, the last Skype, etc).

  67. bespin by Anonymous Coward · · Score: 0

    mozilla labs has a project called bespin where you can collaboratively code:

    http://labs.mozilla.com/projects/bespin/

    It's still getting started but has lots of promise.

  68. MoonEdit by Anonymous Coward · · Score: 0

    http://moonedit.com/

    Offers real-time collaborative typing.

  69. Academic article about this by Anonymous Coward · · Score: 0

    Some time ago I've found an article about extending Google Docs to be used as colab tool for writing LaTeX (is very similar to write a program, hence they both need compilation)

    Dekeyser, Stijn. Watson, Richard. Extending Google Docs to Collaborate on Research Papers

  70. Screen? by UpooPoo · · Score: 1

    Whenever I've taught or trained remotely I've always used screen to multiplex the session. That takes care of the coding part. For communication I usually use something like skype or google talk. Pick your poison there. http://www.gnu.org/software/screen/

  71. Dropbox is your solution ! by Anonymous Coward · · Score: 0

    2 GB Free per accounts, shared folders, automatic synchro !
    This is amaising !

    https://www.getdropbox.com/

  72. Remote Pair Programming Using SSH Screen Vim and S by ooglek · · Score: 1
  73. SubEthaEdit allows collaboration... by ghostis · · Score: 2, Informative

    SubEthaEdit does collaborative coding on Mac, if I recall correctly.

    http://www.codingmonkeys.de/subethaedit/

    --


    Computer Science is all about trying to find the right wrench to bang in the right screw. -T.Cumbo?
  74. Colaborative IDE by paxcoder · · Score: 1

    I had this Idea few years ago to make a free software colaborative Java IDE for multiple users to work on the same code at the same time. The friend I was about to program it with (but didn't) sent me a link few months ago. I think it's basically the thing we were trying to do. To be honest I didn't try it out, but from the sound of it, it's the thing you want. Here's the link: http://gobby.0x539.de/trac/ In you decide to use this, please write down my nickname. I'd like to hear your experiences with it. Thanks.

  75. Re: Face Top by ImNotAtWork · · Score: 1
    --
    open source sub sim. I might start coding again for this. http://dangerdeep.sourceforge.net/contribute/
  76. Saros - Distributed Pair Programming for Eclipse by edelholz · · Score: 1

    I know it's not dead simple, but maybe it's still interesting to anyone reading the thread. My university's developing a realtime pair programming plugin for Eclipse, which I think is pretty cool. Check it out: https://www.inf.fu-berlin.de/w/SE/DPP

  77. Bespin by Cow+Jones · · Score: 1

    Take a look at the Bespin editor. It's a relatively new Mozilla Labs project, a browser-based editor with a cooperative multiplayer mode, sort of. The video on the front page demonstrates how several people can edit the same file at the same time. Bespin uses the canvas HTML element extensively, so you'll need a decent browser to use it.

    There's no official release yet, but the 0.1 version looks quite promising.

    CJ

    --

    Ah, arrogance and stupidity, all in the same package. How efficient of you. -- Londo Mollari
  78. multiuser screen by jab · · Score: 1

    Use your favorite text editor (like vi or emacs) and share a terminal using GNU screen in multi-user mode.

  79. Netbean by Anonymous Coward · · Score: 0

    I would try netbeans. http://javadude.wordpress.com/2009/02/09/how-to-use-netbeans-collaboration/

  80. GNU/Screen + Emacs by Kidbro · · Score: 1

    GNU/Screen lets you share terminal between several clients.
    Emacs lets you share edited buffer between several clients.

    Pick your VOIP of choice, or let them use IRC.

    And Mercurial or some other distributed version control for when they're working apart.

    No, they're not dead, dead, dead simple, but easy enough if you give them step by step instructions.

  81. n-Brain Una IDE by Anonymous Coward · · Score: 0

    As featured on slashdot: http://developers.slashdot.org/article.pl?sid=07/12/22/1746220

    The team version is ideal for collaborative work like this, although it's not free (there's a personal version that is, though). Otherwise, pick a version control system and occasionally join up for a vnc/screen/webex session.

  82. Anonymouse Coward by Anonymous Coward · · Score: 0

    http://www.atlassian.com/software/crucible/

    We use this at work to do code reviews. It could work for what you're trying to do, i.e. allow 2 developers to see what the other is doing.

  83. Re:My first assignment for your students would be by Red+Flayer · · Score: 1

    Well, aside from the fact that he strongly hinted that he wanted his students to focus on coursework, not extranea... given that he is going to judge his students on their code, why would you want to introduce a variable in their output that has nothing to do with their understanding of the course material?

    Anyone who has taught a class on a tight schedule knows that scope creep is as bad in the syllabus as it is for project design. So you want the students to evaluate and choose a collaboration tool in order to get started on their class? On day 1 or day 2 they need to be up and running...

    Maybe it's just me, but I think that the course should focus on the course material, and not get bogged down in extraneous stuff like what collaborative tools to use.

    --
    "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
  84. Why not just use a Wiki? by gmezero · · Score: 1

    That's about as dead simple to use as it gets.

    1. Re:Why not just use a Wiki? by tabrisnet · · Score: 1

      Dead simple, but typically no merge support. At least in my experience with mediawiki and twiki.
      No merge support means that if they both edit the page at the same time and one tries a commit after the other has committed (but starting from an older version) they're boned. Wasted time and effort. Not conducive to a healthy learning relationship.

    2. Re:Why not just use a Wiki? by shaitand · · Score: 1

      You are mistaken. Mediawiki flags and notifies the second individual that that their edit conflicts with the previous edit. Or at least the wikibooks implementation does.

    3. Re:Why not just use a Wiki? by tabrisnet · · Score: 1

      Yes, TWiki notifies you too, but it still has no merge support. The merging has to be done by hand.

  85. Jazz/Rational Team Concert by mkorejo · · Score: 1

    I highly recommend you take a look at IBM Rational Team Concert (RTC) Express-C:
    https://jazz.net/downloads/rational-team-concert/releases/2.0/

    It is 100% free for up to 3 users. RTC is based on Jazz (jazz.net), a sophisticated, collaborative software delivery platform from IBM Rational. Erich Gamma, one of the technical leads for Jazz, recently responded to questions about Jazz and other topics from Slashdot users in an interview:
    http://interviews.slashdot.org/story/09/07/08/1851209/Jazz-Technical-Lead-Erich-Gamma-Answers-Your-Questions

    In any case, RTC will do many things for a team. It integrates directly with Eclipse or Visual Studio, and there is also a web UI. Installation is a breeze, too, as it comes with Tomcat and Derby. Here are some specifics:
    - Work items are a key aspect of the product, as users are able to create work items of different types (defects, enhancements, tasks, stories, etc.), assign ownership of these work items to others in the project area, and collaborate using these work items through comments, attachments, approval/reviewer processes, and RSS/Atom feeds. Users are also able to enter planned versus actual work hours, so they can track their team load.
    - There is an integrated SCM component for version control that users can leverage directly in Eclipse or Visual Studio. It is stream-based, and allows users to deliver multiple changes at one in a single change set. Change sets may be associated with work items so it's easy to see what changes were made for a particular work item, or why a change set was delivered.
    - There is also an integrated build engine that uses Ant, so you can incorporate existing Ant scripts very easily. The integrated build component allows users to request a build on an ad-hoc or scheduled basis, and automatically retains a snapshot of the files in each build so they can be easily reproduced. Also, it maintains build histories, provides JUnit test results, and allows users to easily track the contents of each build.

    There's a wealth of other useful functionality, as well. Check out jazz.net and see for yourself!

    Murad

    1. Re:Jazz/Rational Team Concert by ericferris · · Score: 1

      I second that. You can track work items, check in code and view the changes made by your team members, and IM/email them, among others. And it's OSS.

      --
      Fantasy: http://ferrisfantasy.blogspot.com/
  86. Netbeans, GNU Screen, and Gobby by srussell · · Score: 1
    Netbeans has a decent collaboration editor. The only limitations that bother me is the inability to interactively diff (which makes code reviews more difficult), and the fact that there's no cursor tracking. This means that you can't, for example, highlight some code you're talking about and have the other person see it.

    GNU Screen is, of course, always an option if you can use a command line text editor like vim or emacs.

    Gobby is pretty decent, although it's a bit more limited as an IDE.

    I've always preferred NetBeans for this sort of thing, although nothing yet satisfies all of my peer programming requirements. I need an editor that lets one person follow another, and take turns editing, not something that just lets two people edit the same file at the same time. I'd argue whether the latter is of any use at all.

    --- SER

  87. lmgtfy by schmichael · · Score: 2, Informative

    Multi-user screen: http://aperiodic.net/screen/multiuser Gobby (multi-user text editor): http://gobby.0x539.de/trac/

  88. Don't make the pair programming compulsory by metamatic · · Score: 1

    It's worth noting that some people are just not compatible with pair programming.

    I literally cannot work with someone else watching my screen. I can't write code, I can't write text, it completely blocks me. If I were forced to do pair programming, the other person would end up writing all the code.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    1. Re:Don't make the pair programming compulsory by Dolohov · · Score: 2, Funny

      Me, I hate watching someone else program, it's like watching your dog take a shit. But it's a good experience for one term -- some people will find that they hate it, but some will find that they can live with it, and some will find that it works very well for them. Education works well when it bumps you out of your comfort zone from time to time.

    2. Re:Don't make the pair programming compulsory by convolvatron · · Score: 1

      but not if it has no value whatsoever.

      i really dont understand this fad. criticising other people's code is important. talking about whats going on and the cleanest way to express it is important. having design discussions is important.

      so do detailed code reviews.

      i really dont need to smell every fart someone makes to work with them.

  89. GNU Screen by hughsaunders · · Score: 1

    GNU screen has the ability to share sessions, each pair could connect to the same screen session and share vim/emacs editing and other windows for logs/compiling etc.

  90. Netbeans?? by hlge · · Score: 1

    Netbeans have a built in Chat function that allows you to share code between developers, it might do the trick.

  91. Road workers by curmi · · Score: 1

    You know how you sometimes see two road workers - one guy digging a hole, the other guy resting on his shovel just watching the first guy dig the hole.

    That is Pair Programming.

  92. Re:NetBeans w/ Collaboration plugin by Anonymous Coward · · Score: 0

    Grab the NetBeans and install the collaboration plugin set from the update center. See http://collab.netbeans.org/

    Actually with the Kenai (http://kenai.com/) support in NetBeans 6.7, you might not even have to do that but I haven't used it yet.

  93. Re:Obvious answer is obvious by JuzzFunky · · Score: 1

    Google Wave looks like it will be a great tool for real time collaboration.

    --
    Unexpect the expected!
  94. Anonymous Cowardon by Anonymous Coward · · Score: 0

    NetBeans IDE has this functionality built in. It's made for Java and allows the live collaboration that you are looking for.

  95. xp-dev.com by faldore · · Score: 1

    I just found this free service, that is pretty cool. (no I am not a shill, I am working on some windows mobile software on the side)

    www.xp-dev.com

  96. screen running suid/setgid in a vm by Anonymous Coward · · Score: 0

    Many people use screen to run a text terminal session with multiple screens, with the ability to disconnect and reconnect at will. Not so many know that if run with elevated privileges that you can connect from multiple sources simultaneously and truly interact. I haven't found a way to do so without using the elevated privileges yet, so I'd recommend running in a snapshotted VM as some form of protection.

  97. subversion by Ben1220 · · Score: 1

    We use subversion at Uni for that. It gets the job done

  98. Why not VNC by Anonymous Coward · · Score: 0

    My coworker and I both work from home. We just use VNC for all pair programming and a telephone (with headset) for voice comms. We've been doing this for almost 3 years and are quite productive. For most coding we just use an editor. For a "whiteboard", we run MS Paint. What else could you ask for?

    dom

  99. cvs? by smash · · Score: 1
    Old... but standard, available everywhere, and Good Enough (tm) for small scale, small team projects (some would argue, quite rightly that there are large scale, distributed teams using it as well).

    Could probably even get away with RCS, but i'm not sure of too many projects that use that.

    --
    I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
  100. Make the collaborate in person by redfood · · Score: 1

    I know this doesn't answer your question but...

    Make your students get together IRL to collaborate. I transforms programming from a isolating activity to a social one. This way students are more likely to form personal bonds and continue studying computer science.

  101. Collabed? by msimm · · Score: 2, Informative

    I haven't used it but Collabed looks interesting. Of course most kids would probably end up doing it with im and the occasional email, but it still looks interesting.

    --
    Quack, quack.
  102. Bespin? Does anyone use it? by Anonymous Coward · · Score: 0

    I know Mozilla is experimenting with their Bespin project. Has anyone used it? Can it even be used to collaboratively edit yet?

  103. emacs make-frame-on-display by Anonymous Coward · · Score: 0

    Amazing how Web 2.0 (or is it 3.0) companies are still trying to deliver features that were delivered better, for free, at a fraction of the system requirements, over 20 years ago.

  104. Gobby by pietromenna · · Score: 0

    Have you thought on Gobby? It is easily downloaded from Ubuntu. It has sintax highlight for some languages and it is very easy to set up. The SVN Server is also a good idea, but the students should learn to configure the server. As you would like them to have on a centrilized way SVN would be the best. I would not go to git because they are "distributed" by nature, so they would do again everybody one part and not "togther". I hope this helps.

  105. Bespin? by mpath · · Score: 3, Informative

    There was some talk a while ago about this. I gave it a shot back then and it was a CPU-hog. With the latest strides in JavaScript (both browsers & the technology), it might be worth another look:

    https://bespin.mozilla.com/

    --
    I'm not sure what the secret to success is, but the secret to failure lies in trying to please everyone -Bill Cosby
  106. VNC by Anonymous Coward · · Score: 0

    I pair program quite a bit using a VNC. Coupling it with phone or skype allows remote sharing of a desktop for collaborative work. You can take turns editing or commenting.

    It's old, tried and true.

  107. Re:Obvious answer is obvious by orngjce223 · · Score: 1

    Uh... it's not available yet, that's the trouble.

    --
    Note: I was 13 when I wrote most of this. Take with several grains of salt.
  108. Bespin by Anonymous Coward · · Score: 0

    Next version of Mozilla Bespin will allow two or more devs working in the same file.

    https://wiki.mozilla.org/Labs/Bespin/ReleaseNotes

  109. lznancy by lznancy · · Score: 1

    Get your students interested, have them use Google Docs using XHTML with xml encoded embedded java code which they marshal and unmarshal using standard java library xml support into and out of whatever editor/development environment that each one wishes to use.

  110. Sitting Next to Each Other by Ruke · · Score: 2, Insightful

    My guess is that, no matter how neat of a collaborative program you introduce to your students, they're going to give up on it after a couple of minutes, and decide to just meet in the lab on Thursday, at like 5 or something. A good deal of your students live on campus, and the rest of them are there most of the time anyway. Meeting in person is the quick-and-easy solution.

  111. Openfire by Anonymous Coward · · Score: 0

    What about Openfire? http://www.igniterealtime.org/projects/openfire/index.jsp
    There is plugins for both Netbeans and Eclipse.

  112. Netbeans will do this... by dsharp · · Score: 1

    http://collab.netbeans.org/files/documents/186/522/NB-Collab-Code-Review-for-JavaOne-v2.swf

    This is a flash video of the collaboration stuff in Netbeans. It sounds like this might be what you're looking for.

  113. Rewiew Board by OrangeTide · · Score: 1

    I highly recommend using Review Board. you can use a normal repository like svn, git, p4. If you keep it simple and don't branch then it is pretty simple. With Review Board you can post diffs before you commit them, comment on individual lines, download the diff and try it with your own changes.

    --
    “Common sense is not so common.” — Voltaire
  114. NetBeans Developer Collaboration Plugin by Anonymous Coward · · Score: 0

    Hi, for Java pair programming I can only recommend the NetBeans Developer Collaboration Plugin. It is fully integrated into the IDE, people can see each other's compile results and console output from a test run and can edit one file simultaneously and see the changes the other one made in real time. This works for as many ppl simultaneously as you wish (well, maybe not for hundreds of ppl).
    NetBeans also comes in a BlueJ Edition, that is especially tailored for people learning Java.

    Hope this helps,

    Neumaennl

  115. Google Wave by grendelb · · Score: 1

    I think Google Wave will be pretty good for real-time shared editing of a (text) document, once it is released.

  116. Re:My first assignment for your students would be by julesh · · Score: 2, 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.

  117. Screen + vim/nano/joe/emacs/whatever by Anonymous Coward · · Score: 0

    I'm surprised nobody has proposed this so far, but you can do online pair editing using some traditional tools. Steps to reproduce:

    1. Student1 connects through ssh to the server
    2. Student1 executes "screen"
    3. Student2 connects through ssh to the server
    4. Student2 executes "screen -x"
    5. Their shells are bound to the same session, so now everything seen/typed on Students1 screen will show up in Students2 one, and viceversa.
    6. Let them use whatever terminal editor they prefer

  118. Intellij IDEA - IDE Talk by Anonymous Coward · · Score: 0

    http://www.jetbrains.com/idea/features/ide_talk.html

    And it is free for classroom, or open source projects: http://www.jetbrains.com/idea/buy/index.jsp#newuser

  119. Screen by Sodki · · Score: 2, Insightful

    Nothing beats screen. One student starts programming within a scren session; the other student joins that screen session (screen -x) and now they're both in the same environment at the same time, and both are in control.

  120. Eclipse plugins for collaboration by Lardmonster · · Score: 1

    As others have said, you'll need some kind of source control (SVN probably - easier to understand and will let the students concentrate on the tasks rather than the tools). Then you'll need a voice link. Either telephone, Skype or a SIP-compliant VOIP thing. IM would be useful for communication between one pair and other pairs.

    Then an IDE with collaborative editing. Netbeans has it built in apparently, but I haven't tried it. Eclipse has a number of plugins to facilitate collaborative coding:

    Shareclipse: Does voice and video inside Eclipse, but projects not genuinely shared. Project might be dormant. linky

    Saros: Does voice, but not video. Whole project shared. Uses a local IRC server, like XMPP or Jabber. Great demo vid. linky

    Xeclip: Dependent on CVS and costs $$s. linky

    XPairtise: Shares both code and code/test execution. Shared whiteboard. Needs a server in your intranet. Doesn't highlight users' cursors in different colours. linky

    XCDE: Uses a intranet-local server. Shares bookmarks and tasks too in Eclipse. Has integrated voice (but requires JMF). Project might be dormant. linky

    Other projects which look very dormant or incomplete: PEP, Sangam. Me, I'm planning to try Saros.

    --
    The more advanced the technology, the more open it is to primitive attack
  121. Editors are available by garphik · · Score: 1
    http://labs.mozilla.com/projects/bespin/

    http://www.amyeditor.com/

    http://eclipse.dzone.com/news/who-needs-online-ide

    Regards,

  122. netbeans by Anonymous Coward · · Score: 0

    Netbeans allow for colaborative programming using XMPP protocol through one of plugins, as bonus you get all the goodies that come with IDE. Also it's portable to Windows and Linux.

  123. Xkibitz? by Anonymous Coward · · Score: 0

    I used to use "xkibitz" to share xterms. You can use the editor of your choice within that shell.

  124. Eclipse has shared editor functionality by antoinjapan · · Score: 1

    Called Cola, part of the Eclipse Communication Framework
    http://wiki.eclipse.org/DocShare_Plugin

  125. Two is the wrong number by Peter+(Professor)+Fo · · Score: 1

    People work much better together in threes than twos.

  126. screen(1) by Turmio · · Score: 2, Informative
    Setup a publically accessible Linux box at your school. Load the development server with a selection of text editors to experiment, Sun Java JDK and screen (if using Ubuntu, everything is installable by running just one apt-get(1) command). Give each pair a shared account on the machine. Have them connect to the development server using what ever SSH client they please (Terminal.app + command line ssh on Macs, what ever GUI terminal emulator on Linux clients + command line ssh or Putty for Windows clients). First one to log in starts a screen(1) session. Second one will attach to the session by running screen -x. Now they both share the console session in real time. Both can type input and the other one will see the updates immediately. Have them write code using any Unix text editor such as vim or emacs (or pico or jed or what ever for wussies).

    Summa summarum.
    • It can't get more text based than this.
    • Connection will be perfectly usable over a low-bandwidth link (though you should have reasonable latency, say 100ms or less, for jerk-free operation).
    • Minimal requirements at student's end
    • Having to work on text-based command line may sound a bit kinky at first if the student's are not familiar with it, but hey, you need not to be a long-bearded Unix weirdo in order to set up and use this kind of system. It's really simple when you think about it and let your prejudice go and spend 15 minutes learning the basics first.
    • Definitely free as in beer and freedom!
  127. Maybe not "dead simple", but... by FnordAnglia · · Score: 1

    If they're not year-one students, is GUI editing a requirement? If not, how about emacs (and the JDEE in-emacs Java IDE) under GNU screen? You can have multiple remote collaborators in a screen session.

  128. Screen+SSH+Vim by zoobab · · Score: 1

    Remote Pair Programming Using SSH Screen Vim and Skype

    http://www.youtube.com/watch?v=IFClpADY7Tc

  129. Portable wiki by mupan · · Score: 1

    Most important: Read carefully. You did not want to be told that a Java teacher should know better, of course you do, but: it's not what the course is about. (1) dead simple! (2) free I would suggest a "portable wiki", ie, http://tiddlywiki.com/. It can be used from every internet connected browser from everywhere, and can as well be used offline just by copying one file. You can tag and categorise your entries (tiddles), for ex. "discussion" or "source", and export everything or just one entry or just one category. If not suitable, please give more information. Hope this helps mupan

  130. Re:NetBeans w/ Collaboration plugin by Octorian · · Score: 1

    Mod this one up. I've only tried it once, many years ago, but it was pretty cool. I only wish more IDEs had such features.

  131. shared desktop + voice chat by anand.arumug · · Score: 1

    using a version control system along with shared desktop and voice chat can be one good option. this lets them work independently and also lets them collaborate when they want to and do code walk through or discuss on bugs etc...

  132. Wave by Dr_Barnowl · · Score: 1

    Google Wave looks like an awesome platform for this.

    Alas, it's not ready yet. But a wave-enabled IDE would be tough to beat for pair programming.

  133. Hunchback by The.Hunchback · · Score: 1

    Google Wave would be a good solution when it's out, i guess...

    --
    --An Elf In Mordor
  134. Distance and pair programming not good bedfellows by sheerblack · · Score: 1

    This appears to be less of an issue to do with the software involved and more to do with the logistics.

    It seems unfair to set a task which adds the extra constraint of trying to perform pair programming at a distance. I wouldn't expect even senior developers to be comfortable with such a setup.

    As most of the barriers will be in the ability to collaborate how will you mark the value of the output?

    Unless you mediate the programming its hard to see how you can place any quantitative mark on the result that would be fair.
    If you are trying to help them understand how to work together then its more important to see how they deconstruct a requirement and design the interfaces between them.

    If it genuinely is the code output that you are interested in then leave them to do it themselves.

  135. synergy by anomalous+cohort · · Score: 1

    I haven't actually used this but take a look at synergy.

  136. Why not use VNC? by barnetda · · Score: 1

    I've not seen any mention of this, but why not "VNC" to share a desktop?

    I've used it frequently with distant co-workers to collaborate on why their environment is causing program breakage. Especially when I cannot duplicate the failure in my environment.

    VNC allows "full access" as well as "read-only access" so you can control whether your classmate can access your stuff.

  137. Dead Simple? by SJ2000 · · Score: 1
  138. Let them figure it out by teh_commodore · · Score: 1

    As a soon-to-be-graduating software engineering student, I would say that finding our own solution to this problem was always a useful exercise in every pair/group I've been in. And the solutions were ALL different, depending on the needs of the group.

    You teach Java, stick to that. If you include more tooling in your class than just an IDE, you run the risk of coupling the tools and the language in the minds of your students, which will in turn make it difficult for them to transition into a job where the tooling is significantly different.

    You'll also expand your job description to be tech support for whatever tool you choose, and you'll have to accept whatever problems and problem-generated excuses that tool generates. If you are tool-agnostic, you can be more of a hard-ass when an assignment is late or incomplete.

    --
    --"insert clever quote here"
  139. Ventrilo+Gobby by tepples · · Score: 1

    You are teaching off-campus students pair-programming?

    If an online college is trying to draw business away from local community colleges, I can think of a few colleges that would try to teach pair programming with Ventrilo+Gobby.

  140. pairing rocks by izzo+nizzo · · Score: 1

    Pair programming is an amazing way to work and to learn. You just have to BE SURE that you have two keyboards and two mice.

    I realize that the original question was in reference to remote pairing, but I don't know anything about that. Just chiming in about pairing.

  141. Dropbox? by Anonymous Coward · · Score: 0

    Dropbox might be what your looking for. I study CS myself and dropbox is used for group work by almost everyone in my class. It's easy to use and has all the features I would expect from a revision control system.
    Oh and btw, aslong as you don't need more than 2GB it's totally free.

  142. pastebay.com by ExxoZ · · Score: 1

    I think that http://pastebay.com/ might be what you're searching for. The service i free and anonymous and you could share both text and code.

    From http://pastebay.com/pastebay.php?help=1
    "What is pastebay?
    pastebay is here to help you collaborate on debugging code snippets. If you're not familiar with the idea, most people use it like this:
    * submit a code or textfragment to pastebin, getting a url like http://pastebay.com/1234
    * paste the url into an IRC or IM conversation
    * someone responds by reading and perhaps submitting a modification of your code
    * you then view the modification, and collaborate with others"