Summary
1. Background: Current status
2.
Rigid structure of course
curriculum
2.1 Solution: "Invert the hour glass"
3.
Lack of technology-oriented
courses
3.1 Solution: "Stone age to steam engine"
4.
Discouragement to projects
4.1 Solution: "Situated learning through projects"
5. Broad courses later - An unexpected bonanza
6. Connecting the UG programme with research and software dev.
7.
Connecting UG programmes with
long term research
7.1 The underperforming focussed students
8. Principles used in curriculum design
9.
Conclusion
Acknowledgement
Appndx.: A skeletal curriculum
This paper strongly argues for an undergraduate computer science (CS) curriculum which allows the motivated student to pursue special areas and interests within the UG curriculum. Four special features can make it possible: (a) flexibility in scheduling of courses by the student, (b) emphasis on project work including pursuing of a minor, (c) CS courses before general breadth courses (outside CS), and (d) specially designed technology courses.
Such a curriculum can be prepared without diluting breadth courses outside CS (or within general CS), mainly by allowing flexible scheduling of courses by the student. Some specially designed technology courses in the first few semesters not only empower the student early on in the programme, but also allow him to pursue an area of his interest, without losing on early access to technology.
Such a curriculum for CSE is operational at International Institute of Information Technology Hyderabad, and has led to an unprecedented release of creative energy among students, leading to activity pertaining to research as well as software development and experimentation.
When a student of Computer Science (CS) enters the undergraduate (UG) programme in a prestigious institution in India, he comes with a zeal to learn and a passion to do something new. He may want to build an innovative web application, or a distributed processing network of computers, or a machine that can speak and understand human language.
Sadly, whenever such a student in the early years, approaches his teachers to build something, he is forced to cool his heels till he is ready with the background (perhaps not until his late 3rd year) by which time the passions have cooled and a golden opportunity is lost forever. The losers are the student, the faculty, the institution and the nation. There are no gainers except perhaps outdated notions about the curriculum and education.
Why does this state of affairs prevail? Most, perhaps all, BTech/BE Computer Science programmes in the country suffer from three major problems:
1. Rigid structure of course-curriculum
2. Lack of technology oriented courses.
3. Discouragement to projects
Let us try to understand each one of the above problems, and look at the suggested solutions.
"Myth 1: Student must first complete a broad spectrum of courses before exploring an area in some detail. That is the ideal way to learn."
The current curricula at most places has a rigid structure in which courses have to be done in a fixed sequence. Usually, there are a large number of breadth courses which have to be completed by the student first. Limited electives are available much later in the programme, often so much later that there is no room for the student to pursue any special interests.
Reason given is that it is good for the students to build some background in every sub-area of CS before he undertakes advanced courses. This belief overlooks the power of a highly motivated student working on a project, who can usually acquire some of the missing background easily on his own or under guidance. Better still the student should be able to do formal courses needed by him to pursue his special interest.
Another reason why this occurs is because conventional thinking makes it a requirement that a broad education not only in CS but in all areas be given first. Usually the CS student is first given an array of broad courses in engineering taking up a good part of 1st year or more, which is followed by a broad set of CS courses right into the 3rd year. The result is usually disastrons - a rigid curriculum which kills the natural enthusiam of the student to explore areas or to build things. Even if there are some electives, the necessary background to do projects is simply not there till the end of 3rd year. We do not question that a broad education should be given, in fact we support it, but we will be arguing for a change in the sequencing.
(a) "Invert the hour glass":
Broad courses in other engineering disciplines (often called engineering core courses) must not be required to be done BEFORE doing the courses in CS, in a rigid curriculum. The CS courses must come first, as argued above. (There are some other unexpected advantages too of this approach, discussed in Section 5.)
(b) Flexibility in compulsary CS courses:
There should also not be a similar rigidity in doing first the CS courses in each sub-area of CS. This is not to argue that some courses should not be compulsary. A course in each major sub-area can be made compulsary, but the flexibility can be given to the student in sequencing them. These can be termed as the "flexi-core" courses - namely courses which are compulsary or core CS courses, but they can be scheduled flexibly by the student.
For example, DBMS and Networking courses could be flexi-core. In other words, they could be compulsary and normally offered in say 2nd year, but a student interested in other areas such as building an intelligent machine or a web application may decide to take only one of them in the 2nd year and postpone the other(s) to his 3rd year or even later. The space so available can be utilized by the student to do courses needed for his exploration.
"Myth 2: Students will learn technologies on their own. Most of our students pickup the technologies without any problem".
It is extremely important to have courses which teach technology related material. While students can learn technology (as well as concept oriented courses for that matter) on their own, the learning is with many gaps and not all students learn them. Most importantly, by making it a part of the curriculum at an early stage, they would learn and start using the technology early on.
A very important skill students must learn is how to take a software "package" about which there is only "less than normal" documentation and install it; and how using a simple online user manual, play with the software to discover its functionality and then use it towards solving one's own problem. This can be called "thinking with one's hands." It also trains people in how to deal with new packages or partial information, something they will regularly be required to do in their job.
Here there is a story worth telling. At International Institute of Information Technology Hyderabad, the students start in the very first semester with a course called IT Workshop-1 covering aspects such as: installing an operating system like linux, managing network connection and user login for their own computer (for Linux & Windows), searching the internet effectively, use of a symbolic math package, and some popular office utilities.
The next IT Workshop course when first taught, introduced the student to a number of software technologies. Soon the course grew into two courses spanning second and third semesters. These courses begin with introducing the power of regular expression and the unix utilities, followed by a scripting language like Perl. The student is now ready to explore a number of different software technologies as a programmer-user. He learns to do socket programming (without having done a formal course in networking), server side web-programming (without a course on internet servers), database programming (with a short introduction of SQL and database design, but without having done a full course in DBMS), GUI tools like Perl/TK or GTK (without having done a course on user interface design), and handling Indian language script display and keyboarding. The students have to do a group project combining several of these technologies.
It is sheer joy to watch a sense of empowerment felt by the students. They suddenly discover the immense power at their hands. It is like the discovery of "power tools" by the stone-age man (who until than knew only about the stone knife - namely raw programming). This changes the student completely. Subsequent to these three courses, many students undertake voluntary project overload in the ensuing semester. At the end of the 2nd year, they do the summer training exceptionally well prepared, certainly more than any other institution in India, perhaps more than any other in the world.
It turns out that these technology courses are a key ingredient in allowing students to exercise real choice among flexi-core courses. It is one thing to declare some coures as flexi-core, but it is another thing to convince the students that they can postpone them to pursue a special interest. The problem is that most students need to use the technology component taught in some flexi-core courses such as networks and DBMS (as a programmer user), even though they might not be pursuing these areas as their special interest. With the technology component taught to them separately, it is possible for them to postpone, if necessary, the more comprehensive conceptual material. This is what allows them to pursue their special interests in a flexible curriculum. (It should be mentioned that for the idea of flexi-core to work, long chains in pre-requisite courses have to be broken. Technology courses are a good way to break some of the chains.)
"Myth 3: The student is always free to pursue projects if he really wants to, at our institution. We do not stop him."
Most institutions through their rigid curricula discourage the student from undertaking projects. With a heavy load of fixed broad set of courses, there is little time left to pursue any substantial project. The students also lack the required courses in their area of interest. They are also ill-prepared with technology. The spare time with them is usually spent in exploration and learning of some technology basics.
Projects must become an integral part of curriculum. The interested students should be able to undertake "independent projects" which get academic credit, virtually at any time, and not just in the final year. Easiest thing is to allow the interested student to take independent project under his elective slots from 2nd year onwards. A suitable limit can be placed on total number of credits that can be earned through such projects, but the option allowing them to pursue projects at any time even postponing class courses is very important. Class-courses can also be so designed that the students do a "smaller project" within a course.
However, for the students to be able to do major projects it requires careful restructuring of the curriculum and special technology oriented courses, as discussed earlier.
It is important to mention here that it would be ill conceived to make "independent projects" compulsary. Such activity must remain optional. Making it compulsary will force those students who are not interested, to do a half-hearted job. It also places a burden on the teacher, and diverts their energies in pursuing the unwilling students rather than helping those who are interested and need creative guidance. (Final year projects are anyway compulsary today in all colleges.)
As we have seen so far, the broad courses (outside the area of computer science) are normally shifted to 3rd and 4th year. The student concentrates on CS courses and Mathematics and Physics, etc. in the first two years. This has some unexpected fruits.
When a course from another area is taught to a well-prepared CS student, he finds a fertile new area where his knowledge and skills can be applied. It opens up many opportunities which the student might feel excited about, and might pursue for project work. For example, when mechanical structures are taught, the student might look towards building a finite-element modeling package in some special situation, a biology course might lead to bioinformatic projects, and even a course on history might lead to a multimedia site or a 3-D model of a monument.
Some of these projects have actually taken-off out of such courses at International Institute of Information Technology Hyderabad.
It should be mentioned that if a student decides that he wishes to pursue an applied area, such as, say, Bio-informatics. He can, of course, schedule the relevant breadth-courses in Biology and Genetics to his earlier years.
By bringing about the above changes, a tremendous amount of student energy is available for doing productive work. However, the projects they undertake may just be "toy" projects with little practical value, or they might be woven in a tapestry to yield beautiful and useful products. This is where the role of the teacher comes in - he can define the framework or a larger problem, of which smaller projects are a part.
The UG students can undertake software development to meet the needs of the institution or community, or they may develop a part of a large open software or a market need. Similarly, special software needed for a research project can be built, or the research itself can be carried out as part of a project.
The above requires some amount of faculty expertise and in some cases link-up with industry. But the point is that such things become possible.
In the Indian scene, there is a dearth of good and well trained students in the PG programmes. The duration of such programmes are anyway short. (Ph.D. students are few and far between.) As a result, link up of the UG programme with research is of immense value. Equally importantly, some students who taste the excitement of research may join the PhD programmes within India.
One limitation of all the above suggested changes is that although they motivate the student to do projects, there is no element which asks them to pursue something over a period of time.
When the above were implemented at International Institute of Information Technology Hyderabad, the students exercised the flexibility in doing many different kinds of courses and many kinds of projects in different areas. The students benefitted but they did not utilize the freedom to do a substantial piece of work.
At this time, something special was needed. A "B.Tech. Honours" programme (a kind of a minor) was started under which the top students (with high academic performance) could chose an area of specialisation if they wanted, and they would be required to undertake Honours project. They would also be required to do a sequence of courses in their specialisation early on (2nd year 2nd semester onwards) by simply chosing courses in their area under the elective slots. Thus, they would pick a "minor" and pursue it under the normal flexibility available under the curriculum. Students in the Honours programme also do their summer training (in 2nd year summer) in their chosen area. The benefit of all this is that they are able to make a substantial contribution in an area over two years: making research contributions or building a large system.
It is important to mention that, in practice, it has not reduced the exposure to the broad area of CS, it has only required them to take courses in a chosen area "early on" so that they can participate in research.
The Honours programme is completely voluntary and if a student feels he has chosen a wrong area, he is completely free to leave the Honours programme and revert to the normal BTech programme at any time. (Although, there have been no such instances of reverting from the Honours programme.)
It has always been observed by educators that there are some students who become so deeply interested in a narrow area, that they spend all their time in learning about it, building software at the expense of other subjects/courses. Such students never get high overall grades and, unfortunately, would not be able to join the Honours programme.
Hence, there is a special scheme for focussed students who do not possess the requisite high CGPA to enter the Honours Programme directly. Such a student must convince a faculty member about his sincerity and dedication to "try" to enter the honours programme. Such a student starts taking courses in his area of interest (under electives) and starts pursuing a project. Thus he starts by trying to satisfy all the requirements for the honours programme. No special permission is needed to do summer training or to take courses in an area against elective slots. Special permission is needed only to take project overload (in 3rd year) which is why he must persuade a faculty member. At the end of the third year, the student can present himself and his project work in front of a special committee, to join the Honours Programme (without fulfilling the condition of high CGPA). Clearly such students with exceptionally narrow interests would have substantial things to show (e.g., research papers, major software implementation, etc.) thus enabling them to enter the Honours Programme, as decided by the Honours Committee.
There are some important notions that have been used while designing the curriculum:
(a) A good level of learning takes place when the concepts being taught are applied in problem solving situations. (IITs achieve this.)
(b) Learning which is deep, occurs best when the student has tried to apply it in an unstructured design situation.
(c) An exceptionally motivated student with a passion to build something can overcome many lacuna in his formal background through self-learning. (When a student approaches faculty for project work with passion, he should be encouraged even when some part of the background is missing. He can fill-in by self study, provided, of course, the missing background is small.)
(d) The compulsary part of the curriculum should be lean. Elbow room should be left for interested students to pursue other interests.
(e) Finally, "to learn how to learn" is more important than any specific knowledge the student learns in the programme.
We have argued for the importance of project work in UG Computer Science curriculum and outlined three major elements to make it possible:
(a) Flexibility in course scheduling (flexi-core)
(b) Introduction of technology oriented courses (IT workshop courses)
(c) Broad courses later, CS courses first (invert hour-glass)
Finally, we have discussed the Honours programme (a kind of minor) to provide focus to the interested student so that he can do substantial software development or research.
It should be noted that while the curriculum has the flexibility for the exceptionally motivated student, a student who has not identified any special area of his interest, can follow a "default" programme (skeletal programme given in the appendix).
Although the ideas have been discussed here with respect to Computer Science many of the ideas are also applicable to other disciplines of engineering. It is not hard to imagine a mechanical engineering student wanting to work on, for instance, computer aided design, or a student of aeronautical wanting to build a glider.
In this paper, we have discussed only the technical content of the curriculum. The curriculum also serves other purposes. It must impart a broad education covering other areas such as: humanities, social sciences, management, entrepreneurship training, communication skills, etc. Consequently, a minimum of 6 courses are required to be taken in these areas at International Institute of Information Technology Hyderabad.
Finally, the education must include inculcation of right values as a citizen, as a professional, and as a human being. Some experiments in this regard are underway and results will be reported in due time.
The original motivation for designing a different kind of CS curriculum came from the desire to allow the interested student to pursue research and system development seriously. Many of the ideas presented here, evolved through experimentation at International Institute of Information Technology Hyderabad (formerly called Indian Institute of Information Technology).
A number of people have contributed to the development of ideas presented here: Profs. Raj Reddy and Narendra Ahuja for stressing the applications of CS to other areas; Mr Ajay Sawhney for stressing the connection with industry and in building a different kind of institute; the exceptional faculty at the Institute for trying out new ideas and in having faith in experimentation. Finally, thanks are due to the students of B.Tech. here, who by their unprecedented enthusiasm in doing projects helped in the development of ideas, and in perfecting the model. Most importantly, they have shown that the pursuing of special interests is not confined to 1% of the class as is usually believed, but to about 20% (and the proportion seems to be growing).
----------------------------------------------------------------
A skeletal CS curriculum incorporating the above ideas is shown below. Under elective slots, the student is free to do CS or Open electives. He is also free to undertake independent projects.
Abbreviations:
L-T-P-C stands for: L = Lectures, T = Tutorial hours
P = Practicals, C = Total credits
HSSM = Humanities, Social Science and Management
'*' before a course means: It is a flexi-core course, which can be
scheduled by the student in his programme, any time it is offered,
provided of course he has the necessary pre-requisite.
'H' before lecture hours means: It is a half semester course
First year, first semester (1 I):
L-T-P-C
1 I Maths I 3-1-0-4
1 I Physics I 3-1-0-4
1 I Electrical Sc & Digital Design 3-1-0-4
1 I Computer Programming 3-1-3-5
1 I IT Wkshp-1: Comp. Sys. & Env. 1-0-2-2
1 I English / HSSM 3-1-0-4
TOTAL CREDITS 23
First year, second semester (1 II):
1 II Maths II 4-1-0-5
1 II Physics II H3-1-0-2
1 II Electronic Circuits 3-1-0-4
1 II Data Structures & Algo. 3-1-3-5
1 II Computer Organization 3-1-0-4
1 II IT Wkshp-2: Scripting 2-0-3-4
TOTAL CREDITS 24
Second year, first semester (2 I):
2 I Mathematics III (Discrete Math) 4-1-0-5
2 I Signals & Systems 3-1-0-4
2 I Operating Systems 3-0-3-5
2 I IT Wkshp-3: Software Technlgies 2-0-3-4
2 I HSSM 3-1-0-4
TOTAL CREDITS 22
Second year, second semester (2 II):
2 II Th of Comp & Prog. Lang. Proc. 3-1-0-4
2 II * Database Mgmt Sys 3-0-3-5
2 II * Computer Networks 3-0-3-5
2 II Elective 3-0-2-4
2 II * Experimental Methods H0-0-4-2
2 II Mini Project/elective 0-0-4-2
TOTAL CREDITS 22
Third year, first semester (3 I):
3 I * Algorithms 3-0-3-5
3 I * AI H3-1-0-2
3 I * POPL H3-1-0-2
3 I Elective 3-1-0-4
3 I Elective 3-1-0-4
3 I HSSM 3-1-0-4
TOTAL CREDITS 21
Third year, second semester (3 II):
3 II * Software Engg. 3-0-3-5
3 II Elective 3-0-3-5
3 II Elective 3-1-0-4
3 II Elective 3-1-0-4
3 II HSSM 3-1-0-4
TOTAL CREDITS 22
Fourth year, first semester (4 I):
4 I Elective 3-1-0-4
4 I Elective 3-1-0-4
4 I Elective 3-1-0-4
4 I Major Project I 0-2-6-4
4 I HSSM 3-1-0-4
TOTAL CREDITS 20
Fourth year, second semester (4 II):
4 II Elective 3-1-0-4
4 II Elective 3-1-0-4
4 II Major Project II 0-0-12-6
4 II HSSM 3-1-0-4
TOTAL CREDITS 18
--------
GRAND TOTAL Credits 172
--------
Under the elective slots, the student is required to do a minimum number of open electives (or non-CS or breadth courses in science and engineering).
A student who is not focussed towards any area, is free to follow the suggested schedule of courses above (taking the flexi-core courses (shown using '*') at the suggested times).