ࡱ> U@Sbjbj 9T BBBTYYYvZ[B\(\\\\kkk$.RÒ9B{rek"k{r{rÒ\\k%{%{%{{r<\B\%{{r%{ %{E{5h|Bq\\ @adYuv!|0B2y2 q2Bqkml%{n$pfkkkÒÒd2:zX: Meaningfull learning in the Tutoring System for Programming Tonci Dadic, Slavomir Stankov, Marko Rosic Faculty of Natural Science, Mathematics and Education, University of Split Teslina 12, 21000 Split {tonci.dadic|slavomir.stankov|marko.rosic}@pmfst.hr Abstract. Tutoring systems for programming helps students to understand features of target programming language, and develops their general problem solving skill. Our system guides novices in learning syntax and semantics of programming language, problem decomposition, program design and testing. The notional machine defined by programming language and its verbal description of instruction actions helps students to understand semantics of instructions. Advancement through the course material controlled by computer teacher supports connection of new concepts to the present students knowledge. Keywords. Programming teaching, Intelligent Tutoring Systems, TEx-Sys model. 1. Introduction Intelligent tutoring systems for programming are an interesting area of artificial intelligence application. Since early seventies, tens of systems have been designed and hundreds of papers published, related to procedural [1][2], functional [3], logical and object languages [4], including problem analyzes, program specification, planning [5] and coding. In addition, researchers focused to adaptive navigation [6], visualization of program execution and intelligent debugging [7]. Regardless significant research effort in field, there are very few intelligent tutoring systems or integrated learning environments used regularly for teaching programming in a real classroom, and most of them can not be used outside the university where they were created [8]. Design of environment supporting efficient programming learning is a challenging domain with many open issues to explore [9]. In this paper we present our system for programming learning of procedural languages, focusing on notional machine defined by programming language and advancement through the course material. We disscuss student's evaluation and our experience of the system usage in classroom teaching. 2. Background and related work Cognitive psychology finds an important role of meaningful learning in new information acquisition. The activation of present knowledge from learners long term memory helps assimilation of new knowledge. Mayer [10] elaborates how concrete, familiar models improve understanding of new technical information. He argues that verbal description of statements execution helps novices to understand programming language features. Since 2006, when we presented prototype model of our system [11], it matured due experimental use in classroom. Our system controls students advancement through lessons, providing connection of new information with concepts they have learnt. We have introduced model of notional machine defined by programming language as a glass box that executes instructions and describes their actions by natural language. LISP Tutor [3] diagnoses students knowledge applying model trace, keeping him on path of model solution always. PROUST [1] performs late semantic analyzes of programs compiled by traditional Pascal compiler. Our system distinguishes students performing well and those with difficulties. The first are allowed to experiment with program due late semantic analyzes, while later get help in problem decomposition immediately as they are faced with trouble. 3. Our system Tutoring systems for programming helps students to understand features of target programming language, and develops their general problem solving skill. Our system guides novices in learning syntax and semantics of programming language, problem decomposition, program design and testing. It is capable to teach different procedural languages. New language is introduced by grammar in Bachus-Naur form, while knowledge base is common, language independent, and system dynamically accommodate course material to specific language, subject of each course. 3.1. Client - server architecture The system employs server client architecture based on web services. Central knowledge base, implemented by semantic network holds concepts definitions and links. Courseware database is central as well, implemented by relational schema holding users, available courses, curriculums and links referring to concepts of knowledge base. The architecture supports usage of client processing power in real time analyzes of students program as well as centralized knowledge and tools configuration settings.  SHAPE \* MERGEFORMAT  Figure 1. System client-server architecture 3.2. System modules Computer expert tries to understand students program, locate buggy code and diagnose the bug generators in students thinking model. Expert analyzes students source code and predicts possible paths to final solution in each point of program. Understanding of students program is based on two artificial intelligence techniques: Hartmans decomposition [12] and Constraint satisfaction problem [13]. Computer teacher guides student from one lesson to other, and chooses programming tasks appropriate to his current knowledge, skill and learning ability. It observes students work, interrupting if syntax or semantic error is found. Student model identifies current status of students knowledge, as well as his progress in concepts adoption over variety of tasks. In order to follow students progress, the layout approach, traditionally used to diagnose students knowledge is extended by sequences of error and help indicators. System updates student model database with data collected during his activity in tasks solving. Tools module contains structured source code editor, compiler and abstract machine implementing model of programming language. Abstract machine supports program execution step by step, shows variables and describes actions of each instruction. 3.3. Teaching scenario We have based the teaching scenario on facts that there exist distinguished categories of programming knowledge, and individual learners ability. Programming requires language syntax knowledge, understanding of single instruction semantics, program design and testing skills. Students might differ widely not only in knowledge they bring to course, but how they deal with difficulties. Perkins at all [14] identifies two different learning styles: stoppers and movers. Stoppers tend to disengage from programming task at the first sign of trouble, whereas movers will begin tinkering with a partial solution. Perkins finds that stoppers can become movers if they are encouraged to decompose problem and focus on simpler sub-problem only. 3.3.1. Teaching syntax System watches source code editor character by character as student types. Delimiters (i.e. blank, new line) trigger syntax analyzes of piece of code taken from the start of program to the current cursor position. (We have designed syntax analyzer to parse code in two modes: on fly and on demand. On fly parsing doesnt report errors due incomplete code expected after cursor.) Whenever syntax error is found, student is interrupted with a message, for example: Syntax error found at row 3, column 12. If student fixes error on his own, without future system help, it is assumed like typing error. While student is not able to get error free instruction, system provides three level help: Found expected: expected tokens instead of found one are shown. Lesson launching: the lesson explaining syntax of statement is displayed. Detailed help: solution to prune error out is shown. System deals with syntax errors immediately, in computer coach manner, keeping students focus on single problem at a time. Student is stopped at concept he doesnt know and has to learn. In opposite, error description delayed to compile time, could lead to accumulation of many errors and confuse novices. 3.3.2. Teaching statement semantics Students understanding of single statement semantics is assessed by three separated techniques: Reformulation: source code of program is presented, asking student to do small modifications, for example change output messages or number of repeated iterations. Transformation: student has to rewrite given code using different statements. For example, student can transform repetition implemented by if and unwanted go-to to while, if knows semantics of all these instructions. Mental simulation of program execution: student is asked to predict the sequence of specific variable values or program output. Dialog is used to get students answer and inform him about his findings. In case of incorrect answer, the new attempt with system directions is allowed. When correct answer is not achieved within three attempts, student may use programming language model, run program step by step and follow variable values. 3.3.3. Teaching program design skills Design skills are the group of techniques used to combine language features in order to form a program. These include knowledge of stereotypic patterns of code that perform complex functions such as sorting. Programmers decompose the problem into component parts and plan how to combine them into solution as a whole. Our system helps to design program comparing student's and expert's solutions of given task. Expert's solution is organized in a tree of goals and plans, where root represents the program and leafs are plans. The goal is tuple of unique identifier, hint, description and list of statements plan. The process of program recognition maps students plan to experts plan. Success of mapping means that student has accomplished the sub-goal. Unsuccessful mapping is assumed as a semantic error of specific sub-goal. We apply different approaches in recognition of stoppers and movers programs. Stoppers program (syntactically correct) is analyzed immediately as he changes code. We call it early semantic analyzes. Delay of students action or semantic error interrupts his work and arises three level help: Hint system gives direction how to realize the goal. Description the goal is explained in details. Plan code that accomplishes the goal is visible. The system performs semantic analyzes of movers program in the moment he calls compiler to translate program. We call it late semantic analyzes. Program understanding is performed by application of constraint satisfaction problem. Broken constraints diagnose semantic errors. Early semantic analyzes wakes up stoppers and keeps them on the path of correct solution. With late semantic analyzes movers get opportunity to experiment with program finding correct solution on their own. 3.4. Notional machine DuBoulay at all [15] identifies two basic approaches in learning to interact with a computer: the black box and the glass box. In the black box approach one puts in commands and data and gets the answer as if by magic. The mechanisms behind cover are hidden from the user, and the user is likely to assume that computers are just not understandable. Such users might memorize algorithms that solve one or other task, but are not able to understand what goes on inside the black box. In glass box approach the user attempts to understand what is going on inside the computer running program. These actions can be described and understood. The important properties of model making hidden operations of language clearer to novices are: right level of details, simplicity and visibility. Instructions of a program interact with memory locations variables. Conditionals check variable values to make decision if some other instructions have to be executed, assignment changes variable values etc. Thus we implemented programming language model with properties: Student may trace program running instructions step by step. Segment of memory allocated to variables is displayed. It is easy to change value of any variable and check effect on current step. The system verbally describes actions of each instruction. Example of an assignment depicts our model. Table 1. Program model Memory LocationVariablesNameValue100A1101B0ProgramA := 1; B := A + 2; Write( A, B); Table 1 shows current memory segment allocated to variables A and B, as well as program segment running step by step. The system describes next instruction to be executed as follows: Read value 1 from memory location 100, that is variable A. Value 1 of location remains unchanged. Read constant 2 from program text. Perform addition of values 1 and 2. Save result 3 to memory location 101, that is variable B. Previous value 0 of location is destroyed and can not be recovered ever. Move next instruction pointer to row 3. Our model is adaptable to the current status of students knowledge. For example, if he knows scope and life time of variable, model shows appropriate information as well. 3.5. Advancement through the course A course material is organized in chapters, sections and lessons. Each lesson explains a number of concepts. The course structure is represented by a tree, where course is mapped to root and lessons are leafs. IntroductionWrite LineAssignmentVariableExpressionAssignRead Line Figure 2. Sample of course structure The learning process is identified by current lesson student deals with it, and his activity, that is textbook reading or task solving. Student starts with reading and clicks on the button when wishes to advance to the next stage of the course. The system responds displaying text of next lesson or switching students activity to task solving. Switch to the task solving triggers system process that selects task-candidates appropriate to the current status of students knowledge. We describe each task by a set of concepts implemented by that task. The task is applicable candidate if all are true: The task implements at least one concept explained in current lesson. The task doesnt implement any concept that hasnt been explained in current or previous lessons. The task implements at least one concept that student doesnt know by the student model. We say, student knows specific concept if has solved several tasks implementing that concept. Algorithm: Select Tasks( T, L, E, K ) returns C: list of tasks T: set of tasks associated to the course Pi: not empty set of concepts implemented by ith task. L: set of concepts explained in current lesson E: set of concepts explained in previous lessons K: set of concepts student knows : empty set O := L ( E; C := ; foreach( Task Ti in T ) { if(Pi ( L= and Pi \ O=  and Pi \ K !=  ) { C.Append( Ti ); } } sort list ( C, by tasks complexity ); return C ; The computer teacher chooses task by task from list of task candidates and asks student to solve them. Tasking starts from the middle of list sorted by level of task complexity. If students ability solving task is high, next task for him is picked from the middle of upper half of list. Task pointer is turned to the simplest task at top of list if students performance is low. When an error in students program is found system interrupts his work as we have explained in section 3.3.1. Computer teacher analyzes current status of students knowledge and makes decision about his readiness to advance to the next lesson. As long as he is not found ready, some more tasks related to explained matter are presented. Some students bring certain programming knowledge to the course, and want to skip simpler lessons. They can select lesson of their interest from the menu of course content. Advancement is allowed if student model proves that student knows all required concepts. Required-concepts-set contains all concepts explained in lessons that precede selected one. If student hasnt proved knowledge of some concepts yet, computer teacher will find a list of tasks implementing those concepts. Students that are not able to solve these tasks may not advance to lesson they selected. Advancement through the course implemented by our system insures that student possess knowledge that can be activated in order to assimilate new information. 4. The system evaluation During winter semester 2007/08 we have used our system in course of programming at Faculty of Natural Science, Mathematics and Education. Three groups of 29 students in total have learnt programming concepts using QBasic. They followed teaching scenario described in section 3.3. 16 (55%) of our students hadnt got any programming experience before course, while 13 (45%) had learnt programming in high school from to 4 years. The later students had in average 3 semesters of programming experience in Pascal, C/C++ or QBasic. At the end of course students filled up a questionnaire based on 5 point Likerts scale concerning their motivation to learn programming, impression about system and it usefulness in learning. Table 3. The system usefulness in learning PointAnswers%1. Very Harmful00.02. Harmful00.03. Cant decide310.34. Useful 413.85. Very Useful2275.9 We conclude that our system has achieved its main goal of usefulness in learning as 26 (89.7%) students found that system helped them to acquire the programming knowledge. Students were asked to grade at 7 point Likerts scale how much each of components helped them in learning. (Point 1 is very harmful, 4 is neutral and 7 very useful.) Table 4. Grade of usefulness ItemMedianMeanRangeNotional Model76.24..7Advancement55.01..7Syntax help76.24..7Semantic help76.76..7 Some students found advancement is very harmful, because they would prefer to select lessons on their own and ignore planed sequence of concept adoption. As we expected, 20 students graded semantics help very useful and 9 useful. They find very helpful to get directions in problem solving. 5. Conclusion Our tutoring system for learning programming helps novices to understand what goes on behind cover of programming language. Notional machine provides program execution step by step, describes instruction actions and makes variable values accessible. Controlling advancement through the course material it encourages students to learn systematically, from simpler to more demanding lessons. Switching from declarative knowledge presentation to task generation, the system provides application of explained programming concepts in problem solving. The system evaluation in real classroom argues its helpfulness in programming learning. 6. Acknowledgements This work has been carried out within projects 177-0361994-1996 Design and evaluation of intelligent e-learning systems, funded by the Ministry of Science and Technology of the Republic of Croatia. 7. References [1] Johnson W. L, Soloway E. PROUST: Knowledge based program understanding. Proceedings of the 7th international Conference on Software Engineering; Orlando; 1984. p. 369-380. [2] Ueno, H. Integrated intelligent programming environment for learning programming. IEICE Transactions on information and systems; 1994. p. 68-79. [3] Anderson, J. R, Reiser B. The LISP Tutor. Byte 10; 1985. [4] Chee Y. S, Tan J. T, Chan T. Applying cognitive apprenticeship to the teaching of Smalltalk in a computer based learning environment. Proceedings of 7th International PEG Conference; 1993. p. 569-588. [5] Lane H. C, VanLehn K. Coached Program Planning: Dialogue-Based Support for Novice Program Design. Proceedings of the Thirty-Fourth Technical Symposium on Computer Science Education (SIGCSE); 2003. p. 148-152. [6] Brusilovsky P. L. Intelligent Tutor: Environment and Manual for Introductory Programming. Educational and Training Technology International; 1992. p. 26-34. [7] Eisenberg M. B, Johnson, D. Learning and Teaching Information Technology Computer Skills in Context. US Federal government; 2003.  HYPERLINK "http://www.libraryinstruction.com/" http://www.libraryinstruction.com/ info-tech.html. [8] Brusilovsky P. Intelligent Learning Environments for Programming, Proceedings of AI-ED'95, 7th World Conference on Artifcial Intelligence in Education. Washington, DC; 1995. [9] Guzdial M. Programming Environments for Novices. In Computer Science Education Research, edited by Sally Fincher and Marian Petre. Springer-Verlag; 2004. [10] Mayer R. E. The Psychology of How Novices Learn Computer Programming. In Studying the Novice Programmer, Editors Soloway E, J. C. Spohrer, Lawrence Erlbaum Associates, Publishers; Hillsdale, New Jersey; 1989. p. 129. [11] Dadic T, Stankov S, Rosic M. Prototype Model of Tutoring System for Programming. Proceedings of ITI Conference; 2006. [12] Hartman J. Understanding natural programs using proper decomposition. In Proceedings of the International Conference on Software Engineering, Austin, Texas; 1991. p. 62-73. [13] Woods S. G, Quilici A. E, Yang Q. Constraint-Based Design Recovery for Software Reengineering: Theory and Experiments. Kluwer Academic Publishers, Norwell, Massachusetts; 1998. [14] Perkins D.N, Hancock C, Hobbs R, Martin F, Simmons R. Conditions of Learning in Novice Programmers. In Studying the Novice Programmer, Editors Soloway E, J. C. Spohrer, Lawrence Erlbaum Associates, Publishers; Hillsdale, New Jersey; 1989. p. 261. [15] DuBoulay B, OShea T, Monk J. The Black Box ,=>hi    + - k  & ' * > N Y [ ׿׿㟙{uuooioi hFCJ heCJ hnZCJhnZhnZCJ hBCJ hr-CJhr-hr-CJ h]bCJh]b5CJ\h9+mHsH h]bh9+h/l5h]b6hu~h]b6hch]b6h_Ph]b6 h]b6 hch]bh9+5CJ\mHsHh]bmH sH h]bh9+%=>i    [ \ 5TUtugd]b$a$gd]b`gd]bgd]b`gd]b$a$gd]b$a$gd]bR[ \ d e f | #Ut.6"+ 7Uadmqr˹|xttplplthb h]bCJho<h2_h$ mhOh`)h<hvSh.ahXhxh wYh]b h]b5h@h]bCJOJQJh]bCJOJQJ\mH sH #hsh]bCJOJQJ\mH sH h]b5CJOJQJ\h]b5CJOJQJ\ h]b5CJOJQJ\mH sH h]bCJOJQJ$&.#$%9:gdgah$a$gdgahgdgahgdx`gd$@$&&'v''('(((((((()***,,,,1,7,j,,,,1111707ееУУУеВВВВВЄ~xkh]b5OJQJ\^J h]bCJ h];CJh];CJOJQJmH sH  huh]bCJOJQJmH sH #hc@,h]b6CJOJQJmH sH #h{5h]b6CJOJQJmH sH  h]b5h]bh]bCJOJQJmH sH h]b6CJOJQJmH sH #hbh]b6CJOJQJmH sH '(****,7/n///01111345,66$ & F ^`a$gd]b $`a$gd]b $$a$gd]b & F ^gd]b$a$gd]b`gd]b`gd]b6677/70777@7J7 $$Ifa$gdQd$a$gd]b $`a$gd]b$ & F <^`a$gd]b07J7L7W7l7t7}77Q:u:I;X;Y;];^;_;`;j;l;m;n;o;q;r;v;w;x;y;;;;;;;;;;;;;;;;;;;;;;;ź}h]bCJaJhZh]bCJ aJ hZh]bCJOJQJ^JaJhZh]bCJaJh]bCJOJQJ^JaJhZh]bCJaJh]bCJOJQJmH sH  h]b5-hh]b5B*CJfH phq h]bCJh,h]b6CJ1J7K7L7Q7W7wkk $$Ifa$gdQd $$Ifa$gdQd|kd$$Ifl40x` t0644 la W7X7\7^7`7pddd $$Ifa$gdQdkd$$Ifl4F x  t06    44 la `7a7e7g7i7qeee $$Ifa$gdQdkd~$$IflF x t06    44 la i7j7k7qe $$Ifa$gdQdkd$$IflF x t06    44 la k7l7t7u7}7&gkd$$Iflx t0644 la  $IfgdQdgkd$$Iflx t0644 la }777778P8888|9jjjj$ & F >^`a$gd]b $`a$gd]bgkdT$$Iflx t0644 la  $IfgdQd |99P:Q:u:v:H;I;V;W;X; $IfgdQd`gd]b$T^T`a$gd]b $`a$gd]b$ & F ><^`a$gd]b X;Y;Z;[;\;];sjjjj $IfgdQdkd$$IflFh 8 t0    44 la];^;_;`;k;l;TKKKK $IfgdQdkdm$$Ifl\h8 OT8 t044 lapl;m;n;o;p;q;QHHHH $IfgdQdkd$$Ifl4q\h8 `O`T`8 t044 lapq;r;s;t;u;v;QHHHH $IfgdQdkd$$Ifl4p\h8  O T 8 t044 lapv;w;x;y;;;TKKKK $IfgdQdkd$$Ifl\h8 OT8 t044 lap;;;;;;QHHHH $IfgdQdkd$$Ifl4q\h8 `O`T`8 t044 lap;;;;;;;;QHHHHHH $IfgdQdkd $$Ifl4p\h8  O T 8 t044 lap;;;$ $IfgdQdkd $$Iflֈh8 Ohh t044 lap(;;;;;; $IfgdQd;;kd $$Ifl4qֈh8 ``O`hh`` t044 lap<;;;;;;; $IfgdQd;;kdC$$Ifl4pֈh8   O hh   t044 lap<;;;;;;; $IfgdQd;;kd$$Iflֈh8 Ohh t044 lap<;;;;;;; $IfgdQd;;kdy$$Ifl4qֈh8 ``O`hh`` t044 lap<;;;;;;; $IfgdQd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<%<????ܟr`#hN6h]b5OJQJaJmH sH #h4h]b6CJOJQJmH sH hgCJOJQJmH sH h]b5OJQJ\^Jh]bCJOJQJmH sH h]bCJaJhZh]bCJaJ hZh]bCJOJQJ^JaJhZh]bCJaJh]bCJOJQJ^JaJhZh]bCJ aJ hZh]bCJaJ";;kd$$Ifl4pֈh8   O hh   t044 lap<;;;;;;; $IfgdQd;;kd$$Iflֈh8 Ohh t044 lap<;;;;;;; $IfgdQd;;kdS$$Ifl4qֈh8 ``O`hh`` t044 lap<;;;;;;; $IfgdQd;;kd$$Ifl4pֈh8   O hh   t044 lap<;;;;;;;;;Kkd$$Ifl\h8 OT8 t044 lap $IfgdQd;;;;;;;Hkd$$Ifl4q\h8 `O`T`8 t044 lap $IfgdQd;;;;;;QHHHH $IfgdQdkd$$Ifl4p\h8  O T 8 t044 lap;;<%<&<=>RIAIII$a$gd]b`gd]bkd$$Iflp\h8 OT8 t044 lap>>(?????@H@@@@AB2BBBrBvBBBBCCPC`gd]b ^`gd]b`gd]b & F ^`gd]b???@ @@@I@J@v@x@@@@@BB(B*B0BBBBPB`BdBvBxB|BBBweS#hh]bH*OJQJaJmH sH #hh]b5OJQJaJmH sH #hN6h]bH*OJQJaJmH sH  jh]bOJQJaJmH sH  hh]bOJQJaJmH sH #hN6h]bH*OJQJaJmH sH #hU9h]bH*OJQJaJmH sH #hN6h]b5OJQJaJmH sH h]bOJQJaJmH sH  hN6h]bOJQJaJmH sH BBBBBBBBBBBBBBBBBBBBCCPC\CdCfC\I]IvIIIνΫνΈvΈΫΈhb]hOhpzCJOJQJmH sH  h]b5 h]bCJh]bCJOJQJmH sH #hN6h]bH*OJQJaJmH sH  hN6h]bOJQJaJmH sH #hh]bH*OJQJaJmH sH #hh]b5OJQJaJmH sH  hh]bOJQJaJmH sH h]bOJQJaJmH sH & jhh]bOJQJaJmH sH h]bH*OJQJaJmH sH PCfChCEFGH\I]IvIwIKKLLLwLxL~LLL $$Ifa$gdQd$a$gd]b$a$gd]b`gd]bIIJJJJKKKKKLLLwLxL}L~LLLLӷӛp\K\?hTh]b6CJaJ!h[6CJOJQJaJmH sH 'hTh]b6CJOJQJaJmH sH !h@x>6CJOJQJaJmH sH h-h]bCJOJQJh]b5OJQJ\^JhqCJOJQJmH sH hgCJOJQJmH sH h&MCJOJQJmH sH h([^CJOJQJmH sH h]bCJOJQJmH sH hpzCJOJQJmH sH  hpzhpzCJOJQJmH sH LLLLLqh\\ $$Ifa$gd,c $Ifgd,ckd$$IflF y t06    44 lalLLLLLLLLLLLLLLLL5MRMMMMMMMNNNN9N¯ҖvdUdh66CJOJQJmH sH #h{h#6CJOJQJmH sH #h{h{6CJOJQJmH sH hgCJOJQJmH sH h]bCJOJQJmH sH hTh]bCJaJ$hTh]bCJOJQJaJmH sH h@x>CJOJQJaJmH sH hTh jCJaJ$hTh jCJOJQJaJmH sH h jCJOJQJaJmH sH LLLLLqh\\ $$Ifa$gd,c $Ifgd,ckd]$$IflF y t06    44 lalLLLLLqh\\ $$Ifa$gdQd $IfgdQdkd$$IflF y t06    44 lalLLLLLqh\\ $$Ifa$gd,c $Ifgd,ckdQ$$IflF y t06    44 lalLLLLLqh\\ $$Ifa$gd,c $Ifgd,ckd$$IflF y t06    44 lalLLLMINJNgNhNmNtNyNqhhhh`hWWW $IfgdQd$a$gd]b`gd]bkdE $$IflF y t06    44 lal 9NFNGNHNINJNgNhNNNNNNNNɻs`M`:'$hThPICJOJQJaJmH sH $hTh 'CJOJQJaJmH sH $hThFIsCJOJQJaJmH sH $hThRCJOJQJaJmH sH hThf6CJaJ'hThR6CJOJQJaJmH sH hf:h]bCJOJQJh]b5OJQJ\^JhaCJOJQJmH sH h]bCJOJQJmH sH #h{h{6CJOJQJmH sH #h{h]b6CJOJQJmH sH #h{hO6CJOJQJmH sH yNNNNNNNWKKK $$Ifa$gdLkd $$Ifl\  t0,44 la  $IfgdQdNNNNNNNNNNNNNNNNNNNNNNNNNNNpp]J$hThCJOJQJaJmH sH $hTh GCJOJQJaJmH sH $hTh>LCJOJQJaJmH sH $hThLCJOJQJaJmH sH $hTh)zCJOJQJaJmH sH $hTh /CJOJQJaJmH sH hThfCJaJ$hTh 'CJOJQJaJmH sH $hTh>CJOJQJaJmH sH $hThRCJOJQJaJmH sH NNNNNN`WKKK $$Ifa$gdL $IfgdQdkd>!$$Ifl\  t0,44 la NNNNNN`WKKK $$Ifa$gdL $IfgdQdkd!$$Ifl\  t0,44 la NNNNNN`WKKK $$Ifa$gdL $IfgdQdkd<"$$Ifl\  t0,44 la NNNNNNNNN OOOPOZO~OOO PPPPPPPQQ3Qʷݬtfa]YUQUMUIhcah@h:h)hAnh]b h]b5hJWHCJOJQJmH sH haCJOJQJmH sH h>CJOJQJmH sH hCJOJQJmH sH h]bCJOJQJmH sH hThfCJaJ$hThCJOJQJaJmH sH $hTh1GCJOJQJaJmH sH $hThRCJOJQJaJmH sH hJWHCJOJQJaJmH sH NNN P PPP;RR`WWWOJJJgd]b$a$gd]b`gd]bkd"$$Ifl\  t0,44 la 3QJQTQQR:R;R?RFRQRRRdRRRRRRRRRRR"SnSpSSSSSSSSSSSSTTT$T(T/T0T1T5TTTTTζ砗{h]Ph]bCJ h;~{h]bhc-h]bCJH*aJhc-h]bCJ h]bCJhZch]b6CJ\mH sH hH6CJ\mH sH hHCJ\mH sH hZch]bCJ\mH sH h]bCJ\mH sH  h]b5hW}h]bhcahe|hb0RRRRpSqSSS1TTUUVFW3XXYaZZ[D\@]gd]bgd]b$s^`sa$gd]b`gd]b$a$gd]bgd]bTTTUUmUUUUUUUUVVFWJWWWWWWWWW!X"X#X3X7XXXXX\Y|YYYYqZ|Z}ZZZZZZZZػذؚؓؓ،،،؈؈؁z hVhh]b hh]bh, hh]b h(ph]bhyh]b>*B*phh1 h]b0Jj:#h]bUjh]bU hyh]b h#fh]b h>Xh]bh]bhe-h]bCJH*aJhVhh]bCJ h]bCJh]Ph]bCJ0ZZZZ[[[ \q] ʵyh hemhgahCJOJQJ^JaJ(h5FhgahCJOJQJ^JaJmHsHhgah h$hgahCJOJQJ^JaJhgahCJOJQJ^JaJhxb(hPKhgahCJOJQJ^JaJmHsH"hgahCJOJQJ^JaJmHsHh,cjh,cUh]bh9+mH sH Uh]b hh]b(Inside the Glass Box. In Studying the Novice Programmer, Editors Soloway E, J. C. Spohrer, Lawrence Erlbaum Associates, Publishers; Hillsdale, New Jersey; 1989. p. 431.     Client Expert Module Teacher Module Tools Module Student Model User interface Global messages Server Web Services Objects cache Knowledge base #$12@$a$gdgah"#$012?@APQRSǶՌՈ}h]bh9+mH sH h9+(h>hgahCJOJQJ^JaJmHsH(h>hgahCJOJQJ^JaJmHsH h$hgahCJOJQJ^JaJhgahCJOJQJ^JaJhgah(hg9chgahCJOJQJ^JaJmHsH"hgahCJOJQJ^JaJmHsH @APQRSgd]bgdgahI 0&P 1h. A!"#$% P0 3 0&P 1h. A!"#$% = 0&P 1h:p]b. A!"#$% P T9 0&P 1h:pgah. A!"#$% T= 0&P 1h:p]b. A!"#$% P TDd!D  3 @@"?j$$If !vh55 #v#v :Vl4 t6+55 a $$If !vh555#v#v#v:Vl4 t6+555a $$If !vh555#v#v#v:Vl t6555/ a $$If !vh555#v#v#v:Vl t6555/ a h$$If !vh5#v:Vl t65/ /  a Z$$If !vh5#v:Vl t65/ a L$$If !vh5#v:Vl t65a $$If!vh5558#v#v#v8:Vl t5558/ / / / / / a $$If!vh55O5T58#v#vO#vT#v8:Vl t55O5T58/  / / /  / / / / / ap$$If!vh55O5T58#v#vO#vT#v8:Vl4q t+++55O5T58/ / / / /  /  / ap$$If!vh55O5T58#v#vO#vT#v8:Vl4p t+++55O5T58/ /  / / / / /  ap$$If!vh55O5T58#v#vO#vT#v8:Vl t55O5T58/ / /  / / / / / ap$$If!vh55O5T58#v#vO#vT#v8:Vl4q t+++55O5T58/ / / / /  /  / ap$$If!vh55O5T58#v#vO#vT#v8:Vl4p t+++55O5T58/ /  / / / / /  ap$$If!vh55O5h5h55#v#vO#vh#v#v:Vl t55O5h55/ / /  / / / /  / / / / / / ap($$If!vh55O5h5h55#v#vO#vh#v#v:Vl4q t+++++55O5h55/ / /  / / / / / /  /  / ap<$$If!vh55O5h5h55#v#vO#vh#v#v:Vl4p t+++++55O5h55/ / / /  / /  / / / / /  ap<$$If!vh55O5h5h55#v#vO#vh#v#v:Vl t55O5h55/ / /  / / / /  / / / / / ap<$$If!vh55O5h5h55#v#vO#vh#v#v:Vl4q t+++++55O5h55/ / /  / / / / / /  /  / ap<$$If!vh55O5h5h55#v#vO#vh#v#v:Vl4p t+++++55O5h55/ / / /  / /  / / / / /  ap<$$If!vh55O5h5h55#v#vO#vh#v#v:Vl t55O5h55/ / /  / / / /  / / / / / ap<$$If!vh55O5h5h55#v#vO#vh#v#v:Vl4q t+++++55O5h55/ / /  / / / / / /  /  / ap<$$If!vh55O5h5h55#v#vO#vh#v#v:Vl4p t+++++55O5h55/ / / / / / /  / / / /  ap< $$If!vh55O5T58#v#vO#vT#v8:Vl t55O5T58/ / /  / / / / / / ap$$If!vh55O5T58#v#vO#vT#v8:Vl4q t+++55O5T58/ / / / /  /  / ap $$If!vh55O5T58#v#vO#vT#v8:Vl4p t+++55O5T58/ /  / / / /  ap$$If!vh55O5T58#v#vO#vT#v8:Vlp t55O5T58/ / / / / / apx$$Ifl!vh555#v#v#v:Vl t6555alx$$Ifl!vh555#v#v#v:Vl t6555alx$$Ifl!vh555#v#v#v:Vl t6555alx$$Ifl!vh555#v#v#v:Vl t6555alx$$Ifl!vh555#v#v#v:Vl t6555alx$$Ifl!vh555#v#v#v:Vl t6555al}$$If !vh55$5$5#v#v$#v:Vl t,555a }$$If !vh55$5$5#v#v$#v:Vl t,555a }$$If !vh55$5$5#v#v$#v:Vl t,555a }$$If !vh55$5$5#v#v$#v:Vl t,555a }$$If !vh55$5$5#v#v$#v:Vl t,555a DyK #http://www.libraryinstruction.com/yK Fhttp://www.libraryinstruction.com/ @@@ NormalCJ_HaJmH sH tH P@P Heading 1$$@&^`a$5\DA@D Default Paragraph FontVi@V  Table Normal :V 44 la (k@(No List HB@H Body Text$a$CJOJQJmHsH4@4 Header  9r 4 @4 Footer  9r >@">  Footnote TextCJaJ@&1@ Footnote ReferenceH*>>@B> Title$a$5CJ\mHsH.OR. ai1  x aJVC@bV Body Text Indent$`a$ 6CJaJ6U@q6 Hyperlink >*B*ph<P@< Body Text 2$a$CJRR@R Body Text Indent 2$`a$CJ6Q@6 Body Text 35Z^@Z Normal (Web)dd[$\$OJPJQJ^JmH sH FV@F FollowedHyperlink >*B* phe@ HTML Preformatted7 2( Px 4 #\'*.25@9 CJOJPJQJ^JaJmH sH ZS@Z Body Text Indent 3$s^`sa$CJj@j ]b Table Grid7:V0'5DTem{T    '5DTem{  %TK=>i[\ 5TUtu &.#$%9:@45LM01HI@=v """"$7'n'''())))+,-,...////0/7/@/J/K/L/Q/W/X/\/^/`/a/e/g/i/j/k/l/t/u/}/////0P0000|11P2Q2u2v2H3I3V3W3X3Y3Z3[3\3]3^3_3`3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334%4&4566(777778H88889 99!999;9h9k9~999999;<=>\?]?v?w?AKBLBwBxB~BBBBBBBBBBBBBBBBBBBBBBBBBCIDJDgDhDmDtDyDDDDDDDDDDDDDDDDDDDDDDDD F FFF;HHHHHpIqIII1JJKKLFM3NNOaPPQDR@STTT T#T&T(T/T0T>T?TNTOT\T]TkTlT{T|TTTTTTTTTTTT00000000000000000000000000x00000000x0000@0x@0x000000000000000000 0 0 00000000000000 0 0 00 0 0x0x00x00x 0x 0x 0000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 00(0( 0( 0( 0( 0 0(0(0(00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0  0 0000x000 0 0 000008080808080808080808080808080000000000 0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @0 @0 @0 @0 00 0 0000 0 0 0 @0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00@0000@0@0x000H00000000x0H0H0x0H0H0 0H00H0H0@0@0@0@000 080000000000000000000000=>i[\ 5TUtu #9:5LM01HI@=v """"$7'n'''V3W3X3Z3[3\3]3_3`3k3l3n3o3p3q3s3t3u3v3x3y33333333333333333333333333333333333333333333333333333333333333333333333333333334%4&4779 99!999;9h9k9~999999;<=>\?]?v?w?ALBwBBBBBBBBBBBBBBBBBBBBBBBBCJDgDD F FFFHHII1JJKKLFM3NNOaPPQDR@STT;0@0;0DL"@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0;00 {00@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 0@ 0@ 0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 0@ 0@ 0@0P @0P @0P @0P @0P @0P @0P @0 @0 @0 @0 `0@ @0@ `0@ `0@ @0X @0X @0X @0X @0 @0 @0 @0 `08 @08 `08 `08 @0 @0 @0 @0 @0 @0 @0x @0x @0x @0x @0x @0x `0 `0 `0 @0 `0 `0 @0 @0 @0 @0 @0 @0 @0 @0 @0 @0 @0 @0 `0 `0 `0 @0 `0 `0 @0 @0 @0 @0 @0 @0 @0 @0 @0 @0 @0 @0 `0p `0p `0p @0p `0p `0p @0` @0` @0` @0` @0 @0 @0 @0 `0 @0 `0 `0 @0l @0h @0h @0h @0h {00{00@0{00{00{00{00{00{00{00{00{00{00{00{00{00{00{00{00{00{00{00{00 ;00 {00 {00 {00 {00{00{00{00 ;00 ;000 ;00 ;00 {00 ;00 {00 ;0 {00 {00;00 ;00 {00 {00;00 ;00 {00 {00 {00 {00 {00 {00{00{00{00{00;00D;00 ;00 {00 {00{00{00@0{00{00@0P@0P@0P@0P@0P@0P@0P@0P@0P{00{00 {00@0P {00 0া/ [ $07;?BIL9NNN3QTZS/2469R_`bdjlprtux(6J7W7`7i7k7}7|9X;];l;q;v;;;;;;;;;;;;;;;;;;;;;;;;>PCLLLLLLyNNNNNR@S03578:;<=>?@ABCDEFGHIJKLMNOPQSTUVWXYZ[\]^acefghikmnoqswyR1MM!NT_X8@" (     k( 3  s"*?`  c $X99? k(B  <D?"0@NNN?N[w@B B <D?"0@NNN?N[@B B 6D?"0@NNN?N[\@   0 ?"6@`NNN?N    <   ?"6@`NNN?N      <   ?"6@`NNN?N{     <   ?"6@`NNN?N#    <   ?"6@`NNN?N{ \,   <  ?"6@`NNN?N\#,   < ?"6@`NNN?N   < ?"6@`NNN?N{ #$   0?"6@`NNN?Nw '  <  ?"6@`NNN?N8 $   <   ?"6@`NNN?NT%    <   ?"6@`NNN?N$%  B  c $ ?"6@`NNN?N%xt  S  "`\$  B S  ?T!t $", %# ? !@̱!AT!BC%"D #EZIZIfIJJMMNNNPPCDIKST[chCDWYZ]#$.015MNS"$$))/./4%4u8x8!9(9m9u9AALBvBCCJDgDIIJJK KKKLL7NBNNNNNeOjOuO{OOP PPfPkPoPvPzPPQQ RRRRRRESMSSSSSTTTTTT T!T#T$T&T'T(T.TlTzTTTTTTTT<\ef 45S"/./4$47799 9999!9)9<9?9m9v99999LBvBJDfDI$JJJJJJKKK6LLM;MMMM2NNNNOOkOlOOOXPYP`PPP'QQ RCRR7S8S?SqSwSSTTTTTTTTT T!T#T$T&T'T(T.TlTzTTTTTTTT3333333333333333333333333333333333 #%:))--/u/I3&4N6677xBBBB!CsChDDDDDDDDDDTTTTTT T!T#T$T&T'T(T.T0T=T?TMTOT[T]TjTlTzT|TTTTTTTTTTTTTTTTT T!T#T$T&T'T(TT Tonci DadicmN"kljim,zE{txkA}Z &56~컰h ^`hH.h   ^ `hH.h  L ^ `LhH.h \\^\`hH.h ,,^,`hH.h L^`LhH.h ^`hH.h ^`hH.h lLl^l`LhH. ^`o(hH.^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHPP^P`POJQJo(hHo^`OJQJ^Jo(hHo  ^ `OJQJo(hH\ \ ^\ `OJQJo(hH,,^,`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoll^l`OJQJo(hHPP^P`POJQJo(hHo^`OJQJ^Jo(hHo  ^ `OJQJo(hH\ \ ^\ `OJQJo(hH,,^,`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoll^l`OJQJo(hHPP^P`POJQJo(hHo^`OJQJ^Jo(hHo  ^ `OJQJo(hH\ \ ^\ `OJQJo(hH,,^,`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoll^l`OJQJo(hHjimmN"k56~kA}E{JzFJzFJzFfe,c.axi,b]bg:q1G '}'(`)9+o<@x>>b@?oB GH>HJWHPIK&M6-TXT.X wYsoZV]T^([^RWaxbgah j$ mAnFIsFvw)zpZ{e|T}n.=LaNOW}qpznZB: /2_d]];eD,`fOQdF<>[)#x{TXI'vS_>Lr-ca6PDRL@g?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz|}~Root Entry F pmdData {;$1TableRWordDocument9SummaryInformation(DocumentSummaryInformation8CompObjj  FMicrosoft Word Document MSWordDocWord.Document.89q