Teaching Compiler Design

"Mikel L. Forcada" <MLF@VM.CPD.UA.ES>
Tue, 14 Feb 1995 04:10:25 GMT

          From comp.compilers

Related articles
Teaching Compiler Design MLF@VM.CPD.UA.ES (Mikel L. Forcada) (1995-02-14)
Re: Teaching Compiler Design bill@amber.ssd.csd.harris.com (1995-02-17)
| List of all articles for this month |

Newsgroups: comp.compilers
From: "Mikel L. Forcada" <MLF@VM.CPD.UA.ES>
Keywords: courses, question
Organization: Universidad de Alicante
Date: Tue, 14 Feb 1995 04:10:25 GMT

Dear colleagues,

I am currently part of a team that teaches Compiler Design in the
University of Alacant in Spain. This year (1994-1995) we have adopted a
completely new methodology, largely inspired on the "Teaching/Learning
as Research" [1] paradigm, which in turn is based in "Human
Constructivism" [2,3]. Most of this methodology has been applied to the
teaching of "basic" science (physics, chemistry), and we are trying to
"translate" it to the more "technological" field of compiler design (we
haven't been able to locate specific bibliography on this --- relevant
references will be very welcome!).

In the new methodology, the classroom and the computer laboratory become
a research laboratory, where "novel researchers" ---the students---
perform their research (that is, develop the techniques needed for
compiler construction) under the supervision of a "research advisor"
---the teacher. The emphasis is on problem solving. Instead of following
a textbook, and the classical "first theory, then some example problems"
lecture system, an integrated program of classroom activities is carried
out. A typical cycle would be:

(a) Initially, the problems to be solved are posed and clarified, and
        classroom research is carried out in an attempt to find a general
        solution. Work is carried out in small groups (4-6 people) and
        progress is periodically reported to the whole class for discussion.

(b) Theory, formalizations, and algorithms from the literature are
        presented only after the students have devoted enough time to solve
        the problem in small groups and have reached a point where the
        problem has been formulated (broken into smaller problems) in such a
        way that the theory is applicable. This way, we maximize the chances
        that new knowledge and skills are meaningfully acquired, since they
        relate very closely to the problems the student has been trying to
        solve (the affective factor is crucial in this learning step).

(c) Finally, the solutions are applied to new situations, to check their
        ranges of applicability and reinforce learning and acquisition.

Classroom work is closely connected to laboratory work, which eventually
aims at constructing compilers for specified source-machine
configurations. The progress of students is continuously evaluated,
based on laboratory work and short written tests to ensure that each
student knows what he or she has been doing in the laboratory.

The results of the application of these methods to the subject of
Compiler Design have not been completely evaluated, since this is the
first year we try. Some observations and problems follow:

(a) Students are too used to unidirectional (teacher-to-student)
        classroom situations and appear reluctant to participate in a more
        active environment. Also, they tend to take verbatim notes when the
        teacher speaks, but seldom do so when it is a student who proposes a

(b) Most classrooms aren't designed for this kind of class. There is
        only one blackboard, and students sit in long classroom benches that
        make group work unconfortable.

(c) Groups are too big: 60 students per class is quite typical. That
        doesn't help either.

(d) Students recognize that they understand theory much better when
        theory comes as a formal answer to a problem they have been working
        hard to solve, rather than when it comes as a revealed truth that is
        subsequently applied to solve some example problems.

(e) The "coverage" of the course lectures becomes smaller. Since a lot
        of time is spent in understanding each problem, lots of material
        (for example, LALR(1) parsing this year) are left out. In exchange,
        what is covered is better learned, we hope!

We would be very happy to discuss our way of teaching with other people,
so that we can learn from each other's experience. Has anyone of you
tried anything similar to what I have just described? Our materials are
in Spanish, but I could consider translating some of them if some of you
are interested.

Thank you for your interest!

Mikel L. Forcada (mlf@vm.cpd.ua.es, mlf@dtic.ua.es)
Departament de Tecnologia Informatica i Computacio
Universitat d'Alacant
E-03071 Alacant, Spain.


[1] D. Gil, J. Martinez-Torregrosa: "A model for problem-solving in
accordance with scientific methodology", Eur. J. Sci. Educ.

[2] R. Driver, V. Oldham: "A constructivist approach to currriculum
development in science" Studies Sci. Educ. 13(1986)105-122

[3] J.D. Novak: "Human constructivism: towards a unity of psychological
and epistemological meaning-making", in Proc. 2nd. Intl. Seminar on
Misconceptions and Educational Strategies in Science and Mathematics
(Ithaca, NY: July 26-29, 1987).

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.