| Sponsored by the Association for Computing Machinery |
| Workshops |
Participation in one or more of the twenty-one workshops
requires a fee that is in addition to the conference
registration fee. All workshops take place at the Marriott
Marquis, except for those including a hands-on laboratory
component, which will be held at Georgia State University, about
a 15 minute walk away.
Preregistration is strongly
recommended. Assignment of attendees to workshops will be first-
come first-served. If you get shut out of your preferred
workshop(s) you will be contacted and given an opportunity to
register for a different workshop. Workshop registration can
also take place on-site. The registration booth will be open
Wednesday 6:00 p.m. to 9:00 p.m., Thursday, Friday, and Saturday
7:30 a.m. to 4 p.m.
Wednesday Evening Workshops, February 25th, 7:00 p.m. -- 10:00 p.m.
Introduction to Object-Oriented Design Rick Mercer Penn State Berks PO Box 7009 Reading PA 19610 rhm1@psu.edu 610.396.6140 Michael Clancy UC Berkeley 387 Soda Hall #1776 Berkeley CA 94720-1776 clancy@cs.berkeley.edu 510.642.7017 Workshop Category Half-Day Introduction Object-oriented software development begins by identifying the key abstractions - classes - that potentially model a solution and the major responsibility of each. The classes that result can be collected on Component, Responsibility,Collaborator (CRC) cards [1]. Each CRC card begins as a blank 3x5 index card with the class name and major responsibility written on the back. Collaborative design and role-playing enhance the OO development process. Possible analysis classes arise not only from the problem specification itself and domain expertise, but also from the words that float around in the air as teams analyze the problem. Team members assume the roles of these analysis classes, play out scenarios (what would happen when...), and establish relationships between classes. During role playing, team members establish more detailed responsibilities-what an object should know and what it should be able to do-while recording them on the front of the CRC cards. This workshop will introduce this object-oriented design (OOD) methodology in the context of a real-world case study. The strategy is influenced by the responsibility driven design of Wirfs-Brock, Wilkerson, and Wiener [2], the use of CRC cards as documented by Nancy Wilkinson [3], and the industry training techniques of Alistair Cockburn. Description of Workshop Activities The workshop will be team-oriented with the presenters acting as facilitators. Teams of four or five will be formed and given the following assignment: Sketch a simple design of a bank on one piece of paper. Workshop participants will then discuss which team had the best design. A good design typically has these characteristics [4]: 1. The name of the key components, or things, in the system. 2. The purpose, basic function, or main responsibility of each thing. 3. A drawing of the key communication paths between them. We will then present a new problem statement and gather volunteers to form a team in front of the room. We will discuss how to find the key abstractions (classes) that potentially model a solution. We will find them together and record them on CRC cards with the major responsibilities. Then the team members role-play scenarios while writing down additional responsibilities as they occur, discovering new classes when the need arises, and eliminating unnecessary classes. Numerous design decisions will arise in the process, and we as facilitators will inject design heuristics into the conversations. After a ten minute break, we will form teams and present another problem statement. For another hour, the teams will analyze and design a model with us once again acting as facilitators to all groups. At the end, one person from each group will present their team's design, for comparison. This will be followed by closing remarks and feedback from the teams. Background of the Presenters Rick Mercer has been teaching Computer Science at Penn State University since 1985. His interests have always been with undergraduate computer science education focusing on integration of object technology into the curriculum. He is the author of a 1991 CS1 Pascal textbook that completely introduced all of object-oriented programming and a 1994 C++ book that promoted the objects-early approach. He is now currently working on a another textbook that integrates algorithmic patterns, design heuristics, and object-oriented design into the first course. Mike Clancy coordinates the lower-division computer science courses at U.C. Berkeley; these courses have been moving more and more toward object-oriented programming. For many years, Mike has also been promoting the cause of case studies as a vehicle for teaching programming, and he is now trying to figure out which aspects of object-oriented design and programming are best illustrated with case studies. Bibliography [1] 'A laboratory for Teaching Object-Oriented Thinking.', Beck, Kent and Ward Cunningham, OOPSLA-89 Proceedings, SIGPLAN Notices 24(10):1-6 (October 1989). [2] Designing Object-Oriented Software, Rebecca Wrifs-Brock, Brian Wilkerson, Lauren Wiener, Prentice Hall, 1990. [3] Using CRC cards, an Informal Approach to Object-Oriented Development, Nancy M. Wilkinson, SIGS books. [4] 'The Coffee Machine Design Problem', Alistair Cockburn, Humans and Technology Technical Report, to be published in C++ User's Report.
Introduction to Java
Edward C. Epp
Department of Mathematics and Computer Science
The University of Portland
5000 North Willamette Blvd.
Portland, OR 97203
epp@uofport.edu
503-283-7163
half-day
Java has several advantages as a first language for beginning
computer scientists. It is object-oriented, has simplified
syntax, works over the Web, and has an extensive graphical
library. This workshop will provide a hands-on overview of
Java so it can be evaluated for classroom use. The workshop
will focus on learning the rudiments of Java and its class
libraries.
Workshop Outline
* Objects - using predefined classes to create a lunar of
Java code.
* Graphics objects - drawing images with the graphics
library.
* Flow of control - navigating a robot through an
obstacle field using selection, iteration, and
functional abstraction to create rules.
* Event handling - capturing mouse events to create a
doodle (drawing) program.
* Numerical computing - demonstrating chaos.
* Creating custom classes - drawing fractal images by
creating a complex number class.
* Other features - quick overview of graphical user
interfaces, threads, and image manipulation.
Software Needs
At last year's workshop Metrowerks, made their software
available at no charge during the workshop. In addition,
Microsoft donated a copy of Visual J++ to each workshop
participant. Negotiations will again be made with Symantec,
Sun, Microsoft, Borland, and Metrowerks for donations of
their Java development environments for workshop participants
and/or use of their environments during the workshop.
Finally, a minimal set of Sun's Java development systems can
be used at no cost.
Written Handouts
The presenter has written the first draft of an introductory
Java text. McGraw-Hill will make copies available to each
workshop participant at no cost to SIGCSE.
Tutorial Length
One half day.
Format
Tutorial presentation will consist of alternate live
demonstrations, code overviews, question/answer periods,
hands-on problem solving, and discussions.
Presenter's Experience
By the time of this conference the presenter will have had
two years of experience teaching Java in CS1 and CS2. His
textbook, Patterns in Computer Science Using Java, is
currently under contract with McGraw-Hill for Fall 1998
publication. The material for this workshop has been
finetuned through critical reviews and student feedback.
At the 1997 SIGCSE conference the presenter gave two well-
received half-day workshops on Java. These session where
highly interactive. They included demonstrations, code
overviews, question/answer periods, hands-on problem solving,
and discussions about using Java with students. Participants
received experience using objects, creating graphics images,
handing mouse events, and creating classes.
The presenter demonstrated two important workshop skills at
the 1997 SIGCSE conference. The first was to respond to the
participants needs by adapting the mix of presentation,
question/answer periods, and hands-on time to maximize their
experience. Second, he took personal responsibility to
assure that all physical arrangements were made. The
presenter spent months ahead of the conference negotiating
with local computer service personnel and software vendors.
Once on site the presenter spent 16 hours installing
software, testing each workstation, and working out
contingency plans if problems occurred. As a result, all the
time during the workshop was spent on Java and not struggling
with hardware/software snafus.
In April of 1995, 1996 and 1997, at the Spring CSTA
(Computer Science Teachers Association located in the Pacific
Northwest) meeting, the presenter gave 3-hour hands-on
workshops on the use of Java and its GUI class libraries.
In March of 1996, the presenter gave a 1 1/2 hour seminar at
SIGCSE. The presentation focused on the use of GUI libraries
in C++ and Java for teaching beginning computer science
courses.
Using Macromedia Director for Multimedia Design Domenick Pinto, Chair, Computer Science Dept. Sacred Heart University Fairfield, CT. 06432 (203) 371-7789 pintod@sacredheart.edu Sandra Honda Adams, Assoc. Professor, Computer Science Sacred Heart University (co-presenter) Half-Day Workshop Introduction Macromedia Director is an authoring tool that is becoming increasingly utilized for production of CD-ROMs, computer-based training, and creating kiosks. The integration of text, color, animation, sound, and video can be manipulated (along with a scripting language called Lingo) to provide a smooth, professional, and impressive looking multimedia design using the Director software. Description The workshop activities will include a few simple demos created by the presenters that exhibit the power and beauty of using Director software. A hands-on component will follow as the participants develop an entire Director "movie" along with the presenters. Lastly, the participants will also have the opportunity to try their own creative development of an application. Throughout the entire workshop, the presenters will demonstrate the use of the various components of the software including using cast members, the score, the stage, the control panel, paint windows, and scripting. Background Both presenters are Associate Professors of Computer Science at Sacred Heart University in Fairfield, CT. As indicated, Domenick Pinto is Chair of the Department of Computer Science and Information Technology at the university. The two presenters are currently teaching a new course entitled "Design of Multimedia Applications" for CS majors at the university using Macromedia Director software. In addition, they are developing a similar course for non-majors. Both Sandra and Domenick have studied at the Institute of Advanced Technology in Durham, North Carolina as well as having attended several Macromedia workshops in New York City.
Java as a Concurrent Programming Language
for Operating Systems and Related Courses
Stephen J. Hartley
Math and Computer Science Department
Drexel University, Philadelphia, PA 19104
(215) 895-2678 mailto:shartley@mcs.drexel.edu
Introduction
The excessive hype Java receives should not distract us from the fact
that it is an excellent language for teaching programming: no pointer
arithmetic, no memory leaks, strong typing, many compiler and run-time
checks. Since threads are built-in, Java can be used as the
concurrency platform in operating systems and related courses. This
workshop will show how to use Java to give students practice and
experience in concurrent programming.
Knowledge of sequential Java and concurrency issues (race conditions,
mutual exclusion, semaphores, monitors) will be assumed.
Activities
An outline of the topics to be covered follows.
threads
Java virtual machine memory system behavior, volatile keyword.
Race conditions in multithreaded programs with Java examples.
How to force time slicing of Solaris threads.
locks
Every Java object has a lock.
A synchronized block of code blocks until the lock can be
obtained: synchronized (someObject) { ... }. Thus synchronized
blocks can be used as implicit binary semaphores with initial
value one to enforce mutual exclusion of code critical sections
and prevent race conditions.
Relationship of locks to Java virtual machine memory system
behavior.
monitors
These are built-in to Java and use the object lock.
A Java monitor has synchronized methods: the whole method body
acts as a synchronized block: synchronized (this) { ... }
For condition synchronization, there are wait, notify, and
notifyAll methods. The signaling discipline is ``signal
and continue.''
Each Java monitor object has a single anonymous condition
variable, which usually means that if there are multiple wait
conditions in the monitor, then one should use notifyAll()
instead of notify() and while (condition) wait(); instead of if
(condition) wait();.
In Java monitors, barging is possible, which usually means one
should use while (condition) wait(); instead of if (condition)
wait();.
Another object can be used as a callback, which is almost a named
condition variable.
void aMonitorMethod(...) {
Object callbackObject = new Object();
...
synchronized (callbackObject) {
...
successful = aMonitorSynchronizedMethod(callbackObject);
if (!successful) callbackObject.wait();
...
}
}
void synchronized anotherMonitorMethod() {
...
if (...) synchronized (callbackObject) { callbackObject.notify(); }
...
}
semaphores
These must be provided in a user-written class library.
Implementation of binary and counting semaphores.
message passing
Difference between invoking a method (thread leaves code in one
object to execute code in another object, then comes back) and
sending a message (thread sends an object to another thread, then
optionally blocks until the other thread receives it).
These must be provided in a user-written class library.
Implementation of synchronous (blocking sends) and asynchronous
(non-blocking sends) message passing.
Send object references from one thread to another (intra
JVM).
Send data type values like int, double through a pipe
(intra JVM).
Send data type values like int, double through a socket
(inter JVM).
Send serialized objects through a pipe (intra JVM).
Send serialized objects through a socket (inter JVM).
rendezvous
Client-server programming: client transacts with the server by
doing a send followed immediately by a receive of the reply.
These must be provided in a user-written class library.
Addressing issues.
Use one object for client to contact server (intra JVM).
Use two objects, client side and server side, and
serverSocket (inter JVM).
Client-server transaction of object references (intra JVM).
Client-server transaction of serialized objects through a socket
(inter JVM).
Presenter's Background
The presenter has been teaching operating systems for 15 years, and
has used Concurrent C, SR, and now Java for teaching concurrent
programming.
Pedagogical Uses of Adaptive Hypermedia MAJ Curtis A. Carver Jr. and CPT Joseph Adams Department of Electrical Engineering and Computer Science United States Military Academy West Point, NY 10996 dc8l77@eecs1.eecs.usma.edu 011-82-351-870-8843 dw0205@eecs1.eecs.usma.edu 1-914-938-5575 Half-Day Introduction: Adaptive hypermedia is the adaptation of the presentation or navigational support provided on a hypermedia page based on some input from the student and a user model. Adaptation of the presentation is the dynamic alternation of text or multimedia based on student learning style or demonstrated knowledge level. Adaptation of navigational support can be implemented through link hiding, link sorting, link annotation, or map manipulation. This workshop will explore two fully functional adaptive hyper-media systems that demonstrate the potential of adaptive hypermedia for pedagogical purposes. The first system is the adaptive hypermedia interface. This system, a component of CS383 Computer Systems, dynamically presents lesson material using link sorting according to the learning style of the student. Based on Felder's Learning Style Model, the adaptive hypermedia interface differentiates between 720 different types of learners and dynamically presents lesson material in a format suitable for individual user. Implemented through Common Gateway Interface (CGI) forms, the system is usable world-wide by students. The second system to be demonstrated is the Adaptive Student Response System. This online assessment system is likewise implemented through CGI forms and adjusts the difficulty of questions based on demonstrated student knowledge. Using a 250 question test bank, the system selects easier or harder questions based on dynamic historical data and provides feedback to the user by color-coding lesson objectives. The adaptive student response system also provide hypermedia-based question hints, feedback to the professor based on aggregate section performance, and multi-course support. Description of Workshop Activities: Given that most if not all of the workshop participants have a rich background in teaching, the workshop will focus on discussing the effectiveness of adaptive hypermedia both inside and outside of the classroom. The discussion will focus on the advantages and disadvantages of adaptive hypermedia and when and where adaptive hypermedia is effective and when it would not be. The idea of coupling a learning style model with adaptive hypermedia will also be explored in detail. These discussions will be supported by empirical evidence and research papers where available. Additionally, some of the technical aspects of implementing adaptive hypermedia through CGI forms will be discussed so that the participants fully understand the costs associated with implementing an adaptive hypermedia system. MAJ Curtis A. Carver Jr. is a fourteen year career Army officer who recently completed tours as an assistant professor at the United States Military Academy and the U.S. Army Command and General Staff College. He was the Primary Investigator of the West Point Hypermedia Research Group and a consultant to the Army Classroom 21 project, the hypermedia doctrinal publications project, and the Warfighter's Simulation 21 project. He is currently the Deputy G6 Communications, Electronics, and Automation officer with the 2nd Infantry Division at Camp Red Cloud in South Korea. He has published over twenty-five research papers including five of which have won conference best paper awards. He has been an invited speaker to several conferences and conducted academic workshops at the United States Military Academy, Command and General Staff College, and the University of Colorado. CPT(P) Joseph Adams is a twelve year career Army officer who is an assistant professor at the United States Military Academy and the current Primary Investigator of the West Point Hypermedia Research Group. He is also the primary technical consultant to the Army Classroom 21 project.
Parallel Computing for Undergraduates: Curricula Issues and Software Tools Helmar Burkhart Ignatios Vakalis University of Basel Capital University Computer Science Mathematics, Computer Science, Mittlere Strasse 142 Physics CH-4056 Basel, Switzerland Columbus, OH 43209-2394 burkhart@ifi.unibas.ch ivakalis@capital.edu + 41 61 321 99 67 (614)236-6587 Workshop category: Half-day Introduction to the topic: Parallel computing is an exciting field for both teachers and students. It is considered an enabling technology for many fields and is considered one of the core elements for effective computational science. Two different tracks to approach parallelism can be identified: the theory-driven track puts emphasis on algorithms and their complexity analysis (e.g. PRAM, LogP, and BSP). The architecture-driven track puts emphasis on architectural aspects and machines (e.g. thread packages and message passing libraries). Both approaches are insufficient for undergraduates when used in isolation. Undergraduates can only spend a limited time on the subject and thus require easy-to-use abstractions for parallelism and more emphasis on practical usage of parallel and distributed systems including software tools. We propose a software engineering-driven track with emphasis on portability, reuse, program skeletons, etc. Workshop activities: This workshop presents general concepts and information on teaching parallel computing for undergraduates in computer science and related fields. It also provides detailed strategies and contents about a particular course concept. Attendees will get links to widely available information (journals and software repositories) and detailed descriptions of a courseware package developed by the presenters (including software package, handbook, course notes, and assignments). Course contents: Part I (90 minutes): Role of parallel computing for undergraduates Teaching strategies for undergraduates (preliminary results from an NSF research grant) Sources of information (web, journals, public domain software) - Break - Part II (90 minutes): A first course in parallel computing: Concepts and course structure ALWAN: High-level coordination language for scientific programs (language, environment, model programs, performance issues, courseware) MPI: Low-level message passing library (library, tools, examples, peformance issues, courseware) - Conclusions and Discussion - Background of presenters: Helmar Burkhart is a computer science professor at the University of Basel, Switzerland. His research interests include parallel and distributed processing, programming languages, and software engineering. He is an associate editor of the International Journal of High-Speed Computing and serves on the Editorial Advisory Board of Scientific Programming. He received a diploma in computer science from the University of Stuttgart, Germany, and a PdD degree and Venia Legendi in computer science from the Swiss Federal Institute of Technology (ETH) Zurich, Switzerland. He is a member of ACM, IEEE, GI (German Informatics Society), and SI (Swiss Informaticians Society). Ignatios Vakalis is an associate professor of mathematics and computer science at Capital University in Columbus Ohio. His research interests include parallel numerical integration and applications of parallel computing in the area of geographical information systems. For the last two years he has been teaching parallel and high performance computing at Capital University. He has received an NSF ILI grant to establish an Advanced Computational Laboratory and integrate parallel computing in a variety of CS courses. He received a Bachelor's degree in Physics from Univ. of Patras Greece, a M.Sc. in computer science and a Ph.D in mathematics from Western Michigan University. He is a member of ACM, IEEE, MAA, and AMS.
Cooperative Learning in the Non-Laboratory
Classes of CS Courses
Dr. Dorothy Deremer
Department of Mathematics
and Computer Science
Montclair State University
Upper Montclair, NJ 07043
973 655 7239
deremerd@alpha.montclair.edu
Half-Day SIGCSE T98 Workshop Proposal
Introduction
Cooperative learning is a teaching system in which small groups
of students help one another learn. In addition to increased
student achievement, research shows that cooperative learning
cultivates critical thinking and higher level reasoning.
Research also suggests non-achievement related benefits such as
more positive attitudes toward the subject area, improved
student retention, better student-faculty relationships, more
realistic understanding of others, and strengthened self esteem.
Cooperative learning has a long history of development and
application and decades of research including the continuing
work of Robert Slavin of The Johns Hopkins University and David
and Roger Johnson and their colleagues at the Cooperative
Learning Center of the University of Minnesota. One of the
oldest and extensively studied forms of cooperative learning is
based on student teams. Slavin categories this method as STAD
(Student Teams - Achievement Divisions). In STAD, the instructor
assigns students to learning teams so that the teams are mixed
in terms of performance level, gender, and ethnicity.
The Johnsons have extensive experience both in developing
strategies for and in research with university and adult
learners. Over the year in a variety of settings and national
locations, they sponsor and/or endorse several levels of
training in cooperative learning. The Johnson method is related
to Slavin's STAD and stresses team building and assessment.
Specifically the Johnson method requires the instructor to
structure, implement, and assess the application of five basic
elements. These elements are 1.positive interdependence (each
member needs every other member); 2.individual accountability
(each member is responsible for her/his portion of the task);
3.small group skills (members are taught and practice group
communication skills); 4.face to face interaction (the group
members sit facing each other); and 5.group processing (members
assess their effectiveness after the task is completed).
Cooperative learning is notably relevant in computer science
education because it enhances the mastery of technical ideas,
motivates the development of critical thinking, and teaches
communication and team membership skills. The Johnson's
presentation of cooperative learning is especially useful
because it is a structured, prescriptive method based on
extensive research with college and adult populations.
Workshop Activities
The workshop will implement the Johnson method of cooperative
learning as its theoretical model. The workshop will be
developed as a series of cooperative learning activities.
Activities will relate to research findings about individual,
competitive, and cooperative learning, the benefits of
cooperative learning, structuring groups, and reflecting on the
Johnson basic elements of cooperative learning. Attendees will
practice a five step process developed by the presenter for
creating a cooperative learning lesson in computer science, and
will share their experiences with cooperative learning. All
workshop activities will be structured both in terms of task
and group membership and roles within groups. Typical group
structures will include base group, formal group, and informal
group. Although the workshop will contain some direct teaching
(lecturing), one of the important facets is for attendees to
experience cooperative learning themselves.
Background of Presenter
The presenter has used cooperative learning for many years in
several computer science courses including CS I at Montclair
State University. Montclair State is a large, predominately
commuter, public institution in a suburban setting. Students
represent a broad range of ethnic backgrounds, age, and work
experience. A growing population are part-time students. This
diversity is reflected in the computer science courses. In CS I
most students are not initially computer science majors.
In addition to her own cooperative learning study and
application, the presenter has participated in two 32 hour
Johnson endorsed/sponsored cooperative learning workshops.
The first workshop, in June 1995, on Basic Cooperative Learning
was given by the David and Roger Johnson and Ann Ishler, a
Johnson trained colleague, at Myrtle Beach, SC. The second
workshop, in June 1997, on Advanced Cooperative Learning was
given by Edythe Johnson Holubec, associated with her brothers'
work for over 25 years, in Jacksonville, FL and sponsored by
the Southeastern Center for Cooperative Learning. The presenter
has given workshops on cooperative learning to math, computer
science, and physics colleagues at Montclair State. At the
April 1997 Consortium of Computing at Small Colleges - NE, the
presenter gave a tutorial on cooperative learning. During SIGCSE
T95, the presenter was a member of a team who gave a well
received workshop on Cooperative Learning in CS. The presenter
is a Professor of Mathematics and Computer Science at Montclair
State University, where she has been a member of that department
since 1981. Prior to 1981, the presenter was chairperson of the
Department of Mathematics, Caldwell College in New Jersey.
The presenter has a Ph.D. in statistics from New York
University, an M.A. and B.A. in mathematics from Montclair
State, and an M.S. in computer science from Stevens Institute of
Technology in New Jersey. She has obtained several off campus
grants for computer science undergraduate education related to
database systems, operating systems, and parallel processing.
She was the co-chairperson of Montclair StateUs first successful
computer science CSAC accreditation process. In addition to
coordinating and teaching CS I and CS II at Montclair State, she
teaches upper level undergraduate and graduate computer science
courses. In recent years, she has presented at several SIGCSE
Technical Symposiums and regional conferences and attended
several NSF Faculty Workshops in C++ and Laboratories, Labs in
the First CS Courses, Parallel Processing, and Peer Learning.
Intermediate Java
Edward C. Epp
Department of Mathematics and Computer Science
The University of Portland
5000 North Willamette Blvd.
Portland, OR 97203
epp@uofport.edu
503-283-7163
half-day
Java provides standard features that are traditionally
considered advanced programming topics. This workshop
explores using Java's graphical user library, threads, and
networking in beginning courses. In addition, we will
explore Java's IO, vector, and string classes.
Workshop Outline
* Graphical User Interfaces - using Java's GUI class
library to control a Pong game.
* Vectors - searching and sorting Siskel and Ebert movie
reviews.
* Input/Output - investigating the effect of the Pentium
Crisis on Intel's stock prices.
* Threads - modeling a consumer/producer problem using
robots.
* Networking - communicating between programs.
Software Needs
At last year's workshop Metrowerks, made their software
available at no charge during the workshop. In addition,
Microsoft donated a copy of Visual J++ to each workshop
participant. Negotiations will again be made with Symantec,
Sun, Microsoft, Borland, and Metrowerks for donations of
their Java development environments for workshop participants
and/or use of their environments during the workshop.
Finally, a minimal set of Sun's Java development systems can
be used at no cost.
Written Handouts
The presenter has written the first draft of an introductory
Java text. McGraw-Hill will make copies available to each
workshop participant at no cost to SIGCSE.
Tutorial Length
One half day.
Format
Tutorial presentation will consist of alternate live
demonstrations, code overviews, question/answer periods,
hands-on problem solving, and discussions.
Presenter's Experience
By the time of this conference the presenter will have had
two years of experience teaching Java in CS1 and CS2. His
textbook, Patterns in Computer Science Using Java, is
currently under contract with McGraw-Hill for Fall 1998
publication. The material for this workshop has been
finetuned through critical reviews and student feedback.
At the 1997 SIGCSE conference the presenter gave two well-
received half-day workshops on Java. These session where
highly interactive. They included demonstrations, code
overviews, question/answer periods, hands-on problem solving,
and discussions about using Java with students. Participants
received experience using objects, creating graphics images,
handing mouse events, and creating classes.
The presenter demonstrated two important workshop skills at
the 1997 SIGCSE conference. The first was to respond to the
participants needs by adapting the mix of presentation,
question/answer periods, and hands-on time to maximize their
experience. Second, he took personal responsibility to
assure that all physical arrangements were made. The
presenter spent months ahead of the conference negotiating
with local computer service personnel and software vendors.
Once on site the presenter spent 16 hours installing
software, testing each workstation, and working out
contingency plans if problems occurred. As a result, all the
time during the workshop was spent on Java and not struggling
with hardware/software snafus.
In April of 1995, 1996 and 1997, at the Spring CSTA
(Computer Science Teachers Association located in the Pacific
Northwest) meeting, the presenter gave 3-hour hands-on
workshops on the use of Java and its GUI class libraries.
In March of 1996, the presenter gave a 1 1/2 hour seminar at
SIGCSE. The presentation focused on the use of GUI libraries
in C++ and Java for teaching beginning computer science
courses.
Network Programming With Java Rodney S. Tosten, Gettysburg College, Gettysburg, PA 17325 Phn: 717-352-7613, Email: rtosten@gettysburg.edu Paul T. Tymman, Rochester Institute of Technology, Rochester, NY 14623 Phn: 716-475-7908, Email: ptt@cs.rit.edu Half-Day Workshop Introduction It was not all that long ago when dumb terminals and 300 baud acoustic coupler modems were used to connect to remote computers. Today we use ISDN or 33.6 baud modems to connect to our ISP (Internet Service Provider). Once a PPP or slip connection is established, a Web browser can be used to access multimedia documents, that include object-oriented Java applets, from a remote server. It is safe to say that a lot has changed in the area of computer networking over the past few years. The scenario described in the previous paragraph can be used to highlight two important facts about computer technology. First, Internet based computer networks have become an integral part of the computing environments that are used on a daily basis. Second, computer networking is a very dynamic field that changes almost daily. Clearly, undergraduate computer science students and faculty must understand this technology. Faculty interested in teaching this material are faced with two challenges: first they must learn the material, and second they must keep up with the seemingly endless introduction of new networking tools and services. This proposal describes a half-day workshop that will help those who are familiar with TCP/IP and object-oriented concepts to become more familiar with the use of Java in Internet based networking. The workshop will be divided into two parts. The first will cover basic Java programming including Thread objects. An outline of topics is below. Overview History, The Java , Java and the Internet, Java Syntax, Exceptions, Strings, Arrays, Applets and Applications, Compiling Java Programs, Running Java Programs The Java Abstract Windowing Kit Panels, Graphics, Buttons, TextField, Layouts: Flow, Border, Grid Event Handling Event Handlers, Event Objects Java Threads Subclassing, Running, Stopping The second half of the workshop will focus on using Java as a network programming language. The topics will cover sockets in Java and how to implement several well known Internet services using Java and sockets. An outline of this part is given below. Java.net Sockets, Setting Up a Server, Setting Up a Client TCP Applications in Java TCP Client, Basic Client Algorithms Writing Threaded TCP Servers TCP Server, Basic Server Algorithms Writing a finger client and server UDP Applications and Java DNS Client, DNS protocol UDP Servers in Java Designing a UDP Server, Setting Up and sending UDP packets Presenters' Backgrounds Tymann developed and taught the first computer networking course at SUNY Oswego approximately 8 years ago. The course has been a popular one with students and employers. Many of the students who successfully complete this course have taken up positions with major network providers such as Performance Systems International or NYSERNET. A paper describing software Tymann developed to simulate ethernet network has been presented at SIGCSE. Several schools have used this software in networking courses. Recently Tymann changed the focus of his networking course to include the development of Java networking. Tymann has also taught a version of this networking course by request, at the University of Osnabrueck in Germany. Course notes and laboratory exercises for this course have been written in HTML and are made available to students. The materials can be viewed on the web by accessing the URL http://www.cs.rit.edu/~ptt/classes/445. Tosten also created and taught the first networking course at Gettysburg College. This course grew out of a special topics course on distributed processing that he offered. Besides teaching networking topic, Tosten is the departmental network and computer administrator. He is responsible for all the hardware, software, and network communications in the department. He was involved in its development and continues to be involved in its growth.
Object-Oriented Programming in Ada 95 Mordechai Ben-Ari Department of Science Teaching Weizmann Institute of Science Rehovot 76100 Israel Tel: 972-8-934-2940 ntbenari@wis.weizmann.ac.il Workshop category - half-day center Description The workshop will present (in lecture format) the "object-based" constructs of Ada 83 (packages and private types), followed by the constructs of Ada 95 that support full object-oriented programming: tagged types and extensions, inheritance, class- wide types used for dynamic polymorphism and child packages for building hierarchial subsystems. The presentation will be built around a large case-study: discrete event simulation. The Ada constructs will be compared with language support for OOP in other languages: C++, Eiffel, Java, Smalltalk. We will show how the same concepts (type extension, inheritance, polymorphism) are implemented using different constructs . A particular emphasis will be to show how the Ada encapsulation constructs that support development of large software systems--- constructs which have no parallel in those languages---integrate smoothly with typing constructs. The intended audience is educators with experience in other languages for OOP, who are interested in learning a different technical approach to the subject. No specific experience in Ada will be assumed: any construct that is not "Pascal-like" will be either explained or ignored!. Author qualification I have taught Ada for over ten years; the current material on Ada 95 has been taught four times to upper-level undergraduates. I have published four textbooks, most recently, "Understanding Programming Languages" (John Wiley, 1996). The presentation is based on an Ada textbook that I am currently writing.
www.development.multimedia.issues.edu The ACM Two-Year College Education Committee Karl J. Klee, Chair Jamestown Community College Jamestown, NY 14701-1920 kleek@acm.org (716) 665-5220 X368 A proposal for a half-day workshop requiring laboratory facilities with Web-access: This three-phase workshop for SIGCSE '98 will address implementation issues associated with creating World-Wide-Web pages to support instruction. The Two-Year College Education Committee conducted four regional (very popular and highly successful) NSF-sponsored UFE workshops during the summer of 1997, each dealing with emerging technologies, resource management, and instructional methodologies. The Committee has a NSF UFE proposal pending for 1998 to conduct four regional workshops, each dealing with distance learning implementations and related methodologies. The current workshop proposal is related to, but different from each set of NSF UFE workshops. The members of the Two-Year College Education Committee are: Karl J. Klee, Chair Richard Austing, University of Maryland University College, College Park, MD Robert D. Campbell, Manatee Community College, Venice, FL C. Fay Cover, Pikes Peak Community College, Colorado Springs, CO Joyce Currie Little, Towson University, Baltimore, MD.
Systematic User Interface Construction with
the Java AWT Toolkit.
Fintan Culwin
School of Computing
South Bank University
London SE1 0AA
phone +44 (0)171 815 7434
fax +44 (0)171 815 7499
fintan@sbu.ac.uk
Full day workshop proposal for SIGCSE '98
Introduction
The rapid proliferation of Java artifacts, most noticeably as
interactive content on the World Wide Web, is leading to a
'hypercard effect'. That is the technology is being used without
due regard to usability or software engineering considerations
leading to the production of seemingly sophisticated visual
interfaces containing many usability faults and inadequate
application functionality. This tutorial will attempt to
introduce the components of the Java 1.1 Abstract Windowing
Toolkit (AWT) within the context of a systematic production
philosophy which places emphasis upon usability considerations
for the outset. The use of these techniques will obviate some of
the potential problems outlined above. Attendees will be
expected to have a familiarity with Object Oriented Design and
Development and with C style syntax.
Description
The first part of the workshop will consist of a tour of the
most significant and useful of the interface components provided
by Java. During this tour attendees will be introduced to the
technique of designing for usability from the outset by means of
State Transition Diagram (STD) notation and the subsequent
refinement of the STDs into Unified Modeling Language (UML)
designs before the subsequent implementation of the artifact in
Java. The part of the tutorial is intended to:
Provide a brief summary of STD, class diagram and instance diagram UML
design notations.
Provide an initial introduction to the systematic construction of
artifacts which have a graphical interface by a division into presentation,
translation and application areas of concern.
Describe, and illustrate, how the 1.1 release of the AWT facilitates this
division of concerns by providing the event/ listener mechanism.
Provide a practical overview of the use of these notations and design
techniques by means of a small case study.
Introduce the Java 1.1 AWT class hierarchy illustrating the inheritance
relationships between the major component classes.
Introduce the most significant of the components of the Java 1.1 AWT
including: labels, buttons, checkboxes, radio buttons, option menus, lists,
scroll bars, canvases, text areas, pop-up menus and scroll panes. Each will
be introduced by:
a table summarizing its major resources and actions.
a State Transition Diagram illustrating its use within an applet.
The implementation of the applet illustrating the component's usage.
Provide an initial introduction to the development of specialized
interface components by the extension of a pre-supplied component.
In the second part of the tutorial attendees will learn how to use the
components in the design and implementation of user interfaces with an
emphasis upon designing for usability, maintenance and reuse. They will also
be given a case study example of the practical techniques involved in
extending the pre-supplied AWT components to produce a specialized component
which interacts cleanly with other well designed extended components and
pre-supplied components. This part of the tutorial is intended to:
Introduce the techniques by which the usability of a GUI can be designed
and modeled by the use of State Transition Diagrams (STDs).
Show how a STD design can be divided into three essential concerns:
application functionality (model).
interface presentation (view).
transitional behavior (controller).
Show how a consideration of each of these concerns can be used to produce
a UML style class diagram.
Show how these class diagram designs can be implemented in Java to produce
the software artifact.
Including, where appropriate, the development of a specialized component.
Show how the STD can be used to validate the interface produced.
Introduce the techniques for localization (L12n) and internationalization
(I18n).
These latter objectives will be achieved by a case study which illustrates
the development of a DatePanel component which allows for the unambiguous
input of a calendar date and interacts consistently with existing AWT
components whilst allowing for localization and internationalization. The
DatePanel artifact is illustrated in Figure 1.
Figure 1. DatePanel component.
Presenter
The presenter of the tutorial is employed in a U.K. university
as a Reader in Software Engineering Education. (The U.K.
academic grade of Reader is one grade below the U.K. Professor
grade and might be considered broadly equivalent to a U.S.A.
tenured Professor.) He specializes in promoting the integration
of usability considerations and usability engineering within
software engineering design and production processes. He has
published five books on Software Engineering, two editions of a
standard Ada text, one professional book on X/Motif and two
books on Java: one concentrating upon the language and one upon
software and usability engineering with the AWT. He has
presented papers and workshops on X/Motif, Usability on the Web
and Java at various international conferences.
Teaching CS1 and CS2 with the Standard Template Library Joseph Bergin, Professor School of Computer Science and Information Systems Pace University One Pace Plaza New York, NY 10038 berginf@pace.edu half-day workshop What are the implications of the Standard Template Library (STL) for educators teaching CS1 and CS2 using C++? What topics should be covered in these courses, and how should they be covered, so that students may move easily to using the STL either in CS2 or in later courses? The STL is a new standardized component of C++ that provides excellent implementations of container classes, the traditional material of the data structures course. The STL uses a particular abstraction model that divides the functionality into five independent mechanisms: containers, iterators, generic algorithms, function objects, and allocators. While sound and complete, the STL is also very highly integrated with the components highly interacting. This has many implications on teaching. This tutorial will give a good background on the STL, focusing on issues facing educators. While the STL may not be taught until CS2 or even later, the way that material is taught in CS1 and CS2 can greatly affect the ease with which students may move to using the STL. The way that we teach arrays and pointers in particular is important to increase the level of success of students in using the STL. This tutorial will examine these questions thoroughly. The presenter is the author of one Data Structures (C++) book and is writing a text specifically designed to teach the STL in this course. He has been teaching computer science for over twenty years and has been involved in object oriented development for ten years. He also presented, with Michael Berman, a similar workshop at last year's SIGCSE that was well received by participants. The standard reference to the STL is Musser and Saini, STL Tutorial and Reference Guide, Addison Wesley, 1996. The STL itself is packaged with many C++ compilers and is available on the internet at http://www.cs.rpi.edu/~musser/stl.html. ----------------------- Joseph Bergin, Professor Pace University, Computer Science, One Pace Plaza, NY NY 10038 EMAIL berginf@pace.edu HOMEPAGE http://csis.pace.edu/~bergin/
Using Case Studies in AP CS/CS 1/CS 2
Michael Clancy
Senior Lecturer
Computer Science Division
University of California, Berkeley
Berkeley, CA 94720-1776
clancy@cs.berkeley.edu
(510) 642-7017
Workshop category
Half-day.
Intended audience
Instructors of lower-division programming courses. Though I will use Pascal and C++ as the basis of discussion, the principles underlying the case study approach are applicable to courses based on any other language.
Short description
The case study method, long used in fields such as business, medicine, and law, is appropriate for teaching programming as well. This workshop will motivate the case study approach and present ways to incorporate it into introductory and intermediate courses. Case studies for Pascal and C++ programs will be distributed as the basis for workshop activities and discussion.
Rationale
The case study method, long used in fields such as business, medicine, and law, is appropriate for teaching programming as well. Software engineering experts (e.g. Shaw [10]) have recommended this approach as particularly appropriate for communicating design and development methodology and management of complex programs. Case studies have also been shown effective at the introductory level (see [9]). Questions based on a case study [1] are now included in the Advanced Placement Computer Science examination. Textbook material that supports the case study approach is becoming increasingly available (e.g. [2, 3, 5, 6, 7, 9]).
However, the best use of case studies requires some adjustment in the way the typical programming course is run: a shift in emphasis from lectures to lab- and discussion-oriented activities, from product-oriented to process-oriented assignments, and from synthesis to analysis activities. This workshop will motivate the case study approach and present ways to incorporate it into introductory and intermediate courses.
The workshop will be similar to one run at SIGCSE 1996 in Philadelphia and SIGCSE 1997 in San Jose.
Outline
I. First, I'll explain the purpose of the workshop, and get participants to explain a bit of why they're attending. (10 minutes)
II. Next, we will produce several solutions to the problem of designing a simple adding machine simulator, presenting the solutions as an instructor might in a lecture course. The intent is to illustrate a number of points:
A. comparison of the solutions
- bias toward a particular solution that the problem statement provides
- expert-novice differences
- alternate solution representations
- comparison to similar problems
- likelihood of bugs in each solution
- influence of object-oriented programming
B. testing of the solutions
- choice of boundary cases
- effect of decomposition on testing
- usefulness of alternate solution representation for generating test data
C. general
- even a small solution involves lots of process; an instructor must be alert to highlight all this, since students may not notice on their own
- the context of a problem solution provides many advantages for asking questions about programming activities
- how much of this information would students have gotten just from analyzing solution code?
- how much of this information would students have written down in their lecture notes?
We will also lay some groundwork for the case studies to work with next, and point out parts of the programming process that need attention. (45 minutes)
III. Participants will then deal with two case studies from the Designing Pascal Solutions books and follow up with discussion. (90 minutes)
A. possible activities
- summarize the case study
- analyze the design and development of the programs
- change the data structures used in the programs
- solve a related problem
B. goals
- produce useful discussion of process
- foreshadow discussion of activities
C. how the participants will be working
- small groups
- they will choose from a given set of activities
- discussion will focus on key points:
- different solution alternatives
- what expertise was involved in the solution?
- how did the narrative help?
- how did group work help?
- what would students learn from this exercise, and what opportunities for reflection would it provide?
IV. I will then review my own experience with case studies. (35 minutes)
A. how they help (reprise [8])
B. possible activities (reprise [4])
C. incorporation into AP CS exam
D. where in the curriculum case studies belong
Leader qualifications
Michael Clancy is Senior Lecturer and coordinator of lower-division courses at University of California, Berkeley. He has been a proponent of the case study method for CS education for many years and, supported by NSF, has engaged in research to evaluate and extend the case study approach. Clancy has given many talks on the subject to audiences of high school and college instructors, most recently three-hour workshops at SIGCSE 1996, SIGCSE 1997, and the Rocky Mountain Small College Computing Conference in Salt Lake City in October 1996. Clancy is a co-author (with Marcia Linn) of two collections of case studies [5, 6] and two papers about case studies published in ACM forums [4, 8].
References