  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 real-life 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.
