Course: For System Programming Course
Class: Third Year
Department: Computer Science and Information Technology
Author: Prof. Ashwini B. Patil
The courses like System Programming or Compiler Construction are the core partin the CSE or IT curriculum. These course are focus on process / steps of converting high-level languages code into the machine understandable form. This steps are difficult to understand by student only in theoretical way. There is need of practical approach to demonstrate these steps with the use of some tools/ software’s; so that the students can able to better understanding these courses and the relevance of these courses.
The blog focuses on the use of modern tools and software in technical education for better understanding of courses like system programming or compiler construction.
Classroom Challenges while teaching Internetworking Protocol course:
System programing course mainly covers steps to converting the high level source code into low level machine understandable form in terms of various phases including preprocessing, compilation, assembly, linking and loading.
Instead of just using the Blackboard or PPTs in the classroom for teaching of courses like System Programming / compiler construction is not sufficient. We can use some tools or system software’s that will change the way of learning concepts with more effective, powerful and easily accessible way. System Programming is theory course, so just to have a theoretical teaching in the class, the students are not able to:
- Comprehend the concepts of System Programming.
- Understand the working of language processors like preprocessor, compiler, assembler, linker and loader.
- Get practical approach of the course.
- Analyze how these language processors works.
Teaching Methodology adapted:
With reference to learning pyramid/ cone of learning by National Training Laboratory; its clear that 75% of concepts what they learned in the class get retain, if students can practice it by doing and nearly 90% get retain if they teach others
So for System programming course I used the following approaches as learning methodologies:
- Problem Based Learning
- Learning by doing
- Demonstrate/share your learning to others
The main objective behind to choose this learning methodology
- Teach the students that how Language processor works.
- Give hands-on experience to the students
- Allow students to understand how high level source code converted into the low level machine code.
- Make the students aware about the available tools/ software’s used in System Programming / compiler construction for better understanding of course.
Tools/ software used for Teaching System programming course:
The tools/software likeLex / Flex, Yacc, DDD , GDB, GCC , ANTLR , Rational Rose, Eiffel, Puma Scanner, Waxeye Parser Generator, Lemon Parser Generator, GNU Bison parser generator and Ocamlyacc etc. are assigned to students for doing practical demonstration of various concepts of system programming course.
Following are the list of students with Tools/ Software’s demonstrated:
|Sr. No||Name of Tools|
|2||GDB online compiler and debugger for c/c++|
|5||AST, a generator for abstract syntax trees|
|6||Lexical Analysis with QUEX|
|8||The parser generators LALR and ELL|
|11||PUMA SCANNER , for pattern matching|
|12||REX Scanner Generator|
|13||BTYACC(BACKTRAKING YACC PARSER GENERATOR)|
|16||GNU bison parser generator|
|18||GNU DDD is a graphical front-end for command-line debuggers|
|19||C# Compiler (CSC)|
|20||Coco parser generator|
- Problem Based Learning
Problem based learning helps to integrate the theory which is learned and apply the knowledge, skills to find best suitable solution to given problem.
In this activity, Problem statement is given to students. Each student thinks individually on a given problem, make pair with his/her neighbour and discuss the problem, note down the answer in the notebook and share his/her answer with the class.
Benefits of Problem Based Learning for System Programming Course:
Students are able to,
- Write the machine level code of given assembly code.
- Construct the symbols table, literal table and pool table
- Illustrate the working of single Pass and Two Pass assembler
- Perform macro expansion
- Design the various data structures used by macro preprocessor
- Perform passing of given string as per grammar
- Resolve the address sensitive instruction.
- Learning by doing
Learning by doing enhance the creativity, problem solving ability and understanding of concepts. Which involves following steps,
Activity: Doing experiment
Reflection:Review of experiment
Conceptualization:Learning from experience
Application: Applied the learning to solve real time problem
For System Programing course, various tools and open source software’s are used for learning by doing. The list of these tools and open source software’s are listed above.
Following are the implementation steps applied for learning by doing:
- Groups of 3-4 students get formed
- One tool/software is assigned to that group for demonstration.
- Every Groups had discussion with faculty mentor about use of tool/software, how to install , how to make practical use of that tool for understating the concept
- Each group have installed and written code for demonstration of concepts from system programming.
- Report are prepared by students including
- Description about tool, topic/concept.
- Implemented Code
- Obtained results.
- Case Study:
Group 16: GNU Bison parser generator
The group no. 16 worked on “GNU Bison parser generator”.
The job of the Bison is to group tokens into groupings according to the grammar rules-for example, to build identifiers and operators into expressions. As it does this, it runs the actions for the grammar rules it uses.
- Installing Bison:
Step1: Goto the following website and download the ‘bison-2.4.1-setup’ file.
Step2: During installation select Destination Location as follows:
Step3:Set an ‘environment variable’ for the path:
Step4:Make sure you have MinGW or Dev-Cpp bin folders in your PATH for using ‘gcc’ on
Make sure you have flex’ installed in your computer.
Process for installing flex is the same as bison.
- Demonstrate your learning to others:
Every group has presented the tool learned by them to others. The reports prepared by groups was also shared through Moodle server.
Activity Based Evaluation:
Activity based evaluation is done for this course as a part of ISE. Following are the rubrics for evaluation:
Attainment of Course:
|Sl No.||CO Code||CO Statement||ISE Threshold %||ESE Threshold %||Threshold based Attainment %|
|1||CO1||Describe the fundamentals of language processing and language processors||60.00 %||60.00 %||88.00 %|
|2||CO2||Demonstrate the concept of assemblers by writing pass i and pass ii algorithm to convert the assembly code into intermediate code||60.00 %||60.00 %||94.00 %|
|3||CO3||Write macro definition, call and expansion for given assembly code||60.00 %||60.00 %||73.00 %|
|4||CO4||Illustrate various phases of compiler||60.00 %||60.00 %||93.00 %|
|5||CO5||Explain working of linker and loader.||60.00 %||60.00 %||93.00 %|
- Outcomes of active learning techniques used for this course:
Students are able to,
- Comprehend the concepts of system programming
- Use modern tools and software to demonstrate the concepts of system programming / compiler construction.
- Apply the knowledge for real problems
- Correlate the theoretical concepts to real aspect.
- Remember the concept easily
- Enhance practical implementation.
- Become an active learner
- Solve the problems related to system programming / compiler construction.
- Work in team
- Develop their communication and presentation skill
- Encourages collaboration and exchange of ideas and perspectives.
- Develop the skills for lifelong learning
Use of applicable tools and techniques to perform the practical implementation of concepts taught in the course is really helpful for better understating of course. With this students also come to know the relevance or application of the course in real life and increase the learning interest.