Saturday, November 3, 2007

Prolog lab - a practical course. Really?

The inclusion of practical courses in any field of education is quite evident - a student should be capable of applying what he has learnt in the theory courses. Well, the lab courses are doing exactly the same thing - shaping the students so that they are able to find out how to apply the theory in practice.

While the student has to be clear with the theory before he can apply it anywhere, the student may be able to apply that theory anywhere, once he is clear with it. Indeed, it is unfair to expect anyone to always successfully deploy a theory in a given scenario (problem). Otherwise, any new proof that humanity unravels should have been found earlier, when all the theories, that were used by this proof, were known. Or atleast any scientist who previously knew all those theories required for the proof and dint come up with the proof must be termed dumb (incapable). Therefore, we dont have an alien system given to the students to test their practical skills.

So as I said, in the practical course, the student is given the system where he is required to apply the theory he knows. We have lab sessions that teach the student how the application of that theory is done in this system, the student slowly understands the underlying principles of this application and then he is ready for an exam. There is no point, in the exam, to ask the student to solve a problem that he has already done during the practice sessions. Nevertheless, the difficulty of the problem has to be maintained. While it is better for the student to fully know about the system where he is going to apply his concepts, the exam has to only check if the student knows the concepts and how to apply them in this system and not if the student knows the system thoroughly. This is to mean that the student has to get a chance to analyze the system during the exam, after he is given the problem. Since the problem is new to the student (which is almost made sure by the examiners), the student may not know all information, about the system, that he needs, to get a solution to the new problem. He might want to test the behavior of the system in specific cases. He should not be deprived of this necessity, as he is tested for his concepts and not for his knowledge about the system, which is just a scenario where he applies his concepts. Infact, if the student knows very little about the system and yet can experiment with the system, find out stuff about the system and arrive at a solution, it only speaks about his strong concepts and his general knowledge. Remember, we dint give an alien system to the student only to help the student.

This is also one of the reasons why in NITC, B.Tech. Computer Science and Engineering program doesnt include any specific programming language course (like C, C++, JAVA) in the syllabus. We are taught only concepts (purely). We see languages as systems where we are supposed to apply our theoretical concepts.

Coming to the real problem, for PROLOG lab, during the exam, we are asked to write the Prolog code for the question, on paper, before we switch on the machine. Once we complete that, we can type the same code we have written on paper in the machine. Now, if the machine gives the correct output, then our code is correct but if the machine doesnt give the correct code, we cannot alter the code we have written on paper without reduction of marks. After you change the code, even if you get the correct output, you get only 50% of the marks. This needs the student to know everything or atleast enough about the language Prolog to get full marks. If he doesnt know how Prolog behaves for a seemingly trivial situation, something he dint need during the practice sessions, something that can be found out in no time given Prolog interpreter, which is the system, where we apply our "Logical Programming Paradigm" concepts, then irrespective of his concepts, he is doomed to fail.

If this is the case, then practical courses boil down to theory courses. Only that in theory courses, the answer on paper is checked by the teacher and here, the answer on paper is checked by the machine. In other words, this Prolog lab could have been kept as a theory course, with the traditional theoretical evaluation system. If doing that rings a bell somewhere, then, may be we are after all not so sure about what we are doing for Prolog lab. We need to change this valuation pattern and let the student play around with the system, before he needs to write the solution on paper. Ofcourse, he will have to be given full marks if he comes up with a solution that delivers correct output (i.e., if he solves the problem).

Unless we do something about it, we are far from our aim of having practical courses.

No comments: