arXiv:1611.00271v1 [cs.PL] 1 Nov 2016

Application of Case-Based Teaching and Learning
in Compiler Design Course
Divya Kundra

Ashish Sureka

Deen Dayal Upadhyaya, India
divya1395@iiitd.ac.in

ABB Corporate Research, India
ashish.sureka@in.abb.com

Abstract—Compiler design is a course that discusses ideas used
in construction of programming language compilers. Students
learn how a program written in high level programming language
and designed for humans understanding is systematically converted into low level assembly language understood by machines.
We propose and implement a Case-based and Project-based
Learning environment for teaching important Compiler design
concepts (CPLC) to B.Tech third year students of a Delhi
University (India) college. A case is a text that describes a reallife situation providing information but not solution. Previous
research shows that case-based teaching helps students to apply
the principles discussed in the class for solving complex practical
problems. We divide one main project into sub-projects to give
to students in order to enhance their practical experience of
designing a compiler. To measure the effectiveness of case-based
discussions, students complete a survey on their perceptions of
benefits of case-based learning. The survey is analyzed using
frequency distribution and chi square test of association. The
results of the survey show that case-based teaching of compiler
concepts does enhance students skills of learning, critical thinking, engagement, communication skills and team work.
Index Terms—Case-Based Learning, Cognitive Apprenticeship Model, Constructivism, Didactic Teaching, Problem-Based
Learning, Project-Based Learning, Teaching Compiler Design.

I. R ESEARCH M OTIVATION AND A IM
A majority of engineering classes involve traditional lecturebased approach in which learning is considered as oriented
from teachers to students. The traditional teaching is concerned
with teacher being the active controller, having the entire
power and responsibility of the environment [1]. The only
activity on behalf of students is answering the questions posed
by the teacher. The lesson’s content and delivery are considered to be most important and students master knowledge
through drill and practice such as rote learning [2]. This
lecture-based approach is not motivating and does not prepare
engineering students well for professional world. Seymour
and Hewitt [3] reported that use of traditional methods of
teaching has led to low level of attendance and retention
in engineering disciplines. The use of case-based pedagogy
can offer solutions to prepare students for the professional
world, make education motivating and reduce attrition rates.
Case-based learning is different from traditional learning in
the manner that it places students as the center of education
process. Students are given importance in what and how they
are learning. Cases can be problem-based, historical in nature,
present a model, dilemma-based or demonstrate critical issues

in the field [4]. Students apply the theoretical knowledge in
solving practical world problems in a supportive environment
[5]. Real world problems are usually complex, ill-structured,
have conflicting choices and can be presented in number of
ways to students [6].
Application of case-based learning is useful in learning
about compiler design concepts for the following reasons :
1) Making learning easier and interesting [7]: Compiler
design course has conceptually difficult topics. It is not
easy to teach particularly in small college environment.
There are insufficient small grammar examples supported by main textbooks while in reality the grammars
for commonly used languages are too complex. Thus use
of contemporary approaches like case-based can enhance
the understanding of the course while keeping the class
engaging.
2) Understanding implementation of real world software [8]: We develop cases from real world software
which use the core concepts of compiler design. We
believe students can understand and practice how things
actually work in real world.
3) Skill building [9]: Through repeated exposure to ambiguous and complex problems in cases, students build
confidence and critical thinking. It exposes them to
ambiguities and enhances abilities to take timely and
effective decisions to unclear and complex problems.
4) Addition to case repository [10]: To our best of the
knowledge, not much work has been done in teaching
compiler design using case-based teaching methodology.
Thus cases developed can be shared and used by other
faculty while teaching compiler design course.
Compiler design course involves element of programming. Writing a compiler by self can give students
experience of large scale application development. Thus
programming projects needs to be included in the course
contents. Hence, we give mini projects at the completion
of two major phases of the compiler- lexical and syntax
analysis. The research aims of the work presented in the
paper are as following:
a) Develop cases for teaching essential concepts of
compiler design.
b) Propose a complete teaching framework that

teaches important concepts of compiler design
using case-based and project-based learning approaches.
c) Investigate the effectiveness of case discussions.
II. R ELATED W ORK AND R ESEARCH
C ONTRIBUTIONS
Literature shows the use of case-based learning for
teaching computer science courses. In [11] the authors
adapt the case-based learning method during the teaching of Delphi language for teaching object oriented
concepts. In [12] authors presents a case study to show
value of case-based learning in improving the teaching
of information security. Authors in [13] have used case
studies to teach software engineering. There have been
use of different techniques to teach compiler design
course. In [14] authors present an approach in which
the traditional term project is replaced by several small
independent assignments. Each assignment itself is a
small compiler of a small programming language which
is to be built using different parsing techniques. [15] uses
visualization tools to teach compilers. Author uses a pair
of packages that employ Java’s graphical capabilities so
that a program can be visualized at various stages of
compilation process. [7] proposes effective approaches
in teaching principles of compiler that includes concept
mapping, problem-based learning (PBL), case study and
e-learning.
Some tools have also been built to facilitate learning of compilers. In [16] authors have build a tool LISA
that supports learning and conceptual understanding of
compiler design in an efficient, direct and long lasting
manner. [17] introduces a set of tools designed and
improved for compiler design educative projects in C++.
In [18] Chirp- a language specification and compiler
implementation is proposed. As a language Chirp is
matched with stack-based virtual machine that is build
on simple handy cricket educational robot controller. As
a compiler Chirp is designed into series of components
with each component demonstrating compiler construction technique. Compiler construction has also been
taught through domain specific language. [19] suggests
that building a compiler for domain specific language
(language specially designed for some specific problem)
can engage students more than traditional compiler
projects. In [20] authors argue that compiler teaching
through an unusual programming language textttklx with
target processor as the postscript interpreter is a good
choice for teaching compilers. Work in [21] describes
an approach using tools developed by the author to
generate a parser that encourages learning of objectoriented techniques. [22] presents an idea of integrating
real compiler code into teaching theory of compilers.
Authors use debugger on compiler in directed ways
resulting in students being shown the relevant parts of

compilers internals.
In context to previous existing work, our paper
makes following novel research contributions :
a) We developed cases for teaching core compiler
concepts.
b) We propose and implement a complete teaching
framework CPLC which contains learning objectives, case-based and project-based pedagogy and
measures students understanding.
c) We evaluate the performance and impact of the
proposed case-based pedagogy and demonstrate its
effectiveness.
Dataset Contributions: We make our dataset publicly
available on GitHub1 . GitHub is becoming popular
as a platform for researchers and scientists to share,
update and maintain their dataset as well as code2 . We
believe that sharing our dataset will further facilitate
research on case-based teaching in computer science
and in particular on compilers design course and can be
used to explore new research problems and hypothesis.
Due to limited space in the paper, we briefly describe
only two case-studies, however, we make all the casestudies publicly available through the GitHub repository.
Extended Version of Previous Paper: The study
presented in this paper is an extended version of our
short paper accepted in T4E 2016 (The Eighth IEEE
International Conference on Technology for Education)
by the same authors [23]. Due to the limited four page
limit of the T4E 2016 paper, several aspects of our
study are not covered which are now described in detail
in this paper. The objective of this paper is to provide
a complete and detailed analysis of our work through
arXiv open access3 .
III. L EARNING F RAMEWORK : CPLC
We propose a learning framework CPLC- Casebased and Project-based Learning environment for
teaching Compiler design concepts. We apply CPLC
while teaching the analysis phase of compiler i.e. lexical
and syntax analysis as the content in these phases is
very important and is sufficient for learning many of the
basic principles of a compiler. The model uses cases that
are based on practical problems giving students hands
on experience in solving complex real world problems.
The model also involves giving a mini project at the
conclusion of a case discussion. Projects in compiler
design course serve two purposes [24] : they help in
better understanding of the language whose compiler
is to be implemented and it gives students experience
1 https://github.com/Divya-Kundra/Case-Based-Teaching
2 http://www.nature.com/news/democratic-databases-science-on-github-1.
20719
3 https://arxiv.org/

of building sustainable software. Projects for designing
partial compilers using LEX (Lexical Analyser) and
YACC (Yet Another Compiler Compiler) [25] for different languages like C, Java, HTML, SQL MATLAB
and Python are given to students.
Our proposed model CPLC is complete in itself
providing learning objectives, a teaching methodology
and evaluation of students understanding. The model
is based upon the constructivist perspective of learning. Constructivism means learners are more actively
involved in process of learning rather than just passively
receiving information from teacher [26]. According to
Audrey Gray [26] the characteristics of a constructivist
classroom includes that learners are actively involved in
a classroom and the activities that happen in the class
are interactive and student-centric. The teacher facilitates
the process of learning in which students are more
autonomous and responsible. CPLC learning model is
combination of the following pedagogical models:
a) Didactic Method: In didactic method, teachers
give instruction to students who are usually the
passive listeners. [1] explains didactic teaching
as teacher oriented in which the teacher is the
controller of learning environment. Students are
just part of traditionally planned lessons. Entire
power and responsibility lies in hands of teacher.
[1] mentions that students are just knowledge holes
who needs to be filled with information.
b) Problem-Based Learning: It suggests that if students learn by solving problem, they learn both
the content and thinking strategies [27]. It is selfreflexive such that learners monitor their own
understanding and learn to adjust strategies for
learning [28]. Teachers are not just knowledge disseminators rather they are facilitators who support
and model reasoning processes, facilitate group
processes and interpersonal dynamics, probe student’s knowledge deeply without providing direct
answers [28].
c) Cognitive Apprenticeship Model: Cognitive apprenticeship is a model in which learners learn
from an expert by cognitive and metacoagnitive
skills and processes [29]. Its basic model consists
of following teaching strategies:
i) Modelling [29]- It demonstrates the thinking
process by the teacher so that student can
experience and build a conceptual model of the
task.
ii) Coaching [29]- It involves observing student’s
performance and giving necessary hints for
improvement.
iii) Reflection [29]- It includes self analysis and
assessment by students on their own. The goal
of reflection for students is to analyze their
own performance with the objective of better

understanding and improvement.
iv) Exploration [29]- It involves forming and testing one’s own hypothesis in pursuit of learning.
The subjects are given their own space to
understand, solve the problem and come with
an appropriate solution. It encourages them to
develop interesting problems on their own and
consequently develop solutions for them.
v) Scaffolding [29]: Teachers provide support to
the students so that they reach to a higher level
of comprehension and skill acquisition which
they would not be able to reach without the
guidance.
vi) Articulation [29]: This involves verbalising the
results of reflective acts. It involves humanhuman interaction which demonstrates knowledge and thinking process in order to expose
and clarify them [30].
d) Project-Based Learning: This learning model organizes learning around the project [31]. Definition
of this model in the literature includes that projects
are challenging and complex, involve students in
designing, problem-solving and decision making
[32]. Students work on it for extended period of
time and it ends with some useful product or
presentations. Some other features of this model
include authentic content, authentic assessment,
hints by teacher, well defined education goals cooperative learning and reflection [33][34][35][36].
We propose and apply the framework shown in
Figure 1 for teaching the lexical and syntax analysis
phase of compiler design. The learning cycle includes
several learning activities like lectures, case building,
case allocation, case solving, case discussion, case presentation, project allocation and project presentation.
Each learning activity has associated learning actions
which result in learning done through different learning
strategies. The foremost learning activity consists of
didactic teaching in form of classroom lectures which
introduces and discusses concepts of compiler designing.
The instructor models solving of the problems by writing, presenting explicitly and thinking aloud. To enhance
the understanding, theory and programming assignments
are given to students. For the concepts discussed in class,
instructor explores new ideas and viewpoints and finds
analogies in real life to develop interesting cases. The
learning objectives of the concepts should be challenged
in the cases. Cases should deal with interesting practical
world problems so that they relate to the audience and
awake their interest to solve them [37]. Once a concept
is covered in the class, we allocate the case to a team
of 3-4 students. Multiple teams are given the same case.
Evaluation guidelines are also discussed.
Once the case is assigned, students retrieve similar
problems and concepts taught in class to do problem

Fig. 1: Learning Cycle showing Learning Activity, Learning Actions and Learning Strategies.

solving [8]. Articulation through discussions within a
team help students to consider different point of views,
understand problem better and come up with the best
solution. Instructor coaches students by monitoring their
activities, assisting and supporting them whenever necessary [38]. Student reflects over his performance by
self analysis and self assessment [29]. The results of
reflection are put into verbal form in form of presentations. Students are encouraged to create and ask
inquiries resulting in inquiry-based learning. The entire class works together by discussions and debates
to reach final solution. Once the presentation is over,
team submits solutions in form of a written report to
the instructor. Instructor provides in depth analysis of
the team’s performance. Instructive feedback incorporates extra information and improvement in response
to student’s work [39]. A suitable grade for team’s
presentation is awarded by the instructor. After completion of the case, a project is assigned to the team.
Students decide how to approach the problem and what
suitable actions to take. Scaffolding happens where the
instructor guides and advises students about the projects
so that they can cope up with the task situation [38]. At
the end project presentation takes place where students
demonstrate their results. Inquires are raised again to the
presenting team for further increase in development of
knowledge or solution. It is concluded by instructor’s
feedback which provides clear guidance on improving
learning and necessary grading is done.

Sample Case Studies
We developed multiple cases for lexical and syntax
analysis phase. The cases have been publically shared4
so that they can be used by other instructors of compiler
course. The learning objectives of lexical analysis phase
include understanding tokenization, how it takes place,
learning and practicing how to take decisions for building the suitable tokenizer according to requirements of
the given system. Similarly for syntax analysis phase
the learning objective is to understand parsing, how the
parsing of the sentence takes place, learning how the
parser is constructed and understanding different parsing
techniques. Student should be able to correctly judge
how to build a suitable grammar and parser for the
system under consideration. We present summary of one
of the case of lexical and syntax analysis.

A. Case of Spam Detection (Lexical Analysis)
Developers of an upcoming email service mails.com want to make a spam filter that automatically
detects and removes spam. The filter would consists of
thousands of pre-defined spam-rules against which the
email content will be compared. Anything matching to
the spam-rules would categorize to be a spam component. The developers know that as spam filters evolves
to better classify spam, the spammers will adapt their
writing methods to avoid detection. Thus to build effective rules, the developers of mails.com begin to observe
what kind of spam attacks can occur on filters. Example
as statistical spam filters begins to learn that word like
4 https://github.com/Divya-Kundra/Case-Based-Teaching.git

“offer” mostly occur in spam and starts to think “offer” as spam-rule, spammers began to obfuscate them
with punctuation, such as “o.f.f.e.r”. Some of the other
attacks are also explained in the case. Observing the
attacks discussed in the case and reasoning what other
attacks can occur, appropriate tokenization mechanism
is to be decided to achieve maximum accuracy of the
filter.
The challenges for the students in this case are:
a) Identify various tokenization attacks that can occur
on spam filter.
b) Analyze and describe why and how a particular
attack can occur.
c) Decide the most promising tokenization techniques
that can be proposed for the system.
d) Evaluate the reliability of the proposed tokenization scheme by proving how it will be resilient to
the attacks.
The teams analysed the case and presented variety
of solutions for the attacks they could identify and
synthesize. Some teams argued that tokenization attacks
which include splitting or modifying key word features
(using more of capitalisation or punctuations within the
word) are most common and thus proposed solutions
for them. Some presented obfuscation attacks (changing
spelling of spam words to avoid detection) to be a major
spam content and gave solutions for it. A few teams
presented statistical errors such as adding random good
words to spam or concatenating of small illegitimate
words to form a big permissible word. Teams also
discussed about obfuscation of URLs done by encoding
or adding unnecessary parenthesis to avoid rule based
detection. For data pre-processing different ideas were
suggested. Many of them were to filter out stop words
like is, an, the and special characters like (), [], performing word stemming and converting all letters into lower
case.
To counter tokenization attacks strategies suggested included scanning the content twice, in the first
scan removal of extra spaces, punctuations within the
words, and in the next scan matching of each token
against bag of spam words (keyword searching). Deterministic Finite Automatas were drawn by students for
the keywords/spams. Some suggested count of punctuations to be an indicator of spam. Idea to use ngrams approach which takes advantage of contextual
phrase information (e.g. “buy now”) was also proposed.
For statistical errors different solutions presented were:
keeping a count on good words to match against a
threshold, weighing the good words against spam words
(a significant presence of both can indicate spam) and
keeping a count of location of occurrence of good
words as some argued that spammers usually insert good

words in the beginning or at the end. For composite
attacks, ideas mentioned were use of prefix detection
to detect spam by demonstrating the use of REJECT5
construct of YACC as done in the class. For invalid URL,
suggestions to do various forms of normalisation of URL
were discussed and for spam present in attachments like
images, discussions were done to process the image to
extract set of tokens from properties of image. Thus
the case helped students to contemplate over different
tokenization strategies and gain an experience on how
crucial it is to design correct tokenization scheme in the
real world design of a spam filter.

B. Case of Human-Robot Chess play (Syntax Analysis)
GOLEMS6 is a humanoid robotics lab at Georgia
Institute of Technology. The lab works towards developing robots having human and even super human
capabilities. One of the tasks of the lab is working on
building a physical human-robot chess. One side of the
chess would have a movable robot arm with sensors
providing suitable force to locate, pick, drop and rotate
the chess pieces while on other side would be the human
playing against the robot. The required objectives of
the robot is explained in the case. Developers have
come up with controlling of the robot using context-free
grammars which they have called as motion grammar.
The production rules of the grammar represent a task
decomposition of robotic behavior. The motion grammar
enables robots to handle uncertainty in the outcomes
of control actions through on-line parsing. The main
task is to identify various challenges that will come in
design of robot human chessplay system and address
those challenges by building the suitable grammar. Thus
after understanding the requirements and constraints of
the system students are required to suggest a promising
motion grammar.
The challenges presented to students in this case
are:
a) Identify various requirements of the system to build
human-robot chessplay.
b) Identify implicit problems and factors that influence the requirements.
c) Decide and justify the best suitable grammar that
can be build which incorporates the requirements
of system.
This case was looked by different perspective by different teams and thus they identified and synthesized different
challenges. Each team gave different set of grammars stating
5 http://dinosaur.compilertools.net/lex/
6 http://www.golems.org/projects/krang.html

TABLE I: Students Response to Survey Questions.
Learning Principles
Learning

Learning

Learning

Critical
Thinking
Critical
Thinking
Critical
Thinking
Engagement

Engagement
Communication
Skills
Team Work

Question
I felt the use of case-based learning was relevant in learning about
course concepts.
The case-based learning allowed
for a deeper understanding of
course concepts.
The case study will help me to retain different aspects of compilers
better.

Strongly Agree (%)
14.5

Agree (%)
68.7

Disagree (%)
10.4

10.4

58.3

27.0

4.1

12.5

52.0

25.0

10.4

The case study allowed me to view
an issue from multiple perspectives.

22.9

64.5

8.3

4.1

The case study was helpful in
synthesizing ideas and information
presented in course.

12.5

77.0

6.25

4.1

The case study added a lot of realism to class.
I was more engaged in class during
case study.

14.5

64.5

14.5

6.25

27.0

62.5

4.1

6.25

The case discussion increased my
interests in learning about compilers.

18.75

58.3

14.5

8.3

The case discussion strengthen my
communication skills to speak in
front of audience.
The case discussion increased my
confidence to work in a team.

27.0

58.3

12.5

4.1

22.9

62.5

12.5

2.0

different situations they could think can come into humanrobot chess play. While some teams presented a very abstract
view of the system in their grammar, few teams did incorporated detailed requirements of the system in their grammar.
First the teams identified the tokens in the system. Some
worked with taking tokens as chess states (like checkmate,
draw), some worked with robot’s movement (like set, release)
as tokens while some used sensor’s readings (like pressure
release, pressure set) as tokens.
Few teams presented the view of making it essential for
humans and robot to operate in their own workspace like
waiting of the robot’s arm to finish human’s move. Some
included the productions of the details of robot’s behavior
in handling chess pieces like touching, holding, sliding and
reacquiring pieces when they fall. A few did work on providing
equal chances to both players and ending the game on either a
human win, robot win or a draw. Some of the team focused on
working on the mechanics of the robot’s arm like stretching,
turning and grasping the piece. Students also worked on the
grammar structure to reset the board like making space on
the home square if some piece is already occupied. A few
of the teams worked on including productions for different
chess strategies like for en passant move taking the captured
pawn and moving its own pawn to destination square. Some
presented semantic actions also with the grammar. Teams
also build motion parser using different bottom up parsing
techniques discussed in the class. Thus by this case, students
gained insights on how to create grammar for a real software.

Strongly Disagree (%)
6.25

IV. E VALUATION
A. Experimental Setup
The experiment is carried on compiler design course
offered to third year B.Tech students of Deen Dayal Upadhyaya7 college, affiliated to Delhi University. There were
about 48 students in the class. We conduct students survey
to record their responses to case-based teaching methodology.
We analyze the survey using frequency distribution and chi
square test of association to analyze if students agree that case
discussion enhanced different learning principles like learning,
critical thinking, engagement, communication skills and team
work [40]. The survey is adapted from a national survey
on faculty perceptions of benefits and challenges of casebased instruction [41]. The questions in survey are changed
to reflect students perspective on influence of case discussion
on different learning subscales [40]. Each question offers
4 choices: Strongly Agree, Agree, Disagree and Strongly
Disagree. Students choose one of the given option based on
their experience about the case discussions.
B. Effectiveness of Case-Based Learning
Survey questions categorised under different learning
principles along with percentage of students choosing the
given option is shown in Table I. From Table I it can be
observed that a high percentage of students 83.2% (both agree
and strongly agree) agreed that case discussions are relevant
in learning about compiler concepts which shows that cases
7 http://dducollegedu.ac.in/

Fig. 2: Evaluation Results based on Course Survey by Students.

Fig. 3: Percentage of Agree and Disagree Responses for Ten Questions

were effective in understanding vital components of compiler.
About 68.7% admitted that case discussions provided them
deeper understanding of the concepts of compilers and thus
enhanced their understanding. Relatively less but still significant percentage of students, 64.5% were of the opinion
that cases would help them to retain different aspects of
compilers. Creating more cases for other phases of compilers
can help for better overall retainment of compiler concepts.
Students also felt that the use of case discussions enhanced
their critical thinking. Specifically about 87.4% thought case
discussions gave them a good practice to view an issue from
multiple perspectives. Thus it shows that cases developed are
challenging and thought provoking. A significant percentage
of students 89.5% thought that case study was helpful in

synthesizing ideas and information presented in course proving
that cases covered the essential concepts of lexical and syntax
analysis phase. Since real life problems were challenged in the
cases, about 79% students felt it added realism in the class.
A majority of students 89.5% agreed that they were more
engaged in class during case discussions, showing that cases
are interesting and engrossing. Formed cases are shown appropriate to compiler course as 77.05% students reported that
case discussions did increase their interest in learning about
compilers. Students also felt that case discussions contributed
to strengthen their communication skills (85.3%) and it also
increased their confidence to work in a team (85.4%) which
shows that case discussions helped in development of personal
and interpersonal skills.

Overall results show that students have a positive attitude towards the case-based learning methodology. The mean
percentage of count of students along with their response
to survey questions belonging to a given learning principle
is computed and shown in Figure 2. From Figure 2 it can
be determined that on an average 19.1% strongly agreed
to have achieved all the learning principles during the case
discussions. A significant percentage of students about 62.2%
on an average admitted to have acquired the skills of learning, critical thinking, engagement, communication skills and
team work. A small percentage 13% (mean) disagrees and
yet another very small mean percentage of 5.4% strongly
disagrees to have acquired the learning principles during
the process. The frequency of individual survey questions is
aggregated to give each of the learning principles- learning,
critical thinking, engagement, communication skills and team
work a total frequency score and chi-square analysis is done
over it. Values of χ2 (2) = 38.7 and p=.000013 suggests
that there is relationship and association between different
learning principles. Thus significantly more students agree that
case studies increase the skills of learning, critical thinking,
engagement, communication and team work. Figure 3 reveals
the comparison between the agree (combining strongly agree
and agree) and disagree (combining strongly disagree and
disagree) responses for all the ten questions. The graph shows
significant differences between the two bars and demonstrate
the effectiveness of the approach based on student responses.
V. C HALLENGES , L IMITATIONS AND R ECOMMENDATIONS
As mentioned in previous literature [42] and observed
by us also, there were various challenges that detracted
from effective case-based teaching. Students were exposed to
case-based teaching pedagogy for the first time. They were
used to the standard teaching environment of listening to
the lectures, taking notes and interacting with teachers only
during questions and answers. Thus for them adjusting to an
unfamiliar environment where they are required to apply their
knowledge to complex ambiguous problems, to reflect, discuss
and debate was a little difficult. Relating case to the theoretical
contents did not come naturally to them. Undergraduates did
not have practical experience to case-based discussions and
some of them viewed practical aspects of cases different from
theoretical ones. We also experienced that case preparation
is a laborious activity. We had to contemplate the purpose
for which the case is used and the course content to which
it is linked while developing the case. Since case discussions
rely heavily on discussions, participants ability to convey good
communication is essential. We observed that in the class some
of the students were hesitant to participate and express their
views.
We also observe some limitations of case discussions
as it has been stated in literature too [5]. Case discussions
consume a lot of time thus managing time lectures with
cases should be done well. Finding the correct cases which
covers all the essential learning objectives is challenging. Since
cases have multiple perspective, it may happen that a student

interprets it in completely different manner than what the
instructor wants. This might lead to missing of the learning
aspects desired by the intructor. Grading is subjective as there
is no completely right or wrong answer. There are more then
one way to look at the case, thus there is problem in validation
of solutions presented by students. Also since students are
working in the group, grade is to assigned to the group itself
thus it is hard to determine individual contribution of each
team member.
We can suggest some recommendations based on our
personal experiences. It is challenging for a single instructor
to manage and facilitate several groups. The instructor and
group interaction is paramount, without it the entire purpose
of learning through discussions will be defeated. Thus we
recommend to use a additional teaching support for better
outcome. To make group discussion easier, it is better to use
flip-charts, markers and round tables. Just like there are case
repositories for science subjects8 , business management9 we
recommend to create a central repository of compiler design
cases so that multiple instructors all over the world can benefit.
VI. C ONCLUSION
We propose and successfully implement the CPLC teaching environment for teaching compiler design concepts using
case-based and project-based pedagogy. With case-based pedagogy students gave positive feedback to have learned the
course, developed skill of critical thinking about an issue,
being actively involved in the course and having improved
communication skills and team work. The hands on experience on project gave more practical experience of designing
the compiler by themselves. The positive measurement of
effectiveness of case-based discussion along with practical
experience of compiler designing through projects proves that
both of these pedagogy are suitable for teaching concepts of
compiler.
R EFERENCES
[1] B. A. Altman, “Workplace bullying: Application of novak’s (1998)
learning theory and implications for training,” Employee Responsibilities
and Rights Journal, vol. 22, no. 1, pp. 21–32, 2010. [Online]. Available:
http://dx.doi.org/10.1007/s10672-009-9121-7
[2] J. Theroux and C. Kilbane, “The real-time case method: A new approach
to an old tradition,” Journal of Education for Business, vol. 79, no. 3,
p. 163, 2004.
[3] E. Seymour and N. M. Hewitt, “Talking about leaving,” 1997.
[4] A. Yadav and B. E. Barry, “Using case-based instruction to increase
ethical understanding in engineering: What do we know? what do we
need?” International Journal of Engineering Education, vol. 25, no. 1,
p. 138, 2009.
[5] V. L. Golich, “The abcs of case teaching,” International Studies
Perspectives, vol. 1, no. 1, pp. 11–29, 2000. [Online]. Available:
http://dx.doi.org/10.1111/1528-3577.00002
[6] D. Jonassen, J. Strobel, and C. B. Lee, “Everyday problem solving in
engineering: Lessons for engineering educators,” Journal of engineering
education, vol. 95, no. 2, pp. 139–151, 2006.
[7] Z. Li, “Exploring effective approaches in teaching principles of compiler,” 2006.
8 http://sciencecases.lib.buffalo.edu/cs/collection/websites.asp
9 http://www.ibscdc.org/

[8] D. H. Jonassen and J. Hernandez-Serrano, “Case-based reasoning
and instructional design: Using stories to support problem solving,”
Educational Technology Research and Development, vol. 50, no. 2, pp.
65–77, 2002. [Online]. Available: http://dx.doi.org/10.1007/BF02504994
[9] M. A. Kaddoura, “Critical thinking skills of nursing students in lecturebased teaching and case-based learning,” Learning, vol. 5, no. 2, p. 20,
2011.
[10] V. Shankararaman, “Teaching by case method in computing education.”
[11] G. Liu, Q. Yang, and R. Fan, “Application of case-based teaching in
higher vocational computer coursesa case study of delphi programming,”
in 2nd International Conference on Soft Computing in Information
Communication Technology. Atlantis Press, 2014.
[12] W. He, X. Yuan, and L. Yang, “Supporting case-based learning in
information security with web-based technology,” Journal of Information
Systems Education, vol. 24, no. 1, p. 31, 2013.
[13] K. Garg, A. Sureka, and V. Varma, “A case study on teaching software
engineering concepts using a case-based learning environment,” APSEC
2015 Workshops QuASoQ, WAWSE and CMCE, 2015.
[14] H. D. Shapiro and M. D. Mickunas, “A new approach to
teaching a first course in compiler construction,” SIGCUE Outlook,
vol. 10, no. SI, pp. 158–166, Feb. 1976. [Online]. Available:
http://doi.acm.org/10.1145/953026.803467
[15] S. R. Vegdahl, “Using visualization tools to teach compiler design,” in
Proceedings of the Fourteenth Annual Consortium on Small Colleges
Southeastern Conference, ser. CCSC ’00. USA: Consortium for
Computing Sciences in Colleges, 2000, pp. 72–83. [Online]. Available:
http://dl.acm.org/citation.cfm?id=369340.369325
[16] M. Mernik and V. Zumer, “An educational tool for teaching compiler
construction,” IEEE Transactions on Education, vol. 46, no. 1, pp. 61–
68, Feb 2003.
[17] A. Demaille, R. Levillain, and B. Perrot, “A set of tools to teach
compiler construction,” in Proceedings of the 13th Annual Conference
on Innovation and Technology in Computer Science Education, ser.
ITiCSE ’08. New York, NY, USA: ACM, 2008, pp. 68–72. [Online].
Available: http://doi.acm.org/10.1145/1384271.1384291
[18] L. Xu and F. G. Martin, “Chirp on crickets: Teaching compilers
using an embedded robot controller,” SIGCSE Bull., vol. 38, no. 1,
pp. 82–86, Mar. 2006. [Online]. Available: http://doi.acm.org/10.1145/
1124706.1121370
[19] T. R. Henry, “Teaching compiler construction using a domain specific
language,” SIGCSE Bull., vol. 37, no. 1, pp. 7–11, Feb. 2005. [Online].
Available: http://doi.acm.org/10.1145/1047124.1047364
[20] M. Ruckert, “Teaching compiler construction and language design:
Making the case for unusual compiler projects with postscript as the
target language,” SIGCSE Bull., vol. 39, no. 1, pp. 435–439, Mar.
2007. [Online]. Available: http://doi.acm.org/10.1145/1227504.1227460
[21] J. S. Mallozzi, “Thoughts on and tools for teaching compiler design,”
J. Comput. Sci. Coll., vol. 21, no. 2, pp. 177–184, Dec. 2005. [Online].
Available: http://dl.acm.org/citation.cfm?id=1089053.1089078
[22] E. White, R. Sen, and N. Stewart, “Hide and show: Using real compiler
code for teaching,” SIGCSE Bull., vol. 37, no. 1, pp. 12–16, Feb. 2005.
[Online]. Available: http://doi.acm.org/10.1145/1047124.1047365
[23] D. Kundra and A. Sureka, “An experience report on teaching compiler design concepts using case-based and project-based learning approaches,” in International Conference on Technology for Education
(T4E 2016), 2016.
[24] A. Aiken, “Cool: A portable project for teaching compiler construction,”
ACM Sigplan Notices, vol. 31, no. 7, pp. 19–24, 1996.
[25] J. R. Levine, T. Mason, and D. Brown, Lex & yacc. ” O’Reilly Media,
Inc.”, 1992.
[26] A. Gray, “Contructivist teaching and learning,” SSTA Research Centre
Report, pp. 97–07, 1997.
[27] C. E. Hmelo-Silver, “Problem-based learning: What and how do
students learn?” Educational Psychology Review, vol. 16, no. 3,
pp. 235–266, 2004. [Online]. Available: http://dx.doi.org/10.1023/B:
EDPR.0000034022.16470.f3
[28] W. Hung, D. H. Jonassen, R. Liu et al., “Problem-based learning,”
Handbook of research on educational communications and technology,
vol. 3, pp. 485–506, 2008.
[29] V. P. Dennen and K. J. Burner, “The cognitive apprenticeship model in
educational practice,” Handbook of research on educational communications and technology, vol. 3, pp. 425–439, 2008.
[30] H. McLellan, “Situated learning: Continuing the conversation.” Educational Technology, vol. 34, no. 8, pp. 7–8, 1994.

[31] J. W. Thomas, “A review of research on project-based learning,” 2000.
[32] B. F. Jones, C. M. Rasmussen, and M. C. Moffitt, Real-life problem solving: A collaborative approach to interdisciplinary learning. American
Psychological Association, 1997.
[33] W. Diehl, T. Grobe, H. Lopez, and C. Cabral, “Project-based learning:
A strategy for teaching and learning,” Boston: Center for youth development and education, 1999.
[34] M. Mittal and A. Sureka, “Process mining software repositories from
student projects in an undergraduate software engineering course,”
in Companion Proceedings of the 36th International Conference on
Software Engineering, ser. ICSE Companion 2014, 2014, pp. 344–353.
[35] S. Sripada, Y. R. Reddy, and A. Sureka, “In support of peer code review
and inspection in an undergraduate software engineering course,” in
2015 IEEE 28th Conference on Software Engineering Education and
Training. IEEE, 2015, pp. 3–6.
[36] R. Shukla, A. Sureka, R. Joshi, and R. Mall, “A report on software
engineering education workshop,” SIGSOFT Softw. Eng. Notes, vol. 37,
no. 3, pp. 26–31, May 2012.
[37] C. F. Herreid, “What makes a good case?” 2002.
[38] V. Dennen, “Cognitive apprenticeship in educational practice: Research
on scaffolding, modeling, mentoring, and coaching as instructional
strategies (chapter 31). retrieved october 9, 2005.”
[39] R. Van Houten, Learning through feedback: A systematic approach for
improving academic performance. Human Sciences Press, 1980.
[40] A. Yadav, G. M. Shaver, and P. Meckl, “Lessons learned: Implementing
the case teaching method in a mechanical engineering course,” Journal
of Engineering Education, vol. 99, no. 1, pp. 55–69, 2010. [Online].
Available: http://dx.doi.org/10.1002/j.2168-9830.2010.tb01042.x
[41] A. Yadav, M. Lundeberg, M. DeSchryver, K. Dirkin, N. A. Schiller,
K. Maier, and C. F. Herreid, “Teaching science with case studies: A
national survey of faculty perceptions of the benefits and challenges of
using cases,” Journal of College Science Teaching, vol. 37, no. 1, p. 34,
2007.
[42] M. P. Mostert, “Challenges of case-based teaching.” The Behavior
Analyst Today, vol. 8, no. 4, p. 434, 2007.

