Design as an Introduction to Computer Science in High School
The purpose of this grant was to determine whether it is feasible to teach high-level object-oriented design to students who did not know how to program. We were able to develop a curriculum in which students of a wide range of background, from high school nonprogrammers to senior computer science majors, developed creditable high-level designs. We believe that our use of user-based design and the cognitive apprenticeship model are largely responsible for our success.
Our goal for the first year of the grant was to develop curricular techniques by using the principles of user-based iterative design. At every phase of development we collected informal data from students about the materials and procedures being developed. These data told us what worked and what needed improvement. The development of the core of our instructional program was in five distinct phases. In Phase 1 we developed a questionnaire to survey high school students about their experience with and preferences among computer games so that we could select games that would hold their interest and thus motivate them to stay in the field long enough to learn. In Phase 2 we developed a rough procedure to teach initial design and used it with two groups of the student staff. We also observed a graduate class in Computer Science doing their first design using CRC cards. On the basis of these observations and subsequent interviews with the participants, we realized we needed to reduce the complexity of the initial task. We redesigned the procedure so that the initial designs were of extant games. This new procedure was tested in Phase 3. It became clear during Phases 2 and 3 that students without programming experience did not understand two fundamental characteristics of software design: (a) that computers simulate the physical world in ways that differ profoundly from the physical world (e. g., animation and collision), and (b) that the designer has to "do" everything (e. g., the game or round won't start and stop itself, the ball won't keep moving by itself). The expert modeling was changed to make the need to think through every step more explicit and a demonstration of how computer animation is produced was developed. Notice that it was the combination of user-based design and cognitive apprenticeship techniques that permitted us to discover what prevented students from succeeding.
Phase 4 consisted of expanding the program to include designing games from scratch and running trials with high school students and senior computer science majors. Phase 5 was an extension of the techniques to a full-semester university-level computer literacy course.
The specific activities used in all subsequent trials were:
This procedure was used with three different groups of students: 26 high school students participating in a summer workshop, 8 senior computer and information science majors taking a senior computer science seminar, and 13 students in a computer literacy course.
The high school and computer literacy groups participated in additional activities, including designing a more complex game and designing a game of their own. During these activities coaches faded their support. The computer literacy students also read a text in object-oriented design, learned to create more complex designs and designs that were not games, and learned several computer tools. They also created a design individually as part of their final exam.
The program was a success on all levels. We base this statement on the following:
Students' opinions. First, the students found it valuable. The high school students were actually the least enthusiastic, yet they were quite positive. The majority of students (61%) enjoyed the program quite a bit or a lot (the two highest ratings on a five-point scale). Almost half the students felt they learned quite a bit or a lot. A substantial minority (39%) reported that they would like to take additional computer classes.
The senior majors were more positive. Their average rating was 4.02 out of 5.00. The comment of one senior gives a suggestion about why the activity was so interesting to the computer science majors: "Actually designing the shuffleboard game was a great way of seeing the design process as a whole activity. It also showed me that the design process was something I myself could do."
The computer literacy course was also a success from the students' point of view--80 percent enjoyed the course quite a bit or a lot, which is also higher than those of the high school students.
Designs. Students in all samples learned how to create high-level designs whether or not they knew how to program. Students were able to accomplish the basic necessities of design: (a) they structured the game into component classes, (b) they figured out the responsibilities and collaborators of the various classes, and (c) they organized the classes into inheritance hierarchies. Their designs were not perfect, of course. Not surprisingly, the high school students were most likely to fail to include classes not represented by screen objects. This was not true, however, for the senior majors, who obviously thought through the needs of the design better.
In contrast, the senior majors had a much stronger tendency to include extra responsibilities--37 unnecessary responsibilities compared to 3.4 for high school students. Half of the majors' extra responsibilities described functions that should be postponed until the later stages of the design (either initialization or data flow functions) and half were redundant. Thus, their tendency to think through the needs of the design thoroughly was undisciplined.
The computer literacy students were the only ones who individually created final designs. Their designs, while less precise in language, had the same essential structure as those of experts (faculty or professional designers).
Posttest. The high school students' average performance on the posttest was 58 percent, which is substantially above the chance level of less than 25 percent correct. Thus, students clearly had some grasp of the nature of the process in which they had engaged. It is notable that they demonstrated declarative knowledge, which they learned only through doing--they did no reading in the course nor were there any traditional lectures.
The senior majors as a group consistently outscored the high school students, but the seniors did not reach ceiling on the partial design questions (they scored 68% correct compared to the high school students' 48%). Furthermore the distributions for the two groups were overlapping, The highest scoring high school student did better than 5 of the 8 college seniors and 9 high school students did better than the worst college senior. Thus, the program seems appropriate for both levels of expertise.
This project demonstrated three important principles. First, user-based, prototyping design techniques and the cognitive apprenticeship model are effective bases on which to develop instructional programs that teach important, typically invisible cognitive skills. Second, the skills underlying high level design do not need to be acquired through the acquisition of programming skill. Third, the assumption that students are learning to design when learning to code is wrong.
Sims-Knight, J. E., & Upchurch, R. L. Learning the rudiments of software design: What do students learn? Manuscript in preparation.
Sims-Knight, J. E., & Upchurch, R. L. (1993). Teaching Object-Oriented Design Without Programming: A Progress Report. Computer Science Education, 4, 135-156.
Sims-Knight, J. E., & Upchurch, R. L. (1992). Teaching object-oriented design to nonprogrammers: A progress report. Proceedings of OOPSLA-92 Educators' Symposium. Vancouver, British Columbia, Canada.
Sims-Knight, J. E., & Upchurch, R. L. (1993, October). Promoting cognitive skills. Paper presented at A Symposium on the Psychology of Adversity, UMASS Boston, Boston, MA.
Sims-Knight, J. E., & Upchurch, R. L. (1993, April). Teaching software design: A new approach to high school computer science. Paper presented at the annual meeting of the American Educational Research Association, Atlanta, GA.
Sims-Knight, J. E., & Upchurch, R. L. (1992, October). Teaching Object-oriented Design to Nonprogrammers. Paper presented at NECC'92, Dallas, TX.