A tool to help students to develop programming skills - CiteSeerX

11 downloads 108507 Views 384KB Size Report
Abstract: Computer programming learning is difficult and requires hard work from students. ... To program, novice student must acquire some basic knowledge as variables .... ProGuide has a list of possible solutions for each problem. ... introductory programming courses”, In Proceedings of the 5th International Conference ...
International Conference on Computer Systems and Technologies - CompSysTech’07

A tool to help students to develop programming skills Cristiana Areias, António Mendes Abstract: Computer programming learning is difficult and requires hard work from students. They need to do many exercises and create many programs to improve their programming competences. In this paper we present ProGuide, a dialogue based tool to support weaker students to create basic programs. In ProGuide students are motivated and guided through a dialogue, where the tool puts questions to help students reach the problem solution. Keywords: algorithmic learning, problem-solving techniques, educational technology, programming teaching and learning

INTRODUCTION Programming learning is recognized as a complex activity by a large number of students. To program, novice student must acquire some basic knowledge as variables and data type’s concepts, I/O, control structures, and so on. Although this knowledge is transmitted by teachers, many novice students can’t use them when asked to solve a programming exercise. In literature [1,2] we can find several reasons that contribute to learning difficulties, like the programming language syntax, student motivation level, mathematic and science background, and so on, but as Spohrer and Soloway [3] we believe that the real problem is “putting all pieces together” composing and coordinating components of a program. Like Boada et al. [4] we believe that students learn better if they have an active behavior, opposed to the passive behavior we can find frequently in traditional classrooms. In programming this means that the most important activity for students is creating their own programs. In other words, programming is the best way to learn how to program. However, this approach demands much effort and persistence and many students look for easier ways, like asking the solution to some colleague. During the years several types of tools and approaches have been proposed to support programming teaching and learning. Micro worlds, like the Karel Robot [5,6,7] and Alice [8,9], try to introduce basic programming constructs through a familiar environment, where it is possible to use such constructs to control movements and other behaviors of some familiar entity (like a robot). Controlled development environments have also been proposed, so that students can develop programming skills in environments less complex than professional tools. THETHIS [10], X-Compiler [11], DrScheme [12] and BlueJ[13,14] are examples of such tools. Animation/simulation educational tools, such as Interactive Data Structure Visualization [15], the Programming Education System Based on Program Animation[16], SICAS [17], EROSI [18], JAWAA [19], JHAVÉ [20], Jeliot 2000 [21], OOPAnim [22] and Raptor[23], try to help students to better understand programs through the utilization of graphical representations. Another know approach are tools like Lisp Tutor [24], C-Tutor [25], DISCOVER [26], and ELM-ART [27], that use artificial intelligence techniques to promote individualized learning. We believe that many of those tools can be very useful during initial programming learning, especially for students that after some initial teacher support can progress in their learning, and develop autonomy in their work. However, many students show deeper difficulties and need a stronger support to solve basic problems. In those cases common educational tools usually fail because they rely in the student’s ability to create initial solutions to the proposed problems. Students that can’t create those initial solutions need a different kind of support. That is the reason why we developed ProGuide. In this paper we present ProGuide, an educational environment designed to support students in problem solving activities, particularly those who aren’t able to propose initial solutions to common programming problems, and those that work better under a stronger supervision. - IV.20-1 -

International Conference on Computer Systems and Technologies - CompSysTech’07

PROGUIDE ENVIRONMENT Programming is essentially a problem solving activity and ProGuide allows students to create solutions for existing problems. The environment assists and guides students explicitly putting questions that students should make when they start solving a problem: • Which variables are known and unknown in the problem? • Which data can be obtained from the problem description? • Which data must be received from the user? • What must be calculated or executed? • What must be presented? • Which instructions must be inserted in each step? ProGuide interface is divided in tree main sections as presented in figure 1: one that presents the problem statement (top left side), other with the editor/simulator (right side) for algorithm design using a flowchart representation, and finally other section for the text based communication (left bottom side).

Figure 1 – ProGuide Environment The editor/simulator is an iconic tool where students can insert the different elements necessary for a particular flowchart construction. The available elements are input/output, attribution, repetition and selection. As the intention is to help novice students in the initial study phase, we think those elements are enough to solve many common problems. After selecting an exercise, from the small collection available in ProGuide, the communication with the student is established and ProGuide presents the first question about the problem to solve. In any moment students can stop communication ant try to solve the exercise alone. Many educators would agree that the most effective form of teaching is through oneto-one interactions with students [28]. So, it is not surprising that an effective way to teach programming is to give students support in their reasoning and immediate feedback on the programs they create. That is also ProGuide main objective. We decided to use a subset of natural language to establish communication with the student, since we believe that other possible options would difficult communication at this early learning stage. Natural language processing is complex and difficult. However, to reach our objectives we need only a small subset of the Portuguese language. There is no need to support very complicated statements.

- IV.20-2 -

International Conference on Computer Systems and Technologies - CompSysTech’07

During the interaction, students may have different behaviors. She/he can answer the questions, correctly or not, or she/he may simply do nothing. If ProGuide detects that the answer is not the expected, or is not in the context, or there is no answer, then it presents a hint or another question to encourage students to proceed with the solution. In any moment students can simulate their solution through flowchart animation. They can see if the solution works as expected and, if necessary correct and improve it. The animation can be done in step-by-step mode or quickly, and can be stopped or paused whenever the student wants. During the simulation, students can also observe the algorithm output and the variable values, as presented in Figure 2.

Figure 2 – Algorithm simulation UTILIZATION EXAMPLES The greater of two numbers exercise is a very basic problem common in initial programming learning. It is also available in ProGuide. To create this problem solution, students must conclude that they need to insert two input elements, to enter the numbers, a selection element to determine which one them is bigger, and an output element to present the result. Before inserting the input elements, the student must declare the variables. If she/he forgets, Proguide will ask the variables names and declare them. If the student wants she/he can read a small text explaining what are variables and why they have to be declared as presented in figure 3.

Figure 3 – Help about variables

- IV.20-3 -

International Conference on Computer Systems and Technologies - CompSysTech’07

During the interaction with ProGuide the student must insert the necessary structures in the flowchart to solve the problem. ProGuide follows student actions and if the student tries to use structures that do not make sense (for example a repetition in bigger of two numbers problem), or the element inserted is not correct, ProGuide presents a suitable message and the flowchart highlighted, as we can see in figure 4.

Figure 4 – Error in the flowchart We believe that students can also learn from examples. In this problem students have to use the selection structure. If ProGuide detects that a student has difficulties understanding or using this structure, it can suggest that the student analyses an example that uses this kind of structure. The student can read the description, but also simulate the example and see how selection works in a concrete example.

Figure 5 – Concrete example with selection structure ProGuide has a list of possible solutions for each problem. If it detects that the student solution is possible (although maybe not the best), it suggests the student simulates her/his solution and gives some values as test data, so that students do not test

- IV.20-4 -

International Conference on Computer Systems and Technologies - CompSysTech’07

only with some values, but also with values that may cause errors if the program is not properly created. Another problem available in ProGuide asks the student to create a program that calculates the average of N values. It is also a common problem when students learn concepts like repetition structures. The initial dialogue in that exercise tries to verify if the student knows how to compute the average of a set of numbers. If the reply is affirmative, then the dialogue continues, otherwise an explanation about how to compute an average (but not how to program it) is presented. The need to use repetitions can cause difficulties to some students. In this situation ProGuide tries to take students to conclude that a repetition is necessary to solve this problem. To do that it puts some questions and commentaries, such as “Imagine that the user wants to compute the average of 5 numbers. To read those numbers, how many input elements should exist in the flowchart?”, “But now, imagine the user wants to compute the average of 12 numbers. The program would need 12 input elements.”, “And if we don’t previously know how many numbers the user wants? If we only know that during program execution?”. Like in the variable case the student can also read a description and examples that use repetition structures as presented in figure 6.

Figure 6 - Help about repetitions CONCLUSIONS AND FUTURE WORK ProGuide is an educational tool to support weaker student in problem solving activities. It encourages students to answer questions that may help her/him to reach a solution. The main idea is to support the student autonomous work, helping them to create a solution to common programming problems. Although possible it is currently difficult to create new problems in ProGuide, because it is necessary to give a large amount of information to guide the student and it must be done in XML format. In that context we plan to design a user friendly tool to create new exercises. However, we believe that in initial learning stage the basic problems that already exist in the environment are enough. ProGuide was not yet fully evaluated with students. That will be done in the next academic year. However the small tests already done make us believe that the environment can facilitate learning and increase student motivation. REFERENCES [1] Pillay, N., “Developing intelligent programming tutors for novice programmers”, ACM SIGCSE Bulletin, Vol. 35, Nº2, pp. 78-82, 2003.

- IV.20-5 -

International Conference on Computer Systems and Technologies - CompSysTech’07

[2] Pillay, N. and Jugoo, V., “An Investigation into Student characteristics Affecting Novice Programming Performance”, ACM SIGCSE Bulletin, Vol. 37, Nº4, pp.107-110, 2005. [3] Spohrer, J. C. and Soloway, E., “Putting it all together is hard for novice programmers”, In Proceeding of the IEEE International Conference on Systems, Man, and Cybernetics, pp. 728-735 , 1985. [4] Boada, I., Soler, J., Prados, F., and Poch, J., “A teaching/learning support tool for introductory programming courses”, In Proceedings of the 5th International Conference on Information Technology Based Higher Education and Training, pp. 604-609, 2004. [5] Pattis, R. Karel the Robot: A Gentle introduction to the art of programming. John Wiley & Sons, 1981. [6] Bergin, J., Stehlik, M., Roberts, J., and Pattis, T. “Karel++: A Gentle Introduction to the Art of Object-Oriented Programming”, 1997. [7] Buck, D., and Stucki, D. J., “JKarelRobot: a case study in supporting levels of cognitive development in the computer science curriculum”, ACM SIGCSE Bulletin, Vol. 33, Nº1, pp. 16-20, 2001. [8] Cooper, S., Dann, W., and Pausch, R., “Alice: a 3-D tool for introductory programming concepts”. Journal of Computing in Small Colleges, Vol. 15, Nº 5, pp. 107116, 2000. [9] Kelleher, C., Cosgrove, D., Culyba, D., Forlines, C., Pratt, J., and Pausch, R., “Alice2: Programming without Syntax Errors. User Interface Software and Technology”, 2002. [10] Freund, S. N., and Roberts, E. S., “THETIS: An Ansi C programming environment designed for introductory use”, ACM SIGCSE Bulletin, Vol. 28, Nº 1, pp. 300304, 1996. [11] Evangelidis, G., Dagdilelis, V., Satratzemi, M., and Efopoulos, V., “X-Compiler: Yet Another Integrated Novice Programming Environment”, In Proceedings of the 2nd IEEE International Conference on Advanced Learning Technologies, pp. 166-169, 2001. [12] Findler, R. B., Clements, J., Flanagan, C., Flatt, M., Krishnamurthi, S., Steckler, P., and Felleisen, M. “DrScheme: A programming environment for Scheme”, Journal of Functional Programming, Vol. 12, Nº 2, pp. 159–182, 2002. [13] Kölling, M., Quig, B., Patterson, A., and Rosenberg, J., “The BlueJ system and its pedagogy”, Journal of Computer Science Education, Vol. 12, Nº4, pp. 249-268, 2003 [14] Van Haaster, K. and Hagan, D., ”Teaching and learning with BlueJ: an Evaluation of a Pedagogical Tool”, In Proceedings of the Information Science and Information Technology Education Joint Conference, pp. 455-470, 2004. [15] Jarc, D. J. and Feldman, M. B., “An empirical study of web-based algorithm animation courseware in an Ada data structure course”, In Proceedings of the Annual ACM SIGAda International Conference on Ada, pp. 68-74, 1998. [16] Miyadera, Y., Huang, N. and Yokoyama, S., “A programming language education system based on program animation”, In Proceedings of the Education Uses of Information and Communication Technologies World Computer Congress World Computer Congress, pp 258-261, 2000. [17] Gomes, A., and Mendes, A. J., “Suporte à aprendizagem da programação com o ambiente SICAS”, Actas do V Congresso Ibero-Americano de Informática Educativa, Viña del Mar, Chile, 2000. [18] George, C. E., “EROSI—Visualizing recursion and discovering new errors”, In Proceedings of the 31st SIGCSE Technical Symposium on Computer Science Education, pp. 305-309, 2000. [19] Rodger, S. H., “Using hands-on visualizations to teach computer science from beginning courses to advanced courses”, Second Program Visualization Workshop, pp. 103-112, 2002. - IV.20-6 -

International Conference on Computer Systems and Technologies - CompSysTech’07

[20] Naps, T. L., “JHAVÉ: Supporting algorithm visualization”, IEEE Computer Graphics and Applications, Vol. 25, Nº 5, pp. 49-55, 2005. [21] Levy, R. B., Ben-Ari, M. and Uronen, P. A., “The Jeliot 2000 program animation system”, Computers & Education, Vol.40 (1), pp. 15-21, 2003. [22] Esteves, M. and Mendes, A. J., “A Simulation Tool to Help Learning of Object Oriented Programming Basics”, In Proceedings of 34th ASEE / IEEE Frontiers in Education Conference, pp. F4C7-12, 2004. [23] Carlisle, M. C., Wilson, T., Humphries, J., Hadfield, S., “RAPTOR: A Visual Programming Environment for Teaching Algorithmic Problem Solving”, In Proceeding of the 36th SIGCSE Technical Symposium on Computer Science Education, pp. 176-180, 2005. [24] Anderson, J. and Reiser, B., “The LISP Tutor”, Byte, 10 (4), pp. 159-175. 1985 [25] Song, J. S., Hahn, S. H., Tak, K. Y. e Kim, J. H., “An intelligent tutoring system for introductory C language course”, Computers & Education, Vol. 28, Nº 2, pp.93-102, 1997. [26] Ramadhan, H. A., Deek, F., and Shihab, K., “Incorporating software visualization in the design of intelligent diagnosis systems for user programming”, Artificial Intelligence Review, Vol. 16, Nº 1, pp. 61-84, 2001. [27] Weber, G. and Brusilovsky, P., “ELM-ART: An adaptive versatile system for web-based instruction”, International Journal of Artificial Intelligence in Education, Vol. 12, pp. 351-384, 2001. [28] Hash, E. and Zachary, J., “Automated Feedback on Programs Means Students Need Less Help From Teachers! ”, In Proceeding of the SIGCSE’01 Technical Symposium on Computer Science Education, pp. 565-60, 2001. ABOUT THE AUTHORS Assist. Cristiana Areias, BSc, Department of Informatics Engineering and Systems, Polytechnic Institute of Coimbra and CISUC - Department of Informatics Engineering, University of Coimbra, Phone: +351 239 790 350, Е-mail: [email protected]. Assist. Prof. António Mendes, PhD, CISUC - Department of Informatics Engineering, University of Coimbra, Phone: +351 239 790000, Е-mail: [email protected].

- IV.20-7 -