• No results found

Chapter 5 STL Tutor Architecture and Development

5.3 Domain Knowledge Module

i) Topics and Sub-Topics

ii) Program Specifications iii) Tutorials and Sub-Tutorials

C++ STL Tutor models the problem specifications based on prerequisite sub-skills. The prerequisite sub-skills are organized into topics and sub-topics, which is a 2-level hierarchical structure. Tutorials include the program specifications and are decomposed

into sub-tutorials to provide a bottom up view of the given problem. Authoring tools incorporated allow different knowledge domain to be designed for the tests and tutorials. Therefore, the programming language is not fixed on C++ but can be customized to Java, for example, and subsequently changed to Java Standard Template Library (JSTL).

5.3.1 Topic and Sub-Topic Repository

Tutors maintain the repository by creating new topics and sub-topics, editing and deleting existing ones. One topic has many sub-topics associated to it. This 2-level simple structure allows the tutors to group the related sub-topics together for easy reference. The structure also reduces the complexity of the mapping between the topics and Tutoring Module which includes pre-test, tutorial and post-test. Table 5.1 lists three main topics and their respective sub-topics. These are typical topics taught in the first year of a programming module in a Computing degree course. The remaining list is in Appendix B.

Table 5.1 Partial List of Topics and Sub-Topics

NO TOPIC SUB-TOPICS

1 Data Data Type

Variable Constant

2 Expression Assignment Expression

Conditional Expression 3 Input-Output Output Input 4 Selection if…else else if… switch...case

5.3.2 Program Specifications Repository

The most common method to learn a programming language is through problem solving. Butz et al (2006) acknowledged that problem solving is an integral part of computer programming. In the C++ STL Tutor, students learn to apply the STL through drill and practice. The tutoring sessions are carried out after a pre-test evaluation of the student’s prerequisites sub-skills. Each tutorial question includes a program specification for the student to solve. The program specification gives a top view of the program. Below is an example of a program specification for the STL vector domain:

“Declare a vector of 10 integers called myVector. Read 10 integers from the keyboard to populate myVector and then output them.”

The program specification above is designed to be clear and concise. It starts with the need for declaration, then listing out the tasks required. Tutors will have the flexibility to author the specifications based on the needs of their students. With the authoring tool, tutors are encouraged to be creative in setting of the specifications to enhance learning. The specifications can be maintained and updated when the need arises.

5.3.3 Tutorials and Sub-Tutorials Repository

The tutorial session demonstrates that the program specification can be divided into sub-tutorials, forming the bottom up view of a program. Each tutorial is linked to a set of required set of prerequisites and acquired skills which are the topics and sub- topics. To illustrate this, the same example as in Section 5.3.2 is used. Table 5.2 lists the prerequisites and acquired skills for the given specification above:

Table 5.2 An Example of a Program Specification with Prerequisites and Acquired Skills

Program Specification

Declare a vector of 10 integers called myVector. Read 10 integers from the keyboard to populate myVector and then output them.

Prerequisites Skills Acquired Skills

TOPICS SUB-TOPICS TOPICS SUB-TOPICS

Class Template Creating Instance STL vector Parametized Declaration Constructor Declaration –

Parametized

STL vector Populate

Fundamental Input STL vector Output

Fundamental Output

Iteration for

Array Range

Array Assignment

The following table 5.3 shows the sub-tutorials that can be designed for the tutorial above. Three sub-tutorials are created with the prerequisites and acquired skills associated to each. Both skills are organized into topics and sub-topics.

Table 5.3 An Example of Sub-Tutorial Problems NO SUB-TUTORIAL PREREQUISITE (TOPIC – SUB-TOPIC) ACQUIRED SKILL (TOPIC – SUB-TOPIC) 1 Write the statement

to create a vector called myVector that can store up to 10 integers. Class Template – Creating Instance Constructor – Declaration parametized STL vector - Declaration 2 Read 10 integers from the keyboard and populate the vector. Fundamental – input Iteration – for Array – range Array – assignment STL vector – Populate

3 Output the contents of the vector. Fundamental – output Iteration – for Array – range Array – assignment STL vector - Output

The purpose of the sub-tutorials is to reduce the complexity of the given problem through decomposition. It demonstrates to students that a problem can be decomposed into sub-problems and each problem can be solved independently. An ethnographic field study to identify problem solving skills used in Software Design (Arvanitis, et al, 2001) showed that students tend to avoid attempting a conceptual design after they received a problem specification. Most students applied a build- and-fix strategy and had difficulties verifying their programs. A further problem was discovered where students struggled to differentiate between syntactic and semantic errors. The findings concluded that it is beneficial to integrate problem solving design strategies into programming knowledge. The combination of the top down and bottom up views, which is the program specification and the sub-tutorials respectively, provided by the C++ STL ITS seeks to satisfy this requirement. Therefore, software design skills are established and reinforced into the

programming knowledge through the tutorials. The skills gained are desirable and transferable to more advanced or complex programming problems.