Non-Programming Resources for an Introduction to CS
A Workshop for ITiCSE 2000
Helsinki, Finland
Joseph Bergin
Pace University
berginf@pace.edu
Myles McNally
Alma College
mcnally@alma.edu
Abstract
The workshop leaders believe that the Object-Oriented paradigm should be
introduced to students before the Procedural paradigm. OO is not a simple
extension to procedural programming, but requires different thought processes.
Program design is and should be an important topic in the curriculum, and
as such is required by major accrediting bodies. The activities of this
working group will be to gather resources which aid educators in teaching
object oriented program design at the beginning and throughout the first
courses in computer science. It will specifically focus on non-programming
resources that may be used independently of the language used as the course
vehicle. This is based on the observation that students require an introduction
to "Object Think" and the decomposition of problems appropriate for object
orientation. It is hoped that these resources will be useful in helping
educators teach in ways more appropriate to object orientation and somewhat
less bottom-up than has been the case when teaching procedural programming
first.
Resources to be Gathered
Members of this working group will gather, create, and foster the development
of resources in at least the following areas
-
Design Exercises
-
Metaphors (and their limitations)
-
In Class Exercises
-
Team Exercises
-
Patterns
-
Heuristics for finding objects/classes
-
Examples for Study and Extension
-
Demonstrations, especially Web Based demos
Workshop participants are sought who have some background in at least one
or two areas relevant to this project. Prior to the workshop, participants
will be asked to contribute one course module that might be used in an
introductory course.
A Brief Example
A design exercise that is commonly used in class in a team environment
is to design a Coffee Machine [1]. This exercise follows a discussion of
a day or so on objects, CRC cards, and UML style class diagrams. The format
of the exercise follows the pedagogical pattern Student Design Sprint [2],
in which the design exercises goes through several phases with changing
requirements in each phase and a merging of small teams into increasingly
larger teams in each phase. The initial statement of the problem is as
follows:
Design a controller for a simple coffee machine. The front
of the machine has four buttons, a coin slot, a coin return lever, and
a dispensing window. The four buttons dispense the four products: black
coffee, coffee with cream, coffee with sugar, coffee with cream and sugar.
Coffee costs $.35 US. These requirements may change.
Teams are initially two students. After about 30 minutes of effort, CRC
cards and a class diagram are required. At this time pairs of teams are
merged to give teams of four and and an additional requirement is added.
This can continue for as long as necessary with merging of teams and changing
of requirements. The CRC cards of one or more of the iterations may be
used for walk-throughs of use cases to determine if requirements are met
and if communication paths are clean and clear. The class diagrams may
be used by the instructor to comment on the designs. One feature of this
exercise is that the students see several designs and are required to merge
their own ideas with those of classmates. Good designs require five or
six classes and may involve specialization (inheritance) or not.
Web Site and Paper
The primary output of this working group will be a web-based repository
collecting and disseminating the resources gathered. This web site will
also provide a focus for future work by the participants and others in
gathering such resources. A preliminary site is established at http://csis.pace.edu/~bergin/iticse2000.
The working group paper will capture the state of that repository at the
time of the conference, detailing a number of the resources developed by
the working group participants before the conference.
Possible Participants
Stephen Hartley is the one responsible for suggesting this group and will
participate, though he may not be able to attend ITiCSE 2000. It is expected
that a number of participants in last year's Java working group will also
be interested this year. Dung Nguyen of Rice, John Lewis of Villanova,
and Michael Goldweber of Xavier have also expressed interest.
References
[1] Coffee Machine, Alistair Cockburn, http://www.cuj.com/archive/1605/feature.html
and http://www.cuj.com/archive/1606/feature.html
[2] Student Design Sprint, Joseph Bergin, http://csis.pace.edu/~bergin/fivepedpat.html
Summary of Experience of Dr. Joseph Bergin
Joseph Bergin received the Ph.D. in 1972 from Michigan State University,
working in mathematics. He has been involved in teaching computing since
1973 and has authored three computer science textbooks now in print. These
have all been intended for students in the early part of the curriculum
and have focused on object-orientation and generic programming. Dr. Bergin
has been using object-oriented programming since 1985 when he first learned
of the concepts while a visiting professor at Dartmouth College. His formal
training in computer science was at the IFRICS institute sponsored by Clarkson
College and led by Ed Dubinsky. He was also a participant in Dr. Naps Visualization
workshop and in the Visualization and WWW workgroups at ITiCSE 1996 and
1997 respectively and jointly (with Naps) led a group in 1998 and (with
Viera Proulx) in 1999. He has also been a participant each year in the
annual Educator's Symposium held in conjunction with OOPSLA. As a consequence
of this he has been an important contributor to the Pedagogical Patterns
project. (http://www-lifia.info.unlp.edu.ar/ppp ). Dr. Bergin's main interests
are in languages generally, but especially object-oriented languages. A
related interest is in the suitability of languages for the instruction
of novices. In addition to papers at various conferences and in journals,
he has published extensively on-line, with many tutorials and demonstrations
available. Some of this work is directed at beginning programmers and some
is intended for more advanced users. Recent work has focused on Java and
internet programming. This work is available on the net starting at http://csis.pace.edu/~bergin.
There are links there to the Java server (sol.pace.edu/java) that he also
maintains. Much of the recent work of Dr. Bergin has been in the development
of class libraries intended for instruction. Much of this is published
on-line in both C++ and Java. In the early part of his career, at a very
small and somewhat insulated college, he was often frustrated by the fact
that quite a lot of educational materials were available, but could not
be used because of the requirements for special hardware or specific operating
systems. His work since has always taken this into account by attempting
to develop materials that can be used by the widest audience possible.
Summary of Experience of Dr. Myles McNally
Myles McNally received the Ph.D. in 1982 from Temple University in Philosophy
with a dissertation in Epistemic Logics. He has been teaching computer
science since 1983, first at Drexel University in Philadelphia and for
the last 8 years at Alma College. Dr. McNally primary interests are in
Artificial Intelligence, Graphics and Visualization, Programming Languages,
and Computer Science Education. He has been working with the object-oriented
paradigm since he attended an NSF sponsored curriculum workshop on Object-Orientation
Across Undergraduate CS/IS Curricula in the summer of 1994. Dr. McNally
has given a number of presentations and authored papers on the use of visualization
in the undergraduate CS curriculum, with a particular focus on data structures
and algorithms. He has been a participant in ITiCSE working groups throughout
the history of the conference, working on topics in visualization, object-orientation,
and introductory computer science. He is currently involved in moving the
CS curriculum at Alma College to an object-oriented base, employing Java
as the language of instruction.