Understanding Design Elements of Hindi Coding Application

Bulletin of the Technical Committee on Learning Technology (ISSN: 2306-0212)
Volume 20, Number 2, 19-26 (2020)
Received August 1, 2020
Accepted September 2, 2020
Published online December 6, 2020
This work is under Creative Commons CC-BY-NC 3.0 license. For more information, see Creative Commons License


Authors: Siddharth Srivastava*1email, Umesh Chandra Jaiswal2email, Shalini Lamba3email, T.V. Prabhakar1email

*: Corresponding Author
1: Computer Science and Engineering Department, Indian Institute of Technology, Kanpur, U.P., India
2: Computer Science and Engineering Department, Madan Mohan Malaviya University of Technology, Gorakhpur, U.P., India
3: Computer Science Department, National P.G. College, Lucknow, U.P., India


Skills like logic, reasoning, algorithm formulation for problem-solving, mathematical inferences, application of knowledge and others are independent of language we speak. Using these skills, an individual can solve day to day problems quickly. Art of programming (AOP) is a combinational skill. It is composed of several language-independent skills like logic, reasoning, algorithm design, problem classification and others. However, AOP heavily depends on learners knowledge of the English language because the syntaxes of nearly all important and widely used programming languages were designed using the English language. This introduces a problem before non-English learners (NEL) and learners with English as a second language (ESL) to start coding. In my country India our mother tongue is the Hindi language, and most learners are either NEL or ESL. Due to this, teaching programming becomes challenging. This research is the answer to this challenge. To encounter this problem, we developed a desktop application entitled “Hindi-CNL-Coder”. This application helps naive/beginner NEL or ESL programmers to learn to code using their native Hindi-language, which further helps them to learn to code using traditional programming languages like C, Java, and others. This research presents the complete details associated with the “Hindi-CNL-Coder” version 2 app, along with the technology stack, associated reference architecture and other essential elements used to fabricate the app. This research also presents the usefulness of the proposed application in various learning environments.

Keywords:Art of Programming, Controlled Natural Language, Desktop Application, English as Second Language, Native Language.


The English language serves as a pre-requisite for naive/beginner level NEL and ESL programmers. This happens because most of NEL or ESL programmers have difficulty in understanding the English language and all advance and most widely used programming languages derive their keywords, syntaxes, statements, and other elements from the English language. Moreover, the programming language syntax itself produces complications in understanding the art of coding.

To design an easy AOP learning process for NEL and ESL learners, we have to teach them programming using programming elements designed in their native language rather than in the English language. Moreover, the overall coding elements like language structure, keywords, syntax, and others must be simplified. The essential principles of programming like assigning variable names, declaring functions, creating classes, including header files or importing packages, calling functions using call by reference or call by value, function overloading, function overwriting, default values in parameters, handling arrays, handling conditional statements, handling loops, using jump statements, using structures, object handling, garbage collection functions and others must align with the most widely used or targeted programming languages like C, C++, Java and others.

To achieve these objectives, we engineered a desktop application named “Hindi-CNL-Coder”. This app helps naive/beginner level NEL or ESL Indian coders to code using their mother tongue, which is the Hindi language. Use of this application helps in smooth migration of Hindi coders towards standard programming languages like C, C++, Java, and others. To design programming syntaxes and elements using the Hindi language, we used the concept of controlled natural language (CNL). CNL’s are derived using natural languages (NL) by restricting rules and vocabulary present in NL. So we restricted the use of rules and vocabulary present in the Hindi language in order to obtain HINDI-CNL. As we know that the Hindi language is not a widely used language in the international market and on the internet so nearly no standard Hindi-CNL engine is present in the market. So instead of building the complete Hindi-CNL engine (which is a costly affair), we fabricated a mechanism to handle the problem. Section IV, V and VI discuss in detail issues concerning CNL’s and Hindi-CNL.

Although the Hindi-CNL engine is the core of the system, still, the overall system requires other architectural artifacts and components. Section VII presents the details concerning the reference architecture of the Hindi-CNL-Coder application. This reference architecture helps software developers to design similar applications for other native languages. The tradeoff between various quality attributes heavily depend on the architecture of the system. Due to this system architecture becomes a critical issue.

Section VIII discusses the complete working of the app. This section also presents the step by step procedure of using this application along with its technical details. On the other hand, section IX lists in detail the usefulness and benefits of the app. Whereas section X point toward some critical issues which end users flagged after using the app. Beta testers of the app also pointed out the same set of issues.

We believe that this application help naive/beginner level NEL or ESL coders to understand better the art of programming. We also believe that this application help in smooth migration of naive/beginner NEL or ESL programmers towards the core programming languages like C, C++, Java, and others. This application also provides a native-language based user-friendly environment for learning the art of programming.


The researches based on theories given by Bloom [1], Pavlov [2], Bandura [3-6], and Webb [7-10] produces, beautiful results in the form of classroom-based teaching models and frameworks. These frameworks and models help course instructors and teachers to teach effectively. Teaching style heavily depends on learning strategies adopted by the students. The issues concerning the depth of knowledge, knowledge points and content complexity rigor help educators to design courses and their structure [11-13]. Programming courses are no exception. All teaching styles, trends and pedagogical issues which applies on standard courses apply to the coding courses as well. Learning styles like learning by doing (LBD), learning by imitation (LBI), learning by teaching (LBT), learning by memorization (LBM) and others helps educators to choose teaching strategy [14-15]. Researchers showed that students retain nearly 25% of what they see, 50% of what they see and listed and more than 75% if they learn using LBD approach [19-22]. Several online educators designed their online learning systems using the approaches mentioned above [16-18]. Researchers also proved that block-based programming and algorithm-based programming are suitable for beginners [23-24]. Researchers also showed that cognitive score serves as better criteria for selecting students in an online course concerning their marks and pre-requisites [26]. Researchers also listed several tradeoffs which exist among various types of learning style [25]. All these researchers provide pedagogical background for the development of Hindi-CNL-Coder app.

The core engine of this application works on the concept of controlled natural language (CNL). The CNL based concept of micro-publishing [27], knowledge representation and knowledge bases [28], CNL in business [29], use of CNL for Semantics of Business Vocabulary and Business Rules and CNL for inferences [30-31] are several types of research which clarify the concept of CNL and its application. In our case, we need Hindi-CNL engine, but no such engine is available, so we constructed one for this application. The overall architecture design for this application handles the quality attribute (QA) tradeoffs efficiently. The layered approach used for designing several components makes the overall design clear and compact. Researchers proposed several ways of handling quality attributes [32-38]. We considered these approaches while designing our app. Software architects talk about architecture patterns for handling QA’s tradeoffs. We used their concept to handle QA’s related tradeoffs while designing this app.


All NEL and ESL learners suffer from several English language-related issues which include problem in (i) understanding English text/instructions (UETI), (ii) writing English text/instructions (WETI), (iii) filling English templates/forms (FETF), (iv) Interpretation (INTP) and (v) communication (COMM). Apart from these five issues listed above, several issues like (a) interspeaker, (b) intraspeaker, (b) sociolinguistic and (d) others are essential from a linguistic point of view. However, they are not necessary for this research, so we are not going to discuss them here.

The complete set of English language grammatical rules, vocabulary, syntaxes and structures amplify all five problems listed above. The NEL and ESL learners suffer a lot in short duration courses where a good knowledge of the English language serves as an unsaid pre-requisite. Due to English based syntaxes programming courses on C, C++, Java and other standard programming languages make learning difficult for NEL and ESL learners. In practice, the course instructor uses his/her experience to overcome these challenges. Teaching using dual language is the most common approach which they follow. This approach works well for offline teaching mode but fails for teaching online courses. It fails because, in online courses, students from different countries can participate which bars course instructor from using dual or multi-lingual teaching approach. The application proposed in this paper is the answer to this problem.

Most Indian teachers and course instructors follow “just enough English” approach for teaching AOP to NEL and ESL learners. This approach uses limited English keywords, syntaxes and other elements to teach programming to the NEL and ESL students. Instructors and teachers use abstraction for teaching English elements to the learners due to which they highlight only essential details of English elements without going into its core grammar. This abstraction based method seems useful, but in reality, it is a crude method because everything is done informally without any proper control over elements of English. We noticed that programmers produced using this approach lack self-confidence because they mugged up several keywords, syntaxes, concepts and other programming elements without understanding them.

The other approach to handle the above-listed problems is to formally teach the NEL and ESL students a limited set of English language rules and vocabulary, which is domain-specific concerning AOP before teaching them programming. This type of English is known as controlled English, and it falls under the category of CNL. This approach is effective concerning the previous approach. However, researchers observed that this process is time taking and AOP requires limited knowledge of the English language, so it is hard to derive a limited set of English language rules and vocabulary for the same.

In this research, we followed the modified version of the second approach discussed above. The second approach is also known as the controlled natural language (CNL) approach. We modified it, considering the pedagogical issues associated with the AOP.

In order to do a course generally, course instructors choose pre-requisites and cumulative grade point average (CGPA) as screening criteria for students. Researchers showed that cognitive score is more effective screening criteria concerning pre-requisites and CGPA. They further showed that the best way to learn to program is through imitation. We considered these researches while fabricating Hindi-CNL engine. In the next section, we will discuss the basics of CNL and learning by imitation (LBI). These two elements form the conceptual structure for this research.


A controlled natural language (CNL) is a restricted or controlled version of some natural language (NL). A CNL is obtained by extracting a subset of rules and vocabulary from the complete set of rules and vocabulary present in the source natural language. For example, English is a natural language, and several English based CNL’s are attemptto, cleartalk, ASD simplified English, common logic controlled English, E-prime and others. These English CNL engines are available online.

NL’s are used to create CNL’s. On the other hand root of NL is embedded in classic literacy which means the art of reading and writing using native NL’s. Classic literacy is the primary prerequisite for learning courses like science, arts, technology, social science and others. Learning a new concept or technology requires knowledge of the native NL. Researchers showed that all human brains are designed to think and understand using their native NL. It is to be noted that bilingual or multilingual speakers have two or more languages as their native NL’s, respectively.

Initially, CNL’s were created to solve five linguistic problems listed in section III. Later they were used in several automated tasks like knowledge representation, formal logic and others. The translation of a document written in a particular natural language (say NL1) may results in ambiguous interpretations when translated to some other natural language (say NL2) or when read by different persons using NL1 or NL2. This ambiguity arises because NL’s have inbuilt variations like linguistic, interspeaker, intraspeaker, sociolinguistic and others. These variations affect several aspects of language, including phonemes, morphemes, syntactic structures, meanings and others, resulting in ambiguous interpretations. To overcome such ambiguities, CNL’s are used.

Many multinational companies and government agencies started using controlled natural languages for doing their official work. This eliminates interpretation ambiguity while interpreting documents written using CNL’s. CNL’s provide some beneficial properties to users; these properties are as follows:

• CNL’s are easy to learn.
• Sentences written using a CNL are having unambiguous meanings.
• A document written using a CNL has exactly one interpretation.
• Translating a document written using one type of CNL to another type of CNL is easy and unambiguous.
• Native-CNL’s provide links between two or more natural languages.

So from the above discussion, it is easy to conclude that a CNL is the restricted version of NL. When the use of grammatical rules and vocabulary present in any NL is restricted concerning some domain, then the restricted NL obtained is known as controlled natural language.

Researchers showed that our brains are tuned to think, understand and memorize using native natural languages. When we try to learn concepts written in foreign natural languages, our brain translates them to native natural language, which eases the learning process.

Learning programming is always a painful task for beginners. This pain amplifies when beginners fall under NEL and ESL categories. Is it possible to learn to code using native-controlled natural language? How coding through native controlled natural language help programmers to learn traditional programming languages like Java, C, C++ and others, better? How native-CNL help programmers to enhance their coding skills? This research is the answer to these questions.

The best way to learn a natural language is through imitation. The programming language is no exception. So learning by imitation approach is the most suitable approach for learning programming. In one of our paper, we proposed a model which helps naive programmers to learn to program using LBI, learning by doing (LBD) and memorization. This model produces fantastic results when implemented in online coding platform.

The concept of analogy based learning by imitation is used while designing the Hindi-CNL-Coder application. According to the concept of analogy based LBI coding is done using elements of Hindi-CNL, and these elements are analogous to the elements of standard programming languages like C, C++, Java, Python and others. Due to this migration from coding using the Hindi language towards standard programming languages becomes easy.


Several CNL engines are available online for languages like English, French, Spanish and others but no such engine exists for the Hindi language. After reading several official Hindi documents, we came to know that from several years India is using several Hindi and Urdu language-related official rules, vocabulary and formats for executing the official work. We found that these formats are equivalent to Hindi-CNL and Urdu-CNL, respectively. Based on these official Hindi-CNL documents, we constructed a template-based Hindi-CNL engine. This engine forms the core of Hindi-CNL-Coder desktop application. In the next section, we will discuss issues concerning the designed engine.


The Hindi-CNL engine consists of Hindi character set, Hindi keywords, rules for creating identifiers and templates equivalent to standard programming concepts. Let us discuss each of them in detail. The standard Hindi character set consist of 13 SWARS, 36 VYANJANS, 10 -digits 0 to 9 (see Figure 1). The Unicode and digital way of writing Hindi character set is shown in table I. The rules for creating identifiers in Hindi-CNL program are as follows:

• The first character of an identifier must either be an underscore or SWAR or VYANJAN.
• Any combination of SWAR and VYANJAN can be used to create an identifier.
• An identifier must not start with digit.
• No special character other than underscore can be used to create identifier.
• Digits can be used to create identifiers but underscore or SWAR or VYANJAN must precede them.
• Total length of the identifier must not exceed 32 characters.
• Keywords cannot be used as identifiers.

The keywords are reserved words in Hindi-CNL. The set of selected (total seventeen words are selected) Hindi words constitutes the keywords. table II shows the complete list of keywords used in Hindi-CNL.

Fig. 1. Showing standard Hindi alphabets (SWAR and VYANJAN).

(image source: https://images.app.goo.gl/oHFrUrWw414cVRgN8)

table I


Table II

We used the template-based approach for designing the Hindi-CNL engine because this approach reflects analogy based LBI. In this approach, programming concept-based coding templates are designed using Hindi-CNL. These templates are analogous to their equivalent concepts in standard programming languages like C, C++, Java and others. So learning to code using these templates helps in smooth migration of NEL and ESL students from Hindi-CNL based coding towards coding using standard coding languages. Tables III-V shows some sample templates and their equivalent C language code.

Table III shows the concept of variable creation in Hindi-CNL and its equivalent code in the C programming language. In this table, some elements required for creating variables are also given like data types in Hindi-CNL and their equivalent in the C language.

Table III

Table IV shows the basic Hindi-CNL program template and its equivalent C code. From Table IV, it’s clear that the basic structure of the C program consists of header file inclusion, followed by the body of the main program. The analogue of this structure is replicated in Hindi-CNL coding template. The first line of Hindi-CNL code tells the computer that the main program is going to start, and lines second and fourth encapsulates the program body. The third line tells the computer to attach all-important header files in the program.

Table IV

Table V shows the basic looping template used in the Hindi-CNL, and it’s associated equivalent C language code. In the Hindi-CNL code first line initializes an integer variable second line is the loop syntax and lines 3 and 5 encapsulates the loop body. The loop written in Table V prints the first ten integers in reverse order. Line 4 represents the Hindi-CNL print statement.

Other similar templates form the core of Hindi-CNL engine. Now let’s have a look at reference architecture of the app.

Table V


This section presents the complete reference architecture of Hindi-CNL-Coder desktop app. The reference architecture is composed of three engines, namely (i) User Interface engine, (ii) Hindi-CNL engine and (iii) execution engine (see Figure 2). All engines, along with their core elements, are described next.

Fig. 2. Reference Architecture of Hindi-CNL-CODER Desktop App.
A. User Interface Engine

The User Interface engine allows users to interact with the application. It is composed of a set of Hindi fonts and Hindi text editor for editing programs using Hindi-CNL. It contains Hindi-CNL palette which helps users to do the editing work speedily. This engine also contains a Hindi I/O error dialog. This dialog displays runtime/compile-time errors/exceptions to the user.

B. Hindi-CNL Engine

The layered design pattern is used for designing the Hindi-CNL engine. According to this design pattern, the bottom layer provides services to the layer above it. This engine is the core component of this app. Its modeled using analogy base LBI approach and template-based Hindi-CNL approach discussed in the above sections. This engine is composed of three layers and one translator module. These layers, along with the translator module, are discussed next.

1) Hindi I/O Translator Module

This module helps to translate input text/program to a standard Hindi program format which pre-processor layer can handle. This module translates output generated by the system in user-readable Hindi format because the system generates output in non-Hindi format.

2) Hindi Code Pre-processor

The Hindi-CNL engine cannot directly parse the Hindi code written by the user. So this layer pre-processes the Hindi code making it compatible for processing by the layer above it. This layer pre-processes the Hindi-CNL templates and Hindi code syntax to make processing smooth.

3) Hindi-CNL-IMC Code Parser

This layer generates the intermediate Hindi code. This intermediate Hindi code is optimized and free from certain ambiguities which Hindi programmer may unknowingly insert in Hindi code while typing the code.

4) IMC-Hindi-CNL to Java Parser

This layer parses the intermediate Hindi code generated by Hindi-CNL-IMC Code Parser layer to its equivalent Java code. If during parsing any error occurs then this layer directly contact the “Hindi I/O Error dialog” present in the user interface module and halt the execution till user correct the code and restart the execution. Otherwise, if all is correct, then the equivalent java code is subjected to standard Java compiler and runtime environment.

C. Execution Engine

The execution engine is designed using the modular design approach. This engine helps in executing the user program. The Hindi-CNL engine generates the Java program equivalent to Hindi source code entered by the user. This Java program is compiled and executed by this engine. This engine contains three main components which are discussed below.

1) Java Compiler and Runtime Engine

The Java compiler and runtime engine is composed of the standard Java compiler and Java runtime environment (JRE). This engine takes Java program as the input, compiles it and if correct runs it. If any runtime or compile-time error/exception is generated, then it is sent to the Error Mapping module. If everything is correct, then using the Hindi I/O mapper module and Error mapping module program is executed.

2) Error Mapping Module

This module helps in handling runtime/compile-time errors/exceptions. This module also uses Hindi I/O mapper to establish proper communication between the execution engine and Hindi-CNL engine. All results generated by Java engine are in English this module along with the Hindi I/O mapper module and Hindi I/O translator module present in Hindi-CNL engine converts them in Hindi-CNL for NEL and ESL users

3) Hindi I/O Mapper

This module helps in establishing a communication link between the execution engine and the Hindi-CNL engine. This module also coordinates with other modules like Error mapping module and Hindi I/O translator module for the smooth working of the system.


Figure 3 shows the complete working of the Hindi-CNL-coder desktop app. The user edits the Hindi code using the coding user interface (see Figure 4). Then when the user clicks on the compile button, the Hindi-code is pre-processed. The Hindi-CNL parser parses the pre-processed Hindi program and generates the intermediate Hindi code. This intermediate Hindi code is optimized and subjected to “IMC-Hindi-CNL to Java Parser” this parser parses the intermediate Hindi code to its equivalent Java code. This Java code is compiled and executed by the standard java compiler and runtime environment. As we know that the standard Java engine produces the outputs in the English language, so the Error mapping module, Hindi I/O module and Hindi I/O translator module work in coordination to convert the English output generated by standard Java engine to its equivalent Hindi-CNL output for NEL and ESL users.

Fig. 3. Working of Hindi-CNL-Coder App.

Fig. 4. User Interface of Hindi-CNL-Coder App.


We floated an online C programming course from March-2020 to June-2020 for beginner/naive NEL and ESL students. A total of 80 students registered in the course. We used Hindi-CNL-Coder desktop application to teach them coding in Hindi-CNL and then using the concept of analogy based LBI taught them C programming language. We asked them to write algorithms in Hindi for the selected set of programming problems before the course start. This exercise is the pre-test for students. Based on six programming parameters listed later in this section, we scored them. Based on their scores, we clustered them in three groups, namely High performing group (HPG), Moderate performing group (MPG) and Low performing group (LPG). We selected six programming parameters, namely total performance (TP), concept grip (CG), innovation (IN), logic (LO), coding structure understanding (CSU) and problem-solving time (PST) to measure student performance. After the completion of the course, all students were tested and scored on the scale of [0,10] concerning the selected programming parameters. These scores were compared with the scores obtained at pre-test.

We found a remarkable hike in programming parameter for all three groups. Table VI presents the performance hike results concerning selected programming parameters for all three groups.

From Table VI we can easily see that concerning TP, IN and LO highest hike is observed by MPG group which is {25%, 27%, 29%} followed by LPG and MPG groups which is {17%, 20%, 21%} and {13%, 17%, 20%}, respectively.

Table VI

We also observed that PST is reduced by 24%, 13%, 11% for MPG, LPG and HPG groups, respectively. The CG hike observed is 30%, 28%, 20% concerning HPG, MPG and LPG respectively. The CSU shows 18%, 33%, 18% hike concerning HPG, MPG and LPG groups.

Apart from this, we asked students to comment concerning the Hindi-CNL-Coder desktop app. Most students gave powerful positive comments. They claimed that this app could enhance their programming capability and programming skills effectively. They loved the concept of analogy based LBI. They also asked to design similar app for other native languages of India.

Few students claimed that this way of migrating from Hindi-CNL code towards the C language code is easy and enjoyable. They also personally told us that they could understand linking concepts easily just by using this application. Many students asked us to configure the application for Java and Python. They suggested us to launch the online version of this application. They also suggested us to find new editing methods for native Indian languages.

Intelligent Tutoring Systems (ITS) and Massive Open Online Courses (MOOC) help online educators for teaching programing language courses. They follow learning by doing approach to teach programming. As these systems help in teaching standard programming languages, so learning problems mentioned above persists for NEL and ESL learners. The designed application can be tuned concerning learners native languages to teach them the core concept of programming. Then they can easily be migrated towards the standard languages. So online educators can use tuned versions of our application and integrate it with their online education system. This integration allows NEL and ESL learners to use our app as pre-requisite as well as concept understanding aid for learning programming.

The proposed application is light weighted, and its mobile version can change the learning/coding trend for online learners. We can also model block-based or flowchart-based programming paradigms in this app to make learning programming fun. Such integration of different programming paradigms helps in better visualization of programming concepts to the NEL and ESL learners.


Although the application is very successful for naive/beginner NEL and ESL students, still it suffers from two significant problems. The first problem is the Hindi text editing problem. In India, English keyboards are used, so for NEL and ESL students typing become a problematic issue even if we make keys with Hindi alphabets. In reality, Hindi typing is problematic. All students want us to design better Hindi typing or input mechanism. The Hindi-CNL palette provided with the app helps students significantly. However, still, we have to find new ways for Hindi typing. The second problem is with the errors produced by the compiling program. Since all errors/exceptions thrown by Java engine are in English and we only mapped a few important errors/exceptions in Hindi, so in case of non-mapped errors/exceptions system display them in English. To solve this issue, we have to design a complete error mapping system.


This research focuses on architectural issues concerning the Hindi-CNL-Coder desktop application. The paper started by discussing the problems that NEL and ESL users face while learning to code. Then it discusses issues like program syntax, structure, keywords, rules and others, which make coding a frustrating task for beginner level NEL and ESL learners. Then concepts concerning controlled natural languages and their use to teach programming courses to beginner level NEL and ESL students were discussed. With proper references, we presented essential properties concerning CNL’s and their application in learning foreign languages unambiguously. We discussed the use of CNL properties for teaching courses concerning programming.

Knowing the fact that one can teach English-CNL to students using the Hindi-CNL, the research extended the concept of Hindi-CNL to learn to code in the Hindi language followed by migration step towards the standard programming languages like C, C++, Java, Python and others. The complete learning approach is termed as analogy based LBI.

This research also discusses the design-related technical issues concerning the Hindi-CNL engine, because no standard Hindi-CNL engine is present in the market. So this paper presents in detail the fabrication process of the template-based Hindi-CNL engine.

Then this research focuses on the reference architecture of the app. This architecture helps software designers to design similar applications for other native languages. This paper further showed the internal components of the app, namely Hindi-CNL engine, Execution engine and User interface engine while presenting the reference architecture.

Further, this paper explains the complete working of the app in detail. In working the complete flow of control is explained with the help of a diagram. Then the paper discusses usefulness and benefits related to Hindi-CNL-Coder desktop application. To highlight the benefits we presented the performance hike results for 80 students who used this application for learning coding in C programming language. We also listed their feedbacks to show usefulness and benefits of this application. Then finally, we listed two significant issues faced by students while using this application. The suggestions given by students concerning the issues present in the app will be considered in the next design iteration of the application.

We strongly believe that the development of such systems and applications helps NEL and ESL beginner level students to learn to code productively.


[1] B.S. Bloom, M.D. Engelhart, E.J. Furst, W.H. Hill, and D.R. Krathwohl, Taxonomy of educational objectives: The classification of educational goals: Handbook I: Cognitive domain, New York, USA, David McKay Company, 1956.

[2] C. Dennis and J.O. Mitterer, Introduction to Psychology: Gateways to Mind and Behavior with Concept Maps and Reviews, in Learning, Wadsworth Publishing, 2008.

[3] A. Bandura, Social learning theory, Englewood Cliffs, NJ, Prentice Hall, 1977.

[4] A. Bandura, Social Foundations of Thought and Action: A Social Cognitive Theory, Englewood Cliffs, NJ: Prentice-Hall, 1986.

[5] A. Bandura, “Toward a Psychology of Human Agency,” Perspectives on Psychological Science, vol. 1, no. 2, pp. 164–180, 2006, DOI: 10.1111/j.1745-6916.2006.00011.x. PMID 26151469.

[6] C.C. Benight and A. Bandura, “Social cognitive theory of posttraumatic recovery: The role of perceived self-efficacy,” Behaviour Research and Therapy, vol. 42, no. 10, pp. 1129–1148, DOI: 10.1016/j.brat.2003.08.008. PMID 15350854

[7] N. Webb, Alignment of science and mathematics standards and assessments in four states (Research Monograph No. 18), Washington, D.C.: CCSSO, 1999.

[8] N. Webb, Criteria for alignment of expectations and assessments on mathematics and science education (Research Monograph Number 6), Washington, D.C.: CCSSO, 1997.

[9] N. Webb, “Depth-of-Knowledge Levels for four content areas”, March 28, 2002, unpublished.

[10] Florida Department of Education, Depth of Knowledge Questions. Available online: https://www.cpalms.org/textonly.aspx?ContentID=23&UrlPath=/page23.aspx

[11] K. Hess, B.S. Jones, D. Carlock, and J.R. Walkup, Cognitive Rigor: Blending the strengths of Bloom’s Taxonomy and Webb’s Depth-of-Knowledge to enhance classroom-level processes. [Technical Report]. Retrieved from ERIC database. (ED517804), 2009.

[12] [12]Hess’ Cognitive Rigor Matrix and Curricular Examples: Applying Webb’s Depth-of-Knowledge Levels to Bloom’s Cognitive Process Dimensions – English Language Arts, https://www.nciea.org/sites/default/files/publications/CRM_ELA_KH11.pdf., 2009.

[13] [13]National Center for the Improvement of Educational Assessment. [Online]. Available: https://www.nciea.org/.

[14] J. Dewey, The Philosophy of John Dewey, John J. McDermott, Ed., University of Chicago Press, 1981.

[15] The Essential Dewey: Volumes 1 and 2, Larry Hickman and Thomas Alexander, Ed., Indiana University Press, 1998.

[16] P. McAndrew and E. Scanlon, “Open learning at a distance: lessons for struggling MOOCs,” Science, vol. 342, no. 6165, pp. 1450–1451, 2013.

[17] S. Murthy and J. Krishnan, M. Warriem, S. Sahasrabudhe, S. Iyer, “LCM: A Model for Planning, Designing and Conducting Learner-Centric MOOCs,” in IEEE Tenth International Conference on Technology for Education (T4E), 2018, pp. 73-76.

[18] H. Yu, C. Miao, C. Leung, and T.J. White, “Towards AI-powered personalization in MOOC learning,” npj Science of Learning, vol. 2, no. 1, pp. 1-5, 2017.

[19] A. Vescan, “Does learning by doing have a positive impact on teaching model checking?” in Proceedings of the 1st ACM SIGSOFT International Workshop on Education through Advanced Software Engineering and Artificial Intelligence (EASEAI-2019), Association for Computing Machinery, New York, NY, USA, 2019, pp. 27–34

[20] L. Anido, M. Llamas, and M. J. Fernandez, “Internet-based learning by doing,” in IEEE Transactions on Education, vol. 44, no. 2, p. 18, May 2001, DOI: 10.1109/13.925839

[21] E. Hansen, “The role of interactive video technology in higher education: Case study and proposed framework,” Education Technology, vol. 30, no. 9, 1990, pp 13-21.

[22] T. Roszak, The Cult of Information: The Folklore of Computers and the True Art of Thinking, Pantheon Books, New York, 1986.

[23] J. Wainer and E. C. Xavier, “A Controlled Experiment on Python vs C for an Introductory Programming Course: Students’ Outcomes,” ACM Trans. Computer Education, vol. 18, no. 3, pp. 1-16, 2018,DOI: 10.1145/3152894

[24] [24] D. Weintrop and U. Wilensky, “Comparing Block-Based and Text-Based Programming in High School Computer Science Classrooms,” ACM Trans. Computer Education, vol. 18, no. 1, pp. 1-25, 2017, DOI: 10.1145/3089799

[25] S. Srivastava and Prabhakar T. V., “Tradeoffs between Classical Conditioning, Learning by Imitation and Learning by Doing based on Lecture Architecture,” in Proceedings of the 8th International Conference on Information and Education Technology (ICIET 2020). Association for Computing Machinery, New York, NY, USA, 2020, pp. 58–62. DOI: 10.1145/3395245.3396426

[26] S. Srivastava and Prabhakar T. V., “Correlations and Tradeoffs Between Courses and Cognitive Skills,” in Pan-Commonwealth Forum-2019, 2019.

[27] T. Kuhn, P.E. Barbano, M. L. Nagy, and M. Krauthammer, “Broadening the scope of nanopublications,” in Proceedings of ESWC 2013, 2013, pp. 487–501. Springer.

[28] S. Williams, R. Power, and A. Third, “How Easy Is It to Learn a Controlled Natural Language for Building a Knowledge Base?” in Controlled Natural Language (CNL 2014), Lecture Notes in Computer Science, vol. 8625, Davis B., Kaljurand K., Kuhn T., Ed., Springer, Cham, 2014, pp. 20-32

[29] P.B. Feuto Njonko, S. Cardey, P. Greenfield, and W. El Abed, “RuleCNL: A Controlled Natural Language for Business Rule Specifications,” in Controlled Natural Language (CNL 2014), Lecture Notes in Computer Science, vol. 8625, Davis B., Kaljurand K., Kuhn T., Ed., Springer, Cham, 2014, pp. 66-77.
[30] J.Z. Sukkarieh, “Mind your language! Controlled language for inference purposes,” in Proceedings of EAMT-CLAW03, Dublin City University, 2003, pp. 160–169.

[31] OMG (Object Management Group), Semantics of Business Vocabulary and Business Rules (SBVR), v1.0, 2008. [Online]. Available: http://www.omg.org/spec/SBVR/1.0/PDF.

[32] N.B. Harrison and P. Avgeriou, “Leveraging Architecture Patterns to Satisfy Quality Attributes,” in Software Architecture (ECSA 2007), Lecture Notes in Computer Science, vol. 4758, F. Oquendo, Ed., Springer, Berlin, Heidelberg, 2007, pp. 263-270.

[33] L. Borrmann and F.N. Paulisch, “Software Architecture at Siemens: The challenges, our approaches, and some open issues,” in Software Architecture. WICSA 1999. IFIP — The International Federation for Information Processing, vol. 12, P. Donohoe, Ed., Springer, Boston, MA, 1999, pp. 529-543.

[34] J.K. Mandal, S. Mukhopadhyay, P. Dutta, and K. Dasgupta, “Special issue on software solutions for contemporary applications,” Innovations in Systems and Software Engineering, vol. 16, no. 1, 2020, DOI: 10.1007/s11334-020-00359-2

[35] Z. Liu, Y. Hu, and L. Cai, “Software Quality Testing Model for Mobile Application,” in Mobile Web Information Systems. MobiWIS 2014, Lecture Notes in Computer Science, vol. 8640, I. Awan, M. Younas, X. Franch, C. Quer, Ed., Springer, Cham, 2014, pp. 192-204, DOI: 10.1007/978-3-319-10359-4_16

[36] H. Nuccini, A. Di Francesco, and P. Esposito, “Software Testing of Mobile Applications: Challenges and Future Research Directions,” in the 7th International Workshop on Automation of Software Test, IEEE Press, New Jersey, 2012, pp. 29-35.

[37] T. Takala, M. Katara, and J. Harty, “Experiences of System-Level Model-Based GUI Testing of an Android Application,” in the 4th IEEE International Conference on Software Testing, Verification and Validation, IEEE Press, New York, 2011, pp. 377–386.

[38] G.J. Myers, The Art of Software Testing, John Wiley & Sons, Inc., New Jersey, 2004.


Siddharth Srivastava

Siddharth Srivastava

is a PhD research scholar in the department of computer science and engineering at Indian Institute of Technology, Kanpur, India. He is currently working in the field of software architecture. He loves to develop applications for improving Indian education sector using software architecture and artificial intelligence. Before joining the PhD program, he was working as Lecturer at Central Institute of Plastics Engineering and Technology, Lucknow, India. He is having more than ten years of teaching experience.

Umesh Chandra Jaiswal

Umesh Chandra Jaiswal

is working as Professor in the department of computer science and engineering, Madan Mohan Malaviya University of Technology, Gorakhpur, India. He is interested in the field of Natural Language Processing, Algorithms and Machine Learning.

Shalini Lamba

Shalini Lamba

is Head of Department of Computer Science in National PG College Lucknow, India. She is also the Placement Coordinator of her college. She is an active member in the Board of Studies and Academic Council. She has interests in the field of Data Mining, Data Analytics besides software development. She has more than twenty years of teaching experience.

Akiyuki Minamide

Prabhakar T.V.

is interested in building system and still feels excited about science and technology. He worked in multiple areas like Databases, Logic Programming, User Interface Design, Internet Technologies, Software Architecture, Knowledge Modeling, Indian Language Technologies. He worked with CMC R&D, Satyam Computer Services and have been a consultant to a large number of IT organizations and e-governance initiatives. He is currently working as Professor in the department of computer science and engineering, Indian Institute of Technology, Kanpur, India.