Learning to program, the open source way | Opensource.com
Learning to program, the open source way
Kushal Das thinks he knows what you're doing this summer: joining him and his team of volunteers in free, online programming classes, where you'll learn more than just how to code. In Kushal's hands, you'll also receive a crash course in the open source way.
Kushal, a member of the Durgapur, India, Linux users group who has been contributing to open source projects since 2004, is preparing for another season of "I Know What You Are Going To Do This Summer, a 75-day programming seminar that aims to teach novice coders the fundamentals of Python (Kushal is a member of the Python Software Foundation). But along the way, the program seeks to instill in students the benefits of collaboration and sharing—encouraging them, Kushal hopes, to join open source projects when they've graduated. Kushal leads a group of volunteer instructors who guide students through curricula that have been designed in part by developers from high-profile open source projects. His team conducts courses exclusively online, assisting students in programming exercises and assessing their work. Classes are rigorous, and can run for up to six hours every evening. We caught up with Kushal in advance of this year's seminar, which begins June 22.
What does your summer training program offer students?
The training offers a guided way for a student to evolve from consumers of software and applications into contributors. It focuses on:
- Providing a refresher course in the fundamentals of programming using Python as the language of choice
- Introducing students to free and open source software development models and collaborative practices
- Providing preliminary ideas about program design and architecture
- Using a real/existing project as an example to gain confidence to contribute
When did the program begin, and why did you initiate it?
The formal start of this program was during the summer of 2008. By then I had heard the common refrain that "college students cannot find a good place to complete an internship, and even those were far away at Bengaluru and other places."
So, I thought that if we could create a meaningful program that is online/virtual it would be easy for the student to participate across the country. During this time the access to reasonably affordable broadband via dongles was beginning and, if they so requested, we could send them the DVD of the latest release of Fedora.
My goal was very simple: to be able to turn a larger number of students into contributors. This would give them an edge when appearing at interviews with various companies. While we put coding as the focus up front, I also tried to coach them on how to communicate clearly, accurately, and concisely. These are skills that are not often provided by the technical courses they participate in and that the gap is always faced by the fresh graduates.
I looked back on the things I've learned and the mistakes I had made; these provided a good basis to understand what can be fixed and how to do that.
On average, how many students participate in the program? Where are they from?
We have around 15-25 students participating each year.
These students are students from all over India. We have also had participation from other countries like Afghanistan, France, and others. The students are committed, adjusting their schedules keeping in mind the time zone differences and so on. For 2013, we have more than 40 registrations.
Although we don't do targeted outreach, I have noticed that during each year there are at least five women who sign up and continue to learn, share, and contribute until the end of the session. And this year, based on the current registrations, we have an equal split. I hope that we are doing something right to allow a platform for women to become active participants in the coding process and learn about the free and open source software process.
What do you think is most valuable about the summer program?
I think that we blend real world programming with collaborative practices. This adds to the knowledge they receive from their curricula. We set hard problems and try to build confidence in the students to tackle them. There are existing coding/programming competitions where the students take part. But, the layout of the training is devised to allow a student to learn FOSS the hard way.
We go through incremental steps, and at the end of the program we hope that the student has learned how to collaborate and program—and likes sharing and publishing code.
What are the biggest challenges you encounter—either planning or executing the program?
Getting more mentors on board is one of the problems.
The virtual nature of the program makes IRC the classroom, and the students expect a mentor to be around and online. Sometimes the sessions/classes continue for longer than scheduled, well past midnight in India. Until 2012, we had a somewhat tedious and manual process of submitting and checking assigments. This year we have an application devised that is a dashboard to the progress of the program. I am hoping that a dashboard view will create more accountability in the students and help them do better.
What do you most hope students will take away from their experience in the program?
I hope that the students can be confident to participate in FOSS communities.
And, that they will be able to innovate by using their programming skills. I would like them to immerse themselves in the collaborative and sharing nature of software development which is far superior to anything else. I want them to believe that it is better to share—not only their code, but as a way of everything they do: creating music, taking photographs, writing content.
It has worked for me. It has worked for others. I'd love to make that magic happen in their lives too.