Follow Slashdot stories on Twitter


Forgot your password?
Education Open Source News

Introducing Students To the World of Open Source 182

paulproteus writes "Most computer science students never see a bug tracker, and very few learn about version control. Classes often don't teach the skills needed for participation. So I organized a weekend workshop at the University of Pennsylvania. Total newbies enthusiastically spent the day on IRC, learned git, built a project from source, and read bugs in real projects. I learned that there's no shortage of students that want to get involved."
This discussion has been archived. No new comments can be posted.

Introducing Students To the World of Open Source

Comments Filter:
  • by daid303 ( 843777 ) on Monday November 08, 2010 @05:32PM (#34166482)

    Most computer science students don't know how to write code. So it doesn't matter at all.

    • by cheekyjohnson ( 1873388 ) on Monday November 08, 2010 @05:44PM (#34166684)

      I came to the same conclusion. What's worse is that the class I was in was a Visual Basic class. Most of them didn't care about programming, the ones who did performed very poorly at it (and in Visual Basic no less), and the teacher didn't even know what a function was (sure, he is a math teacher, but he had been teaching that class for three years). Disturbing.

      • That's the kind of stuff I'd expect at a high school level, not a post secondary that you are paying tons of money for. It's annoying when a teacher doesn't know the answer to a question, but I'm willing to let it slide. If they don't even know the terminology to understand my question though - I would ask for a refund.

        • "That's the kind of stuff I'd expect at a high school level"

          Really? I wouldn't. Visual Basic is so simple that anyone should be able to grasp it (or at least the simple things that were being taught in that class). Besides that, a function? Really? That's terrible, high school or no.

          • by Monkeedude1212 ( 1560403 ) on Monday November 08, 2010 @06:40PM (#34167458) Journal

            In high school, they don't have Computer science teachers (usually). They have a different teacher, who gets handed a text book on how to teach programming. They don't bother reading it, they probably teach language arts or Math - so they just kind of dole it out to the kids and try to help where they can.

            At least, thats been my experience. I didn't reach anyone with programming experience till Post secondary.

        • At least in my undergrad the Class on VB was designed for all the majors, as the requirement for graduation was either a Foreign Language or a Comp Sci course. So a lot of students took CS 101 Visual Basic, to get the requirement.

          So CS Students who had 0 programming experience took the class or anyone else who didn't want to take a Foreign language class.

          It was usually taught by a Non-CS Professor (or the worst one they could possibly find who is still on payroll) as most of the students just wanted a gra

        • by jc42 ( 318812 )

          [A teacher of a programming course not knowing how to program]'s the kind of stuff I'd expect at a high school level, not a post secondary that you are paying tons of money for.

          OTOH, at the college level most of the instructors look down on teaching programming as being below-college-level material, similar with teaching arithmetic in a math course. They're wrong about this, of course, because writing computer code requires an approach and a mindset that isn't much required for anything else you've likely

      • Well, in fairness, a function means something very different to a mathematician than a programmer.. Also, IIRC, in BASIC they're called subroutines.
        • Different, yes, but similar.

          f(x) means that you start with x, do whatever "f" does to x, and end up with a different value at the end. So, if f(x) = x*2, then f(4) = 8.

          That's pretty much the same thing that programming functions (or subroutines) do. You define what the function does to the given inputs, and return the value when you're done. Sure, programming functions are a bit more complex and you can do stuff without any inputs, etc., but the general idea is the same, isn't it?

          • by 1729 ( 581437 )

            One important difference: mathematically, if f is a function and x is in the domain of f, then f(x) == f(x). This isn't generally true about a "function" in a computer program. (For what it's worth, I know some computer scientists who are very careful to call a subroutine a "function" only if it meets the mathematical definition.)

            • Having had plenty of programming before algebra where they actually used the term "f of x" or the f(x) notation, it confused the heck out of me - until one day the instructor let slip with "so what function of X would give this value if X=3". And the 0 turned to a 1 and things became *much* easier for me...

            • Haskell FTW!
      • Re: (Score:2, Interesting)

        Many of the CS teachers i've met have told me they don't like the language or principles they're being payed to teach. I learned C++ with a teacher who thought C++ wasn't a good language, C being worse, and thought the class should be taught with Java. Now i have a Java teacher who dislikes object oriented programming and Java. I even once had a teacher for Computer Organization and Assembly Language who was just called in to do that class. He was barely (if at all) a teacher.

        Feels like the school indust
    • I would LOVE to attend something like this - so if it's held again, please post the invitation on Slashdot. I'd travel the 300 miles to attend. (Better yet, make videos and post them!)

    • by Xtifr ( 1323 )

      Actual Computer Science has very little to do with writing code. Of course, what they teach in CS classes usually has little to do with Computer Science, so it all evens out. :)

      • "Computer Science" isn't a good name for it either. To paraphrase, it's like calling Astronomy "Telescope Science".

        "Computing Science" is a much better name. "Algorithm Science" would work too.

        For writing code, there is "Software Engineering", which some people want separate from CS. At least it's a decently accurate name for the subject.

    • Most CS students can write code, though some may be of poor quality. But as with any open-ended endeavor, coding requires a bit of creativity and some artistic touch to get a good result. It's hard to teach this in a classroom setting. Plus, the core of computer science has very little to do with coding anyway. Coding is a way of applying the knowledge, almost similar to the difference between Physics and Applied Physics.

      I'd argue that trackers and version control should not be taught in a CS curriculum. L

      • by EvanED ( 569694 ) <[moc.liamg] [ta] [denave]> on Monday November 08, 2010 @06:31PM (#34167356)

        I'd argue that trackers and version control should not be taught in a CS curriculum.

        Trackers... OK, I don't see those as essential. Version control? Disagree vehemently. There might be a couple programs in the country where you can specialize in theory enough to avoid all heavy programming, but most programs require you to do at least some practical courses (OS, compilers, etc.), and even in programs where you could avoid such classes probably most students don't. And IMO, if you're teaching a programming-heavy class and you don't at least strongly recommend using version control and give a quick overview of what that means and why you want it, you're doing your students a big disservice.

        I'm not saying "spend a week going over CVS, SVN, Git, and Mecrcural" or anything like that, but a 15-minute quick intro to one of them of your choice is definitely not out of place in many CS classes.

        • by gknoy ( 899301 )

          Especially for students. How many other classes explicitly say, "This is how you can avoid having your entire project wiped out by a computer crash"?

        • I agree about version control. It should be taught to everyone. It's important whether you're programming or not. I'm currently in a Masters program and all of the electronic course handouts and all of my assignments are stored in an SVN repository for each class.

      • by jlechem ( 613317 )
        I soooo agree with this. At first I was miffed my CS degree didn't teach me things I used at work like version control, bug tracking, database development, etc. All I learned were those pesky CS concepts. Those things are taught to the CIS (computer information systems) kids. And as I've gone on to work at real programing gigs the people with plain CS degrees write better more maintainable code over and over again. You can pick up those skills on the job and not worry about them too much. Core CS conc
    • by spiffmastercow ( 1001386 ) on Monday November 08, 2010 @06:05PM (#34166984)
      That's okay, most professional programmers don't know how to write code, so they'll fit right in.
      • I wouldn't go so far as to say most (I haven't met >50%) but it can be amazing what some don't know. I recall one recent graduate of a software engineering program (actual engineering program, not a CS degree, at a fairly prestigious school)) who had no idea what the stack was used for, how to use a stack trace in debugging etc. etc. It has been a few years since that encounter but somehow I doubt it is any better.
        • As I work with more and more people with real engineering degrees, I start to question where the "engineer worship" comes from.. Yes, I wish I had learned some of that fancy hardware stuff and the extra math, but being an engineer doesn't necessarily mean you can code any better than a CS person. In fact, I've noticed that most engineers just give a blank stare when you ask them about topics like algorithm complexity. They've learned some other difficult material, for sure, but that doesn't make them exp
          • I think it really all needs to be in there whether it be a CS degree of a "Software Engineering" degree. Really, every software developer should understand how the hardware works and how to program it at a low level even if it just an idealized machine run as a simulator, what computational complexity is and have at least some idea of what P and NP are about, basic calculus (just 'cause), linear algebra etc., logic (formal, theorem proving & hardware), and so on and so on. One of the very first CS cours
    • by fishexe ( 168879 )

      Most computer science students don't know how to write code. So it doesn't matter at all.

      I feel like your spelling of experiance is some level of brilliant meta-commentary that I'm not qualified to understand.

      • Most computer science students don't know how to write code. So it doesn't matter at all.

        I feel like your spelling of experiance is some level of brilliant meta-commentary that I'm not qualified to understand.

        I agree, unequifaxally, that it is genius

      • by daid303 ( 843777 )

        I was going to say something like, shoot me for not being native english and heavy dyslextic.

        But I figured I could just release my post as GPLv2 so you can fix it yourself.

    • Most computer science students don't know how to write code. So it doesn't matter at all.

      That's because many computer science departments focus on the theories and science of CS, not good programming techniques because many professors have never written code for a living. It's probably why so many departments started teaching Java instead of C++ (or *gasp* both!) because they just don't know any better.

      • I don't know what university you went to, but when i took Informatics it's true they didn't teach us much hands-on programming yet that was more cause we were expected to learn the practical parts ourselves on our own time. When time came to do assignments you either knew the basics already or had to figure them out.

    • by Kjella ( 173770 )

      So what? The people you talk about are never the kind of people that like to tinker, to program up a little tool to scratch an itch. They're not the people likely to contribute something after a long day of studying or work - not that all open source must be volunteer work, but much is. The vast, vast majority of the population can't code and it's not really important how many CS students can't either, the hit ratio is probably roughly as good as it's going to get. Consider it a bit like searching for rare

    • Re: (Score:3, Insightful)

      Computer Science != Software Engineering != Programming.
      Computer Science is the theory.
      Programming is the practice.
      Software Engineering is how to put the theory into practice.

      • by daid303 ( 843777 )

        Let me fix that for you:
        "Most software engineering students don't know how to write code. So it doesn't matter at all."

        I did a embedded software study. And in the 3th year we had a "software testing" class. We where required to write a simple "solve the ABC formula" program in plain C. And then test it. We had 2 hours per week for that class. We worked in groups of 2. After 4 weeks, that's 8 hours for the people that failed math. Half of the groups did NOT have something that even ran a basic test. So not s

    • by sqldr ( 838964 )
      yeah, the biology students and ones doing media studies are the best programmers. People studying computing know sod all about computers in general.
  • I've been a professional software developer for over 20 years and this is one area that I really think would benefit the REAL world so much.

    I would also love to see a 2 semester class where 1 semester is where they learn how to write software specifications for fictitious business software package.

    Then the 2nd semester is where it has to be implemented by a different group of students.

    • This. Bonus points for a professor who changes the requirements every week or two.
    • When I did my CompSci degree last century we did this.

      Groups of 4 students, design screens and inputs for a business application in COBOL.
      After designed, swap with another group and begin implementing to their design specs.
      After a few weeks work, we had to swap with another group and take over (and finish) a half completed project.

      At the end of the subject we had to write about our code, experiences taking over another group's work, and the group dynamics.

      It was daunting, but I well remember the lessons gai

    • Re: (Score:3, Interesting)

      by wrook ( 134116 )

      I once saw a "performace art" exhibit at the National Gallery in Ottawa Canada. They had an exhibit where an artist wrote up requirements for a piece of artwork on a series of index cards. He then handed the cards over to his students and asked them to create the art. There was a wonderful letter in the exhibition where the artist describes how the resultant piece of art was absolutely horrible and that his students must have been complete morons. Apparently when given a list of requirements the student

  • to anyone with a project: go talk to your local college or university cs department, they most probably have some kind of project course and they are always happy to received interesting real world realistic project proposition. Student cost less than outsourcing (only your time) and the quality can be quite good if you mentor them correctly.

  • What blows my mind is the complete lack of teaching any sort of version control software in most CS programs, which is usually going to be the first thing you'll have to use when working with software at your first job. Seems to me that the CS professors should be using something like subversion to have their students check-out files being provided for a project, then have them submit all their work by checking into their assigned repository. Not only would students get experience working with version co
    • Re: (Score:3, Informative)

      by Microlith ( 54737 )

      This is very true. Version control and the ability to diff against previous check-ins would have made finding some bugs (and avoiding others) much easier, had I known how to do it at the time.

      it would be really easy for professors to lock checking into their repo after the due date.

      Not even. You could just check out the last revision checked in on the due date. Subsequent revisions wouldn't even matter.

    • Most of that stems from CS programs being behind the times. Too much theory, not enough real-world application. Not all of it should be code, as theory is necessary. But CS folks should be graduating knowing both high-level ideas on why you write code in certain ways, and the tools of the trade.

    • Re:Version control (Score:5, Insightful)

      by cforciea ( 1926392 ) on Monday November 08, 2010 @05:54PM (#34166854)
      It isn't really that surprising to me. Computer science and software engineering are not identical disciplines. Computer Science programs on a core level are about data structures, algorithms, and the theory behind why we program things the way we do. The actual specifics of a development cycle, while obviously important if you want to put any of that to practical use outside of research positions, are disjoint from those concepts.

      You can make an argument that more people should be learning Software Engineering instead of Computer Science, but that's really a different discussion.
      • If you are writing software at any level, if you are writing important papers at any level, if you are doing anything rigorous, difficult, and requiring many revisions and updates over long periods of time:

        You should be using version control of some sort.

        Why would you NOT want the added ease & safety of knowing that even if you totally train wreck whatever you're working on, you can always roll it back to some recent version before you made those changes? Whether you implement it in a Dropbox-style "ev

      • by wrook ( 134116 )

        What's even worse to me is calling it Software Engineering. While it would be nice to think that programming could be rigorous enough to qualify as an engineering discipline, I hardly think it is at this point. It scares the hell out of me that there might be someone with a P.Eng specializing in software that will oversee a software project and maintain that it is safe for the general public because he was there. Our practices are *not* anywhere near that level. While a mechanical engineer can oversee t

    • What blows my mind is the complete lack of teaching any sort of version control software in most CS programs, which is usually going to be the first thing you'll have to use when working with software at your first job.

      I agree that every CS student should learn how to use version control systems, but I don't necessarily agree that the professors should teach them. Version control is just a tool and there is nothing CS specific about it. What is wrong with CS students taking the initiative and learning professional level tools to make their lives easier? In my grad studies, I always used version control, automated builds, and automated test suites. These tools exist for a reason; they make your life easier, so students

    • Parent is dead on. How can they not be taught how to use version control software? You'd think that would be the one thing they'd all have to be familiar with no matter where they went.
  • What you have is great but you should check out: and participate if you can.

    I am mentor with the program and work with a small group of students on a project. The student get to work for an entire semester on an open source project producing or contributing things of real value. On top of that they learn how to work in a distributed environment, which is essential these days. Really it is just amazing for the students.

    • by skids ( 119237 )

      What needs to happen for this type of material to start getting rolled into real, for credit, coursework, in your opinion?

      (And as an aside, it would be nice to see technical writing classes where one of the assignments is to critique and improve a wikipedia page.)

  • Not so enthusiastically anymore now are you?
  • Hey is this the individual who had the talk at the google summer of code summit? Did you put your talk online yet? Don't forget to send an email to the list on it...

    • :D

      You followed me all the way from California, back to Slashdot.... I will put it on the list soon! (Or you can, probably, given this Slashdot post.)

  • Bug trackers and version control are really orthogonal to FLOSS. Yes, it's true that most of the most popular VC systems and several popular bug trackers are OSS, but that's more by-the-way. These are all things that students of computer programming should have exposure to, yes, but mixing them all up as if they were the same thing may not be the most productive way to suggest that.

  • by VGPowerlord ( 621254 ) on Monday November 08, 2010 @06:03PM (#34166956)

    The first thing that struck me, both from the summary and the article itself, is that none of these are really open-source specific.

    To reiterate, the four they listed in the article are:

    • Communication technologies, like IRC and mailing lists
    • How to get, build, and modify open source code
    • Project organization, including version control, bug trackers, and individual roles within a project
    • Linux and command line skills

    OK, well, you could argue command-line Linux skills are open-source, but that's not guaranteed.

    If anything, these are skills that all businesses who have programmers would want them to understand.

    Heck, even my current project, an internal project that I swear I could submit things to The Daily WTF [] every weekday for the next year on, has version control and bug tracking software!

    • by vlm ( 69642 )

      Project organization, including version control, bug trackers, and individual roles within a project

      You'll read many more interesting examples of the above in the linux kernel, than say, yet another one week in-class project.

    • Granted, but these tools are more specific to open source. Many companies don't use IRC/Git/Trac-Bzr-Bigzilla/etc. in their corporate environment. Especially if you're not a programmer by title *cough ME cough* then you have a hard time acquiring the overpriced POS tools the company uses, but are not allowed to get what you want.

      tl;dr The tools presented are largely open source.

      And as many have stated, it's great he's showing them this, because no, most programmers aren't aware of just how useful these tool

    • by Kjella ( 173770 )

      The difference is that most workplaces I've seen have a little system to set you up, show you the ropes and so on. Need not be more than an experienced developer but someone who can explain a bit of the hows and whys, and most importantly someone who you can usually get a little attention from. I've been trying to get "into" a project now for some time, but it's damn hard code to understand and in the beginning I am more of a bother than a help asking all these questions, trying to wrap my head around the c

  • Figure it out later (Score:2, Interesting)

    by cforciea ( 1926392 )
    Not to diminish the complexity of version control or anything, but I'd rather have a programmer that knows how to design an algorithm and needs help getting it checked in than a lousy programmer who knows his way around SVN well enough to check in his crap code.

    Of course there are people with CS degrees that can't design an algorithm and vice-versa, but they are really trying to teach the more important part of the equation. If you can figure out the core theory behind computer, I'm confident that you'll
  • by paulproteus ( 112149 ) <slashdot.asheesh@org> on Monday November 08, 2010 @06:32PM (#34167370) Homepage

    Hey all! I'm going to be working on organizing more, similar events going forward.

    If you want to stay on top of that, or try to organize an event near you, join the mailing list for OpenHatch events: []

    This is part of the OpenHatch project, an ongoing effort to help new contributors get involved in open source. If you want to stay in touch with OpenHatch, join us on #openhatch on or follow the links on our "About" page, [].

    • In my late-night Slashdot writing, I forgot to mention this the summary: Yuvi Masory and Felice Ford played a huge role in organizing the workshop. Yuvi and Felice handled all the logistics, getting all the details down to a T -- that included asking Github for sponsorship, staying up late the night before to organize the students into groups, reserving rooms, and earning the support of Penn computer science.

      The workshop was just a pipe dream until Yuri and Felice nailed down all the pieces. My hat's off to

    • I know I'm late to this story, but thought I'd try this.

      I'm the original developer behind Perf4J: [] . Perf4J is a library for performance tracking code in Java that uses the appender frameworks of popular Java logging frameworks to handle timing statements. The library has been pretty successful, but right now I don't really have the time to be the sole "despot" for this project. I'm looking for someone to essentially take this library over from me, or at the very least add some co

  • I teach for a BS degree in Web Design & Development. If you look at our courses [], you'll see that we have a number that are very Open Source friendly. Sure, we partner with Adobe and Apple and have a huge focus on the Adobe CS apps (Flash, Photoshop/Illustrator, Flex, ColdFusion), but we also have entire courses on PHP, jQuery, mySQL, and Red5. And those are just the apps for which we spend an entire course. We also work in Git, CouchDB, Audacity, Eclipse, and many more common OSS apps and platforms.

    • by Jaime2 ( 824950 ) on Monday November 08, 2010 @08:42PM (#34168534)

      I teach for a BS degree in Web Design & Development. If you look at our courses [], you'll see that we have a number that are very Open Source friendly. Sure, we partner with Adobe and Apple and have a huge focus on the Adobe CS apps (Flash, Photoshop/Illustrator, Flex, ColdFusion), but we also have entire courses on PHP, jQuery, mySQL, and Red5. And those are just the apps for which we spend an entire course. We also work in Git, CouchDB, Audacity, Eclipse, and many more common OSS apps and platforms. It's an open secret that we're working to launch a BS degree in Mobile Development that will have a very large Android curriculum.

      Higher education doesn't have to be all boring theory and no practical application. Anyone who tells you that the university system can't keep up with rapidly-changing technology is sorely misinformed.

      Twenty years from now, 90% of the technologies you mentioned will be just memories. A traditional BS from a traditional university is useful for pretty much an entire lifetime. Your BS program sounds a lot like a trade school program repackaged so that students can get financial aid. Don't get me wrong, I think these skills are useful -- I spent 10 years of my professional life teaching IT certification courses. However, I never considered what I did to be an alternative to a degree.

      I would much rather see a university have trouble keeping up with technology than see one lose all sense of perspective chasing shiny things.

      • Congratulations on your elitist prejudice. You've just made the argument that your degree is better than ours, just because it looks like ours can't possibly be as dull and abstract as yours. You're right, it's not.

        Do you honestly believe that graduates from a trade/VoTech school are never going to pick up another skill? Can't you learn the underlying skills without resorting to eye-gougingly dull lectures? We still teach OO and MVC and *nix terminal commands. We teach how to refactor code, collaborate

        • Re: (Score:3, Insightful)

          by Jaime2 ( 824950 )

          Maybe you missed the part where I said I taught these classes for ten years. My point is that trade school is fundamentally different (not better or worse, different) from what the university system is designed to deliver. Giving a BS for learning thirty web development technologies is a bad idea. People will learn the tool of the day at work. The golden opportunity to learn to write and think critically is during an undergraduate degree program. I also don't think a web developer needs a BS. Everythi

      • by int69h ( 60728 )

        That's exactly what it is, a glorified trade school. Notice they are accredited by a trade school accreditor. I'm not saying that vocational schools don't have a place, but you don't see the local beauty school trying to pass off their program as a MS is Hair Science.

  • Across the street at Drexel University almost all computer science classes require that class assignments run on the universities Ubuntu tux cluster, and comes with make files. Many are now requiring some using version control so instead of "handing in" an assignment we just e-mail the teacher a link to a git or svn repository that they can access. Most students run or at least have in a VM or separate partition Linux running and know how to install and maintain it.

    I don't mean to boast about Drexel but
  • SCM, bug trackers are just little details. You can always explain them to students in a traditional lecture.

    The real difference between open source and traditional education is the motivation. The usual college class pits you against a number of classmates - if you made a mistake in an exam, you're less likely to get the A+. Unless you're one of the lucky few who can easily breeze through exams and tests, it's a negative reinforcement cycle.

    Nobody gives you a grade in open source software development. Y

Don't tell me how hard you work. Tell me how much you get done. -- James J. Ling