Active Learning of Object-Oriented Analysis and Design


Dr. Richard J. Botting .


rbotting@csusb.edu
California State University, San Bernardino, CA, USA.


Abstract

I use well known active learning techniques to teach Object-Oriented ideas in a 10-week Comparison of Programming Languages class. This cam from the Refashioning Object-Oriented Technology Teaching(ROOT) Project in the Computer Science Department at California State University, San Bernardino. I describe my techniques. I present evidence that the students learned how to do Object-Oriented Analysis and Design. I comment on the advantages and disadvantages of the active learning methods I adopted.

Outline

  1. The Problem -- Adding Content to a Full syllabus
  2. My Solution -- Active Learning
  3. Outcomes
  4. Conclusions
  5. Future Work
  6. References


The Problem -- Adding Content to a Full syllabus

California State University San Bernardino (CSUSB) has a diverse and economically challenged population of students taking bachelor and master level degrees. The Computer Science department accepted its first students in 1983. It has a course on the concepts of programming languages (CS320). Computer Science majors take it after completing the first two quarters of programming. Nearly all CS320 students already know C++ and how to draw simple UML diagrams. However, they do not use aggregation and inheritance correctly. They have not analyzed a complex problem, proposed an Object-Oriented solution, and had the result critiqued by an expert. They have not used any design patterns.

The CS320 Languages class [ CS320 ] covers a variety of programming paradigms. The goal was to help students to understand computer language issues and introduce them to a variety of syntax and semantics plus various metalanguages. CS320 includes laboratory work in HTML, C++, Prolog, LISP and Java. The text is Sebesta. Sebesta's book does have a good chapter on Object-Oriented languages. It does not use the UML or objects otherwise however.

I introduced the Object-Oriented Analysis and Design (OOA/D) using the Unified Modeling Language (UML) into the course in the spring quarter of 1998. This was part of the Refashioning Object-Oriented Technology Teaching (ROOT) Project. The Department of Computer Science, California State University at San Bernardino, formed a partnership with Rational Software through the Software Engineering Education (SEED) Partnership in Fall 97. The ROOT Project integrated Object-Oriented analysis and design (OOA/D) into the CS curriculum. Instead of compressing the teaching of an OOA/D methodology in the traditional CS 1 and CS 2 courses, we integrated OOA/D in five lower and upper division courses. By teaching OOA/D in increments, the students are not overwhelmed.

The new CS320 syllabus reduced the time spent on Prolog and Logic Programming. OOA/D and the UML fitted in as a way to describe the semantic structure of languages[ Botting99 ]. An Object-Oriented analysis and design project was added. The problem remained of the students having to learn a great deal: half-a-dozen languages, sixteen chapters of the text, OOA/D, and more of the UML.

My Solution -- Active Learning

I used active learning ideas used by the British Civil Service College, M. L. Johnson Abercrombie's work[ Abercrombie ], London University's Education Department [ Bligh72 ], and Donald Maas's techniques[ Maas]. I choose these as the only way I knew for the students to master all the material the department had assigned to the class.

Assigned Work: I require all students to study a chapter from the text or a particular handout before class. A few written answers to the review questions must be on my desk at the start of class. I can assess and reward their preparation for the class. It affects their grade. No time is spent in class reading over the assigned text.

Class Work: For most of the class time the students work. I start with administrative announcements as a sheet with a set of exercises and test-bank questions is passed around the class. These must not be available before class. If they are, students prepare less. I return graded work as students do their first exercise. I hand them their work by name. This helps me learn their names.

At the end of the class, I hand out a description of the preparation for the next class. I give out answers to exercises that are not in the text. I distribute materials that supplement the book. These include a description of OOA/D and mini-manuals for languages.

During the class, I select an exercise and invite questions. If the questions indicate that some knowledge is relevant but missing then I provide a short lecture on the topic. This is a rare event. Typically, students do an exercise alone. I then tell them to share their work in pairs. I can then ask each pair to share their work with another pair -- in groups of three or four. Answers can be presented to the class by students, pairs, or groups. I call the complete sequence: think-pair-square-share. I walk around and comment on the visible (and audible) work being done. Groups of three to five people in a meeting working together are called Buzz groups[Bligh72].

Sometimes I add a technique from the British Civil Service College. I call it the art gallery. This is good for teaching analysis and design methods. I use it with diagrams or small amounts of text. Each group draws their solution on chalkboards. Because four students are in each group and (typically) thirty-two students in the class this means only eight solutions will be drawn. Forcing all the students to think about the solutions is now essential. I provoke comments from the class in a nonthreatening and impersonal way. Nobody owns the errors on the boards. They do not cost points. However, I clearly label mistakes as mistakes and point out the risks of making them later. I hand out model answers for exercises if they are not in the book.

Training given by Donald Maas has shaped the actual interaction between myself and the students [see Maas below ]. These are easier to demonstrate than write about. Many involve asking a question, waiting while students think (covert activity), and then visible action(overt activity). As an example, I might put a diagram on the board of two classes connected by a generalization relationship, and with both having an operation with the same signature. I might then say: "Silently think about what this diagram means. You can jot down your thoughts. When you have an answer, raise your hand. I will select someone to answer in thirty seconds."

Donald Maas teaches many useful ways to respond to answers. An example a student who gives a good answer to the wrong question. For example, suppose Jo says "Use static function to get polymorphism in C++". Then I am likely to respond "Static functions show class-wide scope in C++. Pat! What do we use to get polymorphism?" After any answer, I can ask someone else in the class if they agree with it. Perhaps I might ask the whole class to signal what they think: "thumbs up or thumbs down?" Sometimes, I take a vote. Once the students have had their say, I give them my answers verbally, on the board, or on paper.

I have one different technique that I use when we are about to start using LISP, Prolog, and Java. In these three classes I and the students sit in a large circle. Each student must ask a different question in turn on the new language. They have studied a mini-manual for the language. They have a chance to ask questions. If the answer is not in their reading and not covered by a previous question I answer it myself. If I judge that a student can answer the question, then it goes back to the students to answer.

Laboratory Work: Each student assembles a WWW site with links to examples of diagrams, code and applets. Most of this work does not involve object-orientation. One laboratory sets a series of experiments up using a remotely accessible Rational Rose server and a free Linux diagraming tool (Dia). Students can then use these tools in their projects. We cover both C++ and Java in the lab work. The finished work is part of the student's web site on a server at CSUSB.

Project Work: In the project students work in teams. I allow students to organize their own teams to fit their various schedules. All project work is done outside the class. I give them a small and defective language description using an extended BNF and informal semantics. They first studied the language description and prepared a list of defects they want to fix. I review this report, comment on it, and grade it. They then submit a draft improved language description(BNF+UML). I review, correct, and grade it. This step corrects some gross misunderstandings of the UML(listed below). At the end of the course teams first present the syntax of their improved language and then the Object-Oriented semantics.

In the early parts of the project in the first two sections, students often made the following errors: The first submission reduced these errors by the final presentations the first two sections. For later sections, I prepared special handouts. They stress polymorphism and the Composite pattern. Some class time is spent on this. Students now make fewer errors.

Outcomes

I have taught the new version of the course half-a-dozen times. In five of these it had the same instructor, similar students, and an almost identical syllabus. Between twenty and thirty-five students have taken each section.

Projects: In these classes all but one team produced an understandable diagram using the UML. The one failure was a team of one student who had problems in the class as a whole. Even this student's work was an adequate first step toward an Object-Oriented compiler or interpreter for a small language. Two weak projects (out of about 40) came from teams where job pressures stopped a team member from doing their work.

In most classes the students take advantage of the project presentations at the end the term to express their creativity. They also hint about what the class feels. There are normally well drawn diagrams using PowerPoint, overhead transparencies, and the blackboard. However, we have had a Blair Witch project on video, an infomercial, a set of video out-takes, a perfect parody of my teaching style ("Please read the following 300 pages by tomorrow or lose points"), a special edition of the Gerry Springer show (with me as the victim), and a super-hero comic with myself as villain. I guess the students feel that I ask them to be too active.

Student Evaluations In the second to last weeks of most sections, students submitted the CSUSB standard Student Evaluation of Teaching Effectiveness (SETE) forms. The SETE forms contain 10 scores on a 4-point scale: Poor=0, Fair, Good, Excellent=4. My scores are usually: 1% Poor, 7% Fair and 83% either "Good" or "Excellent." The scores on the first two sections were better with 92% "Good+Excellent" scores. There was no significant difference between the two courses. In the last section I taught (Spring 2000) all but one score averaged about half of a standard deviation above the average for the College of Natural Science. One was one-tenth of standard deviation below. This lower score was for my ability to make the material understandable.

Anonymous Feedback: The students can provide anonymous opinions via the World Wide Web in their last laboratory [ Botting00]. Many did this in the first two classes. This showed that the students felt that the instructor initially emphasized the UML too much. The consequences seem to appear in the student's knowledge of the UML in the final examination. I analyzed a sample of fifteen final examination papers in the first two courses to see how well they grasped the UML and objects. In both exams, students had to recall how they expressed the semantics in their project. In the first course 60% did this correctly but in the second course only 20% did so correctly. In both exams, I asked students to express the structure of a control statement that I had shown them in handouts and class work. In the first course 50% did this correctly, but in the second only 33% did it correctly. In a third question, they asked students to express the idea that one class implemented an abstract class. In the first class 20% did this correctly, but in the second class none(0%) did it correctly. In summary, when the students felt I pushed them to learn the UML then they learned it better.

Affect on Other Classes: After two years of the ROOT Project, other teachers observed a marked improvement on students understanding of the OO paradigm when they apply the OOA/D methodology to programming projects in their senior-level computer science courses. We have traced the evolution in Concepcion98, ConcepcionEtal99, ConcepcionLeachKnight00, and ConcepcionBottingScroggins00.

Conclusions

Active learning lets the UML and OOA/D be taught as an integral part of a traditional "Concepts of Programming Language" class however the instructor has to emphasize and "push" the UML for students to master it. Students learn use Object-Oriented analysis and Design. However, the students clearly feel overworked or under pressure in this class. This may be the result of the particular instructor driven form of active learning that I used. When I am a student in such classes, I dislike being disturbed from my habitual way of taking notes.

I have not proved that active learning techniques are needed. To do this I would have to experiment by omitting it. I avoid experimenting on my students. My task is to teach upcoming computer professionals in the most effective ways I know. Luckily, educationalists [ for example: Abercrombie, Bligh72, Bligh98, Maas, . . . ] already have the evidence for when we need active learning. At the start of each class I explain to the students my philosophy:


        I hear and I forget,
        I see and I remember,
        I do and I understand.

These kinds of active learning work well for me. They require the teacher to exude a firm yet friendly persona in class. You have to prepare well and then improvise. What you do depends on how the students react. It is the antithesis of a boring lecture -- for both the students and the teacher. Both work harder. The teacher needs extra preparation, a confident attitude, trust in the students, the knowledge to give good answers to questions, and the resources to distribute large quantities of handouts.

Future Work

I am working on ways to add active learning to my web-based classes[ Botting98, Botting00, CS360: Systems Tools, . . . ].

References

Abercrombie69:
Abercrombie, M.L.J., "The Anatomy of Judgement", Pelican Books, 1969
Bligh72:
Bligh, D.A., "What's the use of lectures?" [2d ed.] New Barnet, Herts., UK, D.A. and B. Bligh, 1972 + [3rd ed.] Harmondsworth, Penguin, 1972 + Bligh98 below.
Bligh98:
Bligh, D, "What's the use of lectures?" [5th ed.] Exeter, UK : Intellect, 1998
http://www.csci.csusb.edu/dick/cs320/ Botting98:
Ten Years of Internet Teaching, presented at local teaching symposium
Botting99:
Botting, R.J., "On the Application of a Popular Notation to Semantics", SIGPLAN Notices, Vol. 34, No. 6, Jun 99, pp. 82-83.
Botting00:
Botting, R.J., Student Feedback on the World Wide Web, Paper to be submitted to SIGCSE 2001, Based on CSUSB sponsored FEEDBACK99 project.
Concepcion98:
Concepcion, A.I. , "Using an Object-Oriented Software Life-Cycle Model in the Software Engineering Course," In Proc. of the 29th SIGCSE Symposium, Atlanta, GA, Feb 1998, pp. 30-34.
ConcepcionEtal99:
Concepcion, A.I. , Cummins, L., Moran, E., and Do, M., "Algorithma 98: An Algorithm Animation Project", Proceedings of the 30th SIGCSE Technical Symposium, Mar 1999, pp. 301-305.
ConcepcionLeachKnight00:
Concepcion, A.I., Leach, N., Knight, A., "Algorithma 99: An Experiment in Reusability & Component Based Software Engineering", Proceedings of the 31st SIGCSE Technical Symposium, Mar 2000, pp. 162-166.
ConcepcionBottingScroggins00:
Concepcion, A.I., Botting, R.J., Scroggins, D.D., "The ROOT Project: An Integration of an OOA/D Methodology in the Computer Science Curriculum", SCI'2000 Florida USA July 2000.
CS320:
CS320 Web Site
Maas:
Maas, D.K.( dmaas@calpoly.edu, University Center for Teacher Education, Cal Poly, San Luis Obispo), Course notes "Strategies for Promoting Active Learning within the College Classroom", November 1, 1996
ROOT:
" Refashioning Object-Oriented Technology Teaching " -- The ROOT Project in the Computer Science department of the California State University, San Bernardino, http://www.csci.csusb.edu/rootproj/
Sebesta:
Sebesta, R.W., "Concepts of Programming Languages", Addison-Wesley, 1998