Search This Blog

Wednesday, June 15, 2011

Need Help in Teaching Programming to First Year Students

This is not the usual blog article. I am not giving my opinions and ideas, nor I am forwarding others' ideas/opinions that I find interesting. I am seeking YOUR ideas and opinions.

So, here is the issue. I am the instructor for the first year programming course at IIT Kanpur in the coming semester. It is called, "Principles of Computing" and the focus is to learn how to use computation in problem solving. So algorithmic thinking is what we want to inculcate. Since some programming language has to be used as a vehicle for this purpose, the Institute has decided on "C" language. So, the language is not negotiable at this time, even though I know that there are strong views of people on this. Also, the labs are going to be Linux (some recent fedora distribution most probably, that too is not negotiable). The last time I taught this course was 16 years ago. "Pascal" was the language used at that time. And there were less than 200 students.

I want your ideas on improving learning in this course.

To begin with, a bit more detail about the course structure. We will have three one-hour lectures a week for about 525 students (roughly 60 percent of the students who take admission this year). There will be one one-hour tutorial in small groups of 35 students each. And there will be one 3-hour lab for all students. Every day, 3 sections will have lab, so about 105-110 students will have a lab every day. Besides the instructor, there is one tutor and two teaching assistants for each section of 35 students. Tutors take care of tutorials, while tutors and TAs jointly take care of the labs. Tutors are normally either faculty members or PhD students, while TAs are normally MTech students, though some tutors will also be MTech students.

Now the questions.

First, is there some diagnostic test or some other mechanism to figure out the background of each student. I am expecting that a quarter of the students would have never done any programming. The second group would be good at algorithmic thinking, but would have done programming in a language other than 'C'. The third group would have done programming in 'C' but still no algorithmic thinking. One wishes they hadn't learnt programming. And finally the group which does not need this course. It is easy to identify the first group - just ask - but how do you identify the other three groups so that there can be appropriate pedagogical interventions for each group.

Second, What are the good books as textbooks. I have gone through many 'C' books but not very happy with any of them. I am looking for something that focuses on "algorithmic thinking." It should develop the habit of making flow charts and writing pseudo code, before worrying about syntax of any computer language. If there is no 'C' book which has good enough focus on "algorithmic thinking" then I don't mind having two books.

Third, what interventions can be there for different groups - particularly the first group and the last group. Having additional labs/tutorials for the first group in the first couple of weeks - is this good enough, or should we plan to do this throughout the semester. Would you suggest some material which is specifically targeted at novice users. I am thinking of offering projects to the 4th group to keep them engaged. Can something else be done.

Fourth, I am looking for interesting videos of 5-10 minutes which explain some aspect of problem solving (algorithms), which I could use once in a while in the class just to give a different perspective, to make lectures more interesting, to ensure that students don't sleep in the class, etc. But they could also be linked from the course website (moodle) so that people can watch it on their own. Similarly any longer duration videos (but they will only be linked from course website, not played during the lecture). Any links would be deeply appreciated.

Fifth, I am planning to setup moodle, and use that as LMS for this course. How can I use blogging and wiki to improve learning. Is there a role that social networking can play in improving learning.

Sixth, how do I detect copying in the labs. Is there some software that can go through all the 110 odd submissions, and tell me whether the two programs are too close for comfort. Similarly, is there some software that can go through the program and comment on its quality - tell me if the student is using one letter variable names, or not writing any comments, etc.

Seventh, what is a good debugger environment for first time users. gdb is an overkill. Remember, we will use Linux environment. So the debugger has to run in Linux, and should be free.

Eighth, anything else that your experience can help me with.

If you feel more comfortable giving me advise on email, my address is: sanghi[AT]gmail.com

Thanks much in advance.

Saturday, June 11, 2011

IIT Gandhinagar: An Innovative Orientation Program for Freshers

While the JEE selected candidates is busy thinking of what should be the order of their preference of various program in different IITs, IIT Gandhinagar has been busy preparing a plan to engage the new students, when they arrive on campus. Recently I received a copy of the final plan, and I must say that it was innovative enough that I thought of describing to a larger audience of this blog.

The biggest departure from the norm is that it will be a 5-week program. Normally an institute will have a 2-3 day orientation program to give new students a feel for the place, tell them all the important rules, introduce them to important people and offices, help them in opening a bank account, register them for courses, get them computer accounts, and all the rest. And the classes start immediately thereafter.

IIT Gandhinagar believes that there are a couple of problems with this method. One, a couple of days are really not sufficient time for someone to settle down in a hostel environment for the first time in his/her life, and start a tough academic program immediately. For most students (though some would have stayed in a hostel in Kota) this would be a very major transition, and should be done over a longish period. The second issue is that most of these students have only studied Physics, Chemistry and Maths in the last 2-4 years (except some studies to pass the two other courses in 12th board). Most of them have not read a novel, or seen a movie, or played any games in this period. In order to develop their overall personality, there is a need to expose them to a variety of things, so that they can pick up their interests once again, and nurture that along with their studies.

And, therefore, IIT-GN would have a 5-week orientation program for the incoming batch, which will focus on social awareness, values, creativity, physical activities and sports, and team work and communication. There will be large number of guest lectures on different topics, visits to different places in Ahmedabad, meeting NGOs, workshops on painting, creative writing, and many more, performing arts like theater, music, and dance, vocational stuff like pottery, carpentry, etc., athletics, outdoor sports (both team sports and individual sports), and yoga, personality development workshops, and many more things. The list of activities is truly impressive. And in order to create the right environment for faculty-student interaction, there will be many activities involving both faculty and students (that is, not the activities where the faculty is teaching, but activities where they are equals). Hopefully, that will make sure that there is close interaction for the entire duration of the stay for these students, and the students will feel comfortable in approaching faculty, if they need any help or advice.

The hope is that all this would result in students discovering their passion, becoming more creative and confident to face any challenge in future, and they will become well rounded individual who are sensitive to their surroundings and have a strong value system.

I don't know how much they will achieve within 5 weeks, but this is certainly worth an experiment. As Prof. Kelkar (the founding Director of IIT Kanpur) used to say, "if academic institutions won't do experiments, who else will." I wish them well.

(I will talk about another of their innovation in a couple of days regarding how they utilize the summer term. And the all important disclosure, so that you know my potential bias: I am a Guest Professor at IIT Gandhinagar.)

Thursday, June 9, 2011

JEE Counseling: Changes in IIT Kanpur

As I said in my yesterday's blog article, I have been getting lots of emails, and the maximum number of them are related to placement data. The next biggest chunk of questions are related to the changes that IIT Kanpur has made in its offerings recently. So, today, I want to talk about those changes, and how they may or may not affect your decision to rank IITK programs in your list of choices.

The first change has been to scrap all BTech-MTech dual degree programs, and add all the dual-degree seats to the corresponding BTech program. The idea is to offer flexibility to all students. The dual-degree will continue to be offered, but it will be an option for students of BTech programs. So after you have been in the system for a couple of years, you can decide whether you want to graduate with a BTech degree or want an MTech degree as well (besides other new options that have been created).

The second change that you will notice is that instead of 5-year Integrated MSc programs, we now have 4-year BS (Bachelor of Science) programs. These are in the disciplines of Physics, Chemistry, Economics, and Maths and Computing. The report of the Academic Review Committee, available from the Dean of Academic Affairs website, does not elaborate the reasons for this change. But I can make a guess.

Several academicians and national academies have previously talked about the need to make the under-graduate degree in all disciplines, but particularly in Science, to be of 4-year duration, as opposed to the current 3-year BSc. And this change can only happen when some Institute displays a leadership position and just does it, and hopefully, others by looking at the success of this program, will follow. Of course, for the foreseeable future, there will be both a 3-year under-graduate program in most universities, and a 4-year undergraduate program in some universities. Both will be named "Bachelor of Science." To differentiate between the two programs, their short form will be different. The 3-year degree will be known as "BSc" while the 4-year degree will be known as "BS".

It is good that IIT Kanpur has taken a leadership position in introducing BS. But whether this is going to be a sustained leadership position, only time will tell. Obviously, there will be problems that the first couple of batches will face. You will have to explain to everyone that you are not a failure who is doing a 3-year program in four years, but really a pioneer who is helping move this idea that the under-graduate program should be of 4-years. How much will IIT Kanpur support you when you have to provide all these explanations, I don't know. If you are having a difficulty in getting admission to a PhD program somewhere, will Director, IIT Kanpur, pick up the phone and talk to the Director there to explain this new degree. Well, it depends on who the Director will be 4 years from now. So there are some risks, but a good move by IIT Kanpur.

The third major change this year has been the introduction of double major and minor programs. Theoretically, it will now be possible for someone doing an undergraduate program in discipline "X" to also get a second undergraduate degree in any discipline "Y", by spending just one year extra. It is possible because if you look at the detailed curriculum of various programs, you would notice that out of about 40 odd courses to be done, only 15 courses or so are from the discipline itself. You have to do a lot of courses in Maths, Physics, Chemistry, Technical Arts, Engineering Sciences, Humanities, several non-discipline electives, and so on. So to get another degree you only need to do these 15 courses (or whatever that number is for a specific program). It is expected that some of those courses you will be able to do in the "elective slots" of the original undergraduate degree. Some courses may be waived (like B Tech Project may not be necessary in the second undergraduate degree, and some courses in the two disciplines may have significant overlap, and hence waived). The remaining courses you should be able to do in one extra year.

As a concept, this is great. Provides excellent flexibility, the reason because of which I have been recommending IIT Bombay to JEE candidates. But unfortunately, the devil is in the detail.

There is a lack of clarity on how liberal will be the implementation. My guess is that it won't be very liberal. So the report I referred to in the beginning says that the option for double major will be available to only those students who have a CPI of 8.0 or above. This means that you will have to be approximately in the top 40 percent of the class to avail of this option. That is somewhat restrictive already. The next thing it says is that the departments can restrict "admission" of second degree students to 10 percent of their strength. So, for Computer Science, we will have the right to restrict admission to ONLY 9 students, our current batch strength being 92. And, I can tell you that our department will probably restrict access to the minimum number, nine, and most other "popular" departments may do the same thing.

The detailed rules are yet to be formed, and the chances are that it would be possible for someone to change one's mind and after a semester or two, just inform us that s/he is no longer interested in the second major. If this happens, then I would expect that 9 toppers amongst the non-CSE students would ask for admission to Computer Science major, do a couple of CS courses, and then withdraw, but then it will be too late for others to be given admission.

So, I think the impact of second major would be very negligible. Till all the rules are framed, my advice would be to not be swayed by the announcement of double major. We offer good programs anyway. So consider IIT Kanpur based on that. If you are able to get double major in your preferred discipline, that will be an added advantage later on.

The last time IIT Kanpur introduced a new type of program, which was the BTech-MTech dual degree, it could not come up with clear, student-friendly rules for 10 years. And I have no hope of IIT Kanpur deciding rules on a fast track for the double major students.

My guess is that the implementation of minor program will be more liberal, and a lot more students will be able to do courses in another discipline to get a minor, than the double major.

But as always, I am not an official spokesperson of IIT Kanpur. I do not take any responsibility for correctness of the information provided here. Please read the ARC report that I have linked above for more details. And follow my opinions at your own risk.

Added on 1st July, 2011

PDF file for the Frequently Asked Questions on New Changes