Search This Blog

Showing posts with label large class. Show all posts
Showing posts with label large class. Show all posts

Saturday, August 27, 2011

Teaching 500+ Students - Part 2 (Conducting Labs)

This is to continue describing my experience of teaching a class of 500+ students. If you are interested, you can read the earlier post.

Last time, I had described my dealing with students who did not know adequate conversational English. This time, I am describing how we are conducting labs.

We have divided the batch into 5 groups, each of about 105 students. There is one lab of 3 hours per week for each group. For each lab, there are 8-9 persons (2-3 5th year dual-degree MTech students, and 6 1st year MTech students) to help students with any difficulties.

Normally, the first 3-4 weeks are hell for students who are looking at a computer screen for the first time. Too many questions, and too few people to help. So we requested all MTech students to do extra duties in the first 4 weeks. First two weeks, there were 6 extra MTech students in each lab, and for the next two weeks, there were 3 extra MTech students in each lab. The labs have gone extremely smoothly as a result, much better than what I could have imagined.

The first week was a bit of chaos. The MTech students themselves were new to campus, and trying to settle down, and understand the computing environment, find out where the labs are, and what they are supposed to do. In the past, instructors have not conducted labs in the first week for these reasons. But I was adamant. I was willing to not have a lab only on the first day of classes. From day 2, labs must start, and those who miss the lab of day 1 would have an extra lab on the weekend. I must say that the dual-degree students were huge help in this week and a couple of students went to lab on each of the five days. Without such dedicated students, I couldn't have managed this course. The first lab was to just remove their fears of the computers. They would learn how to send/receive email, attachments, searching for stuff through google, and a few other miscellaneous tasks, including playing computer games. A bit of linux commands too, and getting familiar with moodle. No programming, not even typing a given program. I didn't want to scare students.

The second week was to learn an editor, typing a program (which was given to them), knowing about the compiler, and running the program. Again, a very comfortable exercise, just to start the love affair between the students and the computer.

But the third week was different. The real labs started now. And the labs were very different from what their seniors had told them. We used to ask them to write 3-4 small programs (20-25 lines sort of stuff) in every lab. By the time they completed the course, they would be comfortable writing a 50-line program. This won't work for me. I would ask them to write at least a 50-60 line program in the lab, and the hope is that by the time they complete the course, they would have written at least one 150-200 line program.

Earlier labs would ask them to write some standard program from the end-of-chapter exercises. But now, they had to understand a more real-life situation and write a program for that. No rocket science. Just produce a telephone bill, or a shopping receipt, or project the train arrival time, or whatever, but a real-life context is important (not always, since I have to think of 5 problems of roughly equal difficulty, all of which can be done with the limited amount of programming that I would have taught till that week).

Since I can't expect students to write a 50-line program in a 3-hour lab, I would announce the lab problems at least 2 days in advance. So they can think about the flow chart, may be even try out some coding in their free time. But announcing the problem in advance has its own critics. Many students spend far too much time on them. Some students, after solving their own problems, even try to solve problems of other lab batches. Some have truly fallen in love with the machine, while others are just trying to catch up with those who already knew programming. Yet others find the air conditioned environment of Computer Center rather conducive to work (and sleep). But it is all my fault that they don't seem to be spending as much time in other courses.

Then the grading. Normally, the grading is the responsibility of the MTech student, who is as new to the system as the first year BTech student. And grading was done in the lab itself, with no record of program that was shown. And it was not surprising that the average of the class would invariably be a healthy 9 out of 10. This meant that almost all students wrote programs for all small exercises that were given in all labs, even though the students were not told about what program they have to write till the beginning of the lab hour, and within 3 hours, everyone had submitted, that too correctly, and had been graded. Something was not right.

I have insisted that all lab assignments must be uploaded on moodle. So if I want to check some submissions randomly, I should be able to do it. I would also give a very detailed grading policy every day - what to check, how many marks for what features including comments and use of proper variable names, etc. And grading should mostly be done offline (which is now possible since all assignments are uploaded), so that the TAs focus only on helping students in the lab. The lab average is a more realistic 6 out of 10 with a proper spread of marks on both sides. But students are not complaining. The amount of help they are getting, again thanks to all the graduate students, is something that they probably did not expect. Some of the TAs would be available even on weekends to help the students with their programs.

While we provide all the help to the weak students, one complaint that we keep hearing in IIT is that we don't do enough to encourage good students. Well, there is something for them too. We are starting the process to identify the best programmer in each section for each lab, and their names will be announced not just to that section, but to all the students. And soon, we will offer these students a chance to do a large project in lieu of the exam.

We tell our students one simple thing. We will work hard to provide all opportunities and support. But they should also work hard. Short cuts won't be tolerated. In other words, copying in a lab is a strict no-no. Some of them don't seem to understand this. Nowhere, the lab is taken seriously, I am told. We start using the services of MOSS server at Stanford today. Since this has been announced that we will use MOSS, and anyone copying will be failed in the course, I don't expect students to take chances.

Monday, August 15, 2011

Teaching 500+ Students - Part 1 (Language Issues)

In an earlier post in the summer, I had mentioned that I will be teaching the first year programming course to 500+ students, and I wanted advice from my readers on how to handle such a beast. First of all, I thank all those who responded. Your suggestions really helped me. This is the first time I am teaching such a large class. The last time I taught a large class was 17 years ago, when I taught Pascal to about 200 students.

525 is a very different beast. I thought I was well prepared. With 1 lakh lines of code under my belt, I was confident of knowing C language much better than Pascal that I taught 17 years ago. I had sat with several weak students last year and tried to understand what problems weak students face in this course. I went through videos of the first programming course at MIT and Stanford. I went through example lab assignments at several other universities, and the entire archives of this course at IIT Kanpur, for the last 6 semesters - all PPTs, lab assignments, and the works.

But when it started, I did not know what had hit me, and I still haven't recovered. Blogging was the first casualty. Google+ came at the wrong time. I have joined but don't follow anything. My active social life has come to a screeching halt. I guess this is my destiny for the remaining part of the semester. Today, after having spent the good part of the day in the office, I decided enough is enough. I got to blog.

At least point out the issues that I face, and hopefully the collective wisdom of the readers will help me sail through. The biggest issue is the language. No, I am not talking about 'C'. A fairly large number of students, in the initial survey said that they don't understand spoken English. This number is more than 15 percent, almost 100 students. They claim to follow the powerpoint slides. My natural way of teaching would have meant that while there are slides being projected on a screen, I would use blackboard to explain the finer points. This revelation meant that a lot more would have to be put up on the powerpoint, even though I may still use the blackboard on the side.

About 50 students said that they would like to be tutored in Hindi. And what came to me as a shock, some students do not follow even written English.

And this caused a debate in the department. I decided that I will request a graduate student to provide extra help to those who are weak in English. So he holds a session on Sunday for an hour in which he speaks in Hindi. I also encourage students to come to my office and ask me questions in Hindi.

Am I doing the right thing. Some faculty members don't think so. They point out that English is the official language of instruction at IITs, and therefore, it is the responsibility of the student to make sure that s/he learns sufficient English prior to coming to IIT Kanpur. By agreeing to offer help in Hindi, I am discouraging them from learning English. Second, it will increase expectation of students that in other courses too, the faculty would explain in Hindi, and a majority of faculty members are not from Hindi belt. So that would cause problems. Third, this is discriminatory with respect to non-Hindi speaking students who are also poor in English.

My take is different. The collective wisdom of the leadership of all IITs and indeed this country (because such decisions are taken at the cabinet minister level) has decided that students cannot be tested even on basic language skills. That we can't even specify that they must take English as a language in 10th or 12th class. This leadership has also decided that JEE will happen after 12th class, and not earlier, and that the schedule will be such that admissions will be offered only a few days before the semester starts. So, there is no scope for running a remedial course prior to the semester. With such decisions, one must expect that there will be students who would be weak in English.

What am I supposed to do. Ignore 100 students in the class. I do respect the fact that the same leadership has decided English to be the official language of instruction at IITs. I do not speak even one sentence in Hindi during my lectures and tutorials. I do not have any course related information on the official website of the course in Hindi. All assignments, quizzes, and exams are in English, and no translation is provided to anyone. But it is difficult to digest that even informally, I should do nothing about such a large set of students, who have worked really hard to reach where they have reached. I believe that a bit of compassion and support at this stage will make a huge difference to their learning experience. And I think not understanding the course content for several weeks till they learn more of English would be an insurmountable hurdle in doing well in this course.

Will this put pressure on all other faculty members to offer some support in Hindi. Will this discourage these students from learning English quickly enough. I don't know. Till I am officially told to do otherwise, I cannot refuse if someone asks me informal help in Hindi.