Technological Support for an Apprenticeship in
Object-Oriented Design and Programming

Mark Guzdial

EduTech Institute and GVU Center

College of Computing

Georgia Institute of Technology

801 Atlantic Dr.

Atlanta, GA 30332-0280


Object-oriented design and programming is a challenging subject to learn, especially for younger students (rf. [1]). Design methods make more sense when you have some experience and know that how design is done is important. Undergraduates in their first couple of years have relatively little design experience. The problem is developing design experience while also learning design methods.

Apprenticeship, and its developing variant cognitive apprenticeship [2], is an appealing alternative to traditional lecture-based classrooms. In an apprenticeship, the master (teacher) supports students by demonstrating techniques, coaching students while they use the techniques, and provides the students with the opportunity to explain what they do to others [3]. Cognitive apprenticeship is about applying the apprenticeship structure to help students learn modern cognitive skills such as mathematics and reading-or even design. Demonstrations and coaching works well with small classes (e.g., perhaps 25 students) in K-12 where students have more than 50 minutes per class period. To make cognitive apprenticeship work for large undergraduate classes where time is short, we are using technology to extend the reach of the teacher and support the student designing and learning outside of the lecture hall. Apprenticeship, in a sense, is all about creating connections between teachers and students and students with one another. The technology discussed here helps to create these connections.

At Georgia Tech's College of Computing, we teach a sophomore-level class that introduces students to object-oriented design and programming (in VisualWorks 2.0), CS2390 Modeling and Design. Over the last four years, we have developed a successful curriculum and software supports which enable us to provide students with an apprenticeship-like experience within the constraints of a traditional classroom (e.g., 40-75 students per quarter, three lectures a week, one lab a week, one instructor and three TA's). This paper presents highlights of the technological supports provided to students. The next section is a brief overview of what educators and cognitive scientists have learned about the critical aspects of apprenticeship learning. I then present two of our tools, STABLE and CaMILE, and the evaluation of each of these in CS2390.

Critical Aspects of Apprenticeship Learning

Cognitive apprenticeship was developed to deal to focus traditional classrooms on tasks rather than abstract concepts [2]. By supporting students in learning in the context in which it might be used, the odds are increased of avoiding "brittle knowledge" [4], where students can pass tests but never use the knowledge in real-world situations.

There are several pieces to a successful cognitive apprenticeship. Three key pieces that we try to create in our class are:

Technology to Support OOD&P Apprenticeships

We created two pieces of technology to facilitate the creation of apprenticeships in learning object-oriented design and programming:

Case Libraries for Scaffolding

STABLE provides students with step-by-step description of several projects, most of which are projects completed successfully by prior students. STABLE is a form of demonstration, and also serves as a form of community-a communications mechanism between senior students who have taken the class before and leave behind records of what they did and how.

Figure 1: Structure of STABLE: Project level (top) and Step level (bottom)

Figure 2: A sample step page from STABLE

STABLE currently contains over a dozen projects which total to almost a thousand Web pages. (STABLE is generated from a database containing pieces of the case library information.) Several of the projects are from the same class addressing the same problem assignment, to show students trade-offs and alternative ways of solving the same problem.

The CS2390 curriculum has changed to take advantage of STABLE. For example, there are three cases that address the problem of creating a simple spreadsheet constraint mechanism, which was the second assignment during the Case-Gathering quarter (Winter '96). In STABLE-using quarters, I asked students to extend the original projects. One quarter, I asked students to extend the spreadsheet constraint mechanism (Spring '96), and another quarter, I asked students to wrap a more sophisticated graphical user interface around the simple spreadsheet. In both cases, the extension problem was now the first assignments of the quarter. Students are always offered the opportunity to reuse any of the code from any of the STABLE case, but the reuse was not required.

One of my evaluations was to compare the performance between the Case-Gathering quarter (Winter '96) and a Case-Using quarter (Spring '96). If students were using STABLE to good purpose, one would expect that the Spring students would be more successful at their problem (using the same grading criteria and same graders), building on the previous students' work (even though they were getting a problem of greater complexity earlier in the quarter). However, if they were not using STABLE, one would expect lower performance. The results in Figure 2 show that students using STABLE performed with a reliably better overall grade than did the original Case-Gathering class.
Winter '96 Class Spring '96 Class

(CaMILE Using)

Winter Second Assignment vs. Spring First Assignment 75.6 (stdev 31.8)85.8 (18.3)


Figure 2: Performance Comparison between Case-Gathering class (Winter'96) and Case-Using class (Spring'96) on a similar problem

The important question is whether students learned more about design from STABLE than they did previously: Does it help to have students read and reuse a set of object-oriented design problems? To test this question, I created isomorphic problems (similar but not identical) from the Case-Gathering quarter's final exam. I created an isomorphic design problem and graded using the same scheme with the same graders The problem was to repair a malformed class hierarchy, e.g., where inheritance does not indicate is-a relationships. Figure 3 summarizes the learning results. STABLE-using students did significantly better on the design problem.
Winter '96 Final Exam Spring '96 Final Exam
Design problem0.83 (stdev 0.21) 0.91 (0.14)


Figure 3: Learning Comparison between Case-Gathering class and Case-Using class on the Isomorphic Design Final Exam Problems

We believe that STABLE STABLE is being successful at helping to create an apprenticeship-like environment, leading to improved object-oriented design learning. In addition, students are improving performance with it, the way that junior apprentices might be more successful at a project with help from a more senior apprentice.

Integrated, Anchored Collaboration for Community

CaMILE is a tool for encouraging students to work with one another, to explain to one another what they're doing and why, and to help one another be successful and learn in the same manner as a communities of apprentices. In our work with CaMILE in a variety of contexts, we've found that that's not an easy goal [8].

CaMILE is a Web-based threaded collaboration tool that offers features that prompt students to collaborate effectively and structures collaboration to encourage learning [10, 11]. A particularly important feature of CaMILE is that each individual note has its own URL, which allows us to create links from any document on the Web to a particular thread in a CaMILE discussion. For example, I can post a Final Exam review with problems from prior final exams (Figure 4a) and provide a link from each problem to a separate CaMILE thread for student answers to that problem (Figure 4b). CaMILE facilitates anchored collaboration, and by properly choosing anchors (to be interesting, motivating, and encouraging discussion), we have found that anchored collaboration can help to generate in-depth discussions. Other anchors we have used include design assignments and student projects (for peer review).

To measure our hypothesis, we compared the newsgroup usage (unanchored, since few newsgroup readers allow individual note addressing) in the Fall '95 CS2390 class and the CaMILE usage (some anchors, though many threads were not linked to an external Web page anchor) in the Winter'96 CS2390 class. The two classes were taught by different instructors, but had the same textbooks and nearly identical curricula (e.g., even some of the same slides were used in each class). Figure 5 summarizes the results of the comparison.

Figure 4: An Anchor (top, a Final Exam Review) and a Thread for Problem #1
Fall '95 (Newsgroups) Winter '96 (CaMILE)
Number of students49 75
Number of authors23 (47%) 59 (79%)
Number of notes119493
Number of threads64 68
Average length of thread1.9 7.2
Ave. length unanchored 2.5
Ave. length anchored 56

Figure 5: Comparison of a Newsgroup-using CS2390 class and a CaMILE-using CS2390 class

The results for CaMILE suggest that an anchored approach - giving students something to talk about - can be effective for generating deeper discussions. CaMILE can be a useful tool in creating the kind of community seen in successful apprenticeships. We have not measured learning with and without CaMILE, but our sense is that the community-building aspect improves both motivation and learning.

Summary and Future Directions

STABLE and CaMILE are two tools which are helping to create the advantages of a cognitive apprenticeship for Sophomore computer science students at Georgia Tech. STABLE provides a form of scaffolding that fades, particularly scaffolding that demonstrates effective design process. CaMILE creates a forum for community-building, where students can explain what they're doing and help one another.

However, STABLE and CaMILE are still only supporting part of an apprenticeship. We have little support for coaching while the student is performing, for example. Further, there is growing interest in STABLE-like structures in the O-O community which we might build upon. Some of the future directions we're planning include:

Our believe is that apprenticeship is a useful pedagogical model for object-oriented design instruction. It informs us about the kinds of supports that we need to provide to students. That we are getting good design learning and creating an apprenticeship structure with such young students speaks well of the structure and of the kinds of supports that we are providing.


STABLE's analysis has been conducted with Colleen Kehoe. CaMILE was designed and built with David Carlson and evaluation was conducted with Jennifer Turns. Thanks to my fellow CS2390 instructors Rich LeBlanc, Gregory Abowd, and Noel Rappin. Funding for this work has come from the National Science Foundation grants RED-9550458 and CDA-9414227.


[1] J. M. Carroll, J. A. Singer, R. K. E. Bellamy, and S. R. Alpert, "A View Matcher for learning Smalltalk," in Proceedings of CHI'90: Human Factors in Computing Systems, vol. Seattle, April 1-5, J. C. Chew and J. Whiteside, Eds. New York: ACM Press, 1990, pp. 431-437.

[2] A. Collins, J. S. Brown, and S. E. Newman, "Cognitive apprenticeship: Teaching the craft of reading, writing, and mathematics," in Knowing, Learning, and Instruction: Essays in Honor of Robert Glaser, L. B. Resnick, Ed. Hillsdale, NJ: Lawrence Erlbaum and Associates, 1989, pp. 453-494.

[3] M. Guzdial, "Software-realized scaffolding to facilitate programming for science learning," Interactive Learning Environments, vol. 4, pp. 1-44, 1995.

[4] A. L. Brown, J. D. Bransford, R. A. Ferrara, and J. C. Campione, "Learning, remembering, and understanding," in Handbook of Child Psychology: Cognitive Development, vol. 3, W. Kessen, Ed. New York, NY: Wiley, 1983, pp. 77-166.

[5] M. Redmond, "Learning by Observing and Understanding Expert Problem Solving," : College of Computing, Georgia Institute of Technology, 1992.

[6] P. C. Blumenfeld, E. Soloway, R. W. Marx, J. S. Krajcik, M. Guzdial, and A. Palincsar, "Motivating project-based learning: Sustaining the doing, supporting the learning," Educational Psychologist, vol. 26, pp. 369-398, 1991.

[7] J. Kolodner, Case Based Reasoning. San Mateo, CA: Morgan Kaufmann Publishers, 1993.

[8] J. Turns, M. Guzdial, F. Mistree, J. K. Allen, and D. Rosen, "I wish I had understood this at the beginning: Dilemmas in research, teaching, and the introduction of technology in engineering design courses," in Proceedings of the Frontiers in Education Conference. Atlanta, GA, 1995.

[9] J. Turns, "An activity framework for supporting reflection in engineering design courses," in Proceedings of the International Conference of the Learning Sciences, D. Edelson and E. Domeshek, Eds. Evanston, IL: AACE, 1996, pp. 316-323.

[10] M. Guzdial, J. Turns, N. Rappin, and D. Carlson, "Collaborative support for learning in complex domains," in Computer Support for Collaborative Learning (CSCL '95), J. L. Schnase and E. L. Cunnius, Eds. Bloomington, IN: Lawrence Erlbaum Associates, 1995, pp. 157-160.

[11] M. Guzdial, J. L. Kolodner, C. Hmelo, H. Narayanan, D. Carlson, N. Rappin, R. Hübscher, J. Turns, and W. Newstetter, "Computer support for learning through complex problem-solving," Communications of the ACM, vol. 39, pp. 43-45, 1996.

[12] E. Soloway, M. Guzdial, and K. E. Hay, "Learner-centered design: The challenge for HCI in the 21st century," Interactions, vol. 1, pp. 36-48, 1994.

[13] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Reading, Mass: Addison-Wesley, 1995.