Monday, February 22, 2010

FOSS based education gains importance in Latur

Another awareness camp, another success


I was in the auradh district of Latur (Maharashtra ) between 26th Jan and 3rd Feb 2010.
The experience me and the entire team got was some thing unique.
It was full of contrasts, surprises and amaisement.
I arrived on the republic day in Latur. The train was on time and we stepped out of the 2 tier AC compartment, just to find that the AC inside was much better and warmer than the outside climate.
We had been informed by Prof. Shingare that the climate is pritty cold (infact chilled ) and we better be prepared.
It was around 6 degrees outside and Shantanu from the FOSSy group was oblivious of this fact.
He did not come with any jirkin or swetter.

Any ways, Mr. Prasad Patil who also happens to teach at MDM college aurad came to pick us up from the station.
at a short distance we met Lakshmikant the founder and MD of Swayam Shiksha Prayog (SSP) Latur. We sat in the near by hotel for a cup of tea and Lakshmikant informed me that the poli technique college was actually not doing the right thing by trying to get us do a 1 day workshop.
"Linux is not so unimportant that you just do a workshop for the sake of it ! I scolded the management and told them to do the workshop for at least 2 days." Said Lakshmikant who was going to accompany Us to Master Dinanat Mangeshkar (MDM) college of engineering.
Actually the problem was that we had got a call from the poli technique college for a workshop as well but we could not schedule it.
We reached at Aurad in about 90 minits and quickly got ready for the republic day program which had already started in the college campus.
On first look the college looked very simple, nothing as compaired to the one we saw in Konkan.
But the campus is the richest I have ever seen in terms of the gurus it is prowd to have working there. Infact Prathamesh was just telling me on the last day that the students are so lucky that their teachers are encouraging them to learn. They not just follow FOSS as in software but also follow the culture.

about the Python programming workshop



On the first day itself we came to know that The senior faculties out there are pritty serious about Free Software, what we were unsure of was how well will the students participate?
We had been told that students in this part of the state don't open up easily and we might find a tough time initially to get them involved. "They don't start communicating right away" told Manik Shingare who was having a cup of tea with our team.
We knew that this is some thing we always come prepared with but what we saw on the first day in particular really stund all of us.
Meanwhile the lab was setup perfectly by Anusha, Prathamesh and Shantanu despite of several power cuts due to load shedding.
We were going to make participants aware of the python programming language because it is the biggest growing language in Industry in terms of popularity and exceptance.
From Google to NASA and from Nokia to reliance (India) all use python either for every thing or at least for some thing.
We covered python right from its basics till designing User interfaces with Glade and also gave a demo of the Pylons web application framework.
We had devided participants into 2 batches and took 3 days workshop for each group.
Out of our experience we have observed that People tend to understand the basics of python very very quickly provided they are used to indenting their code in c, c++ or java.
Infact we generally manage to get participants to understand datatypes, conditions, loops and functions in a matter of 4 hours (our sessions are around 2 hours each including hands-on ).
The method we adopt is to give small chunks of information including concepts, then demonstrating the examples on the screen and then allowing time for hands-on.
I am blessed with an excelent team of programmers who also know how to teach in a creative way. So generally the entire team would go around the class and check if every one is doing the assignments right.

new experiments and new experiences


On the first day itself we discovered that the information which Prof. Shingare gave us about the student's mindset was absolutely true.
There was hardly any student who was responding to either our questions or our jokes (I tend to make sessions very funny if students are not opening up).
What stund me and Anusha in particular was that girls were slowly starting to participate from the second session of the day, but boys were shying away from answering even "yes " or "no" when we asked if every one is understanding.

The basics of Python went very well, with about 95% participants understanding the concepts and getting the assignments right in the first go. A few students were lagging behind, mostly due to the fact that they never followed the better programming practice of indenting their code in other languages.
Trainners conducting workshops for python should particularly take care of this aspect of Python while teaching. There are indeed many programmers who don't indent their code and as trainners we must make a point to properly explain the analogy. We soon got even those lagging programmers to come up to speed although we had to extend the session by half an hour in the evening.
We wer also going to teach python database connectivity using DBAPI, and generaly choose postgresql as the RDBMS.
Fortunately Participants were very good at SQL, except that they used oracle. Obviously we got the common question which mostly all participants ask, thanks to the brand based education VS concepts. “will Oracle SQL commands work here?” Prathamesh told them to actually practice their regular SQL assignments, including the DDL and DML statements.
Students were obviously happy and surprised that all there select, Insert and update statements worked and so did the create table commands. Once Prathamesh showed them how to use psql prompt, they all practiced SQL. Later on we explained those students the fact that SQL is a standard which all RDBMS follow, no matter free or proprietory.
Amids all this, some thing struck me as well as Anusha and Shantanu. “students are slowly speaking out, but their programming concepts are very week.” Having informed the college administration that we will be teaching Python programming language, we had the basic asumtion that at least students will be knowing programming to an intermediate level. But we have learned one thing, no matter how strict you remain about your pre-requisites, you really can't be sure that 100% participants will fulfill them.
But here the case was even worst. More than 50% students were not communicating for one thing and secondly, they were syntactically good in the language of their choice, but were no good when it came to concepts such as classes. At this point we had decided that we will not go too deep into the language right away and teach them a certain concept when the need arrises. For example, I experimented with the concept of a python package. I did not cover it in my session on python core as planned before, but only touched that topic when we came to things like creating GUI where one module needs to talk with another.
Further details were covered during the pylons hands-on.
Similarly concepts of callback and inheritance were covered in details only when Anusha took up glade and PYGTK.
In short, we only introduced students to certain basic concepts when need arrised and specially when we could show them a real-world example that could create an impact.
For example while many of them already knew VB, we had no trouble explaining what an event is but when Anusha took 3 sessions of Glade, she explained what a callback function is and how it is used to connect a given widget with an event.
This way, students got to see real callback function in action, not just its concept.
The moral of the story is that “teach it when need arises and demonstrate it when application is known “.
Amongst all people Guruji was one personality which took major part of my mindshare during the visit. I was discussing the same concept which I just mentioned with this 80 year old gentleman, and it just took me a few minits to realise that he was the real “teacher “ by flesh and bone as they say.
A person who probably does not even know what programming is or can't even use a computer efficiently for daily work was giving me more suggestions on how to teach programming.
“bring out some examples with rural flaver such as farming and map it to your programming ideas, students will easily pickup.” While this sounds obvious to all of us, many of us will tend to bring out same old examples with slight alterations during such challenging workshops.
He tought me how the sugarcane business works (Not to mention the lovely juice we had at Prasad Patil's farm).
“Give them the example of how they can create a database for farmars and you will see that the students will love it.”, said Guruji and I indeed followed his words.
Anusha went ahead with her glade sessions but to our disappointment, we were informed in the evening that students found the basic event driven form very heavy for practice and many have not picked up the concept.
This apparently happened because we asumed that the students knew event driven UI programming.
No, our asumtion was not completely wrong, just that we should have realised that their story of event ended with “privat sub command1_click() … end sub” of VB and they practically knew nothing about the nuts and bolts of real event driven model.
Again, the brand based education came in our way and also their way.
I had to explain them why we did things the way we did and how important are these concepts.
Never the less, we started the 3rd day (last day for the first batch) with a repeat of GLADE where Anusha patiently gave an overview of what we tought the previous day. This time though, the form was much smaller and we told them to analyse the events in 3 parts.
1, the widget whose event needs attention.
2, which event are we interested in? Meaning we must connect that widget to the event in which we are interested.
3, what should happen if that event happens (and don't use words like fired or executed ) on the concerned widget? Meaning writing a function to have the activity performed.
Thankfully with the change of words in our notes and using a bit non-technical language which sounds kiddish at times, there was no further misunderstandings about the concept of events.
Try explaining the message pump like a real heart and students learn it easily. Compare the try: except: to a bypass surgery and students pick it up.
“look, just like when there is a blockage in heart, the doctor would bypass that part of the artary with an alternative root created by attaching a small part of the artery around the blockage, similarly when there is an error in your code, the course of flow will bypass the remaining part of the try block and take an alternative except path”.

This idea really worked and there were many such small examples we gave them.


On the Final day, after Anusha re-iterated on the event driven programming with pygtk, I took over for the pylons workshop.
I must say, this was the toughest session for me. Fortunately students knew html pritty well, although Prathamesh helped me by conducting a rivision/ test of their concepts.
We found that they were ok with forms and request-response system.
Most of them also knew the http protocol and that it is “stateless”.
I then went on to show them the installation of pylons. We first did a hands-on for setting up the virtual environment and then using easy_install to setup pylons and all its dependencies.
I always believed in doing off-line installation because one can't guarantee that internet will work when it is expected to work.
I had carryed the pylons and its dependent packages in my machine. And easy_install, true to its name makes it realy “easy” to install python packages.
For example I generaly teach students to use the -i argument with easy_install and specify the path to the directory where we have unpacked the pylons archive.
It all worked well and soon students understood the basic idea behind the virtual environment.
We then created a simple project to start with and I had planned to have a small form based database application.
But it took quite a long time for students to understand the Model Vue Control “MVC” architecture and we had to explain it in-dept with some code and after 3 or 4 repeatations, students actually understood the idea.
I think one leson we have learned is that it is vary important to teach the MVC concept in very intricate details if we decide to teach any web application framework.
So from now on we will never keep pylons on the last day of any python programming workshop.
Never the less we indeed wrote an interractive form and managed to explain how things work between a View and Control.
What we could not do as per plan was the Model part of pylons which we planned to show withSQLAlchemy.

Any ways, the second batch started on the very next day.
We were fearing the same kind of situation for the coming batch, or as Shingare suggested may be even worse.
But it was quite the other way round.
The second batch of students was more verbose. Infact they all were responding and specially the girls liked the song I made for the programming assignments,
“python karta hain ye nashila badan, likhna chahe har koi ismay function.” This is a modification of a hit number from a popular film.
This Time we also did a demo of installing Ubuntu. This really worked as we expected and people not just wanted to learn python but also got curious about using Linux in their home computers.
Anusha took the python basics upto functions and I took the Object Oriented Programming.
I have found one way of motivating students, specially for python. I told them “you learned python in record time. Just think of this, it took so many days for you to learn how to write functions in c, but in python you took just 2 hours, because the syntax is clean and presise to the point”.
The rest of the sessions including anusha's glade and pygtk went very well. We were getting much better response and also post session feedback was very positive.
Guruji was even suggesting me that I should actually communicate more in English, because I was talking more in Marathi and Anusha in Hindi.
To my pleasant surprise he told me “it is good to respect our mother tongue, but our students should not spoil their own communication by making this a weekness. Are we expecting that companies coming for campus placements are going to ask questions in marathi?” I am happy that such respectable seniors don't take the traditional ratially discriminating attitude of “English is not ours and we will only speak marathi because we are prowd of it” attitude.
Infact he told me whether they understand or not, first explain the problem in English and avoide talking to them in Marathi unless it is really necessary and if they are really not understanding any thing.
I must say I thoroughly respect this real “guru” and as I said before, its only due to people like him that the college is rich with culture and knowledge.
We also had a paper presentation competition on 1st Feb so had to shift the final day of batch II on 2nd.
Never the less this time pylons sessions went pritty well, although some thing else disturbed us, but we enjoyed it never the less.
Krishna, who also happened to be Anusha's favorite student of the workshop, had organised a small party along with other students for all the resource people.
We had great fun, and the girls, who seemed to be shy in such things were also (finally!) informal with all of us.
We had a realy nice experience and the experiments we conducted tought us a lot. Fortunately we could also share with the students, the repository of what ever little knowledge and experience we had. Students in MDM are quite talented, all that they need is proper mentoring and little motivation.

future plans


I will be going to MDM next week.
On 16th I will visit the college for guess what?
Prof. Shingare is going to provide students a web server for their practicals and also for the project!
He wants to provide this service to the students so that they can even do their assignments or the project work from their home.
I think he is visionary because he knows exactly what is to be done both in short and long run.
What I also suggested him was to apply for the Short Term Trainning Program (STTP) and do a workshop for faculties.
Another major part of my visit was the 3 day evening workshop on GNUKhata. Anusha and Preety did the workshop with college students and local business people.
Those sessions went quite well and a few businessmen actually tried it on their machines. So the happy thing for GNUKhata team was that it dod not stay in just the MDM labs.
We are also taking up some good projects with MDM college students.
One being a small system to collect farming based data and have a database which can be utilised by an expert to give advice to local farmars. They will also be able to bid for selling sugarcane
in the market with the help of this system.
Students liked the Python language very much. Probably it is the result of the pedagogy we have come to develop over last 3 years of conducting such workshops.
And the most important decision which Prof. Shingare took as the HOD was the real success of our workshop.
“I announce that all the final year projects in this college will be done in Python and should be done on GNU/Linux”. Said Shingare at the end of the workshop.
While I did explain him to not base this on just one FOSS based language, he wants to take up python this year as they find it interesting.
Perhaps next year they will take up ruby as well.