Teaching Computer Programming as an Online-Internet Course Paul Cantonwine - cantonpf@muohio.edu Computer Science and Systems Analysis Department, Miami University 1601 Peck Blvd Hamilton, OH 45011 (513) 785-3225 Abstract Computer programming is a core skill for most computer science degrees and a skill that can result in immediate financial benefit to many students presently working in industry. Many of our non-traditional students take our programming courses to develop the programming skill in hopes of getting a better job rather than to earn a degree. This online-internet course was designed to meet the needs of both the traditional and non-traditional student. This paper focuses on the process I followed in developing and managing the online-internet course, what students liked and disliked about it, what I learned about administering an online-internet course, and ideas to incorporate in my next online-internet course. 1. Introduction I teach "Object-Oriented Programming" which is the second semester programming course in our Computer Science curriculum. This course is required for all Associate, Bachelor and Master degree students in our department. This course is also popular with non-degree seeking students who are taking the course to develop their programming skills in C++ with the hope of getting a better job. There are many online courses designed to teach programmers how to program in a specific language. This course, on the other hand, was designed to teach a person how to be a programmer. Since 1994 we have used C++ in our three semesters of programming and for the last few years we have used the text, C++ How To Program (Deitel 1998), for both the first and second semester courses. This text also has additional multimedia materials (Prentice Hall 1998) provided by the publisher that could benefit an online student. In the Spring of 2000 I started thinking about offering an online-internet version of "Object-Oriented Programming". In this version of the course the students would not meet with me in the classroom setting. They would cover the material on their own using the materials provided by the publisher and those that I developed for this purpose. They would follow a detailed schedule in completing quizzes, lab exercises, and assignments. I would be available to answer any questions that they might have either via email, phone, or in person during office hours. Blackboard, an online course management system, would be used to administer the course. Since I had been using the web in the classroom version of the course, I had already developed some PowerPoint presentations and labs that were available to the students over the web. I could, with minor changes, use much of this material in an online-internet version of the course. In the Spring of 2001 our department made a decision to start using Java as the programming language for our programming courses. I knew that a C++ version of "Object-Oriented Programming" would be short lived, but felt that providing the internet version would serve a number of students who had not yet completed the sequence in C++ or who were primarily interested in learning the C++ language for job enhancement. It would also be a great learning opportunity for me to discover the pros and cons of administering an online-internet course. 2. Course Design One of the things that I knew about an online-internet course was that students would require a great degree of self-direction because I could not exercise the same kind of direct control as I could in a face-to-face environment (Moore 2001). Since there would be no scheduled times for them to focus on the class, they would need the discipline to devote the time required to complete the course material. To help them focus I felt it important to require that students perform some specific task on a scheduled basis. By not attending a classroom session, students would miss the explanation of material given by the instructor and the questions asked by other students. To help solve this problem I decided to follow the textbook very closely, develop my PowerPoint presentations to be more interactive (Moore 2001) by asking lots of questions, and maintain a frequently asked questions (FAQ) section on the web site where students' questions could be posted. I followed the design steps presented in You Can Teach Online (Moore 2001) and organized the course into modules. Each module was organized in exactly the same way with similar expectations and would cover from one to two weeks of material. Each module consisted of the following sections: 1. Reading Assignment 2. Frequently Asked Questions 3. Instructional Materials 4. Labs 5. Quiz 6. Assignment Every module had associated with it a completion date. The students were expected to read the assignment, review the instructional materials, complete the labs, and take the quiz by this date. If they failed to do so, they would lose all of the points that they could have earned for completing the labs and the quiz. Twenty percent of their final grade was based on the labs and quizzes so they could still pass the course without completing them. The instructional materials consisted of PowerPoint presentations, sample programs, and explanations demonstrating the material covered in the module. The Custom Animation feature of PowerPoint was used extensively to make the PowerPoint presentation very interactive by presenting the students with a question and then after they had thought about it for a time showing them the answer. Hyperlinks were included so that lengthy program code could be reviewed within the presentation. Some presentations also included audio to help in the explanation of the more complex topics. The quizzes usually consisted of about ten questions and were administered online using the Blackboard assessment tool. The quizzes were automatically graded and the grade posted to the grade book without any effort on my part. Since there wasn't really any easy way to insure that the students took the quizzes closed book, I allowed them to use their books. I wanted them to read and become familiar with the material before they took the quiz though, so I used the timing feature of Blackboard and only allowed them ten minutes for the quiz. It was assumed that if they had not read the material, they would not be able to lookup all the answers in ten minutes. Most of the grades were either in the 8-10 range or below 5. A grade below 5 indicated to me that they had not read the material. Some labs gave the students a program that they would have to debug or change. Other labs required the students to explain what a specific program was doing. These exercises emphasized specific objectives of the module and were designed to help the students see examples of well-written programs with the hopes that they would emulate the approach in their own programs. The assignment associated with each module also had a due date that was normally one week after the completion date of the module. The assignment required the students to actually write and test a program that was usually built on the previous assignment. Programming is a skill and like any other skill it must be practiced. Thirty-five percent of the grade was based on the assignments. If the assignment was not turned in on time, there was a thirty percent automatic reduction in the grade. Once it was late it could be turned in at any time before the end of the semester for grading. Also programs that didn't work could be corrected and turned in at a later time and be treated as any late program receiving a thirty percent reduction in the grade. The points awarded for completing the quizzes, labs, and assignments on time were designed to motivate the students to follow the learning process that I had established. According to Brookhart's research good grading practices can improve students' motivation, focus students' effort, and increase students' achievement (Brookhart 1999). This was exactly my objective. The first module was an introduction module designed to help the students become familiar with the course policies and procedures. They were assigned to read the course syllabus and a document on the processes they would follow to copy files to my network drive. The quiz was designed to measure the students understanding of how I was going to administer the course and what I expected of them. The lab insured that the students were able to copy files to appropriate network folders. The assignment for this module was designed to help the students develop a plan when they would work on the course and required them to hand in a schedule of the times that they would dedicate to working on this course. Although not suggested in You Can Teach On-Line, I felt that it was important to emphasize and actually measure their understanding of the responsibilities of being an on-line student. 3. Course Management Since all the students who would be taking this course were local students, I decided that I would ask them to meet with me three times throughout the semester. The first time would be the first day of class where I would review the course objectives. The second was to take the midterm exam and the third was to take the final exam. The due dates on the modules and assignments were meant to help the students stay focused on the course and serve as a "contract" between the students and myself as suggested in You Can Teach Online (Moore 2001). In order to insure that the due dates were met without a lot of record keeping, I established a system of shared folders. Each student had a folder for each module and assignment set up on my network drive. They had read/write access to these folders. They were expected to put all the module labs in the module folders and their assignments in the assignment folders. When a due date passed I would run a simple batch file that would change access rights to the appropriate folder to read access only. Thus the students could no longer place their files in the folder. A late folder was also set up so that they could place any late work in it. In this way I could easily see what work was on time and what was late. My policy was that the act that really made an activity late was whether they could copy the file into the appropriate folder. I promised that I would never run the batch file before the actual due date; but if I failed to run it, the assignment would not be considered late as long as the folder was still available to be written into. My due dates were always at 12:00 midnight, but it usually wasn't until the next morning that I would run the batch file. I never had any student question whether an assignment was actually late. When it was late they knew it. The root folder for each student on my network drive was given the name of the students' network username. At our university the network username is the first six characters of their last name plus their first and middle initials. Inside this folder I created a folder for each module, each assignment, and one for late assignments. This is a lot of folders. If there were nine modules, I would be required to create twenty folders for each student. If there were six students in the class, 120 folders would have to be created. I did this using batch files. Following is the batch file I used to create the folders for a student having a username of Brunnejn: MD Q:\crc200\sp2002j\StudHAM\Brunnejn MD Q:\crc200\sp2002j\StudHAM\Brunnejn\Module0 ... MD Q:\crc200\sp2002j\StudHAM\Brunnejn\Assign0 ... F:\RIGHTS Q:\crc200\sp2002j\StudHAM\Brunnejn RWCFMAE /name=Brunnejn The last statement in the above batch file assigns read/write capability to the students' root folder. Thus all of the sub folders will also have read/write capability. Following is the batch file that I ran when Module1's completion date had arrived. It changed the students' access to the Module1 folder to read only for all the students in the class. F: RIGHTS Q:\crc200\sp2002j\StudHAM\spinelmr\Module1 RF /name=spinelmr RIGHTS Q:\crc200\sp2002j\StudHAM\stephejp\Module1 RF /name=stephejp RIGHTS Q:\crc200\sp2002j\StudHAM\whitesla\Module1 RF /name=whitesla RIGHTS Q:\crc200\sp2002j\StudHAM\Ballogaa\Module1 RF /name=ballogaa RIGHTS Q:\crc200\sp2002j\StudHAM\Brunnejn\Module1 RF /name=brunnejn RIGHTS Q:\crc200\sp2002j\StudHAM\dunnihdd\Module1 RF /name=dunnihdd I needed 18 batch files like this one. The drudgery of creating all of these batch files by hand convinced me of the need to automate the process so I created an Excel spreadsheet where I typed each students' network username, the name of the folders to create and then used the CONCATENATE function in Excel to create the DOS statements required for these batch files. For example if I have MD Q:\crc200\sp2002j\StudHAM\ stored in cell D1, Brunnejn stored in cell I1, and \Module1 stored in cell J1, the formula =CONCATENATE($D$1,$I$1,J1) would evaluate to MD Q:\crc200\sp2002j\StudHAM\Brunnejn\Module1. Copying this formula would create the statements for the first batch file above. I was then able to copy each of these statements into Notepad and save as a batch file. Using this method I was able to create all of the batch files in less than an hour and be confident that no mistakes were made. An alternate to my setting up these shared folders was to have the students drop their files in the Blackboard's drop box. This would have eliminated all the work I have just described, but it would require me to copy each file from the drop box into a folder for my testing, then delete the file from the drop box, and then copy my response to the student back into the drop box. I knew from previous experience that this was very time consuming. I liked the idea of having the students put the files exactly where I wanted them for my testing purposes. To make my shared folders approach as good as Blackboard's approach the students would have to be able to move the files to the shared folders using the web. At our university we have a web application in place that will allow access to our network drives. This solved the problem and would allow students to easily hand in their work via the web from home. 4. The Students Six students enrolled in this course. Two students dropped the course before completing the first module. Two of the students were traditional students who were taking the course to fulfill the programming requirement for the Computer Science degree. Both of these students completed the first 4 modules of the course and one actually took the mid-term exam before deciding to drop the course. They both were finding it difficult to find a time to meet with me for help on their assignments and decided that there would be an advantage for them to drop back and retake the first programming course in Java and then take "Object-Oriented Programming" in Java. Both students were passing the course at the time they dropped. One of the students was working on his Computer Science degree and also working in Network administration for a local company. Because of his time constraints and the level of maturity that he demonstrated, I felt he was a good candidate for an online course. He performed well for the first three modules, but then I noticed that he was doing the module quizzes, only some of the labs, and not the assignments. After checking with him he indicated that he had been sick for a couple of weeks and would catch up soon. This pattern continued though with an additional explanation that he had to spend a lot of extra time at work. By the end of the course he had not completed many of the labs and had not completed the last five assignments. His grade on the quizzes and tests was in the C range so I decided to give him an Incomplete in the course with the understanding that if he were to complete the assignments his grade would be changed from an F to a C The last student is my success story. She was an older student who had a Ph.D. in Pharmacology, was working in industry, and wanted to learn to program with the thought of changing her career direction. She had been in one of my previous classes and I knew she was a very hard worker even though she did not demonstrate a natural talent for programming. She did all of the labs and assignments. When she had a question she communicated with me via email and when she really got stuck she came to my office for face-to-face help. We met about six times throughout the semester. Through diligent effort on her part she was able to pass the course with an A. It reaffirmed in my mind the course design was effective if it was followed. 5. Students' Comments I asked the two students who dropped the course after the first 4 modules to give me feedback as to why they dropped and what their feelings about the course were. On the positive side they indicated that they thought the course was well organized and liked the fact that the tasks had due dates thus requiring them to keep up. The biggest problem they expressed was that they found a need to meet with me for extra help, but could not find the time in their schedule to do so. They had asked a few questions on email and had scheduled a couple of appointments that they were not able to keep, but they needed more help. One of the students suggested that tutors be made available to assist them. This is an excellent suggestion and one that can easily be implemented at our university. At the end of the semester I asked the two students who finished the course to complete an information survey to get their feelings about the course and its strengths and weaknesses. Following are the questions I asked and a summary of the response given by the student who got an A in the course. The other student who completed the course did not complete the survey. How Helpful did you find the labs? I found the labs very helpful because of the added programming experience. Also, they focused on one concept. Doing the lab showed whether or not I understood that concept. Did having quizzes for each module enhance the course? I think so because the questions reflect the questions that would be on a test. Also, the labs and quizzes provide a means of getting points - a buffer in case we have trouble with an assignment or a test. How important were the assignments to the course? I am assuming the assignments represent the type of programs we would have to write on the job. I can't think of any way to learn to write programs except by experience so I think they should be part of an online-internet course. What do you see as the advantage of the online-internet course? The online-internet course saved me several hours of driving per week. Sometimes I have to stay late to finish a project at work and this is a problem if I have to make it to a class by 5:30 and if the class starts at 7 pm, I have a 14-15 hour day and a long drive after class. In other words, the web course is more compatible with my job. What are the disadvantages of an online-internet course? It was difficult for me to find someone to work with in the online-internet course. I find the interaction with some other students very helpful. Also, I missed regular contact with the professor. What could have been done to make this a better online-internet course? I would like to see a lab period where the students could attend if they have questions or difficulty with an assignment. It helped me very much when I met with you on assignments 3 and 5 but getting off work during the day was not possible much of the time. Email is ok but sometimes I did not ask the right question so the answer did not solve the problem. Would you take another online-internet course to learn a programming language? I probably would take another online-internet course but I would do so only if I could be part of a study team and work out an arrangement to meet with the instructor after work hours. 6. Instructor's comments and evaluation My star student demonstrated that if a student were to follow the learning process of reading the text book, experimenting with the labs, completing the assignments, and seeking help from the professor when needed, they would be successful and learn the material as well as if they had attended a regular class. I think the course did a good job in providing the materials and motivation for all of the steps in the above learning process except for the seeking help from the professor when needed. I mistakingly left it up to the students to make the necessary arrangements to meet with me. This certainly contributed to a couple of the students dropping the course and even my star student found it to difficult to make arrangements to meet with me. A major problem that I had which I had not anticipated was keeping myself engaged in the course. Since I was teaching a Java course for the first time, I spent the majority of my time prepping for that class and found myself losing some of my alertness with respect to C++. Since I was thinking Java the majority of the time, I found that it required a great deal more effort on my part to respond to C++ questions. If all six of the original students had engaged the course as my star student had meeting with me on a one-on-one basis and communicating regularly via email, I am afraid that I would have been overwhelmed and had an extremely difficult time accomplishing all that needed to be accomplished. In March 1987, the AAHE Bulletin published "Seven Principles for Good Practices in Undergraduate Education" as guidelines for faculty members and students to improve teaching and learning (Chickering 1987). Following is my evaluation of the course based on these seven principles. 1. Good Practice Encourages Contacts Between Students and Faculty The design of the course encouraged the students to interact with me using email and scheduled appointments, however the mechanics to do so did not work well for most of the students. A solution might be to provide an online help session (web cast) where students could connect via the web, questions could be asked, and answers explained. In the ACM Journal of Education Resources in Computing there is an article that talks about the synchronous tools available for sharing educational resources in real-time and the archiving of the resources for later review by students (Shirmohammadi 2001). This sort of tool would prove very helpful. Another suggestion that was made by one of the students was that they would appreciate a reminder of when activities are due. Sending them an email sounds simple enough but it is time consuming and requires correct timing to be effective. A solution I plan to try though is to create messages in advance and queue them to be sent at specific times in the future. This would allow me to plan further ahead and in one sitting accomplish a number of tasks. Eudora, the email system that we use, has this capability 2. Good Practice Develops Reciprocity and Cooperation Among Students The design of the course failed to address this very important principle. One of the things that I feel might address this principle is the concept of pair-programming where two students work simultaneously at one computer to design and code a program (Williams 2001). I would like to implement this process possibly using the Windows messaging feature of Windows XP so that students could participate as pair programmers via the web. This would eliminate the need for them to be in the same place. 3. Good Practice Uses Active Learning Techniques The design of the course met this practice with the labs, quizzes and assignments that were required. 4. Good Practice Gives Prompt Feedback One of the advantages of the online quizzes for each course module was to give immediate feedback to the student. Getting the assignments graded as quickly as possible is also very important and I was able to do that. The shared folders approach that was implemented was a real time saver and increased time on task for grading. 5. Good Practice Emphasizes Time on Task Time on task in this course really means time programming. The nature of the online course is to save students travel time that can better be applied to time on task (Chickering 1996). Also the way the assignments were built on each other was designed to reduce the mundane effort associated with every program and thus provide more time on task. The shared folders approach especially increased my time on task (evaluating labs and assignments) 6. Good Practice Communicates High Expectations The nature of most programming courses is that the expectations are high and they must be in order for the student to get the practice in writing programs that is needed. 7. Good Practice Respects Diverse Talents and Ways of Learning The variety of course activities was designed to help give the students a number of different ways at learning the material. Thus the ultimate measure of the students success is whether they can develop and write a program that performs a specific task. 7. Conclusion I firmly believe that online-internet courses have a great future and I plan to teach another one. When I do I want it to be a separate section of the regular course that I am teaching. I think this will help me to better stay engaged. I want to provide lectures and help sessions using a web cast that can be archived for later review by the students. I want to allow students to work together in developing programs using the pair-programming techniques and widows messaging technology to eliminate the need for them to be in the same place. Implementing the above techniques in my in-class courses may provide more time in class for students to work together to write programs, and thus have less time devoted to lecture. I potentially see my in-class and online-internet courses merging into one where students can selectively take advantage of the benefits of an in-class course and an online-internet course. 8. References Brookhart, Susan M. The art and science of classroom assessment : the missing part of pedagogy, Washington, DC : Graduate School of Education and Human Development, the George Washington University, 1999 C & C++ Multimedia Cyber Classroom, Prentice Hall, Upper Saddle River, New Jersey, 1998 Chickering, Arthur W. & Gamson, Zelda F. Seven Principles for Good Practice in Undergraduate Education, AAHE Bulletin, March 1987 Chickering, Arthur W. & Ehrmann, Stephen C. Implementing the Seven Principles: Technology as Lever, AAHE Bulletin, October 1996 Deitel, H. M. & Deitel, P. J. C++ How To Program, second Edition, Prentice Hall, Upper Saddle River, New Jersey, 1998 Moore, Gary S. & Winograd, Kathryn & Lange, Dan You Can Teach Online, p 2.7, McGraw-Hill Higher Education, 2001 Moore, Gary S. & Winograd, Kathryn & Lange, Dan You Can Teach Online, p 9.3, McGraw-Hill Higher Education, 2001 Moore, Gary S. & Winograd, Kathryn & Lange, Dan You Can Teach Online, p 4.3-4.4, McGraw-Hill Higher Education, 2001 Moore, Gary S. & Winograd, Kathryn & Lange, Dan You Can Teach Online, p 12.5, McGraw-Hill Higher Education, 2001 Shirmohammadi, Shervin & Saddik, Abdulmotaleb El & Georganas, Nicolas D. & Steinmetz, Ralf Web-Based Multimedia Tools for Sharing Educational Resources, ACM Journal of Educational Resources in Computing, Vol. 1, Spring 2001, Article #7 Williams, Laura A. & Kessler, Robert R. Experimenting with Industry's "Pair-Programming" Model in the Computer Science Classroom, Journal on Computer Science Education, March 2001