Wednesday, August 31, 2016

She succeeded to join through her consecutive successes  in Informatics Olympiad. 

Friday, August 26, 2016

Lagging, Lacking, Nagging Programming Skills: How to improve programming skills in the Indian youth.
Dr. N.B. Venkateswarlu,  GVPCEW, Madhurwada, Visakhapatnam


Let me first congratulate our policy makers for successfully killing arts, science. Of course, they are in the process of killing engineering education also. They have almost succeeded, I guess. Today, everyone is talking about skill set of engineering students. Some claim only eighteen percent of passed engineering students are having expected skill set while some other points that it is at 16 percent. However, in the mean time, yet another American University asked twenty five of its admitted Indian students to leave their University on the grounds that they do not have enough coding skills. I do not want to go on drill the reasons for this worst situation; instead I would like to express my perception on how to correct this situation.

To be curt, current generation mindset is indifferent, whatever are the background reasons. I wanted to share my side experience in support of this. In 2006, one student approached me with a CD having my C language class notes and my class room ready to run programming examples (about 300 and odd). I was taken aback and worried a lot thinking that this fellow may publish this as book of his own!. Immediately, I have decided to bring the book of mine on C language which is of course, published in 2008 by S Chand publishers. That way, this student became instrumental for my book on C language. This is the attitude working styles of typical students 10-15 years back. Now, let me share my recent experiences with two Institutes which hold below first 10 ranks in the AP state. I usually give full source code of few hundreds of problems in any of my programming/algorithmic oriented courses such as C programming, data structures, algorithms, object oriented programming through C++/Java. However, you may wonder that the total number of programming submissions of any course will not even cross even the quarter of the class size. I mean, if I assume class strength is 70 and total number of programming problems as 150, I am supposed to get almost 10000 programming submissions. In reality, what I get is about 15-20, may be, I am exaggerating here I guess!. This is the mindset of current generation students. When I recently probed the students, they claim that this type of program submissions are not asked by any other teacher and also JNTU final examinations will not demand such a type of preparation. Thus, they are not submitting me in en-mass (mass boy cot!!) See the mindsets of the current generation!.

CHINA batch syndrome or Sri Chaitanya, Narayana Syndrome. I am seeing the students coming out from these private tutorial colleges since last 25 years. In a nutshell, in my opinion they are been killed during those two years of stay with these colleges. Somehow, students are developing a mindset that engineering is  for enjoyment while Intermediate is for serious study. In reality, it is the other way wrong in my opinion. This mindset is making them to relax during their first year of engineering which they are unable to correct that easily in the subsequent years. Somehow, they try to complete their B.Tech!. During their intermediate, they are not at all given real impression that practical classes (laboratory classes) are more important than theory. They are joining engineering colleges with this mindset and giving least importance to laboratories including programming labs. In my opinion, skills will be developed in a person if they do experiments in laboratories and continue them repeatedly. Unfortunately, they are not serious even in doing University suggested laboratory examples itself. To add to this worst situation, engineering faculty who joined during last 25 years period who are from these tutorial colleges!. This is, after all a chain reaction (Nuclear Fission!). How to correct? GOK (God only Knows!!!).

Anyway, let me share some of my observations and remedies.

1.      Student’s lack of awareness of top opportunities if they build their problem solving and programming skills. Majority of the students mindsets are such that if they get a job in TCS or Infosys is enough. In reality, things are awkward. These companies are services companies which are offering peanuts when compared to today’s living standards. Whereas other set of companies which involve in product development are expecting the candidates to have good algorithmic, problem solving, programming, and design skills. This aspect is not highlighted properly, thus guys/girls are driven by TCS and Infosys syndrome.

2.      By conducting both theory and practical courses related to programming in the same semester.

3.      By making sure that the students executes as many number of programs as possible. At least 99.999% of the B.Tech qualified student’s claims that they have done only those 13 or 15 examples given in the respective University syllabus. I always wonder how an engineering candidate can complete his degree only by running thirteen (13 or 15) programs?. Usually, the syllabus given by authorities is guidelines only, especially with respect to laboratories. Teachers can add their own examples and tune their course. This is where faculty has to spend more time to improve their laboratory examples.

4.      It is highly recommended that the engineering faculty to give assignments that needs program design and development also from 1st year to final year. This continuous treatment from 1st year to last year helps the students to get rid of fear for programming. If needed, faculty should take help of CSE faculty colleagues in framing their assignments.

5.      The examples covered in the programming courses should take many live engineering and mathematical problems or examples.

6.      If Mathematics faculty are not having computer/programming exposure then they should be enriched with programming orientation as mathematics is one beautiful subject which can be used as a channel for program and logic building.

7.      Enriching and encouraging faculty towards competitive programming. It is a customary practice followed by many colleges that if a faculty publishes a paper, he will be given some honororium. This has to be extended to the faculty who proves his calibre in competitive programming also. This inculcates some form of positive development towards programming in faculty force.

8.      We recruit physical director and we will give preference to NCC certificate holders. Similarly, colleges should create a special post with title coach for programming competitions. Make sure he/she has some proven track record in programming competitions.

9.      Now a days, majority of  CSE faculty who got their doctorates recently are also week in programming skills which is a serious concern at this junction of time. Like non-CSE researchers, they are also using readymade tools such as MATLAB, R, Weka, etc during their Ph.D time. While recruiting CSE faculty, recruitment committee has to give importance for the people who has developed their own tool compared to others who has used existing tool. Sometimes, I wonder how come a Doctorate degree can be completed with 120 lines of MATLAB code?. Of course, some may argue they are doing applied research. I do accept. But, my sincere advise is that for CSE faculty recruitment, it is wiser to check candidates programming and algorithmic skills.

10.  Also, while recruiting an M.Tech candidate for Asst. Professor Position, it is better to check his programming and algorithmic skills. After all, all these extra things are becoming necessary as their marks in the marks lists are not reflecting their real calibre. May be, we can look for things such as 1. Did he appear any time for International Olympiad in Informatics during his school time?, if so what is the outcome and rank. 2. Did he appear for Google’s codejam? 3. Did he appear for any International Collegiate Programming Competition (ICPC) which is organized by IBM and ACM. 4. What is his rank in code chef? 5. What are his badges in other various programming competitions sites 5. Is he maintaining any blog with his contributed code? 6. How arduous responder in sites such as stackoverflow.com, answers.com, yahoo answers, etc.

11.   In is not uncommon that Colleges encouraging students to present technical papers in student gatherings. However, I am of strong opinion that colleges has to encourage students to appear for programming competitions such as ICPC; rather I say they should take this as  their Institute/college mission or goal.

It is a de-facto practice to offer high perks by Google, Yahoo, IBM, Microsoft etc., to successful ICPC participants both at national, region, and international levels. Of course, nothing to talk about final international round winners in ICPC; obviously they are very in demand by world renowned MNC’s such as above. I believe participation in this test is going to rise very soon in world wide.  Also, students if they have prepared for ICPC, they can also participate in other world level contests such as challenge24, Microsoft Cup, etc.  In addition, they can take part in some Indian contests organized by Infosys, Wipro, etc. Once they have tuned for ICPC test, their chances for campus placements increases by many fold. Moreover, by having ICPC training, students may also easily succeed in tests that are organized by Microsoft, Google etc., for internships. In addition, they can answer programming, algorithmic questions that appears in GATE and advanced or subject GRE very easily with ICPC training. Thus, I strongly recommend colleges and Universities to start programming clubs with various levels or hierarchy and conduct programming competitions locally to tame the coming generations.

12.   The controlling Universities has to make sure that the final question papers to have some suitable percentage of questions which demands students to have some level of programming/algorithmic/design skill set to answer them. This will change Student’s attitude too radically and also makes young faculty force to enrich them towards these skill sets.

13. I have attended as judge for many student presentations. I have never seen a single student showing their coding efforts or design efforts. Organizers aspire for student’s attendance while students need a podium to show their presentation and other skills. These student presentations are meeting to this extent only. I feel that the organizers to put a constraint that the students has to present their work (either code development or system design), then students will be fine tuned in  their programming skills.

14. Parents, school managements encourage students to write Physics, Biology, Mathematics Olympiad. In fact, Informatics Olympiad is also there but not many are not aware of it. Culture of program development and algorithmic thinking can be inculcated by encouraging students to attend informatics Olympiad like other subject Olympiads.

15. During the first year admissions, 1st level, 2nd level, 3rd levels are used while class work is getting started soon after 1st counselling. I have practically observed that almost 30% of the students are changing their sections or colleges during sliding. Thus, there will be disturbance in the class works. Therefore, I recommend college managements to start C program course classes only after 3rd counselling if needed adjusting the other trivial courses. Rather, they should plan for some schedule such that C language teaching is in a single stretch.

16. With my experience of teaching more than seventy thousand students, I feel the number of hours allocated for programming course in first years should be increased by two more hours independent of credits etc. For majority of them this is new unlike Mathematics or Physics or English courses of 1st year engineering.

17.  I advise the college managements to provide LCD projector to the programming faculty with machine at least during first one month of the course. Students will be having some un-explainable inhibitions and also it is the first time exposure to programming in their life time, they will be developing many silly doubts which a faculty can teach instantaneously if he has a computer along with LCD. With my experiences, this type of demonstrations during the initial weeks of a programming course makes students very comfortable.

18. Another barrier which I have observed is the language barrier. If the students are not from English medium, they will be having some difficulty in understanding programming. Faculty has to put this in their mind at least in the first few weeks of the course. If needed, I advise faculty to prepare some hand outs in local language and give to the students to cross this medium barrier. Of course, this special treatment should be for first few weeks only.

19. Another observation which I love to share here is the attitude of female students. Unlike boys, girls are very much fascinated about marks. Of course, they are toppling boys in the marks. However, when it comes to their awareness on software installations, computer management, programming, etc, they are usually behind boys. This has to be corrected immediately by organizing special boot camps for girls. I did see such a events in swing in USA in the recent times. We need to have similar  steps in India also, and especially in the area of programming.

20. CBSE/ICSE has started programming orientation in school level itself. State boards also has to follow this role model and inculcate dogma of programming from school level itself.

21. Mugging and re-production attitude of students has to be corrected immediately. I always get amused by the study habits of current generation. Oh my god, they are mugging Mathematics!!! With this experience they are mugging programming also!!. All these things they are attempting and following because of our examination and question paper patterns. If we correct these things, they are forced to change from their mugging attitudes which is good for their overall development.

22. A typical student believes a lot what their seniors say. In front of me, many senior students used to advise juniors wrongly. I wanted to share a recent incident which took place in my second year data structures course. One student informed me that their hostel fourth year senior advised all of them to be serious in programming and coding which are vital today to get job. I am over joyous and request this little one to bring that big one. When that big one (final year students) who came trembling to me, I said “Thanks”. She did not understand what for I am thinking her? She asked me, why are you thanking me? I told her, as you have correctly advised the students to build programming/coding skills to your juniors, I am thanking you. I have seen many batches of students who are not serious during their study and spend almost 2 to 3 years at Hyderabad or Banglore after B.Tech to first enrich them and get job. Whatever the passed out students say, I would like blame them first as they pass wrong things to their juniors. I request the students who employed in the recent times to share realistic things with their juniors in their respective colleges such that these juniors tame themselves correctly.

23. I feel it is high time to encourage students to aware about hacker rank(www.hackerrank.com) , yahoo answers, hacker earth(www.hackerearth.com), Challenge24, Microsoft Cup ,Google Code jam, Code Vita, ICPC, IOI, Code Chef,  etc and let colleges to maintain repository of these challenges in their web sites.

24. With my long standing experience in teaching programming to various types of student strata, I strongly recommend the faculty to user various program visualization tools such as The Teaching Machine, Leonardo IDE at http://www.dis.uniroma1.it/~demetres/Leonardo/, C Tutor at http://www.pythontutor.com/c.html#mode=edit, VIP at http://www.cs.tut.fi/~vip/ . For fresh students to programming, these visualizations creates better confidence and understanding in addition to improving their imagination on program functioning. Also, there is high possibility that they will be interested to become hackers who are in dire need by this great country.

25. I always wonder how students are wasting four to five hours in travelling buses to attend the college. Majority of the colleges are having their own buses and make their students to prefer them only. College managements should plan for an action plan in utilizing this time in buses for orienting to programming and problem solving skills development. I know, students are after marks and also after money. If possible, it is better to relate to these things such that this time of students can be used for improving their skills, especially programming skills.

The suggestions what I made above are my perceptions and pertain to Engineering Students only.