Menu Close

Use of Modern Tools and System Software for Interactive Learning

Course: For System Programming Course

Class: Third Year

Department: Computer Science and Information Technology

Author: Prof. Ashwini B. Patil

Abstract:

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:

  1. Problem Based Learning
  2. Learning by doing
  3. Demonstrate/share your learning to others

Objectives

The main objective behind to choose this learning methodology

  1. Teach the students that how Language processor works.
  2. Give hands-on experience to the students
  3. Allow students to understand how high level source code converted into the low level machine code.
  4. 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. NoName of Tools
1gcc compiler
2GDB online compiler and debugger for c/c++
3Flex Tool
4ANTLR  Parser
5AST, a generator for abstract  syntax trees
6Lexical Analysis with QUEX
7EIFFEL
8The parser generators LALR and ELL
9Flex tool
10HTML Parser
11PUMA SCANNER , for pattern matching
12REX Scanner Generator
13BTYACC(BACKTRAKING YACC PARSER GENERATOR)
14ANTLR
15YACC Tool
16GNU bison parser generator
17Ocamlyacc
18GNU DDD is a graphical front-end for command-line debuggers
19C# Compiler (CSC)
20Coco parser generator

Implementation Steps:

  • 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:

  1. Groups of 3-4 students get formed
  2. One tool/software is assigned to that group for demonstration.
  3. 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
  4. Each group have installed and written code for demonstration of concepts from system programming.
  5. Report are prepared by students including
  6. Description about tool, topic/concept.
  7. Implemented Code
  8. 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.

Link:http://gnuwin32.sourceforge.net/packages.html

Step2: During installation select Destination Location as follows:

C:\GnuWin32

Step3:Set an ‘environment variable’ for the path:

C:\GnuWin32\bin

Step4:Make sure you have MinGW or Dev-Cpp bin folders in your PATH for using ‘gcc’ on

            cmd.exe.

Make sure you have flex’ installed in your computer.

Process for installing flex is the same as bison.

Parsing code:

Lex Code:

Output:

  • 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 CodeCO StatementISE Threshold %ESE Threshold %Threshold based  Attainment %
1CO1Describe the fundamentals of language processing and language processors60.00 %60.00 %88.00 %  
2CO2Demonstrate the concept of assemblers by writing pass i and pass ii algorithm to convert the assembly code into intermediate code60.00 %60.00 %94.00 %  
3CO3Write macro definition, call and expansion for given assembly code60.00 %60.00 %73.00 %  
4CO4Illustrate various phases of compiler60.00 %60.00 %93.00 %  
5CO5Explain working of linker and loader.60.00 %60.00 %93.00 %  
Fig: Attainment of Year 2019-20 (Sem-II), Course : System Programming
  • 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

Conclusion:

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.