Session T4C INTEGRATING INFORMATION TECHNOLOGY AND PROGRAMMING IN A FRESHMEN COMPUTER SCIENCE COURSE MAJ David R. Raymond1 and LTC Donald J. Welch Jr.2 Abstract All 1,100 first-year students at the United States Military are required to take CS105, Introduction to Computing, in which we teach basic Information Technology (IT) concepts and introduce the cadets to problem solving that forms the foundation of the engineering design methodology. The cadets must leave our course with enough understanding to thrive as students and officers in an increasingly digitized Army, and our goal is to integrate the IT (particularly networking) and programming lessons without sacrificing understanding of problem solving and basic programming constructs. By teaching problem-solving in the IT domain, instead of teaching IT and programming in distinct phases, we hope the synergy will provide a deeper understanding of information infrastructures. We ran a pilot during the spring term of Academic Year 1999-2000 to evaluate our success at achieving synergy between the IT and programming topics. The results from the pilot are very encouraging. Based on subjective evaluations by instructors and term-end exam results, it seems that we've achieved our goal of improving the cadets' understanding of both IT and problem-solving concepts.
INTRODUCTION All West Point cadets are required to complete CS105, Introduction to Computing, as part of their core curriculum. The intent of CS105 is to introduce the cadets to computers and Information Technology concepts and to teach them the basics of programming, while at the same time introducing them to an engineering problem-solving methodology. The Army is increasingly using digitization to improve information dissemination at all levels and intends to supply even individuals with networked computer systems. Leaders in the Army must be comfortable in this digitized battlefield. They have to understand the strengths and weaknesses of their computer equipment and exploit it on the battlefield. Because many of these students will never take another computer education course again, it is essential for them to learn how to learn about computers. This ability will have to sustain them as old technologies evolve and new ones are introduced. One of the key goals of this course is to enable the students to become computing life-long learners. [1] [3] Furthermore, all cadets must take at least a five-course sequence in an engineering discipline to earn their Bachelor of Science degrees. In CS105, cadets are introduced to and
are required to apply an engineering design methodology that they will use and build upon in future engineering courses taken during their four years at the academy. CS105 is not a CS1 course by ABET standards. It is intended to teach both Information Technology concepts and a significant amount of programming, but is not specifically a computer science course. One semester long, CS105 has 34 one-hour lessons and six two-hour labs. Before the spring 2000 semester, the course was broken down into three distinct phases. The first ten lessons were devoted to Computer Concepts and covered topics including the parts of a computer, operating systems software, common applications software, basic HTML programming, and a one lesson introduction to networks and networking. The next 22 lessons were devoted to problem solving using the Ada programming language, during which the basic concepts of sequence, selection, iteration, and sub-procedures were explored. The final eight lessons were used to teach the use and integration of common office automation software. This course structure no longer meets the needs of the rapidly digitizing Army. Very few students would go on to do any serious programming, but all would be required to apply the concepts of selection, iteration and sequence using advanced computer tools such and AutoCAD and MathCAD. Military operations are reliant on communication and information processing; therefore, the way information is passed around in information infrastructures is more important than what happens inside the individual computers. Furthermore, we felt that by integrating the Information Technology lessons, especially those addressing networking, with the problem solving lessons, we could achieve a more logical flow and a true integration of concepts.
THE PILOT COURSE To validate this concept of integrating IT and problem solving lessons and focusing more on networks and information infrastructures as a methodology to teach computer science fundamentals in CS105, a pilot course was taught during the spring term of the 1999-2000 academic year. One hundred and six students, out of a total of roughly 500 in the course were placed in 6 sections and were taught the pilot course. The syllabus was rearranged to group like
1
MAJ David R. Raymond, Department of Electrical Engineering and Computer Science, United States Military Academy, West Point, NY 10996,
[email protected] 2 LTC Donald J. Welch Jr., Department of Electrical Engineering and Computer Science, United States Military Academy, West Point, NY 10996,
[email protected]
0-7803-6424-4/00/$10.00 © 2000 IEEE October 18 - 21, 2000 Kansas City, MO 30 th ASEE/IEEE Frontiers in Education Conference T4C-7
Session T4C concepts in a more logical way, and the programming language that was chosen for the pilot course was Java. Another goal of the pilot course was to determine how best to teach Java in the core course. During the pilot, we wanted to give the students as much exposure to the language as possible so we could determine how best to structure the problem-solving lessons during future semesters when Java would be the programming language for everyone in the course. For this reason, we allowed students to volunteer for the pilot, with the knowledge that there would be more content, and therefore possibly more work required than in the standard course. A major selling point for the pilot course was that the programming language used would be Java and we did not have any trouble garnering volunteers. Because the course was made up of all volunteers, we likely attracted students who have had more computer experience or at least were interested in learning more about computers. Of the 106 students, about half had some form of programming experience, and a few had a year or more of C++ or Pascal programming. Language Comparison Our proposed new course structure led us to reevaluate the programming language with which we taught the problem solving lessons in CS105. Since 1997, the Ada programming language has been used as it was deemed the best choice among the available options at that time [2]. Our shifted focus and the inevitable advances in technology made available some options that were not viable when the decision to switch from Pascal to Ada was made in 1996. Our primary concern when we made our programming language decision was that the language chosen support the problem-solving lessons, which made up more than half of CS105. We wanted a programming language with which we could teach problem solving using the basic constructs of sequence, selection, and iteration and that the students could use as a tool to implement solutions for both simple and relatively sophisticated problems. Mastery of the language is not a focus of the course. We also wanted a language that would be accessible to all students since CS105 is a core course and most students have little or no programming background. The programming languages that were explored when the decis ion to switch to Ada was made in 1996 included Ada, C/C++, Pascal, Modula, and Scheme. Of these languages, Ada was chosen for the reasons outlined in [2]. This study allowed us to quickly pare down our list of possible programming languages to Ada and two languages not considered in the 1997 study: Java and Visual Basic. While Visual Basic can be used to implement both simple programs and large applications, we decided that it would not be a good vehicle for teaching introductory problem solving. Visual Basic is a proprietary programming language used in conjunction with a specialized development tool used to build applications for use on the Microsoft Windows platform. It is especially designed to
build event-driven applications, in which it is difficult to see the flow of execution with respect to sequence, selection, and iteration. The Visual Basic environment is also quite complex. A student with little or no programming experience might find it overwhelming. After much consideration, we selected Java for the pilot course for the reasons outlined below. Teaching Engineering Design Using Java Java is a good choice for teaching engineering design for many of the same reasons that Ada was chosen by the Academy in 1996. The use of Java packages and predefined classes, even for input and output, support the concepts of encapsulation and code reuse. In our pilot Java sections, we used the javabook package provided by C. Thomas Wu with his text An Introduction to ObjectOriented Programming with Java [6]. This is a simple package and similar support can be found in other texts or could be written by the faculty. The javabook package is imported into students' programs and provides classes for GUI input and output as shown here: import javabook.*; class Hello{ Public static void main(String args[]){ MainWindow mWin = new MainWindow(); MessageBox msg = new MessageBox(mWin); msg.show("Hello world"); } }
One of the main reasons we selected Java is the language's built-in support for network programming. While there are add-ons that facilitate network programming in other languages, many of them are unwieldy and require sophisticated system calls that would only confuse introductory students. We develop the programming skills of CS105 students to the point where they write networkaware programs to reinforce the networking concepts explored in non-programming lessons. The java.net package provides several levels of network support, from the URL class, which provides high-level access to web pages from Java applications, to the datagram class, which provides low-level network access. Using the URL class, students can simply declare and instantiate a URL object with a string identifying a uniform resource locator (URL) and immediately retrieve basic information about the resource such as whether the site is up or down, or with a little more effort, download the entire contents of the URL. Another reason Java is desirable is the fact that with the use of predefined packages like the javabook package, cadets can easily write programs with pleasing graphical user interfaces like the Java "hello world" program given above. This interface is much more familiar to today's college freshmen than the command shell window interface that is used for input and output in most other programming environments. Some may argue that the students' 0-7803-6424-4/00/$10.00 © 2000 IEEE October 18 - 21, 2000 Kansas City, MO 30 th ASEE/IEEE Frontiers in Education Conference T4C-8
Session T4C impression of the programming language and user interface is unimportant if the language can be used to teach the necessary concepts. We, however, feel that students who are enthused about what they are learning and see the material as current and relevant are far more likely to spend necessary time outside the classroom to master the material and are likely to get more out of the class. Furthermore, they are more likely to enjoy the CS105 experience and leave the course with a more positive outlook on computers and programming. This, we feel, is extremely important for leaders in the 21st century Army. Java is an inherently object-oriented language. We felt that teaching an object-based language would be preferred to teaching a procedural language because it teaches students to put together off-the-shelf components to build a solution to a particular problem. Since the object paradigm is becoming more and more prevalent in computer science, we felt that the earlier students were exposed to it, the better. With knowledge of objects, students could learn to use other object-oriented languages such as Visual Basic for Applications, which all West Point cadets have on their own personal computers, with relative ease. One danger in switching to the Java programming language is the perceived difficulty of teaching objectoriented concepts to students with little or no programming experience. This is something that concerned us and was closely monitored in the pilot sections. The switch to Java would be impossible if the difficulty of object-oriented programming kept the students from learning enough of the language to apply sequence, selection, and iteration. Integrating IT Concepts with Programming Lessons Our goal to integrate the Information Technology and problem solving/programming lessons led to a complete restructuring of the CS105 syllabus. In previous years, we taught Information Technology and problem-solving in distinct phases with little integration between the two. In the new organization, blocks of two to four Information Technology lessons are interspersed with three to six lesson blocks of Java programming. This organization allows us to interrelate the IT and programming lessons and to place related lessons close to each other in the schedule so that the lessons reinforce each other. For example, a discussion of numeric variables and how they are represented in the computer (a programming lesson) follows a lesson on the inner workings of the computer and the interaction between processor, RAM and other components (an IT lesson) almost immediately. Under the old schedule, these mutually supporting lessons were separated by over three weeks. Similarly, lessons on networking, the Internet, and HTML programming (IT lessons) are followed by lessons on writing Java Applets (programming lesson). To tie together the concepts taught in the course in a more global way, we presented the students with a preview of what they would be expected to do for their final course project during lesson two, and then referred to the project to
motivate specific concepts throughout the term. The project required the students to write a program that integrates network programming and Information Warfare related topics. The program would read a text file containing a list of military-related URLs, determine which sites would respond to an http request, and generate a web page detailing the results of the queries. Information about the availability of the web sites might provide useful information as to the status of network infrastructures in the geographic locations surrounding the physical location of each web server. Their application should scale up to check thousands of sites quickly, something that would not be feasible for a single person to do using by typing each URL into a web browser. This project effectively ties together the problem-solving lessons and the concepts of networking and information operations that we want the cadets to internalize.
DETERMINING SUCCESS We had three major goals in our execution of the pilot course. First, we had to determine whether our plan to intersperse the Information Technology and programming lessons would, in fact, enhance the students learning, or whether the students would have trouble recognizing the relationship between concepts and see the organization of lessons as disjointed. Second, we had to be sure that we could take advantage of Java's networking and GUI programming capabilities without sacrificing our ability to effectively teach the basic concepts of sequence, selection, and iteration. Third, we wanted to determine the best approach to teaching Java in CS105. Should we explicitly teach object-oriented design and instantiable classes up front, or should objects be taught near the end of the course when the student's understanding of programming in general is higher? To validate our decision to switch to Java, we had to determine at the end of the term whether the students understood the basic concepts of sequence, selection, and iteration and whether they could apply them in Java programs. That is, we had to decide whether the students that were taught Java could write programs of similar complexity to those cadets who learned to write programs in Ada during previous semesters. Crucial to this ability is the student's understanding of object-oriented concepts and their ability to use predefined classes to build Java applications. Learning language syntax is a hurdle that must be leapt regardless of the language learned and Java syntax is not inherently more difficult to learn the Ada syntax and may actually be easier. The student's ability to use and understand object-orientation was easily tested through programming assignments and quizzes. Their ability to apply basic programming constructs in their programs was also relatively easy to determine. We simply had to compare the quality of the work done on programming homework problems and projects against those done in Ada in previous semesters.
0-7803-6424-4/00/$10.00 © 2000 IEEE October 18 - 21, 2000 Kansas City, MO 30 th ASEE/IEEE Frontiers in Education Conference T4C-9
Session T4C Determining whether interleaving Information Technology and programming lessons enhanced the student's understanding was a little more difficult to determine. We planned to make this determination by comparing the results of specific term-end questions and by comparing student feedback from previous semesters.
CONCLUSIONS AND OUTCOME The results of our pilot are encouraging. The consensus of the instructors is that the new structure of the course has helped cadets master both Information Technology and basic programming concepts to a greater degree than in previous terms. Based on the programming projects completed by the students, it is clear that their grasp on the basic elements of sequence, selection, and iteration is at least as good as that of students in previous semesters. Students met or exceeded expectations on all programming projects, which were similar in complexity to previous semesters' project assignments. In addition to teaching the basic concepts of sequence, selection, and iteration, and the slightly more advanced concepts of arrays and basic file IO, the Java language allowed the cadets to write programs with pleasing graphical interfaces, write applets, and interact with the Internet via the use of Java's URL and URLConnection classes. From the instructors' experiences throughout the term, it seems that our concerns about the difficulty of the objectoriented paradigm were unfounded. The students have readily adapted to using predefined classes and when given the interface to a class and a description of its functionality, have shown that they can use the class with little or no difficulty. With our students' success in using predefined classes, we hoped that they would be able to write their own classes without much difficulty. This proved not to be the case. We spent three lessons teaching cadets to write their own instantiable classes while at the same time reinforcing the use of predefined classes, primitive data types, and GUI input and output. While many of the students were able to write and use their own instantiable classes by the end of the three lessons, many others were unable to apply the necessary concepts. While this gave us great insight into how to approach the teaching of Java in future semesters, it does not hamper our ability to teach the basic concepts of sequence, selection, and iteration in Java. In our opinion, teaching instantiable classes early is too difficult for the average student. Instantiable classes comb ine the concepts of sub-routines, parameters, scoping, and data grouping all at once. We think these topics are better addressed one at a time. Java allows us to do this. Term-End Exam Results Student performance on the final exam also bear out the perceived positive results outlined above. We compared the performance of the students in the pilot course to the performance of students in previous semesters on the final
exam. To account for the fact that the cadets in the pilot course were all volunteers, we compared their scores not against the cadets in the standard CS105, Introduction to Computing, course from the previous semester, but against the more advanced cadets in CS155, Advanced Placement Introduction to Computing. During the fall semester of the 99-00 academic year (Term 001), CS155 was basically the same course as CS105, except that the lessons were taught at a slightly higher level for those cadets who had some computer experience or had demonstrated an aptitude for computer science. These cadets were also all volunteers, just like the cadets in our pilot course. During term 001, there were 7 sections of 18 cadets in CS155. During term 002, the pilot course (which was also designated CS155) contained 6 sections of 18 cadets, so the sample sizes are very similar. One major difference between the semesters was that during term 001, if a cadet was having trouble with the higher level material taught in CS155, they could be moved to CS105 since the content of the two courses was so similar. During the spring term, we were unable to move the underachieving students down to CS105 because of the difference in programming languages taught between the two courses. Similarly, cadets who were exceeding expectations in CS105 were able to move up to CS155 up through about lesson 15 (of 40) of previous terms, while during the pilot there were students who probably would have been asked to switch to CS155 had the courses both been using the same programming language. The term-end exam is a comprehensive exam worth 25% of the total course grade in CS105 and CS155. The exam questions can be divided into two main categories. Forty percent of the exams are questions dealing with Information Technology topics and 60% test problem solving and programming skills. The questions on the IT portions of the first term exam and the second term exam were not identical, but they covered the same topics and were similar in difficulty level. The programming portion of the exam also covered basically the same concepts over the two terms. Any differences in the concepts tested were a result of the object-oriented nature of the Java language as opposed to the procedural nature of the Ada language. Many of the questions in the programming portions of the exams were identical except that the first term programming questions ask for solutions written in Ada while the second term exam asked for Java code. To compute the percentages shown in figure 1, raw scores on each of the questions were added to come up with a total number of points awarded for that question. That total was then divided by the number of students that took the exam that term to get a per-question average raw score. To calculate the IT, programming, and total score percentages, the average scores for each sub category of questions were added together and divided by the total number of points available on that portion of the exam. Overall, the cadet's performance on the IT portion of the exam improved from an 86.7% during the fall term to 88.2%
0-7803-6424-4/00/$10.00 © 2000 IEEE October 18 - 21, 2000 Kansas City, MO 30 th ASEE/IEEE Frontiers in Education Conference T4C-10
Average Score
Session T4C Term 001
90% 89% 88% 87% 86% 85% 84% 83% 82% 81% 80%
Term 002
IT Questions
Programming Questions
Overall
Question Category
FIGURE 1 Final Exam Results during the spring term. On the programming portion of the exam, performance improved from 83.0% to 85.8%. Overall scores improved from an 84.5% average to an 86.8% average.
Average Score
Term 001 100% 95% 90% 85% 80% 75% 70% 65% 60% 55% 50%
Term 002
Q10
Q11
Q12
Q14
Q15
Question Number
FIGURE 2 Final Exam Scores by Question Figure 2 shows average scores on a series of programming questions on the exam that were identical between versions except that the term 001 exam used the Ada programming language and the term 002 exam used Java. Question 10 was one of the more difficult questions on the exam, and asked the students to analyze a relatively complex nested loop with accompanying selection structure and determine the output of the program. Question 11 asked for code to implement an input checking procedure. Question 12 had the students write the code for a multiplealternative selection structure based on a given table of values and corresponding outputs. Question 14 asked the cadets to write a sub-program (a procedure in Ada or a method in Java) that accepts a floating point value as a parameter and writes the value to a file. Question 15 asked the cadets to analyze an algorithm and write a test plan to test the resulting program. This is the only languageindependent question of the group. The cadets performed as
well or better during the second term on three of the five programming problems. Only on question 11 did the students' performance drop significantly (5 %) from the fall to the spring term. The results of this term-end question analysis do not in themselves validate our pilot as the results can be partially accounted for by other influences. Second term college freshmen are generally better prepared to handle the academic burden of a full college course load, a fact that could partially account for the improved scores from first to second term. On the other hand, performance clearly improved from the fall term to the spring term, and the enthusiasm of the students was much greater. Writing programs in Java with graphical interfaces seemed much more relevant to the cadets than the Ada command line programs that the cadets have written in previous semesters. Because of the use of the Java language, the graphical nature of the programs, and the ability to write applets, student enthusiasm for the course is much greater than in previous terms. The students also appreciated the interspersing of IT and programming concepts. Not only did the mutually supporting topics from the two domains enhance students' understanding of many concepts, the programming, which is considered by mo st students to be the most difficult aspect of the course, is introduced over a longer period. This gave the students more time to grasp the concepts before being required to apply them. Overall, we consider the pilot course to have been a success. Student performance during the second term as observed by the instructors was better than during the first term and student enthusiasm is higher than ever before. Furthermore, final exam scores bear out this perceived performance improvement. Based on the success of the pilot experience and the lessons learned about integrating lessons and teaching the Java language, we are moving ahead with plans to teach this new integrated course to all incoming freshmen beginning with the fall of the 2000-2001 academic year.
REFERENCES [1]
[2] [3] [4]
[5] [6]
Marra, Rose, Kristin Camplese and Thomas Litzinger., "Lifelong Learning: A Preliminary Look at the Literature in View of EC 2000." In the Proceedings of the Frontiers in Education Conference, San Jaun, Puerto Rico, Nov 10-13 1999. Murtagh, J. L. and Hamilton, J. A. Jr., "A Comparison of Ada and Pascal in an Introductory Computer Science Course", SigAda '98 Proceedings, Wasington, D.C., November 8-12, 1999. Parkinson, Alan., "Developing the Attribute of Lifelong Learning." In the Proceedings of the Frontiers in Education Conference, San Jaun, Puerto Rico, Nov 10-13 1999. Reid, Richard J., "First-Course Language for Computer Science Majors," Internet Survey, available at ftp://ftp.cps.msu.edu:pub/arch/CS_Language_List.txt, accessed: 25 Feb. 1999. Yeager, Patricia, and Rose Marra., "Effects of Student-Centered Activities on Learning." In the Proceedings of the Frontiers in Education Conference, San Jaun, Puerto Rico, Nov 10-13 1999. Wu, C. T., An Introduction to Object-Oriented Programming with Java, McGraw-Hill, Boston, Mass. 1999
0-7803-6424-4/00/$10.00 © 2000 IEEE October 18 - 21, 2000 Kansas City, MO 30 th ASEE/IEEE Frontiers in Education Conference T4C-11