Educators' Symposium
Chair: Asoke K. Bhattacharyya,
Independent Consultant, ed_symp@oopsla.acm.org
It is my great pleasure to welcome you all from all corners of the world to the
Object Oriented Educators' symposium at OOPSLA, 2003 in Anaheim, CA on October
27,03. The mission of this symposium is to bring together everyone involved and
interested in OO education in a forum to discuss current issues on the subject and
share each other's experience. This year's theme is "State of the Art in Object
Oriented Education". Plan to attend.
|

|
Educators' Symposium
Monday, 27 October
8:30-17:30 Full day
|
|
8:30 - 8:40
|
Welcome and Introduction— Educators' Symposium Chair
|
8:40 - 9:20
|
Invited Talk I: Things They Would Not Teach Me of in College:
What Microsoft Developers Learn Later
Eric Brechner,
Microsoft Development Training, Microsoft,
ericbrec@Microsoft.com
There has always been a gap between what college graduates in any field are taught and what they
need to know to work in industry. However, today the gap in Computer Science has grown into a chasm. Current college hires
who join
Microsoft development teams only know a small fraction of their jobs and cannot be trusted to write new code until they have
received months of in-depth training. The cause of this growing gap is a fundamental shift in the software industry, which
now
demands higher quality and greater attention to customer needs. This paper presents five new courses to add to computer science
curriculums to help close this gap.
|
9:20 - 10:00
|
Invited Talk II: An Educational Perspective on Database Management Systems and Object-Oriented
Methodology: A 12 Year Journey
Shahram Ghandeharizadeh,
University of Southern California
This presentation is based on the speaker's experience of teaching OO methodology in the
Computer Science Department of the University of Southern California. It describes OO concepts that relate to database management
system. Several fundamental student misperceptions and their solutions have been addressed. A set of tools that enhance the
educational activities are discussed.
|
10:00 - 10:30
|
Coffee Break
|
10:30 - 12:00
|
Paper Presentation I
|
10:30 - 11:00
|
Methodology First and Language Second-A way to Teach OO
Haibin Zhu,
Nipissing University,
haibinz@nipissingu.ca MengChu Zhou,
New Jersey Institute of Technology,
zhou@njit.edu
C++ is a very successful object-oriented language. It is a required language for more and
more
students. It takes great effort and practice for these students to learn how to program in C++ and how to make object-oriented
programs. One potential failure is that they have learned programming in C++ but do not know how to program in an object-oriented
(OO) style. To avoid such failures, this paper proposes that first an object-oriented methodology is taught, and then the
language
itself. A six-step approach to teach the OO methodology is presented, followed by some innovative ways to teach different
mechanisms
in C++. In this way, students can master both object-oriented programming and C++ programming. The proposed teaching method
is
applicable to teaching other languages like Java and C#.
|
11:00 - 11:30
|
Rethinking Computer Science Education from a Test-First Perspective
Stephen Edwards,
Virginia Tech,
edwards@cs.vt.edu
Despite our best efforts and intentions as educators, student programmers continue to
struggle in acquiring comprehension and analysis skills. Students believe that once a program runs on sample data, it
is correct; most programming errors are reported by the compiler; when a program misbehaves, shuffling statements and
tweaking expressions to see what happens is the best debugging approach. This paper presents a new vision for computer
science education centered around the use of test-driven development in all programming assignments, from the beginning
of CS1. A key element to the strategy is comprehensive, automated evaluation of student work, in terms of correctness,
the thoroughness and validity of the student's tests, and an automatic coding style assessment performed using
industrial-strength tools. By systematically applying the strategy across the curriculum as part of a student's regular
programming activities, and by providing rapid, concrete, useful feedback that students find valuable, it is possible
to induce a cultural shift in how students behave. (Topics: "How to teach C# in CS Curriculum," "How to become a good OO programmer,"
".NET technology and CS/CIS Curriculum," "Whether and how to teach J2EE" and more.)
|
11:30 - 12:00
|
Object Oriented Principles in CS1
Carl G. Alphonce and Philip R. Ventura,
University at Buffalo, SUNY,
alphonce.pventura@cse.buffalo.edu
Teaching object-oriented programming in CS1 is hard. Keeping the attention of CS1 students
is
perhaps even harder. In our experience the former can be done successfully with very satisfying results by focusing on the
fundamental principles of object-orientation, such as inheritance, polymorphism and encapsulation. The latter can be done
by having
students create graphical event-driven programs. Teaching graphics can easily distract students and certainly takes time away
from
the fundamentals being taught. We use Java as a vehicle for OO instruction, but rather than expose CS1 students to the intricacies
of Swing we employ an elegant and small graphics package called NGP. NGP, developed at Brown University by Andries van Dam,
allows
students to create event-driven graphical programs using only inheritance and method overriding. We describe how we use NGP
to
enhance rather than detract from our teaching of fundamental OO principles.
|
12:00 - 13:00
|
Educators' Symposium Lunch and Round Table Discussions
|
13:00 - 14:30
|
Paper Presentations II
|
13:00 - 13:30
|
Reality Abstraction and OO Pedagogy: Results From 5 Weeks in Virtual Reality
John Towell,
Carroll College,
jtowell@cc.edu Elizabeth Towell,
Carroll College,
etowell@cc.edu
A five week program which involves exposure to a complex object-oriented virtual environment
was
evaluated for efficacy in learning fundamental object oriented principles. Students(n=57) from two CS1 classes were asked
to write
essays on their knowledge of object-oriented programming concepts following their participation in the program. A systemic
method
for evaluating student knowledge was followed by rating the student's knowledge on a one-to-five rating scale. The results
indicated
that the students understood, by virtue of their ability to write intelligibly, the concepts of abstraction, inheritance and
method
override. Demonstrated knowledge of the concept of state was far less convincing.
|
13:30 - 14:00
|
Teaching Polymorphism with Elementary Design Patterns
Joe Bergin,
Pace University,
berginf@Pace.edu
Polymorphism is often treated as an advanced topic by educators. Many feel that if statements
are
in some sense more "fundamental" to computing. On the contrary, polymorphism is both fundamental to object programming and
is an
elementary topic that can be easily understood by students. Previous papers have shown how role play exercises can remind
students
that they already have a deep understanding of dynamic polymorphism. The question then becomes how do we find effective teaching
techniques to present this topic when we move from the level of metaphor to that of programming. A few elementary patterns
can be
used to teach this topic even before the student is introduced to ad-hoc selection with if statements. Teaching these patterns
early
has the added benefit that they are pervasive in the Java libraries, so understanding them eases the student's later work.
|
14:00 - 14:30
|
ProfessorJ: A Gradual Intro to Java Through Language Levels
Kathryn Gray,
University of Utah,
kathyg@cs.utah.edu Matthew Flatt,
University of Utah,
mflatt@cs.utah.edu
In the second-semester programming course at the University of Utah,
we have observed our students suffering unnecessarily from a mismatch
between the course content and the programming environment. The course
is typical, in that it exposes students to Java a little at a
time. The programming environments are also typical, in that they
report compilation and run-time errors in the jargon of professional
programmers with references to the full Java language. As a result,
students rely heavily on teaching assistants to interpret errors, and
valuable classroom time is wasted on diversions.
ProfessorJ is our new programming environment that remedies this
problem. Like other pedagogical environments, such as BlueJ and
DrJava, ProfessorJ presents the student with a simplified interface to
the Java compiler and virtual machine. Unlike existing environments,
ProfessorJ tailors the Java language and error messages to the
students' needs. Since their needs evolve through the course,
ProfessorJ offers several language levels, from Beginner Java to Full
Java.
|
14:30 - 15:00
|
Doctoral Symposium and Other Conference Reports
|
15:00 - 16:00
|
Poster Session and Coffee Break
|
-
|
Preparing Undergraduate Students for Java Certification
Arial Ortiz,
ITESM, Campus Estado de Mexico,
arial.ortiz@itesm.mx
Java certification promises to make our students more marketable once they graduate. The truth
is
that certifications in general offer significant advantages, but it is important not to overestimate their benefits. In this
paper,
we describe our experiences on teaching a workshop aimed at preparing undergraduate students for the Sun Certified Java Programmer
exam. But first, we layout the real value of IT certifications and explain the different certification options available for
Java
technology.
|
-
|
Reuse of Teaching Components, a UML-Based Approach to Delivering and Managing Academic
Courses
Luis Palomino Ramirez,
ITESM, Campus Guadalajara Department of Computer Science,
lpalomin@itesm.mx Juan Antonio Vega Fernandez,
ITESM, Campus Guadalajara Department of Computer Science,
javega@itesm.mx
In this paper we present a model for the representation of academic courses based on the
organization and semantic relation of reusable teaching components using the unified modeling language. We describe an application
of the model to cs101, but we believed that the model can be applied to any subject content of any discipline. Results indicate
that
by following this model, the knowledge of more experienced teachers can be stored in its representation and the course components
are easier to reuse by less experienced teachers.
|
-
|
A Pair-Programming Experiment in a Non-Programming Course
Edward Gehringer,
North Carolina State University,
efg@ncsu.edu
Pair programming is a concept where two programmers work side by side at the same computer, writing code jointly.
One of them, called the driver, is in control of the keyboard and mouse. The other, called the navigator,
observes what the driver is doing and offers advice. It is the driver's job to write the code. The navigator has
a chance to observe the larger picture, evaluating the drivers code for correctness of design and implementation.
Studies have shown that pair programming is very effective. Two programmers can finish a task in little over half
the elapsed time that a single programmer takes. And the quality of the code measured in terms of absence of
defects is much higher.
In the past few years, pair programming has made inroads into industry and into programming courses. However, it has
not typically been used in courses that teach subjects other than programming or software engineering, nor has it
been used in the analysis of experimental results. This paper reports on an experiment in a combined senior/masters
level computer architecture class, using Hennessy and Patterson's Computer Architecture: A Quantitative Approach as
a text. Students were required to implement three projects simulating various aspects of a micro-architecture (cache,
branch predictor, dynamic instruction scheduler). Then they engaged in an experimental analysis to find the best
configuration in a design space. Students reported high levels of satisfaction with the experience of pair programming.
Pair programmers obtained significantly higher grades on Project 1; however, differences on the other projects were not
statistically significant.
|
-
|
A Framework for Building Language Interpreters
Alan Durham,
University of São Paulo, Brazil,
durham@ime.usp.br Edson Sussumu,
University of São Paulo, Brazil,
sussumu@novum.com.br Arlido Flavio da Conceicao,
University of São Paulo, Brazil,
arlido@ime.usp.br
This work presents an Object-Oriented framework for language interpreters development. We use
this framework to implement different programming language paradigms, including interpreters for imperative paradigm,
object-oriented paradigm and logic programming. Also, we shows an architecture that facilitates the teaching of programming
languages
by clarifying differences and commonalities of programming languages.
|
16:00 - 17:30
|
Fish-Bowl Panel Discussion on the Theme "State of the Art in OO Education— Benefits,
Problems and Their Possible Solutions"
|
|