Friday, January 14, 2011

Semester I - 2010/2011

The teaching experience last semester was marvelous for me. It was a honor to stand in front of so-called Indonesia's smart & brilliant students for about a half semester. However, the excitement to teach Programming Foundations to the students also posed some challenges.

Challenges, written randomly & unstructured:
-
Skills were varied
The profile of the students were varied, some of them already exposed to programming for years with exceptional achievements, some of them had a bit experience and the rest had no prior experience at all in programming. Teaching a subject for a group of people with different skills such this is a bit tricky. If I explained something slowly in details, the students who already mastered the subject will get bored easily while if I explained only the concept the other students may feel lost in space.


- Student: Why should I learn this?
Imagine you just got graduated from senior high school, proud to be accepted in a good university, overflowed with the euphoria then you got flooded with a creature called Java while you don't have any experience in programming. I can imagine it can be very frustrating for some students. You learned about class, objects, arrays, iterations, recursive functions and you end up in a situation to questioning all of the concepts you just learned, "Why do I have to learn all of this?" In practice, I would say many students will feel that the course is too abstract and extremely boring. In order to trigger up their motivation, we need to show something that we can do with the programming thingy in the real world e.g. make an useful & fun application/software as examples/ course assignments. But um..maybe we should try to use Greenfoot next semester as advised by Mas Rizal Fathoni?


- Thinking recursively
Not everybody can plug in to the recursive paradigm easily. Moreover, in my opinion learning recursive topic with Java is painful. I think it is best to learn recursive paradigm by using programming languages which use functional paradigm e.g. LISP. I'm grateful back in my undergrad study they taught me LISP for one semester. Yes, one semester to build the sense and mindset to understand recursive paradigm.

- Grading

Sometime ago, a fellow lecturer wrote in an email saying that after some periods of teaching he can determine which student may pass/ fail the course and grading is just a matter to justify whether the student will
earn A, A-, B+ , etc I have to say that I experienced the same feeling as well. As for me, it is not necessarily true that a student with an A is absolutely better than a student with B+, B- or C. It's just a grade anyway, and there are many factors which contribute to a grade. Even in an exam, you cannot judge the full potential of a student. However, a good student tends to do well in an exam. But again, don't judge a student by looking only to his grades.

- Do they understand?
Reading student's "faces" is important, I need to know whether my explanation is clear enough to them. Sometime if I see many of them seem puzzled, I will try to explain something slower than before. However, I cannot ensure that every students always understand about every single concept that I delivered. If I may cite my undergrad lecturer's advice, Inggriani Liem, "read again about the topic in the afternoon while drinking a cup of tea and grabbing a piece of bread". Yes, the bottomline is,some concepts need more time to sink in your head.

- This is not my place!!
After several weeks/months some students will think, oh man this is not a place for me. Programming is not for me. I hate programming. Programming sucks etc. Well this is not a situation everybody wants to undergo, however this is a concrete situation which often happens. Computer science is not just about programming, however, still, programming skills are essential for computer science students.

- Mutual understanding
Speaking in front of others is never easy, especially for a shy guy like me *haha*. But fortunately I'm confidence enough to talk about something that I know much about it. Speaking in front of, about 50 other people is indeed intimidating in the beginning, especially when they just ignored you *haha*. Sorry to say, but I feel really bad when someone (during lecture) is just busy with his laptop, mobile device etc and begin twittering, facebook-ing. In order to reach the goal of the course, we need to have a mutual understanding and cooperation. I did my job as a lecturer and they also should understand their responsibility as students. Don't get me wrong, I never entered the class with an empty headed and talking about nonsense things. Before the lecture usually I read every section of the book & slides carefully, try to make an interesting example of it. Even the other DDP senior lecturer , also does the same thing. Having said that I always give my best to prepare the lecture, I also the expect the students to also give their best during the lecture. However, it's not always the case for the students :D But um..they just teenagers anyway and 6 credits for a course is indeed a bit overwhelming.

Ok, enough about the challenges, the bottomline is there is still a lot of room for improvement, both for the students and me.

Last but not least, now I realize why Bu Inggriani Liem was so strict when she taught us programming. Bu Inge, wherever you are, my BIG thanks to you. God bless you.