Sunday, January 18, 2015

Why Project Based Learning? An Experiential Learning Case Study of Language Teaching

Why Project Based Learning? An Experiential Learning Case Study of Language Teaching

This post describes a major step in my personal journey towards becoming an advocate of PBL approach, which is often referred to as "Learning by Doing" and is part of the "Experiential Learning" landscape. Please note that that the learning through this case study is applicable to all languages and at levels of education as highlighted in some other posts although the experience mentioned here is in the context of programming language issue of a computer science department of a higher education institution. 


It was around 2006 and I was Dean of KIET and we were grappling with the dwindling number of students in the CS program post dotcom crash. We were also becoming aware of the lack of proficiency in programming language skills of our computer science students and to rectify the situation we had already introduced  five programming related courses for the BS CS students. Additionally, we had  made two projects compulsory for them in their final. One of our visiting faculty members was Mr Tauseef ul Haq, who had his own software consultancy, and was supervising the final year projects. One day he astounded me with his complaint that many of our final year students did not know the "while-loop"! For me it was inexcusable and inconceivable for a student to have passed all these courses and then admitting that he did not know the very elementary building block of programming which is the "while-loop" -- a concept that one encounters in the first couple of weeks of the first programming language course! How come they had passed all these courses!

I was stunned to hear this because at that time there were five or six compulsory programming language courses through which the students had to go through before coming to the final year project stage. The students had started with the Introduction to Programming Course in which they learned "C" Language, which was followed by the Object Oriented Programming course in which they were taught "C++" language. Then there was this course in  "Data Structures and Algorithms" that required programming language skills for various data structures to solve several classical problems such as those related to sorting, merging, and traversals using algorithms. Then we had the database course which required that they learn the query language (SQL) for database programming and which included a project in which they were supposed to program a database application. This was followed by a course on Web Programming and another course on Graphical Programming Environments.

This was additionally heartbreaking because the teachers of these programming courses were reputed to be the toughest at the institute as the failure rate of students in their classes would often be as high as 40-50%. This was especially painful for me because I was the one supporting these teachers  and defending them in front of higher management, especially when one of them would fail as many as 50-60 of his students from the four sections with about 120 students. I was the one who had to absorb all sorts of complaints of the students who were excruciatingly scathing in their criticism. This criticism I would often ignore thinking that the students are raising objections because they have failed. I had to create special workaround for the scheduling of programming labs because such a high number of failure students would disrupt our capacity planning projections and lab allocations. In faculty meetings, these teachers would defend such high failure rates, vociferously, trying to transfer the blame to the students saying that they neither have the motivation, nor the necessary pre-requisite preparation. It is interesting to note that I have listened to the same complaints about the lack of motivation and lack of pre-req preparation of students by teachers when I was at IBA (1995-2000), at KIET (2001-12) and now at IoBM since 2013. [This is an interesting trend on which I have to write a specific post relating to teachers shifting the responsibility to the students].

This complaint about the "while-loop" signalled to me that there was something seriously wrongly in what we were doing. I then started to connect the dots. I had been aware that students often came to me with all sorts of excuses to opt for a communication network design project instead of the final year compulsory programming project, but I had not connected these requests with them having such a fundamental weakness. I then realized why they used to be so afraid of appearing in their final project demonstrations. I also began noticing that they would often run away from the project exhibition room, on one pretext or another, when they would find out that I was on my way to attend their presentation. I then began to see much more in their trying to find excuses for postponing their presentations on the chance that I would get real busy on some other project and would forget about their projects. Connecting all of these dots, I knew that the situation was serious and called for serious action.

I called the faculty meeting and unabashedly admitted that I feel like committing suicide falling on my sword because if it is the case that a student who has passed 5 programming courses under my watch, AND he doesn't know the "while-loop" or has forgotten it! The responsibility is mine and I take it personally!

Please note that this is a general problem and not related to only programming or computer science or a particular institution like KIET. I had listened to a similar lament from teachers of other institutions and belonging to different programs. I have myself experienced an engineering graduate with a CGPA of 3.4 who could not explain the meaning of "collinear" after having passed six courses of mathematics, several of such courses were passed from such great teachers as Professor Dr Amin. I have come across students of top business and management institutes of Karachi who have done their BBA and MBA but are unable to define or compute Cash Flows. I have seen Electrical Engineering graduates from NED who are unable to tell the role of the three pins of the three pin plug, or why the bird sitting on the transmission line does not get electrocuted. I have come across very good candidates at interviews who would simply profess ignorance of a very basic concepts saying that they have forgotten that because they studied it in their first year which was some years ago. I had met otherwise very good fresh graduates who have forgotten the name of the book that they studied two or three years ago, or the name of its author. Some even are not able to remember the name of the courses that they passed in their first semester or the name of the teacher who taught them. I must profess that I am afraid to meet a student of mine who may have gotten A grade in my course and fails to answer a very simple question.

This was the time I decided that if we continue to do the same thing again and again and then expect a different result then it is extremely foolish of us. I decided that this was the time to turn the things, upside down, and be really radical about what we should be doing.

The first thing we did was to decide that we would select one programming language and would make them expert of it. Instead of teaching them three or four different programming languages and making them the jack of all and master of none, we must select one language and ensure that they learn it well and gain expertize in it. We would make our computer science department a center of excellence in that particular programming environment. We found that at that time there was quite a bit of market for Microsoft Dotnet. We decided that instead teaching them DotNet environment in the very last semester in their web programming course, we would teach them C-sharp and DotNet environment in their very first course! And we would then use the same environment for Object Oriented Programming, the same environment for Data Structures course, the same environment for Database course and for the rest of the other courses requiring programming. Initially our doing away with C and C++ languages was regarded as heretics by the CS community in Karachi, but we insisted and reaped really good results in a few years. My learning is: Unless one has command on ONE language, it is foolish to try to teach them other languages. Just listen to the disdain with which software houses refer to CVs of people who profess to know tens of languages and tools while having no expertise in any one of them. They know that an applicant who knows one language really well will learn any other in no time.

When I look at the schools trying to teach  Urdu as well as English simultaneously to 2-3 year olds whose mother tongue is neither, I know that this is foolish because the child has not mastered even his mother tongue and is being forced to understand other languages. More foolish are those schools who are trying to teach the students additionally Arabic also, while the student has not mastered either of Urdu, English or their mother tongue. [A separate post on  this is required].

The second decision was to eliminate all paper based examination and lecture based teaching from the five programming intensive courses. We forced the teachers to conduct all of their classes in the programming labs and conduct the classes using "learning by doing" methodology. Whatever has to be taught must be taught by making them "do" the thing on the computer. All their examinations would be conducted only on computers. The objective was to immerse them in programming so that they obtain an expertise. We modified slightly the Coca Cola ad and started saying: we want them to eat, drink and sleep programming!

In addition to the class room interaction, they were assigned lab sessions for each of these courses. These lab tutorials were assigned to prominent senior students who had gotten A's earlier and who had done significant hands-on projects. These TAs were the students with whom the students could establish better rapport and can freely gain their guidance and advice unlike the teachers with whom the interaction is more guarded, more reserved and sharing is often not so easy. Soon many of these senior students became mentors to the juniors and became role models. This I found to be an important mechanism whereby it has been shown elsewhere that environments where learners are allowed in group settings to learn from each other are more powerful especially. This works especially well when there are some who are relatively better than others. [See Sugata Mitra's talk]

The fourth decision was to replace all teachers who did not have a hands-on work experience with those who had real life work experience in a real software house for at least couple of years. Problem with even gold medalists from good universities is that they have typically worked during their studies on toy examples and scale down version of problems. Experience of real projects and real life requirements is a different ball game in terms of complexity, scale and robustness of the client requirements. This is must to appreciate the significance of the solutions given in the books to problems whose immensity could only be understood and experienced in a real-life setting.

Fifth decision was to introduce a project component of at least 40% of the total grade of the course. This programming project was to be evaluated and demonstrated in a project exhibition to be held at the end of the semester in front of the external examiners who were invited from the industry and given some remuneration. All projects, good or bad, were to be displayed and exhibited. This exhibition provided on one hand the ability to the HoDs and the higher management to evaluate the quality and level of work in a few hours and also provided the externals an opportunity to share their comments freely with the teachers and students. Despite huge logistical issues of organizing, scheduling and displaying hundreds of projects on a single day, and coordinating the visits of external evaluators, the exhibition helped the faculty and students to focus on the practical part of the skills. [A post is required on Project Exhibitions as a mechanism for the assessment of experiential learning].

Sixth decision was to develop a culture where programming gurus are acknowledged and rewarded. One of its element I have already described was the institution of TAs. The other was to encourage the participation of students in national competitions. We made it a point to send our students to major programming exhibitions and competitions held around the country. Another was the institution of a major event called COMBAT where CS students of other universities were invited to participate in around ten different types of events.

Seventh decision was to make it mandatory for the final year projects to be sponsored by the software houses and limited them to be only the programming type of projects. To encourage this, we started giving credit for the projects done by students as internees or employees with a software house that is willing to bring the project for final project exhibition and evaluation. Another related decision was to encourage the students to take up full-time jobs in software houses in their third or fourth year and continue the program in evenings or weekends or take classes on the days of their choosing. This flexibility contributed greatly to their acceptability in the market, and their increase in motivation as they could first hand experience the relevance of the courses to the work in the industry.

Last but not the least was to decrease the emphasis on repeated and excessive testing and grading and replacing it with greater emphasis on project work. More on how extensively someone had worked on the project than on the assessment of reproduction of memorized materials; more on his ability to implement the concepts using whatever manuals are available online in flexible durations than on answering toy questions on paper in limited time. This led to a tremendous improvement in motivation of students and their understanding.

Around 2008, I watched the phenomenal Last Lecture of Randy Pausch  "Really Achieving Your Childhood Dreamsthat convinced me to the validity of our approach. The curriculum of the MS program introduced by Randy Pausch in this lecture was an eye opener for me to explore the merits of this approach further. This was also my entry point to the Project Based Learning approach and learning about the deficiencies of existing learning methodologies.

It took us a couple of years to put these decisions in place, thanks to the wonderful work and effort put in by Mr Khalid Khan, Director of College of Computer Science and the team assembled and motivated by him. We settled on him after trying some others for some time in that position. We at KIET were among the first institutions to come out of the dotcom crash slide taking place in the enrollments all over the city. Our graduates became really attractive for organizations looking for hands-on expertise and go getters. At the time I left KIET in 2013, the program was poised to overtake other programs of the institute in terms of the strength of the students, which it did in  a few months.

See also:



29 comments:

  1. Salam!

    "...we wanted them to eat, drink and sleep programming."

    What about the overall courses' load and equilibrium? I mean how did the students manage other courses along with the slogan of living with programming?

    ReplyDelete
    Replies
    1. Typically, a 3 credit hour course requires 3 hours in class + 6 hours at home. This becomes 9 clock hours of work for 3 credit hours. We additionally had 3 clock hour of lab sessions per week. This made it 12 hours. The PBL initiative was not limited to programming intensive courses. There were other courses where there was a substantial programming component such as compilers, human computer interaction, introduction to computer science, and so on. We also encouraged a drive for students to go out and participate in national programming competitions and hold such competitions in the institution. [forgot to metion this and would add it in the post]. Our experience indicates that the first semester of eat, drink and sleep programming is enough to get them swimming on their own. Once they are on their own, you need not worry so much. But, jump starting the change and inculcation of the culture requires at least couple of years of all round effort. You need a critical mass believer teachers for which we began hiring only those who had spent their times in the dungeons of programming.

      Delete
    2. This comment has been removed by the author.

      Delete
    3. "You need a critical mass believer teachers for which we began hiring only those who had spent their times in the dungeons of programming."

      So, it does necessitate the importance of hiring like-minded teachers. Obviously when you work according to a set vision and plan accordingly, you need to have people around you who work, with you, for achieving a single goal!

      However, it certainly requires the authority to bring in "significant" changes in the system as well as in policies. I feel a bit disappointed working with those at higher levels who either don't have a "vision" or do not want to improve by employing rigorous management changes. While I lack the authority.

      Yet your words are of immense help. JAZAKALLAH!

      Delete
    4. You are right no institutional change can happen unless you have a critical mass of "change agents" (technical term). As I mentioned elsewhere, these "change agents" can be found in your subordinates, peers and even superiors. These are the people who are willing to change because they can see that the change will bring for them professional prominence in this job or even in market elsewhere. These are the people to be first identified, stimulated, convinced, and encouraged. Then each of them would start posting "small-wins" (technical term) wherever they are. This brings support to your and their initiatives and slowly and gradually you build up the momentum for change. Soon one of these agents would be put in a position of responsibilty because of the new ideas and initiatives that they are promoting. All organizations sooner or later desperately require such people. That, then becomes a catalytic moment.

      Delete
  2. "When I look at the schools trying to teach Urdu as well as English simultaneously to 2-3 year olds whose mother tongue is neither, I know that this is foolish because the child has not mastered even his mother tongue and is being forced to understand other languages. More foolish are those schools who are trying to teach the students additionally Arabic also while the student has not mastered either of Urdu, English or their mother tongue. [A separate post on this is required]."

    I am desperately awaiting this post!

    I have come across people who prefer talking to their child in English but their mother tongue is different. Debate, debate and debate but no use. I feel myself quite in need of good, convincing, logical reasons to make them realize what they are doing is utter nonsense. Please write on this too!

    Also, I feel there exists some sort of mental slavery even in the matter of language too. I found no nation that had shown progress after leaving its values and language behind (Germany, France, Italy, Japan, England, China, Korea, etc. are to name a few), but still I feel helpless to convince those so-called progressive slaves. Therefore, in need of one such post. You know, you cannot give or refer to a lot of literature and just say, "Read Gatto!" or "Watch Mitra" when you are in a debate. There have to some punchlines to be delivered!

    ReplyDelete
    Replies
    1. Part of my arguments on a general level are already there in my post "Most effective way of cutting a nation from its history: Imposing a foreign language". Also see some of my other posts with label "language". The post I am now going to write is supported by my experience with teaching and learning of programming languages. Anyone deeply in computer science knows that if you know one language really well, you can learn another in no time. But, if you do not have this solid expertise in ONE language, you will be never be able to acquire expertise in others. Knowing several programming languages superficially is useless and non productive.

      Delete
  3. You were at a certain management level where you realized that something was seriously missing or being done wrong and then you took the measures. What about those who have already realized such issues in their organizations, have the remedy in hand, but are facing huge opposition from higher management?

    Can you please shed some light (or write another post) on the problems you fcaed to implement these decisions?

    These are two different questions; treat them differently!

    ReplyDelete
    Replies
    1. I wrote a detailed reply, but the net went down and with it, the reply evaporated.

      Delete
    2. [This is my third attempt]
      As Dean I have had often had the privilege of having my approach made and issued as policy, but for quite some time I have understood the limitations of such policies. Any change initative for the faculty members typically takes from two to four years to assimilate and incorporate in the culture depending upon its immensity. It requires (i) a lot of patience, and supreme faith in the goodness of people and their ability to change. I am often reminded of St. Randy Pausch's quote in the Last Lecture, where he says that people often eventually turn around, if you give them enough time. [Some people now often refer to him as St ;)]. (ii) mastery of the literature and major viewpoints on the subject. One should be prepared for all the various critiques and alternative. (iii) Post some small wins quickly and with regular frequency. (iv) Identify and stimulate "change agents" which is a technical term in change management literature. They can be found in higher management, your colleagues and even your subordinates. They are the ones who are early adopters of change would become your change promoters. (v) Obtain some space for yourself by convincing your boss that you are just experimenting, and then show the good results. Be prepared for any adverse sideeffects through proper planning and proactive approach.

      Delete
    3. Well Dr Sahab, I have figured out the "Head Fake!" ;)

      Delete
    4. Good. You need to see Last Lecture several times and even read the book in order to appreciate the immensity of what he is saying. Especially the depth of the lessons which he gives with such effortless humor and poignancy!

      Delete
  4. Sir,
    I am also KIET Graduate of 2006. Until my academics, i was also against 2 Final year "individual" projects but after passing out then i found the difference in myself of other institution grads.
    Thanks it really help us in starting our professional carrier. and that's v true my organization few years back prefer KIET graduates.

    Thanks

    ReplyDelete
    Replies
    1. Thanks for the acknowledgement. Actually, PBL is a matter of faith and belief. It used to be as difficult to convince the faculty members as it was for the students. In fact, the logistics problems are still quite difficult to handle. I am still on drawing board for the design of a perfect model for the evaluation and display of such projects.

      Delete
  5. Its wonderfully written sir and a true case study undoubtedly. I think for universities where there is intake of average students this is the best soultion. But for universities where the top graders of A levels or intermediate acquires admissions other models with emphasis on multiple programming languages will yield better results


    Ayub Latif

    ReplyDelete
    Replies
    1. As I mentioned, I have seen the problem even in GOOD universities like IBA and NED and UET Lahore and even at LUMS. Teachers who teach the conventional way seem to be complaining everywhere about the lack of motivation and prereq preparation. The problem is not about good or bad students. It is not about the prereq preparation of students. The problem is because of teaching methodology. Teachers practicing PBL or some variants of it wholeheartedly and not as a compulsion do not seem to have this issue. Remember, you need to ponder and carefully evaluate: What is the duty of the teacher, if not to inspire.

      Delete
  6. This comment has been removed by the author.

    ReplyDelete
  7. Sir, you summarized everything that I am advocating these days. I feel myself lucky for being part of team who implemented this methodology.

    I would like to add one more thing i.e. nature of course project for programming courses. We decided that each student/group has to develop a game as part of their course project of programming courses - at least for initial two or three programming courses. Yes, the students of first semester - learning their first programming course - not only successfully developed games as course project but few of them also able to extend such projects as professional projects. Why Games? 1) Motivation: Student feel they are really doing something great 2) Appreciation: they can get impress from their parents and cousins without explaining any technical details 3) Game is a kind of projects which cover almost all basic concepts of programming including repetition structures, conditional structures, functional decomposition etc.

    ReplyDelete
    Replies
    1. Thanks for reminding.
      Yes, I forgot to mention this. Game programming and other challenging and exciting nature of projects were instrumental in givning the students an immersion experience of programming. The main thing to note in such initiatives by the individual faculty was to move away from bookish chapterwise exercises to significant real-life or near real-life programming projects. A critical nature of these projects is their holistic orientation. The projects transcend the constraints of a single course and extend themselves holistically to the range of real life issues. This is crucial part of project based learning.

      Delete
  8. I will beg to differ. I think the focus should be in not teaching any programming language, but developing computational thinking. I remember that we were first introduced to PASCAL in CS101 and then C++ in OOP next semester. C language we covered ourselves in winter break.
    How did we manage it? I give credit to Dr. Hilal Qureshi who disallowed us from entering computer labs for a whole 1 term in CS. Yet we were still programming. we were writing loops, validating Gregorian dates, solving Fibonacci numbers and towers of Hanoi. All this on paper. Yes using Flowcharts and pseudo-codes. I didn't learn recursion on a computer running a program and using a debugger to see the flow. We learned it on the whiteboard and on paper using pseudo-code.
    Before we went to Computer Labs for the first time we had practiced at-least 50 flowcharts (Thanks to Dr. Hilal Qureshi's TA Miss Amber for evaluating all those flowcharts in time).
    I still have a copy of a quiz from my CS101 where we were asked to write a program in PASCAL to validate a Gregorian Date. When I first saw it again after a very long time I was astonished. I had written the whole program and I can see that it will run verbatim, when I turned it over I smiled. On the blank side of the single sheet I had used all the space to draw a flowchart.
    As a result I did my OS project in JAVA and my FYP in C#. And no body taught us JAVA or C#. When I started my first JOB at folio3 and was asked in interview which platform I will like to work on. I smiled and said, "Give me two weeks and I will be able to program in any platform you want me to." I later regretted saying this because I was made to work on ADOBE FLEX, :-).
    The point I want to make is that focus should be on fundamental concepts, and acquiring computational mode of thinking. Mastering a programming language can be done in JOB. When a software house hires a fresh graduate they are prepared to invest him and transform his skills to a master according to their own need, provided he has the foundations. In all my interviews as a fresh graduate I was never once asked to program on a computer. Instead, was asked to write pseudo-codes, asked riddles about pointers and linked list and how to slice a cake in 8 equal parts using 3 cuts only.

    http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

    ReplyDelete
    Replies
    1. I think you missed reading the following paragraph in the above post. I was never promoting any particular language, just one, anyone:
      "The first thing we did was to decide that we would select one programming language and would make them expert of it. Instead of teaching them three or four different programming languages and making them the jack of all and master of none, we must select one language and ensure that they learn it well and gain expertize in it. We would make our computer science department a center of excellence in that particular programming environment. "

      Delete
    2. I think we are disagreeing on your basic contention: "The point I want to make is that focus should be on fundamental concepts, and acquiring computational mode of thinking. Mastering a programming language can be done in JOB. "

      I think programming is a skill like swimming or driving. It can NOT be learned in a classroom, just as swimming or driving can NOT be learned in a classroom. You have to get into the water to learn to swim. You have to sit on the driver seat of the car to learn driving. Similarly, you have to sit on a computer and do programming in order to learn programming. Programming is not a bunch of concepts that can be taught and memorized in a classroom or home. You have to sit and work on the computer in order to learn programming.

      Delete
    3. By the way, flowchart is also a programming language. On paper you do a dry run. However, if you use "scratch" programming environment of MIT allows even kids of 5 years of age to program by drawing flow charts and executing them. They can learn it in at most a few hours themselves. Search google. Programming is no longer a computer science course it is fun experience that kids are acquiring using Lego Mindstorm programming and the much better scratch.mit.edu project.

      Delete
    4. 1. "I think programming is a skill like swimming or driving. It can NOT be learned in a classroom, just as swimming or driving can NOT be learned in a classroom." If one is taking this skill as a career he needs to learn it on a stick shift (flowcharts and pseudo-code) and not on automatic gear. Also it is a skill as well as a computational mode of thinking.

      2, "The first thing we did was to decide that we would select one programming language and would make them expert of it", it was fortunate for the students that C# remained in demand after four years. Now a days with iOS development in demand the industry requirement is objective C programmers. I recently had a complain from a FOLIO3 employee that new graduates are not able to handle memory in objective C (no garbage collector). Will the faculty be wiling to change the one programming language according to industry needs?

      3. Totally agree.

      Delete
    5. I think you may be aware of why computer scientists (such as the great Dijkstra) abhor diagrams like flowcharts and data-flow diagrams. Flow-charts went out of fashion with "structured programming" given birth by the famous 1968 paper by Dijkstra “GOTO statement considered harmful”. See http://en.wikipedia.org/wiki/Considered_harmful. Also see my post on Dijkstra and Excellence http://syedirfanhyder.blogspot.com/2013/03/beauty-is-our-business-mathematics-and.html

      Delete
    6. I think you did not read my full post. My argument is that if you know one programming language really well, you can learn any other. It does not matter whether that initial programming language is a data-flow language, or functional language lisp, or c-language. My first language was Assembly Language and that too learned on a microcontroller that only allowed hexadecimal inputs. I never had the luxury of inputing even the mnemonics of the assembly language while entering or editing.

      Delete
    7. I agree regarding Goto statement. I beginning to think you might be right. I think since I learned programming using flowcharts (scratch started in 2003 and I started my cs in 2004), I can not imagine that any other way would be as effective. I have certainly read your Dijkstra article and Dijkstra's paper on art of programming language, and case against GOTO statement. Maybe I am ignoring the fact that I was exposed to LOGO in grade 3 and did visual basic programming in my O'level and A'level.
      I think the question than is should we have C or PASCAL as first language or JAVA, C# or Python. Will this has a difference on programming concepts as argued in "http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html"

      I think I will take this discussion to email, since tomorrow I was going to my ITP class to teach flowcharts :-).

      Delete