Collaborative Learning Tool Applying to C Programming Language 179 the effectiveness of collaborative learning [4, 5 and 6]. During the collaborative learn- ing process, all teammates will benefit from each other [7]. The approach to education that is more suitable to the educational environment through group collaborative learning. In this paper, we introduce the system architecture which we have devel- oped, that include audio and text information communication to support co-operation and teamwork, and it has program co-editor interface [8]. The rest of this paper is organized as follows: Section 2 presents related work about our research. Section 3 introduces the main research of the system architecture implementation. Section 4 we will discuss with the difference of other collaborative software and our tool. Section 5 concludes this paper and discusses the future works. 2 Related Work In this section, we are going to introduce the related work about this paper. First, we will present the theoretical background about collaborative learning. Collaboration defined "working together to complete the shared goals" [9]. Collaborative learning allows students to share their knowledge and information each other within the prob- lem-solving process [10]. Second, we present the ways of teaching / learning C pro- gramming language. At last, we will talk about the theoretical foundations of VoIP, the technology we use in our system. 2.1 Collaborative Learning Studies have shown that collaborative learning procedures have proved to be more ef- fective than traditional instructional methods for student's learning and academic achievement process. It also improves participants’ satisfaction with the learning [4, 11]. Learning is sharing, and more shared that is more learned. It is even supposed that stu- dents are learning as much from each other as from teaching material of course or from the teacher in the class. In America, the studies have also presented that students who usually use the collaborative learning procedures in class, they have more interaction with each other, and they are more satisfied with their learning experiences. Besides, group-oriented collaborative learning, reflection and connection enhance learning. Collaborative activities are one way of learning by allowing individuals to exer- cise, verify and improve their mentality through questioning, discussing and sharing information during the problem-solving process [4]. And then, collaborative learning has an obvious potential to improve critical thinking, creative thinking, elaborative thinking, social communication, and social skills (leadership, decision-making, trust- building, conflict-management, etc) [6, 12]. 2.2 Teach / Learn C programming Language C programming Language is a general-purpose, structured, procedural and imperative computer high-level programming language. It developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. Although C was exploited in last three decades, it is also one of the most important and popular programming language at this time [1]. In practice, Students need to know how to [13]: 180 W C. Chang and K C. Chen (1) Discover and understand the problem (2) Work toward a solution (3) Rework the solution into code (4) Enter the code into the computer (5) Debug syntax errors (6) Test and debug logic errors (7) Verify that the problem has been solved Through these seven steps, students can learn logical thinking and how to solve the problem of C programming language. Besides these steps, students have to learn the syntax and structures of C programming language. Finally, students will accomplish more tasks and improve problem-solving skills when they master these steps. 2.3 Voice over Internet Protocol Voice over Internet Protocol (VoIP) is a protocol optimized for the transmission of voice through the Internet or other packet switched in networks [14]. And VoIP is a technology that allows users to make telephone calls using a broadband Internet con- nection to take the place of an analog phone line. Through the low cost feature of the internet usage, VoIP can decrease the telephone call costs comparing with the tradi- tional PSTN (public-switched telephone network) system [15]. Furthermore, it can also mend distorted audio, echo and loss of the voice data on the process of transmis- sion [16]. Since the VoIP technology was developed, many VoIP protocols have been proposed. H.323 is considered as the first generation VoIP protocol [17]. In June 1996, ITU (Internet Telecommunications Union) began to institute relevant communication protocols to H.323 [18], it can operate Video Telephony in Package- Based networks and use on the Multimedia Conferencing, etc. The main architecture of H.323 includes H.323 Terminal, Gateway, Gatekeeper, and MCU. The purpose is that can make VoIP to transmit the voice data through RTP (Real-time Transport Pro- tocol) and incorporate the PSTN, Integrated Services Digital Network (ISDN) and Broadband ISDN (B-ISDN) in the telecommunication system [19]. Gateway is a channel that connected with other communication systems, and it is responsible for the exchange of the network package and conversion of circuit exchange. Gateway provides the functions about Signaling Translation and Decode. Gatekeeper is the ad- ministrator in H.323 system, and its main function includes Address Translation, Admission Control and Bandwidth Management. Besides, it also manages the H.323 system of Terminal, Gateway and MCU. MCU offers the function of multi- communication, and it consists of MC (Multipoint Controller) and MP (Multipoint Processor); MC manages about the process control, MP is responsible for decode, en- code and mix of audio or video [20]. In next section, we are going to present our system architecture of the collaborative learning tool, and introduce the major function about the tool. 3 System Architecture Our system architecture is composed of voice server and master server (see Fig. 1). Considering the collaborative learning efficiency, we designed three users a team which includes one team leader and two partners to use our tool. Collaborative Learning Tool Applying to C Programming Language 181 Fig. 1. System architecture Master server mainly controls the learner information, such as learner portfolio and information transmission. We list the functions as follows: (1) User Login/Logout: When user login the system which will record the IP ad- dress and learner information. After the user logout, the system will close the editing window and terminate the connection. (2) Login User: We designed three people in a study group which is consisted of group leader and two group members. Because the main purpose of our system is to assist the group's work and cooperate together, to finish their homework and task. (3) Record and Communicate the Message in the Chat Room: Users can discuss how to program or what kind of function should be used in the chat room. Mas- ter server will broadcast the instant message and record the message in a text file which will be stored in system record file permanently. (4) Dispatch the Program Editor Sequence Automatically: Master server dispatches the users with login order, the user has his/her own editing interface. (5) User Synchronous Programming: User can edit the program in each editing window; the user program will be broadcasted to the team member after a pe- riod of time. (6) Record the User Program Progress Automatically: The system will record user’s program progress automatically in a period of time, in case that the users disconnect abnormally to lose the information. (7) Connecting to Voice Server: Connecting and recording the voice server IP ad- dress to support voice communication service simultaneously. 182 W C. Chang and K C. Chen A voice server supplies user communicates with voice and records the discussion. Voice server applied VoIP (Voice over IP) technique to connect all the users in real time. Voice communication is divided into group talk and private talk. Group talk furnishes users voice talk with other team members. Private talk supplies one to one discussion to solve the program writing problem. In Fig. 2, this is our tool interface, the description are in the following: (1) Editor: The upper side has three columns for three users to edit the program. The left window is designed for team leader, the other two windows for the team members. The system will distribute the user interface automatically. In Fig. 1, team leader can arrange the sub-tasks for the other two teammates. For program writing, there will be one main program and other functions. Team leader handles the main program, the other two teammates focus on functions writing. The system will record user’s program progress automatically in a pe- riod of time, in case that the users disconnect abnormally to lose the informa- tion. During the process of program writing, the user can't edit other members’ editor besides his own editor. (2) Chat Room: Chat room plays a role to supply a text typing mode for uses who like to copy the code and communicate the programming problems. In pro- gramming course, some users have problems using the commands and vari- ables. Some problems are suitable for text mode and some are proper to talk with voice directly. The similar situations occur in MSN communication in our daily life. Sometimes, people just like talk or type text when discussion. There- fore, we provide voice and text tools for communication. Fig. 2. Editing program collaborative writing example Collaborative Learning Tool Applying to C Programming Language 183 Fig. 3. Editing program by imitating other user’s code example (3) Menu Bar: There are some functions in our menu bar. First function is [File] which is supported for users to import or save the program file. Users can exit the system by [Exit].When users completed the program, they can push the [Compile] to compile the code. [Voice Dialog] assists the users to talk with voice. For example, users can choose group talk, private talk (one-to-one talk) or suspense talk. If the users have questions using the tool, they can get the re- lated information in [help] function bar. Users can program cooperatively with the other two teammates or learn how to write a simple program by imitating other codes. Fig. 3 shows the cooperative pro- gramming. All the team has to write the program. Team leader is responsible of main program. The second user is in charge of user_request( ) and print_menu(). Third user writes draw_triangle( ) and draw_rectangle( ). They can discuss and teach each other. Fig. 3 demonstrates the imitating programming example. Team leader completed a simple program. The other two users follow and learn how to code. 4 Discussion There have some similar collaborative tools developed in last 5 years, like NetBeans Collaboration Project, it’s a module named “Developer Collaboration” [21]. This module emphasizes that users can collaborate and share their work with Sun engi- neers or their team members simultaneously. And users also can communicate easily with each other and real time file sharing. Users can enter a message and then send it to the other participants in the conversation. And users can enter messages in the chat input pane in several formats: Plain text, Java, HTML, XML. Furthermore, user can . questioning, discussing and sharing information during the problem-solving process [4]. And then, collaborative learning has an obvious potential to improve critical thinking, creative thinking,. dispatches the users with login order, the user has his/her own editing interface. (5) User Synchronous Programming: User can edit the program in each editing window; the user program will. writing example Collaborative Learning Tool Applying to C Programming Language 183 Fig. 3. Editing program by imitating other user’s code example (3) Menu Bar: There are some functions in