--CALL FOR PARTICIPATION--

Pedagogical Patterns:
Successes in Teaching Object Technology

OOPSLA'96 Workshop

Sunday, October 6, 1996

San Jose, California USA

Submission deadline: August 5, 1996

********************************

NOTE! NOTE! NOTE!

DEADLINE EXTENDED
due to the late mailing of the conference advance program

August 5th deadline:
First review process begins August 5th. These submissions will be notified of acceptance by August 20th.

August 20th deadline:
Second review process begins August 20th. These submissions will be notified of acceptance by September 1st.

********************************

The process of training, retraining, and, most of all, educating people in object technology is an ongoing challenge which has many unanswered questions. While many good pedagogical ideas are presented at OO conferences and published in proceedings and journals each year, very little has been done to collate the effective practices of many OO educators into one publication. The purpose of this workshop is do just that, to create a publication which is similar to what Susan Lilly (in 1/96 Object Magazine) refers to as "reusable pedagogical design patterns."

According to Lilly, a pedagogical pattern should be repeatable and easy to adapt. Each pattern should be described in a way that allows it to be easily "instantiated" for different lessons by different instructors. However, patterns do not need to be new or original. Lilly compares this to the Gamma et al. "Design Patterns" book, as follows: "The largest contribution of the 'Gang of Four' book is the documentation of patterns that have been proven to work, not the invention of the solutions. What makes patterns useful is their ability to communicate proven solutions to common problems."

Individuals interested in contributing to a "pedagogical patterns" publication are asked to submit a paper to this workshop, describing their success with teaching OT in the form of a pedagogical design pattern. A suggested format can be found in Susan Lilly's "Patterns for Pedagogy" article in the January 1996 issue of Object Magazine and in the four pattern examples which follow. The pattern does not have to be completely polished. An incomplete or a pattern outline will be considered, as long as it is a clearly documented success in meeting an essential problem for teaching OT. The purpose of the workshop is to polish and format these patterns, distribute them to all attendees, and then assemble them with other patterns for future publication.

Submission deadlines are August 5th (and 20th) 1996. (Electronic mail, ASCII format is preferred.) Participants will be notified of acceptance no later than August 20 (and September 1st).

Send submissions (email, ASCII format preferred) to:
Mary Lynn Manns
University of North Carolina at Asheville
Computer Science Dept.
Asheville, NC 28804, USA
Telephone: 704-232-5020
Fax: 704-251-6041
Email: manns@unca.edu

Workshop leaders:
Mary Lynn Manns, University of North Carolina at Asheville, USA
(manns@unca.edu)
Maximo Prieto, Lifia - Universidad de La Plata, Argentina
(maximo@info.unlp.edu.ar)
Phil McLaughlin, Staffordshire University, England
(P.McLaughlin@soc.staffs.ac.uk)
Helen Sharp, The Open University, England
(h.c.sharp@open.ac.uk)
Mahesh Dodani, IBM Object Technology University


Pedagogical Pattern Examples


(For other examples, see "Patterns for Pedagogy" in the January 96 issue of Object Magazine)

Pattern Example #1
Lab-Discussion-Lecture-Lab (LDLL) Pattern
Mary Lynn Manns, Univ. of North Carolina at Asheville, USA
(DRAFT - will be reviewed at OOPSLA)

INTENT
Introduce software concepts.

MOTIVATION
Students often have a difficult time understanding software concepts which are introduced in a classroom lecture format. This is because the lecture-lab pedagogy utilizes a "this is what will happen when you do this" approach which can be too abstract to provide a foundation for learning software. The LDLL pedagogy offers an alternative approach. It begins with an introductory step-by-step lab, follows with a discussion and an explanation of what the students did, and then reenforces the concepts with a more advanced lab.

APPLICABILITY
Use the Lab-Discussion-Lecture-Lab pattern to introduce a software tool and/or concepts in a programming language.

STRUCTURE

Lab:
Students complete a step-by-step lab, prepared by the instructor to introduce the software concepts. This lab must have detailed written instructions and include questions which encourage students to record and analyze what they see on the screen as they proceed through the exercise.

Discussion:
After the lab is completed by each student, the instructor leads a student-centered discussion of the following:
- the concepts which were unfamiliar to the students as they completed the exercise
- any problems the students encountered (in order to quality control the exercise for future use)

Lecture:
Instructor lectures on the new concepts which were introduced in the lab, with continuous references to the experiences the students had while doing the lab.

Lab:
Students complete a more complex lab exercise which reenforces and examines each student's comprehension of the new concepts.

CONSEQUENCES
The LDLL pattern:
- allows students an active involvement in their learning by introducing them to new concepts as they are using the software
- encourages students to record, and to reflect upon, what happened when they were involved in their learning
- enables instructors to give more concrete, less abstract, lectures
- requires additional work on the part of the instructor to prepare the detailed instructions in the first lab
- may take longer than a lecture-lab pedagogy; however, the increased level of student comprehension seems to decrease the necessity for extensive follow-up and review periods

IMPLEMENTATION
Issues to consider:
- Lab exercises can be short (covering one or two concepts) or lengthy (covering many concepts). Short lab exercises can be completed during a designated lab period; for more lengthy labs, it is recommended that they be assigned and completed outside regular class hours.
- Since students will be exposed to the new concepts for the first time during the first lab, this lab should be written in a detailed, step-by-step manner and include references to documentation and/or textbook pages where clarification may be obtained.
- The questions which appear throughout the first lab exercise should allow the students to analyze what they enter and what they see on the screen. These questions will then serve to stimulate and lead the discussion session.
- Instructors will find that the lecture session, since it is given after the lab and discussion sessions, will require a much shorter period of time than lectures given in a lecture-lab format.
- The follow-up lab should require analytical skills and test the student's understanding of the concepts. Unlike the first lab, it should be evaluated by the instructor.

RELATED PATTERN
(none so far)

EXAMPLE INSTANCES OF THIS PATTERN
This pattern has been used to teach:
- The Smalltalk environment
- Smalltalk programming concepts
- C programming concepts
- BASIC programming concepts
- Fortran programming concepts

Pattern Example #2
Lecture-Activity-Student Presentation-Discussion (LASD) Pattern
Helen Sharp, The Open University, UK
(DRAFT - will be reviewed at OOPSLA)

INTENT: To give students a deeper understanding of a concept or set of concepts.

MOTIVATION: When first introduced to a concept, a students may come to understand it from only one perspective. This pattern allows students to deepen their knowledge through exposure to other students' experiences and perspectives.

APPLICABILITY: This pattern has only been used in a revision context, i.e. students have completed the bulk of the course, and are revising for the examination.

STRUCTURE:
Lecture: This summarisies the topic being covered, pulling out and highlighting the key concepts and techniques.
Activity: A group (preferrably) or individual activity to exercise the concepts with the tutor acting as facilitator if necessary.
Student Presentation: One member of each group, or each individual, presents their results from the activity, being encouraged to express any uncertainties, and points of disagreement or high level of discussion.
Discussion: Students discuss the differences in results, comment on areas of uncertainty and disagreement, and what they have learned through the activity itself, and from hearing others' results.

CONSEQUENCES: The LASD pattern:
1. Provides the tutor with the opportunity to summarise key points in an area;
2. Provides practice for students in exercising a concept or set of concepts within a supported environment (not necessarily the case when working in a distance education setting).
3. Compels students to clarify their thoughts for the presentation to fellow students and the tutor.
4. Deepens the learning potential by sharing other students' experiences: misconceptions and breakthroughs.
5. Invites students to reflect on what they have learned.

IMPLEMENTATION: Issues to consider:
1. The activity needs to be deep enough to engage the students and not to simply re-state the key concepts given in the lecture.
2. The tutor needs to keep a relatively low profile and allow students to learn from each other.
3. Students and teams will complete the activity at different times. It is worth considering allowing teams to swap about and help each other while waiting for all groups to finish. This increases the level of cross-fertilization.
4. If this is used in a revision setting, then it allows more time to look at deeper issues, since students are already familiar with the topic.

EXAMPLE INSTANCES OF THIS PATTERN
This pattern has been used to teach:
- OO analysis
- OO design
- Smalltalk programming

RELATED PATTERN: (none so far)

Pattern Example #3
Programming in the Tiny, Small, Large (TSL) Pattern
Billy B.L. Lim, Illinois State University, USA
(DRAFT - will be reviewed at OOPSLA)

INTENT
To introduce software concepts, especially those that require a number of iterations for various depths.

MOTIVATION
When introducing new software concepts, it is often the case that the students do not completely grasp the concepts until they get to practice the concepts in some programming exercises. This is especially true when introducing object-oriented concepts to students who have seen only the procedural paradigm. Experience shows that the paradigm shift that has been so widely talked about can really make the learning of objects very difficult.

The pattern of pedagogy described here stresses the importance of a 3-stage reinforcement of the lectures presented in class. The three stages, detailed in the STRUCTURE section given below, permit an instructor to monitor the students' progress in a topic-by-topic basis, to test if the students can combine the topics and apply them in a larger setting, and to solve a "real-world" problem using all concepts discussed (and thus seeing the "big picture"), respectively.

It should be noted that the use of this pattern, in part or as a whole, is not a revolutionary concept. This discussion merely emphasizes the importance of carrying out the pattern (all three parts of it!) in a consistent manner as the author's experience shows that if any of the three is not practiced consistently, the learning of an already difficult subject matter can be made even more difficult.

APPLICABILITY
The TSL pattern can be used to introduce any software concepts, whether they are programming related or not. The examples used in this article just happen to be related to object-oriented programming.

STRUCTURE

Tiny:

This part involves setting up homework assignments that typically take only a few days to complete. (More accurately, students are given only a few days to complete. The work itself should only take a little while.)
This type of assignments permits the instructor to reinforce materials taught in class and more importantly, get immediate feedback from the students so that further clarification and/or elaboration of the materials may be given. Multiple questions may be assigned in a homework of type "tiny," each focusing on a specific topic of interest.
Examples of "tiny" assignments include simple class definition with data and behaviors, exploring the difference between private, public, and protected access control (for C++ only), using self and super pseudo variables (for Smalltalk only), and testing the effect of including/excluding the keyword virtual when defining member functions (for C++ only).

Small:

Assignments of type "Programming in the Small" represent those that are do-able in weeks rather than days, unlike those of type "tiny." This type of assignments allows an instructor to give a more in-depth study of certain topics that are deemed central to the course. This next step, which can be a much more elaborate one, is a natural progression after the students have had a chance to learn the individual topics with the "tiny" assignments.
An example of a "small" assignment is one that involves the development of one or more classes with a fair number of responsibilities in a class library. For instance, students may be asked to develop a string class that supports 10-20 responsibilities. This will allow the reinforcement of multiple ideas discussed in lectures such as class definition, operator overloading, the danger of using default assignment operator (if using C++), constructors (if using C++), etc.
Another example, one that may be appropriate for introductory students (e.g., CS1), involves designing and implementing a calculator. If the students are initially exposed to the procedural paradigm first, then a procedural approach to this problem will involve functional decomposition of the calculator features, with each feature implemented in a function.
Then the students may be asked to re-do the calculator assignment but this time with the notion of a calculator object that is responsible for all those features implemented before. With this, the students can compare and contrast the two approaches and see the similarities and differences. They may also be asked to extend, through inheritance, the original calculator with more functionality.

Large:

This part involves a comprehensive term project that spans the entire semester. This all- encompassing project, which consists of several milestones, allows the students to apply all the concepts studied in class and enables them to see the "big picture" through the development of a "real-world" application. The milestones involved may include proposal, CRC cards, use cases, object diagrams, class definitions, GUI design, prototype, full implementation, etc. depending on the type of courses being offered.
An example of a project for a junior/senior level course is the development of an application that makes use of certain class libraries that are made available to the students. These libraries are typically GUI and/or foundation classes based. The application might also involve the creation of several new classes by the students themselves. Typically, these new classes are very much domain specific (e.g., Policy class for an insurance application, RentalItem class for a rental application, etc.).

CONSEQUENCES
- The TSL pattern allows students to see not only the forests and the trees, but also the "leafs" within individual trees. They can grasp abstract concepts early in the course through "tiny" assignments before they embark on a more challenging one. This reinforcement, while tiny, is often overlooked by many educators and thus students are left making a "large" jump while they are doing an assignment that is thought to be "small" by the instructor.
- With TSL, a three-prong reinforcement is established and students are actively, constantly, and progressively participating in class activities. This type of student involvement makes the learning fun and keep the students' interests on the topics high.
- Then, with the "small" and "large" assignments, students get to see and eventually appreciate the beauty of object-oriented technology. Having worked on the individual pieces and having combined those pieces together give them the "big picture" and the "ah- huh" feeling that every student should feel after completing the course.

IMPLEMENTATION: Issues to consider:
- One of the most important issues when implementing the TSL pattern is time management. With the "tiny" part, students are given a "tiny" assignment almost every week. In a course that meets three times a week, say Mondays, Wednesdays, and Fridays, a homework may be given on a Monday and it is due back on the Friday of the same week. The Wednesday in between may be used to clarify homework requirements if needed. That amounts to approximately 12-14 "tiny" ones and that can be exhausting for both the students and the instructor. A partial solution (for the instructor) might be to grade only a portion of the assignment and discuss the non-graded ones in class. Students would have done (or at least thought about) the problem sets and that makes the discussions easier to follow. As for the students, the number of assignments can be relaxed a little bit if the students are following the materials well.
- For the "small" assignments, approximately 4-5 may be given in a 16-week semester. This gives the students sufficient time to devise a solution (which should be a major part of the total time), learn the development environment (since "tiny" assignments may not require the use of a computer), implement the solution, clean up their code, and provide a solid documentation for their work.
- As for the "large" assignment, there is only one since this is a term project. Depending on the level of the course, a team consisting of two, three, or four may be formed by the instructor or the students themselves. Much like group projects in other courses, students will be asked to report on group activities, perform self-evaluations, hold regular meetings, and give final presentations. This typically takes up a lot of the students' time and hopefully they learn to delegate work and to be responsible for work assigned to them. Otherwise, they will see that they cannot complete the work by themselves or that the pieces do not come together when they are combined at the end of the semester.

RELATED PATTERN
The individual components in LDLL (Lab-Discussion-Lecture-Lab) pattern.

EXAMPLE INSTANCES OF THIS PATTERN
(will soon be provided by the author)

=============================================

THE EVOLUTION OF A PATTERN

At the recent TOOLS'96 USA conference, participants in the "Challenges and Successes in Teaching OT" workshop created some drafts for pedagogical patterns by first generating a series of challenges, then brainstorming on the solutions to many of these challenges, and finally formatting a rough draft of pedagogical patterns for some of the challenges. An example follows.

I. One of the challenges is expressed:
Students experience interference from procedure-oriented concepts they already know. As a result, there is often more interference than reinforcing.

II. Potential solutions are brainstormed:
#1 The instructor can make comparisons for students.
#2 Or, the instructor can attempt to make students think in an object way from the beginning by postponing answers to students' inquiries regarding how their present knowledge (e.g. procedure-oriented) compares to OO.
#3 Or, the instructor may wish to lead students through the design of a system in first a "traditional" way and then in an OO way.

III. A pedagogical pattern is drafted from one of the three potential solutions:
Solution #3 was formatted into the first draft of a pattern, as follows:
1) Students design and implement a project using a traditional approach.
2) Instructor lectures on object concepts and suggests how this project could be repartitioned into objects.
3) Project is redone, by the students, using objects.

IV. The next step is to describe this pattern using the format in the sections shown in the patterns above. (Thanks to Steve Houk, an academic and industry OO educator, for submitting the following draft of this pattern which he uses in his classroom.)

Pattern Example #4
Design-Implement-Redesign-Reimplement
(DIRR) Pattern

INTENT
Explain new concepts and methods based on old concepts

MOTIVATION
It is often hard to get students to make the paradigm shift from functional programming to object oriented programming. The lecture-lab pedagogy provides a "concept" and "use" approach which can prevent the student from separating the "concept" from a specific "use". The DIRR pedagogy provides "relearning" methodology for reinforcing new concepts. In this pedagogy, the students are asked to design and implement programming solutions using their current paradigm. This is followed by a discussion of how the solution can be redesigned using concepts from the new paradigm. Finally, the students will reimplement their solutiona using the new paradigm concepts.

APPLICABILITY
Use the Design-Implement-Redesign-Reimplement pattern to bridge the gap from an old paradigm to a new paradigm.

STRUCTURE

Design: Students are given a programming problem and told to design a solution using their current familiar design methodology. The problem should contain components that can later be identified as redesignable in the new paradigm.

Implement: Students implement a solution to the programming problem using their current familiar coding methodology.

Redesign: After the students have implemented their solutions, the instructor leads a discussion of how the solution can be redesigned and repartitioned using new concepts from the new paradigm. Also presented are programming language features that support the new concepts.

Reimplement: The students redo the same programming problem using the new concepts from the new paradigm.

CONSEQUENCES: The DIRR pattern
1. Provides students with first hand experience of both the "old way" and "new way" of developing solutions.
2. Students gain practical insight into how new concepts relate their pre-established concepts.
3. Solving a problem more than one way often leads to deeper understanding of the concepts being addressed.
4. Questions arising from the students will tend to focus on the "why" things are done rather than on "how" they are done.

IMPLEMENTATION: Issues to consider
1. Double lab time required for each problem. However, second lab period should be shorter since many of the "semantic" issues have been handled by the students in the first lab.
2. Redesign discussions should center on how to repartition the problem and not on "good" previous solution.
3. Stronger (ego) students may be frustrated by having to "redo" their first solutions.
4. Evaluation should focus on reimplemented solution. However, ignoring first implementation entirely will reduce willingness of students to provide a wholehearted improved solution.

EXAMPLE INSTANCES OF THIS PATTERN
(Note: Although this "pattern" was conceived as a solution to the procedural-to-OO challenge mentioned above, it is defined in a general way so that it can have other instances -- so that it can be used in other lessons by other instructors (e.g. converting students from one operating system to another, one language to another, one development environment to another, etc.))