A General Education Course-Introduction
A General Education Course-Introduction
Sciences in Colleges
ii
TABLE OF CONTENTS
FOREWORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
John Meinke, UMUC Europe
MOBILE PHONE APPS IN CS0 USING APP INVENTOR FOR ANDROID — PRE-
CONFERENCE WORKSHOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Hal Abelson, Massachusetts Institute of Technology, Mark Chang, Franklin W.
Olin College of Engineering, Eni Mustafaraj, Franklyn Turbak, Wellesley
College
iii
DEVELOPING COMPETITIVE PROJECT PROPOSALS FOR NSF — PRE-
CONFERENCE WORKSHOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Scott Grissom, National Science Foundation
iv
University of Pittsburgh, Daniel D. Garcia, University of California,
Berkley
v
SUPPORTING AGILE PROCESSES IN SOFTWARE ENGINEERING COURSES
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Delbert Hart, SUNY Plattsburgh
vi
WRITING INTENSIVE AND WRITING EXTENSIVE: A CONTINUUM FOR
ADVANCING WRITING IN COMPUTER SCIENCE EDUCATION —
PANEL DISCUSSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Yana Kortsarts (Moderator) , Widener University, Timothy Dansdill, Quinnipiac
University, Adam Fischbach, Widener University, Mark E. Hoffman,
Quinnipiac University, Janine Utell, Widener University,
vii
COMPUTER GRAPHICS TAUGHT BY BUILDING A RENDERING ENGINE —
POSTER SESSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Paul E. Dickson, Hampshire College
viii
ON SLIDER PUZZLE PROJECTS WITH .NET COLLECTION CLASSES —
POSTER SESSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Linda Wilkens, Providence College
ix
THE CONSORTIUM FOR COMPUTING SCIENCES IN COLLEGES
BOARD OF DIRECTORS
x
CCSC NATIONAL PARTNERS
The Consortium is very happy to have the following as National Partners. If you
have the opportunity please thank them for their support of computing in teaching
institutions. As National Partners they are invited to participate in our regional
conferences. Visit with their representatives there.
Microsoft Corporation
Cengage Learning
Shodor
Turings Craft
FOREWORD
This is the final issue in volume 25 of the Journal of Computing Sciences in
Colleges. It’s very hard to believe that this concludes a quarter century of this
publication, a major portion of which I have been involved with. When I look back at
those first issues that were offset printed and stapled on regular 8½” x 11" paper. We’ve
come a long way. Inclusion in the ACM Digital Library was a real hallmark.
The format of the Journal evolved to its present form relatively early, and we have
retained this form now for over two decades. (The one change over those years was the
increase in font size when I realized that my own eyes were getting older and we needed
to increase the font size for readability.)
As I look back at the last quarter century, thanks are due to many. First of all thanks
are due to the Consortium for their support over that period. Without their support there
would not be any conferences and there would not be a Journal. My sincere thanks to
the Consortium Board for all they have done to ensure that these regional conferences
continue and that we have a quality Journal that records the reviewed papers of the
presenters. Yes, all papers are peer reviewed using a double blind reviewing process to
insure that quality is maintained, and each issue contains a welcome statement from the
individual conference which indicates the acceptance rate.
Thanks are also due to the regional boards and conference committees for the hard
work that goes into preparing a regional conference. (I served as conference chair three
times, and can vouch for the amount of work that is involved.) All of these people are
essential in pulling off a successful conference. Needless to say my contact with the
regional conferences at this point is primarily with the contributing editors, and every one
of them (Mike Gousie for this conference) has been wonderful to work with.
Then, there’s the final production. Susan Dean and George Benjamin have been
wonderful to work with over the decades. Susan is very involved with final editing of
manuscript, which sometimes is a real challenge. Her contribution has become very
xi
essential as we went from one conference per year 25 years ago to now having ten
regional conferences. George handles the coordination with our printer, Montrose
Publishing, and that has been most helpful to me being located in Germany. George does
the final checking of the blue line and coordinates getting the final printing to the
individual conferences. Without these two people and their contributions it would be
impossible to deliver the quality that is in the Journal. And then there’s Montrose
Publishing which is our printer. They have been wonderful to work with for over two
decades, and have assumed more within the last couple years, now that they are taking
care of mailing the Journal to the membership. My sincere thanks to all the folks there.
As I express thanks, I would be remiss in not thanking our National Partners listed
above. They help to supply the income that assists in keeping conference attendance
costs down, and the Consortium has always endeavored to make the conferences
accessible to those of us with minimal travel budgets. Please express your thanks to them
for allowing the continuation of the Journal and the conferences at minimal cost.
I would be remiss in not expressing thanks to Upsilon Pi Epsilon, the National
Honor Society for Computer Science. They have been contributing for many years
allowing the conferences to have activities for students. A primary example is the student
programming contest which is a part of almost every conference. We appreciate very
much their support of our students.
Of course, we cannot leave out ACM SIGCSE. They provide the “in cooperation”
support that is so very helpful. ACM also has been very supportive in posting the Journal
to the ACM Digital Library.
As we approach the end of another academic year, the end of a quarter century of
the Journal, and the beginning of the next quarter century, I would encourage you, the
reader to, become more involved in the local conferences. Everything is accomplished
on a volunteer basis, so your help, no matter how small it may seem to you, is always
needed and appreciated. A critical item is reviewing, and you are not confined to only
your regional conference. We have a number of reviewers who review for multiple
conferences. Become one of them. Contact information for the regional conferences is
located on the Consortium web page, www.ccsc.org.
Attend a regional conference (or two or three) as well as help execute the conference
of your choice. Check out the web site, the list of regions and the upcoming conferences,
as well as how to contact the region and indicate how you would like to help out. The
CCSC Board can also use your help. Feel free to contact any Board member. We can
always use the help.
John Meinke
UMUC Europe
CCSC Publications Chair
xii
CCSCNE 2010 CHAIRS’ WELCOME
Welcome to West Hartford and the 15th Annual Conference of the Northeast region
of the Consortium for Computing Sciences in Colleges at the University of Hartford. The
conference is held in cooperation with ACM Special Interest Group on Computer Science
Education.
We are pleased to present the proceedings of the conference. It includes papers,
panels, demos, tutorials, and posters that reflect the broad array of interests of computer
science educators. We accepted 22 out of 52 submitted papers, an acceptance rate of 42%.
Each paper received at least three reviews. Non-paper submissions received careful
review as well. The faculty poster session, in its second year at the conference, saw a
significant increase this year.
The program features two distinguished invited speakers. Dr. Fran Allen, of IBM
T.J. Watson Research Center, speaks on "Is Computing at a Tipping Point? A Personal
Perspective". Professor Alison Young, of Christchurch Polytechnic Institute of
Technology in New Zealand, speaks on "Computing and Sustainability: An ICT Project
in the High Andes".
In addition to the technical sessions, the conference features three excellent
pre-conference workshops. As you enjoy the presentations and discussions, we also hope
that you will take advantage of what the area has to offer. The conference venue is a few
minutes from Hartford. As the state capitol, Hartford offers the vitality of a city in a
smaller more intimate atmosphere with arts, entertainment, dining, and cultural
opportunities.
We are fortunate to have worked with a wonderful group of people. The program
and the proceedings would not have been possible without the collaboration and hard
work of committed people whose efforts resulted in this excellent program. We are
grateful to the commitment and efforts of members of our conference committee: David
Hemmendinger, Aaron Cass, Darren Lim, Gary Parker, Susan Imberman, Yana Kortsarts,
Mark Hoffman, Adrian Ionescu, Michael Anderson, Sandeep Mitra, John Gray, Ralph
Morelli, Jonathan Hill, Lonnie Fairfield, Carolyn Rosiene, Stoney Jackson, Paul Tymann,
Del Hart, Marc Corliss, Frank Ford, and Stan Kurkovsky.
We thank all our reviewers whose prompt and thorough reviews of the submissions
contributed greatly to the quality of these proceedings. Ultimately, it is the participation
of those who attend that make the conference what it is. Many thanks to all of the authors
for making the conference what it is today. Finally, we wish to extend our appreciation
for the support we received from our home institution.
We hope you enjoy the conference and find these proceedings to be a valuable
resource.
1
BOARD MEMBERS — CCSC NORTHEASTERN REGION
COMMITTEE
2
CCSC: Northeastern Conference
3
JCSC 25, 6 (June 2010)
4
IS COMPUTING AT A TIPPING POINT?
A PERSONAL PRESPECTIVE*
FRIDAY PLENARY SESSION
Over the last 60+ years computing, communications, and information, originally
emerging from disparate disciplines, have evolved into an unimagined set of capabilities
influencing, directly or indirectly, nearly every person, every institution, and every
endeavor in much of the world. These capabilities form a global infrastructure for a world
where time and place are often irrelevant, access to information is instantaneous, and
knowledge widely shared.
The talk will address the following question: Will the field continue to evolve from
where we are or has it reached a tipping point? I will draw on my experience with
languages, compilers, and high performance computing to suggest a few answers.
SHORT BIOGRAPHY
Fran Allen’s specialty is compilers and program optimization for high performance
computers. Soon after joining IBM Research as a programmer in 1957 with a University
of Michigan masters degree in mathematics, Fran found the technical goal that would
drive her career: Enable both programmer productivity and program performance in the
development of computer applications. One result of this goal was that Fran was the
recipient of ACM’s 2006 Turing Award: “For pioneering contributions to the theory and
practice of optimizing compiler techniques that laid the foundation for modern optimizing
compilers and automatic parallel execution.”
Fran is a member of the American Philosophical Society and the National Academy
of Engineers, and a Fellow of the American Academy of Arts and Sciences, ACM, IEEE,
and the Computer History Museum. Fran has several honorary doctorate degrees and has
served on numerous national technology boards including CISE at the National Science
Foundation and CSTB for the National Research Council. Fran is an active mentor,
advocate for technical women in computing, an environmentalist and explorer.
___________________________________________
*
Copyright is held by the author/owner.
5
COMPUTING AND SUSTAINABILITY: AN ICT PROJECT IN
This address will describe an ICT research project that is context specific and
achieved economic and social turnarounds where other ICT projects have failed. The
message for computer science educators and professionals is that desired impact has less
to do with science and technology and more to do with understanding context and culture.
Evaluating implementation options to advance educational and social needs is applying
intelligence to technology. Technology without context is a chasm.
The ancient Incan culture, through the Quechuan people of Antabamba Peru, a
remote indigenous society high in the Andean Mountains has over 700 years of proven
social, environmental and economically sustainable practice. Until only 10 years ago
Antabamba was a time capsule which was isolated from the world by several days walk
from the nearest road. When the road was built in 1995 the multinational products,
television, marketing and western philosophies of business practice soon followed.
Within 10 years the population of Antabamba was worse off than in anytime in the
previous 700 years and risked losing what the developed world is in search of: sustainable
practice.
Starting in 2003 the Unitec project spent a year learning what had underpinned this
ancient culture. Yesterdays wireless technologies, internet, web design, No. 8 wire,
aluminum foil satellite dishes and some basic tools were grounded in the traditional Incan
methodologies of sharing, learning and understanding. Unparalleled results were
achieved. Together with the local communities, the Unitec project developed a
methodology called "Community Centric Empowerment" (CCE) which has been
attributed by OSIPTEL, the Telecommunications Authority in Peru and the Latin
American telecommunication council representative as the deciding factor that has
separated this project from other "telecenter" projects in Latin America.
Additional studies focusing on the ability of ICT to reduce poverty and exploitation
in third world countries by FITEL, the Rural development wing of OSIPTEL in Peru,
support the notion of the importance of how, rather than what, when it comes to ICT use
___________________________________________
*
Copyright is held by the author/owner.
6
CCSC: Northeastern Conference
for poverty reduction (Bossio 2005) (Newman 2006). These studies showed the usage
patterns and impact of the Unitec project to be quite distinctive compared with any other
poverty alleviation project using ICT.
In keeping with the phenomenological methodology of the initial study, this address
will describe the story of the Peruvian project to demonstrate to CS educators and
professionals that how we implement ICT is as important as what we implement, when
social and economic sustainability are our objectives. It lays down a challenge to CS
educators and professionals to reconsider the priorities in our teachings and philosophies.
SHORT BIOGRAPHY
Alison Young is a Chair of Department of Computing at Christchurch Polytechnic
Institute of Technology, Christchurch, New Zealand. She was previously Chair of
Department of Comuting at Unitec Institute of technology in Auckland, New Zealand.
Alison has an academic and professional career that has involved academic leadership in
research, scholarship, teaching and curriculum development, nationally and
internationally. She is an invited international keynote speaker, Vice Chair of the ACM
Special Interest Group on Computer Science Education (SIGCSE), member of the
international ACM Educational Council and a Fellow of the New Zealand Computer
Society and National Advisory Committee on Computing Qualifications. Alison has a
strong background in teaching, research and curriculum development and implementation
of computing and information technology qualifications from certificate to doctorate
level. Alison’s research interests include Women in Computing, Computing Education,
Oral histories, ICT4D and the development and implementation of e-learning.
7
MOBILE PHONE APPS IN CS0 USING APP INVENTOR FOR
ANDROID*
PRE-CONFERENCE WORKSHOP
Hal Abelson
Computer Science and Artificial Intelligence Laboratory
Massachusetts Institute of Technology
32 Vassar Street
Cambridge, MA 02139
(617) 253-5856
hal@mit.edu
ABSTRACT
App Inventor for Android (AIA) is a new visual programming environment
developed by Google to enable nonprogrammers to create simple mobile phone
applications on Android phones. AIA programs are constructed by dragging and dropping
components into an interface designer, and then describing the behavior of the
components in a Scratch-like block-based programming environment. Programs are
developed on a computer, and then downloaded and tested on a phone. In a Fall 2009
pilot program, AIA was used in introductory courses at eleven colleges and universities
and at a high school.
This workshop is targeted at faculty teaching introductory computer science courses
in college or high school. We will lead hands-on activities in which participants will
create applications and test them on phones that we will provide. We will also describe
___________________________________________
*
Copyright is held by the author/owner.
8
CCSC: Northeastern Conference
our experiences with using it in our courses, demonstrate applications created by students,
and discuss relevant teaching techniques and practical issues.
WORKSHOP LEADERS
Hal Abelson is a Professor of Electrical Engineering and Computer Science at MIT.
He won the 1995 Taylor L. Booth Education Award given by IEEE Computer Society for
“continued contributions to the pedagogy and teaching of introductory computer science,
exemplified by the Logo and Scheme languages and their associated methodologies.”
While a visiting faculty member at Google, he was one of the founders of AIA.
Mark L. Chang is an Assistant Professor of Electrical and Computer Engineering
at the Franklin W. Olin College of Engineering where he led a prototype AIA course in
the Fall of 2009. Mark’s current research interests include engineering education,
reconfigurable computing, and the intersection of ubiquitous/mobile computing and social
media.
Eni Mustafaraj is a Visiting Scientist at the Computer Science Department,
Wellesley College. In Fall 2009, she co-taught the experimental course "Technologies for
Communication" aimed at non-majors, and was responsible for creating teaching
materials for AIA. She collaborated with members of the Google team to create a specific
AIA component (Voting) to use in the classroom in a discussion about Internet Voting.
In her research, she is interested in the problem of finding qualitative information on the
Web and how social media content is incorporated in search results.
Franklyn Turbak is an Associate Professor of Computer Science at Wellesley
College. In Fall 2009, he mentored students in the introductory CS course that used AIA.
His research focuses on the design, analysis, and implementation of expressive
programming languages.
9
JCSC 25, 6 (June 2010)
PARTICIPANT REQUIREMENTS
Participants must bring laptops with wireless networking. The laptops can run any
operating system, as long as they have a supported browser (currently Firefox 3 or higher)
and version 1.6 or higher of the Java Runtime Environment. The AIA environment is
accessed via the Web, so no other software need be installed.
Participants also need to have Gmail accounts, since these accounts are necessary
to access AIA.
We will supply the Android phones that will be used by the participants during the
workshop.
ENROLLMENT
Enrollment should be limited to 30 (space permitting) to ensure that we can offer
adequate support to participants.
10
VIDEO SCENARIOS: LISTENING, DISCUSSING, EXPLORING,
PRE-CONFERENCE WORKSHOP
Madalene Spezialetti
Department of Computer Science
Trinity College
300 Summit Street
Hartford, CT 06106
Phone: 860-297-2519 860-836-9828
Fax: 860-297-3531
Madalene.spezialetti@trincoll.edu
ABSTRACT
This highly participatory workshop introduces attendees to the use of video
scenarios as a tool for teaching computing in a problem-centric manner that
emphasizes active listening, discussion and exploratory problem solving. The
video scenarios present problems in the context of life-like settings and
emphasize the role of computing as part of a process for solving problems that
are diverse and frequently ill-defined. Attendees will participate in a variety
of small and large group exercises to experience the many ways video
scenarios can be used to energize classroom, laboratory and programming
experiences, while developing computational, entrepreneurial and critical
thinking skills.
INTENDED AUDIENCE
College and secondary school CS educators whose classes may range from general
education through programming and upper-level computing courses.
___________________________________________
*
Copyright is held by the author/owner.
11
JCSC 25, 6 (June 2010)
PRESENTER BIOGRAPHY
Madalene Spezialetti is an Associate Professor of Computer Science at Trinity
College. Her research focuses on the development and use of video and animation in
Computer Science education. She received a SIGCSE Special Projects Grant to support
her work in the production of video scenarios, which are short films designed to develop
computational thinking skills by presenting computing-based problems in the context of
extemporaneous, real-life settings. She gave a presentation on the results of her funded
research at SIGCE 2009 in a session for recipients of SIGCSE Special Projects Grants.
She also presented a poster at SIGCSE 2009 on the video scenario approach and two of
her works were accepted to the Video Channel at SIGCSE 2009. A poster and two videos
have also been accepted for SIGCSE 2010. She has used video scenarios in teaching CS1,
CS2 and general education classes.
MATERIALS PROVIDED
Each participant will receive both a paper and an electronic summary of the
presentation portions of the workshop and will receive an electronic summary of the
discussions in the feedback portions of the workshop. The videos will be available on the
web (a selection of videos can currently be viewed at www.Virt-U.org).
AGENDA
Overview of the Paradigm of Video Scenario-based Learning
Since the novelty and many possibilities of using the approach can be best
appreciated by participation, the introduction will be brief, so that attendees can quickly
become engaged in the experience of using video scenarios. (10 minutes)
Participatory Exercises
Participants engage in a series of exercises allowing them to experience and explore
the variety of ways in which video scenarios can be utilized.
• Clients, Consultants, Critical Listening and Computational Thinking. This role-
playing exercise utilizes video scenarios in which clients (members of fictitious
companies) talk about their enterprises in a conversational manner as if addressing
web design consultants (the audience). The clients are not specific as to what they
want on their site, rather the “consultants” must listen critically to the conversation,
and identify the client expectations and requirements. In addition to identifying an
overall concept and feature set for the web site, the consultants must also conceive
of ways in which computing technologies can be utilized to enhance the client’s
services, sales or web presence. This is an excellent exercise in any computer
science class, as it is a very accessible way to introduce students to verbally
expressing themselves to team members (as consultants), to presenting ideas to a
critical audience (consultants to clients) and to questioning and analyzing the ideas
of others (as clients). For this exercise, attendees are divided into small groups.
Two video scenarios are used, so that every group has the experience of being both
12
CCSC: Northeastern Conference
consultants and clients. After viewing the videos, the consultants derive their
“pitches” while clients discuss their expectations (based on the characters in the
video). Consultant and client groups are then paired for a “pitch” meeting in which
consultants describe their ideas to the clients and clients respond. (30 minutes for
exercises involving two videos, followed by 10 minutes of discussion and feedback
and hints on other uses for the scenarios viewed).
• Ethics and Practices: What to Do or How to Do It. These exercises demonstrate
using video scenarios as a catalyst for exploring questions of ethics and approaches
to effectively interacting with team members or clients. Attendees explore the use
of the videos for class and group discussions as well as writing exercises. (30
minutes, including feedback)
• Problem Solving Scramble. Videos scenarios with a more computational or
algorithmic flavor will be used for these exercises. In the scramble technique, small
groups are given a short period of time to propose a solution to a video-scenario
problem. This time-limited technique is an ideal way of incorporating the use of
videos into any setting where time is at a premium. (30 minutes, including
feedback)All the Way to Implementation. The video scenarios are by nature
ambiguous, designed to invite a variety of interpretations and problem-solving
approaches. These exercises allow attendees to explore ways to handle such
ambiguity when using the videos as a basis for implementation assignments or labs.
(30 minutes, including feedback)
Wrap-up: Ideas and Tips
Input will be sought from attendees for alternative uses of video scenarios and for
ideas of possible future directions for types or topics of videos. Do-It-Yourself tips for
developing scenario-based scripts for discussion or programming project descriptions
(which, for those interested in creating their own videos, could also serve as a basis for
filmed projects) will be presented. (25 minutes)
13
DEVELOPING COMPETITIVE PROJECT PROPOSALS FOR
NSF*
PRE-CONFERENCE WORKSHOP
Scott Grissom
Program Director
National Science Foundation
sgrissom@nsf
SUMMARY
This interactive workshop enables participants to work in small teams to explore a
systematic process for converting an idea into a competitive proposal. We will identify
the most common streng ths and weaknesses cited by r eviewers of NSF proposals. Led
by a Program Director of the NSF Division of Undergraduate Education, the workshop
will use a series of interactive exercises in which participants first reflect on their own
current understanding of the issue (Think) , then share these ideas in small groups
(Share) and then again with the entire group (Report) , and finally hear an expert's
opinion (Learn) . Particular attention will be given to the following elements of NSF
proposals.
• Goals and Expected Outcomes
• Implementation Strategy
• Evaluation Plan
• Broader Impacts
• Dissemination Strategy
Through this process, participants should develop a better understanding of the
attributes of a competitive proposal and the role that reviewers play i n the proposal
decision process; the factors that reviewers consider in processing proposals; and
approaches for anticipating and responding to these factors. This will enable them both
to prepare more competitive proposals for NSF's education programs and provide them
with a broader perspective on writing successful proposals . Q&A opportunities will
be encouraged throughout the workshop.
___________________________________________
*
Copyright is held by the author/owner.
14
HOW RUBRICS THAT MEASURE OUTCOMES CAN
Frances Bailie
Department of Computer Science
Iona College
New Rochelle, NY
fbailie@iona.edu
ABSTRACT
Program assessment of student learning includes the following steps: 1)
involving all constituents to establish program goals, 2) developing measurable
student learning outcomes for each of the goals, 3) developing measurable
outcomes for each course that map to the student learning outcomes, 4)
determining appropriate assessment methods in the courses, 5) creating
assessment instruments (or rubrics) for each of the methods, 6) establishing
benchmarks, 7) analyzing the data, and 8) using the results to improve student
learning. This paper focuses on the last four steps by beginning with a
generalized assessment plan for an undergraduate computer science program.
A generalized rubric for computer programs is presented that measures
selected student learning outcomes. This paper demonstrates how to apply the
generalized rubric to two specific computer programming assignments.
Benchmarks associated with the rubrics are suggested. Sample results are
analyzed to identify problems and propose solutions—“closing the loop.”
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
15
JCSC 25, 6 (June 2010)
INTRODUCTION
A major reason for developing an assessment plan is to determine how well a
program is doing in meeting the goals faculty set for student success. The driving force
in determining program goals should be the competencies the faculty want their students
to exhibit and the skills they want their students to possess after completing the program.
Since reasons for developing an assessment plan vary, e. g., to satisfy regional accrediting
bodies or to obtain discipline-specific certification, it is not possible to adopt a single
blueprint that will be appropriate for all. However, we can identify a few basic
components of effective assessment plans [3, 5, 8, 15].
ABET has adopted specific definitions for the following terms: Program Educational
Objectives and Program Outcomes [6]. Educational objectives are broad statements that
“describe the career and professional accomplishments that the program is preparing
graduates to achieve” whereas outcomes are measurable statements that “describe what
students are expected to know and be able to do by the time of graduation.” Differences
between the two were exemplified in 2009 [13]. This paper adopts the model: program
goals and student learning outcomes both articulate that which we want our students to
achieve by the time they graduate.
Once the goals and student learning outcomes have been articulated, measurable
course outcomes must be developed that map to the student learning outcomes to ensure
that all courses in the program of study are addressing the overall student learning
outcomes. This process also verifies that all student learning outcomes are addressed in
at least one course. (In the remainder of this paper, the term outcomes will refer to
student learning outcomes.) The next step would be to determine one or more assessment
methods to measure the outcomes. A combination of both indirect and direct methods
of assessment is desirable. Indirect methods include: student or faculty surveys,
reflection papers, focus groups, and exit interviews where students are asked to discuss
what they have learned and its impact on their learning. Direct assessment methods
include programming assignments, projects, in-class tests, portfolios, oral presentations
and the ETS’s Major Field Test [4, 11, 12, 16]. These methods require students to
demonstrate what they have learned rather than to discuss what they have learned. In
addition, for each of the methods deployed, scoring guides (rubrics) based on a set of
performance criteria must be developed to help evaluate student work [9, 10]. At this
point, faculty will want to establish thresholds (benchmarks) and develop processes for
analyzing and reporting the data to the stakeholders. Data that is collected must be
analyzed to identify problems, solutions must be proposed and implemented, and the
process must then begin again—“closing the loop.” Problems must be tracked until they
are resolved [7].
16
CCSC: Northeastern Conference
17
JCSC 25, 6 (June 2010)
18
CCSC: Northeastern Conference
PROGRAMMING RUBRICS
Since computer programming is a central part of the computing discipline, computer
programming assignments are often used to measure whether one or more SLOs are being
met. Course outcomes in programming courses would typically map to SLOs associated
with Goal I, Critical Thinking and Problem Solving and some or all of the SLOs
associated with Goal IV, Communication and Interpersonal Skills. For instance, written
communication skills could be assessed in the readability of the written code and in the
interaction with the user. Interpersonal skills with those outside of computing could be
assessed if software is written for general use. Interpersonal skills in a team environment
could be assessed for team programming projects. More specifically, SLOs associated
with Goal II, Theoretical Foundations, could be assessed for a given program that
simulates finite automata, or compares memory management schemes or develops a
heuristic for a Hamiltonian circuit (Outcomes A, B, and C, respectively) and SLOs
associated with Goal III, Ethical Responsibilities, could be measured by a programming
assignment which implements encryption algorithms.
The first step in developing a generalized programming rubric would be to identify
the specific SLOs that are to be measured. The selections here are SLO I.B (algorithmic
solution), I.C (program design), IV.A (user interface and code readability). The next step
would be to decide on how many levels of performance is appropriate. Too few levels
can make it difficult to fit a specific situation into a performance level and too many
levels can make it difficult to develop meaningful differences among performance levels.
The generalized rubric uses four levels: Unacceptable, Poor, Good, and Excellent. The
last step is to describe performance at each level. One strategy might be to begin by
describing the highest level of performance for the outcome and then back off slightly for
each lower level. Scoring a rubric involves assigning a value or range of values to each
of the levels of performance. For example, Unacceptable: 1, Poor: 2, Good: 3 and
Excellent: 4. For a finer granularity, one could use a scale such as: Unacceptable: 0-3,
Poor: 4-6, Good: 7-8, and Excellent: 9-10. Table 2 contains the generalized programming
rubric.
Table 2. General Programming Rubric
Unacceptable Poor Good Excellent
Solution An incomplete A completed solution is A completed solution A completed
I.B solution is implemented on the is tested and runs but solution runs
implemented on the required platform, and does not meet all the without errors. It
required platform. uses the compiler specifications and/or meets all the
It does not compile specified. It runs, but work for all test data. specifications and
and/or run. has logical errors. works for all test
data.
Program Few of the selected Not all of the selected The program design The program
Design structures are structures are generally uses design uses
I.C appropriate. appropriate. Some of the appropriate appropriate
Program elements program elements are structures. Program structures. The
are not well appropriately designed. elements exhibit overall program
designed. good design. design is
appropriate.
User User interaction is User interaction User interaction User interaction is
Interface incomplete and does minimally meets the generally meets the as specified and is
IV. A not meet specifications, but does specifications and is natural to the user.
specifications. not increase the usability acceptable to the
of the program. user.
19
JCSC 25, 6 (June 2010)
20
CCSC: Northeastern Conference
21
JCSC 25, 6 (June 2010)
Using Rubrics
Reporting the results from the data collected by the rubrics can be done in a variety
of ways. For example, the report could consist of the number and percentage of students
who scored in each level on each of the traits or the mean of each outcome, as depicted
in Table 3. This data could also be reported graphically. Wherever possible, it is
important to be consistent with how data is reported from other assessment methods (e.g.,
do not use percentages for surveys and means for assignments) and with the scales that
are used (e.g., if excellent for assignments is a 5, then excellent for portfolios should also
be a 5). The means and percentages could also be weighted if that is deemed appropriate.
It is expected that students will be assessed multiple times for each of the outcomes using
different assessments. For example, Outcome IV.A that addresses oral and written
communication skills is measured in the programming assessment but could also be
measured in any oral or written assessments in other courses. In addition, measurements
for each outcome could also be taken at the beginning, midpoint and end of the CS
program. For example, Outcome I.C, program design, could be measured in 2 programs
in CS I and 2 programs in CS II at the beginning of the CS program Scores for each
outcome would then be aggregated over all of the assessments that measure the outcome
as shown in Table 4.
22
CCSC: Northeastern Conference
benchmarks might be set at 2.8, 3.0 and 3.2 or better. It is important to note that there
are no hard and fast rules when developing rubrics and benchmarks; they must adhere to
the purpose and expectations of the individual CS program. We have presented here
some examples that could be modified to meet faculty established requirements for
assessment.
What happens if students fail to meet the benchmarks for an outcome? Suppose,
as in our example in Table 4, only 56% of the students at the beginning of the program
achieve a score of “Good” or better for Outcome I.C on program design with a mean of
2.6. First, it is important not to overreact to data and make drastic changes based on a
single poor result. However, if the entire department or a department subcommittee on
assessment concludes that these results demand action, then they must determine what
changes should be made to improve student performance. Initiatives such as 1) more
detailed feedback to students on their program design, 2) more examples of good
program design, 3) student-led discussions on evaluating program design of sample
programs, 4) closed labs targeted at program design could be suggested for
implementation. Once changes have been made, the results need to be tracked for at least
one assessment cycle to determine if student performance has improved. If not, then
other initiatives might be tried or it may be determined that the benchmark was
unrealistic or the rubric should be modified. This process, often referred to as “closing
the loop” is at the heart of a successful assessment plan.
CONCLUSION
The focus of this paper has been on the process of creating rubrics and benchmarks
to measure student learning outcomes. Specifically, we presented a generalized
programming rubric and demonstrated how it could be adapted to two specific
programming assignments. We then discussed the critical and often neglected process
of what to do with the collected data, since assessment for the sake of creating reams of
data is a useless endeavor. The results must be carefully analyzed in light of the
established benchmarks and if weaknesses are recognized as true problems, then
solutions must be devised and implemented. Results must then be re-examined in the
next assessment cycle to determine if the changes improved student performance. If not,
the process must begin again and tracked until a viable solution has been found.
The examples presented in this paper should be taken as guides rather than
mandates. Assessment plans must be tailored to the needs of an individual department
and designed to meet the goals and outcomes that derive from the mission of the
department and the institution. It is important to keep in mind that data can accumulate
very quickly so particular care should be taken to decide in advance what data you wish
to collect and how you will use it [1]. If you stick to the plan and stay focused on the
goal of program improvement to enhance student learning, then assessment can be a most
valuable enterprise.
23
JCSC 25, 6 (June 2010)
REFERENCES
[1] Abunawass, A., Lloyd, W., Rudolph, E. COMPASS: a CS program assessment
project. SIGCSE Bulletin. 36(3): 127-131, 2004.
[2] Bailie, F., Whitfield, D. and Abunawass, A. Assessment and its role in
accreditation. In Proceedings of the International Conference on Frontiers in
Education: Computer Science & Computer Engineering. CSREA Press, 35-40,
2007.
[3] Blaha, K, Murphy, L. Targeting assessment: how to hit the bull’s eye. J.
Comput. Scien. in Coll. 17( 2): 106-114, 2001.
[4] Blanford, D., Hwang, D. Five easy but effective assessment methods. SIGCSE
Bulletin. 35(1): 41-4, 2003.
[5] Browning, C., Sigman, S. Problem-based assessment of the computer science
major. J. Comput. Scien. in Coll. 23(4): 189-94, 2008.
[6] Criteria for Accrediting Computer Programs. ABET Computer Accreditation
Committee. DOI= http://www.abet.org/Linked%20Documents-
UPDATE/Criteria%20and%20PP/C001%2009-10%20CAC%20Criteria%2012-
01-08.pdf.
[7] Maxim, B. Closing the loop: Assessment and accreditation. J. Comput. Scien. in
Coll. 20(1): 7-18, 2004.
[8] McDonald, M., Mc Donald, G. Computer science curriculum assessment.
SIGCSE Bulletin 31(1): 194-197, 1999.
[9] Moskal, B., Miller, K., Smith King, L. Grading essays in computer ethics:
rubrics considered harmful. SIGCSE Bulletin. 34(1): 101-5, 2002.
[10] Rogers, G. Assessment 101 Rubrics: what are they good for anyway? Parts I, II,
III. ABET Community Matters http://www.abet.org/assessment.shtml 2006.
[11] Sanders, K., McCartney, R. 2004. Collected wisdom: assessment tools for
computer science programs. Computer Science Education. 14(3): 183-203, 2004.
24
CCSC: Northeastern Conference
[16] Yue, K.. 2007. Effective course-based learning outcome assessment for ABET
accreditation of computing programs. J. Comput. Scien. in Coll, 22(4): 252-9,
2007.
25
ASSESSING COLLABORATIVE AND EXPERIENTIAL
LEARNING*
Mihaela Sabin
Computer Information Systems Program
Division of Science and Technology
University of New Hampshire
(603) 641 4144
mihaela.sabin@unh.edu
ABSTRACT
Collaborative and experiential learning has many proven merits. Team projects
with real clients motivate students to put in the time for successfully
completing demanding projects. However, assessing student performance
where individual student contributions are separated from the collective
contribution of the team as a whole is not a straightforward, simple task.
Assessment data from multiple sources, including students as assessors of their
own work and peers’ work, is critical to measuring certain student learning
outcomes, such as responsible team work and timely communication. In this
paper we present our experience with assessing collaborative and experiential
learning in five Computer Information Systems courses. The courses were
scheduled over three semesters and enrolled 57 students. Student performance
and student feedback data were used to evaluate and refine our assessment
methodology. We argue that assessment data analysis improved our
understanding of (1) the assessment measures that support more closely
targeted learning outcomes and (2) how those measures should be
implemented.
1. INTRODUCTION
Student direct experience with real-world team projects and discovery and
inquiry-based pedagogical methods are well researched approaches to effective learning.
Computing education research extensively supports collaborative and experiential
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
26
CCSC: Northeastern Conference
2. ASSESSMENT METHODOLOGY
2.1 Curricular Framework
In spring 2008, two Computer Information Systems (CIS) upper level courses at the
University of New Hampshire (UNH) pioneered a collaborative and experiential learning
model that involved three non-profit local organizations. The courses enrolled 23
students, who formed seven teams. Student teams conducted site visits and interacted
with the users of the proposed projects. Students assumed different roles pertaining to
the team tasks, presented team work products in class, offered feedback to the other
teams, and made public presentations and demonstrations, including participation in the
poster session of the UNH Undergraduate Research conference.
Team project requirements had three areas of interest: 1) the product, what teams
delivered; (2) the process, how teams worked; and (3) presentations and demonstrations,
what and how teams told their clients, peers, and outside world about their work. Students
learned in the course by working on project assignments: project releases, public poster
preparation and presentation, project report and demonstration; and by participating in
team work, such as interaction and communication within the team and with the client.
Students were responsible for holding weekly team meetings and making three client site
visits.
27
JCSC 25, 6 (June 2010)
Project poster presentation 8 by peers and external 6 by self and peers (S/P)
and project demo evaluators (P/E)
Client site visits 6 by external evaluators (E) 0
Project weekly reports 6 by instructor (I) 0
28
CCSC: Northeastern Conference
29
JCSC 25, 6 (June 2010)
Figure 1 Distribution of grades (final grades and individual and team performance
results contributing to the student final grade). Maximum 8 points of the final grade
counted towards individual performance.
We notice that team performance (counting up to maximum 92 points of the final
grade) dictated the student final grades, which ended up the B to A bracket. Individual
performance, on the other hand, with the exception of A grades, lagged behind team
performance and final grades in the C- to B bracket. The very small weight of 8 points
awarded for individually submitted work and the lower grades students received for this
type of work explain the discrepancy between individual performance and student final
grades. To address the problem of slackers who were getting free rides, we redesigned
the assessment scheme to include considerably higher weights for student individual
performance. In the assessment redesign we present next, we introduced exams and
homework assignments students were asked to do on their own.
30
CCSC: Northeastern Conference
Second, we simplified considerably the self/peer evaluation rubric, which now uses
three criteria only: on time completion, effective and timely communication, and effective
teamwork. The quantifier of relative contribution of each team member has been
simplified, too, and lets students impose deductions on the project deliverable grade based
on questionable or substandard team work observed of themselves and peers.
Complementing team projects with exams and homework assignments that assess
student learning on an individual basis (60% of the final grade with 45% graded by the
instructor) has the desirable effect of aligning individual performance with final grade and
team performance pattern (Figure 2 ). Again, the highest concentration of A’s is provided
by team performance. However, the individual performance, ultimately, dictates the final
grade.
Figure 2 Distribution of grades (final grades and individual and team performance
results contributing to the student final grade). Maximum 60 points of the final grade
counted towards individual performance.
31
JCSC 25, 6 (June 2010)
study ( Table 3) . These results point to an even higher and stronger disagreement on
“everybody contributed equally” question (average of 3.52 and standard deviation of
1.45). We also notice a larger gap between how students perceived their own level of
responsibility and communication effectiveness versus what they observed about their
team members. Further investigation of the assessment methodology is needed to
understand how we can improve team work and communication and student
satisfaction with a collaborative and experiential learning model.
REFERENCES
[1] Clark, N., Evaluating student teams developing unique industry projects,
Proceedings of the 7th Australian Computing Education Conference , Newcastle,
Australia, 2005.
[2] Clark, N., Davies, P., and Skeers, R. 2005. Self and Peer Assessment in Software
Engineering Projects. In Proceedings of the 7th Australian Computing Education
Conference (Newcastle, Australia, 2005).
[3] Gorka, S., Miller, J.R., and Howe, B.J. Developing realistic capstone projects in
conjunction with industry, SIGITE Conference Proceedings , Sandestin, FL,
2007.
[4] Grisham, P.S., Krasner, H., and Perry, D.E., Data engineering education with
real-world projects, SIGCSE Bulletin , 38, (2), 64-68, 2006.
[5] Judith, W.C., Bair, B., Borstler, J., Timothy, L., and Surendran, K., Client
sponsored projects in software engineering courses, SIGCSE Bulletin , 35, (1),
401-402, 2003.
[6] LeJeune, J., Assessment of individuals on CS group projects, Journal of
Computing Sciences in Colleges , 22 (1), 2006.
32
CCSC: Northeastern Conference
[7] Leidig, P.M., Ferguson, R., and Leidig, J., The use of community-based
non-profit organization in information systems capstone projects, SIGCSE
Bulletin, 38, (3), 2006.
[8] Morelli, R., Tucker, A., Danner, N, De Lanerolle, T.R., Ellis, H.J.C., Ismirli, O.,
Krizanc, D., and Parker, G., Revitalizing computing education through free and
open source software for humanity, Communications of the ACM , 52, (8),
67-75, 2009.
[9] Smith, III, H.H. and Smarkusky, D., Competency matrices for peer assessment of
individuals in team projects, SIGITE Conference Proceedings, Newark, NJ,
2005.
[10] Walvoord, B.E. and Anderson, V.J. Effective Grading: A tool for learning and
assessment, San Francisco, CA: Joseey-Bass, 1998.
33
LESSONS AND TOOLS FROM TEACHING A BLIND
STUDENT*
ABSTRACT
This paper relates the experience of teaching a blind computer science major
in three courses and part of a fourth. For programming, a header file
(pcspeak.h) was created that connects the standard C++ iostreams to eSpeak,
an open source text-to-speech system. Braille handouts were created using a
Braille printer that embosses Word documents.
1. INTRODUCTION
It is demanding to teach computer science to the blind in today’s graphical world
[3, 13] and the challenges are student dependent [3, 12]. Like Califf, et al. [3], the intent
is to relate the experience to aid others. In the command line era, computer science was
considered a possible career for the blind [1, 13].
The student is a computer major who is now blind, but had partial vision into high
school. He was a pleasure to teach, because he is academically strong, reliable, flexible,
and has a sense of humor. He is very proficient in Braille and similarly skilled with the
JAWS® [5] screen reader and the PAC Mate® [5] note taker / reader.
Three courses and part of a fourth were taught across one academic year. The first
course was scheduled, but the others were done on short notice due to faculty illness. The
first course also differed, because it was “off” term and one-to-one.
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
34
CCSC: Northeastern Conference
2. TOOLS
The first course (Computer Science II) is the second of the core programming
courses. It covers object design, linear structures, and an introduction to recursion. The
author and a mathematics colleague needed “tactile line” tools. A search yielded
dimensional paint (e.g., [11]), raised line drawing kits (plastic paper with a rubberized
pad) (e.g., [10]), and Wikki Stix [17] (paraffin coated yarn). The latter worked well, but
paint lines tended to flatten and plastic paper lines were not very tactile.
The PAC Mate® reader converts text files (txt or doc) to Braille and displays them
line-by-line using pop-up pins to create Braille characters. The author teaches with
handouts, so the intent was to use text handouts with separate tactile diagrams. An option
was to have parts of a textbook commercially converted to Braille, but it was unclear if
diagrams and special layouts would be converted.
The blind student and another were scheduled to take the course. The plan was to
have them work as partners with considerable teacher and tutor support as had been done
in Computer Science I. When the other student transferred, the author used Braille
handouts in class and converted graphical labs and projects to text equivalents.
The first handout attempt used a Braille labeler and Wikki Stix. It worked, but was
too time consuming. The mathematics colleague noted that the student owns a Tiger
Braille Printer [16] which was readily lent to the faculty. The printer can emboss 20 dots
per inch which far exceeds Braille requirements. It embosses Word [7] documents by
converting text to Braille and converting tables, diagrams, arrows, etc. to high density
dots. It uses a 29 point font which required considerable layout planning. Even in
landscape mode, many of the handouts had foldouts that required cutting and taping.
Considerable time was needed to plan and emboss a document, but it made possible what
was otherwise impossible.
Without a partner, the student had no peer to explain I/O and graphics. Computer
Science II uses C++, so the author built an audio header file (pcspeak.h) for the standard
iostreams. The pcout, pcin, and pcgetline operators replaced cout, cin, and getline
respectively. Each invoked the underlying operator and then sent the text to an open
source text-to-speech system (eSpeak [4]). eSpeak is synchronous, so a program halted
until the speech completed. The student heard prompts, input, results, and used pcout and
pcin to debug. Here is a code sample:
#include "pcspeak.h"
.
.
string s;
int n;
pcout << "Enter a string: " << pcendl; //pcout replaces cout; pcendl replaces endl
pcgetline(s); //pcgetline(s) replaces getline(cin, s)
pcout << "Enter an integer: " << pcendl; //pcout replaces cout; pcendl replaces endl
pcin >> n; //pcin replaces cin
The graphical project based on L-Systems [9] was replaced by a text version of the
mouse-in-the-maze. The Braille practice mazes were very effective. The graphical
Klondike Solitaire project was replaced by a text version of Clock Solitaire. The postfix
35
JCSC 25, 6 (June 2010)
project only required substitute characters for the plus and minus operators and the space,
because eSpeak can speak punctuation. The pcspeak system made further changes
unnecessary.
3. COMPUTER SCIENCE II
Since the course was one-to-one, it was easy to innovate as needed. As examples,
Braille dominoes were used to demonstrate cyclic buffers, dominoes and Wikki Stix to
demonstrate linked lists, and Braille call stacks to demonstrate recursion. Class time was
often extended so that the student could practice and completely read the Braille.
The student programmed in text using his PAC Mate®. Someone else transferred
the file to C++ and ran it in Visual Studio [7]. The student usually used audio (JAWS®)
to read code. By observation, this meant programs had to be modest sized. It was essential
that programs be built in parts.
A computer science tutor taught separate tutoring sessions. Worked solutions were
provided and she used them, the pcspeak system, and visualization (e.g., a bank queue)
to teach. She required a thorough analysis before coding and step-by-step coding. When
typing for the student, she did not edit. She was very effective, because the author did no
additional tutoring.
The tests were open book with a practice test and a review session. The author
administered the tests himself. Initially, it was unclear how to restate and clarify material.
It was agreed that the student should “say everything at each step”. This allowed restating
without coaching. Dominoes and Wikki Stix were used to answer cyclic buffer and linked
list questions.
4. OTHER COURSES
4.1. Background
On short notice, the author taught the blind student in Assembler Language and
Database Management Systems and completed Operating Systems. The latter only
required creating the final and agreeing on an administration method. For the others, there
was insufficient time to commercially convert parts of texts to Braille. Further, Assembler
Language does not use a text and database texts have many diagrams that might not be
converted.
Normally, the author teaches with handouts only, although students can borrow
textbooks. The handouts contain concepts, definitions, facts, and one or more worked
examples. The latter are presented on a board and/or computer. Students do additional
practice problems either individually or in groups using paper and/or a computer. The
practice prepares them for the tests which are open book. The handouts often have
textboxes with arrows that step through algorithms, practice, etc. From course surveys,
sighted students like the “handout paradigm” and expect it.
The number of diagrams, special layouts, etc. precluded using text handouts with
the PAC Mate®, so the author created both text and Braille handouts. Because of the
short notice, the Braille handouts were not available before class. This made it difficult
36
CCSC: Northeastern Conference
for the blind student, because he cannot read Braille as quickly as sighted students can
read text. Further, Braille versions of textboxes and other side bar items usually required
foldouts which were difficult to navigate. Since the blind student cannot do practice
problems at the same rate as sighted students, some handouts contained answers. This
changed the paradigm, especially for sighted students.
The author administered the Braille tests himself. Before each test, he and the blind
student reviewed the practice test and agreed on an administration method which was a
variation of the “say everything at each step” method from Computer Science II.
37
JCSC 25, 6 (June 2010)
No tutor who knew the material was available. Initially, the blind student worked
informally with several classmates, but, eventually, he worked with a classmate who
became one of his tutors. He scheduled tutoring with the author which allowed him to
absorb the material in his own style. He was very aware of his strengths and weaknesses
and knew how to prepare for a test.
6. ACKNOWLEDGEMENT
The author sincerely thanks Barbara Leasher, Ph.D. who suggested dimensional
paint, Wikki Stix, and the Tiger Braille Printer. Dr. Leasher taught the student calculus
with these tools plus Model Magic [8] which was used to create tactile conic sections.
7. REFERENCES
[1] Alexander, S., Blind programmers face an uncertain future, Computer World
(November 6, 1998), p. 1.
[2] Calder, M., Cohen R., Lanzoni J., Landry, N., Skaff, J., Teaching data structures
to students who are blind, SIGCSE Bulletin (September 2007), Vol. 39, No. 3, p.
87-90.
38
CCSC: Northeastern Conference
[3] Califf, M., Goodwin, M., and Brownell, J., Helping him see: guiding a visually
impaired student through the computer science curriculum, SIGCSE Bulletin
(March 2008), Vol. 40, No. 1, p. 444-448.
[4] eSpeak, http://espeak.sourceforge.net/, retrieved November 6, 2009.
[5] Freedom Scientific, http://www.freedomscientific.com/, retrieved November 6,
2009.
[6] Freire, A., Paiva, D., Turine, M., Renata P., Using screen readers to reinforce
web accessibility education, SIGCSE Bulletin (September 2007), Vol. 39, No. 3,
p. 82-86.
[7] Microsoft, http://www.microsoft.com/en/us/default.aspx, retrieved November 6,
2009.
[8] Model Magic, http://www.crayola.com/products/splash/MODEL_MAGIC/,
retrieved November 6, 2009.
[9] Prusinkiewicz, P. and Lindenmayer, A., The algorithmic beauty of plants, free
PDF at http://algorithmicbotany.org/papers/#abop, retrieved November 6, 2009.
[10] Sewell Raised Line Drawing Kit, http://www.shopsftb.org/servlet/the-
409/Drawing-Kit-(Raised-Lines)/Detail, retrieved November 6, 2009.
[11] Scribbles 3D Paint,
http://www.michaels.com/art/online/displayProductPage?productNum=gc0518,
retrieved November 6, 2009.
[12] Shinohara, K., and Tenenberg, J., A blind person’s interactions with technology,
Communications of the ACM (August 2009), Vol. 52, No. 8, p. 58-66.
[13] Siegfried, R., Visual programming and the blind: the challenge and the
opportunity, SIGCSE Bulletin (March 2006), Vol. 38, No. 1, p. 275-278.
[14] SPIM, http://pages.cs.wisc.edu/~larus/spim.html, retrieved November 6, 2009.
[15] Updated JAWS scripts for Visual Studio 2005 and 2008,
http://www.freelists.org/post/program-l/Updated-JAWS-scripts-for-Visual-
Studio-2005-and-2008,1, retrieved January 22, 2010.
[16] ViewPlus, http://www.viewplus.com/, retrieved November 6, 2009.
[17] Wikki Stix, http://www.wikkistix.com/, retrieved November 6, 2009.
[18] World Wide Web Consortium, Web accessibility guidelines 2.0, 2008,
http://www.w3.org/TR/WCAG20/, retrieved November 6, 2009.
39
DESIGNING VALUE SENSITIVE SOCIAL NETWORKS FOR
THE FUTURE*
ABSTRACT
With the dramatic increase in popularity and growth of social networks it has
never been more important to teach our students studying computer science to
be mindful of the values they impart into the design of social networking
applications. By approaching the design of a social network using a value
sensitive framework a deeper understanding of all stakeholders and the
potential implications and benefits to them may be discovered. This study uses
a value sensitive design approach combined with an analysis of how social
networks are currently being used. Based on the findings, general social
network design recommendations are offered.
INTRODUCTION
Social networking has become an integral part of all of our lives. Throughout our
day we will see social networks mentioned in advertisements, news reports, and
magazines across disciplines. It is hard to go through a day without hearing the words
Facebook, Twitter, LinkedIn, MySpace or Flickr. This emergent and pervasive
technology offers a wealth of opportunities for students studying computer science.
Learning how to navigate a social network has become an important skill for success in
the 21st century. Understanding at a deep level how social networks operate is quickly
becoming a critical skill for computer science students interested in working as part of
a social networking development team.
Batya Friedman and colleagues developed a tripartite methodology for integrating
human values into the design process. [5] Value Sensitive Design (hereafter, VSD)
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
40
CCSC: Northeastern Conference
includes a conceptual, technical and empirical analysis of the problem space (in this case
social networks). In the conceptual analysis, the design is evaluated by identifying both
direct and indirect stakeholders. [5] Once acknowledged, the benefits and potential
implications of the design to each stakeholder are considered. [4] This approach provides
a deep understanding of the stakeholders and often reveals value conflicts that ought to
be addressed in the design. This study focuses on the findings of a conceptual value
sensitive design analysis of the social network Facebook. Design recommendations and
ideas for future study are offered.
BACKGROUND
Problem Space/Context
With over 300 million registered users Facebook has quickly emerged as the virtual
place to be. [6] [8] People from around the world are flocking to this social networking
website from multiple demographics. With this attention comes a social compromise
many of us aren’t aware we are making, while other less obvious stakeholders benefit. As
the 6th most trafficked website in the US [6] this famous website is attracting attention
from other groups, such as potential employers and cyber criminals.
Value(s) implicated
Three central human values are implicated in the system design of Facebook. The
value of privacy often conflicts with the pursuit of visibility. [2] As our social networks
and connections have moved on-line our privacy has been compromised, often without
our direct awareness or informed consent.
Facebook offers the user the ability to select networks. Networks emulate users real-
world connections, such as university affiliation. As a default, Facebook profiles are open
to everyone in the users designated network. While we “voluntarily” post our profile,
pictures, and personal information on Facebook, many users do not understand the social
significance and potential implications of having this information easily available to the
potentially thousands of users in their designated network.
A person with knowledge of web design and a few extra minutes can easily
compromise the privacy of Facebook users. [3] Often when Facebook users make their
profiles private they will maintain public friend lists in order to promote their visibility.
While maintaining public friend lists offers visibility it also opens vulnerabilities to the
privacy afforded to the user. If a “friend” on the friend list has an open profile it can be
used as a direct link to that particular user. This can be accomplished with basic
knowledge of the Facebook URL structures. Even without web design knowledge one can
find any postings or images tagged by the person of interest in the open profile of a
friend. Postings are messages left in a public space in a Facebook users profile. Pictures
are “tagged” identifying Facebook users in the pictures.
41
JCSC 25, 6 (June 2010)
42
CCSC: Northeastern Conference
Informed Consent for openness is the The ethical issue can be raised that a job
consent default and presents a social candidate generally does not provide
compromise not often informed consent to a potential
comprehended. employer to look at their Facebook
profile or related Internet postings.
Employers who view this information
often do so without the knowledge
and/or consent of the candidate they are
interested in hiring. Some potential
employees never get a chance to be
interviewed or hired because of
information found in Facebook about
them. Future employers can also learn of
gender, age, sexual orientation, and
social habits which often are not legal to
ask on a job application or interview.
This information is all obtained without
(informed) consent of the future
employee. Without a clear example of
how the profile may be viewed, a
potential employee often is not aware of
how vulnerable their (perceived private)
information is.
Project Goals
The goal of our initial study was to determine if and how the identified values
(privacy, visibility and informed consent) are being addressed by the design of Facebook.
Profiles of a variety of groups of students were studied to determine what privacy settings
were selected as well as other information such as number of friends.
Ultimately, the study was designed with the following two outcomes in mind. By
better understanding how our students are using social networking and privacy settings
we can use this information to educate our students to become more informed users of
social networks. Secondly, we can apply this deeper understanding and incorporate it into
our pedagogy when teaching our computer science students how to design social
networks. Design suggestions are made to address the shortcomings found.
METHODOLOGY
The study was comprised of 264 undergraduate student Facebook profiles. The
researchers viewed the public profiles of each of the students to determine the openness,
privacy settings and
number of friends of each student. This study was followed up with brief interviews with
six students who had open profiles.
43
JCSC 25, 6 (June 2010)
RESULTS
In this study the primary network of the students studied (Siena College) contained
6,064 users. Different majors were studied with the most interesting being business
majors. Our focus was on this group of students. The sample size studied was 169 student
profiles. In this group 28% had profiles that were open to the entire primary network, in
this case 6,064 Facebook users. This group had an average number of 378.61 friends.
This directly translates into creating privacy vulnerabilities for all friends of the user with
the open profile. We also investigate the number of profiles displaying friend lists. We
found that 71% of the student profiles viewed showed a full list of friends. The average
number of friends for this group was 469.48.
In the pursuit of visibility; namely having a profile open to the primary network and
displaying how many friends a users has, privacy is substantially compromised. We
suspected this is happening without the knowledge or informed consent of the Facebook
user. The research was
followed up with interviews where questions about privacy and profile settings were
discussed. Overwhelmingly the students interviewed were shocked, surprised and very
concerned to find out that so many could see information they thought was private. None
of the students interviewed stated they wanted their profile open to their primary network
to promote visibility.
Figure 1
44
CCSC: Northeastern Conference
Social networks have amazing potential to change and enhance the way we connect
and socialize as humans. While embracing the capabilities, it’s important to maintain
awareness and preempt potential VSD compromises. Awareness is the key to
understanding how to best protect yourself while navigating the social networking
highway. This information needs to be disseminated as a part of fundamental education.
FUTURE WORK
In the spring 2010, we plan to extend our study with more in depth analysis of open
surveys with follow-up face-to-face interviews with students and potential employers.
In our initial study we found the business students with the greatest occurrence of
having an open profile were marketing majors. We would like to study this in greater
detail to determine potential contributing factors.
We also noted that gender seemed to make a difference if a profile was open. The
sample we selected had approximately a 50% male/female spilt. When we looked at only
45
JCSC 25, 6 (June 2010)
the open profiles we found that 37% of the users with open Facebook profiles were
women. We plan to explore this in greater detail.
CONCLUSION
Based on our initial findings, it is clear that while social networks such as Facebook
are designed to inspire and promote visibility they often fail to provide privacy in an
informed way. Many Facebook users are making a social compromise they are not aware
they are making. By designing social networks of the future with more methods to
determine how an account will look when it is viewed by the world would provide a
social network more sensitive to the values of the primary stakeholders.
WORKS CITED
[1] Boyd, D. (2007). "Why Youth (Heart) Social Networks Sites: The Role of
Networked Publics in Teenage Social Life.". In D. Buckingham, MacArthur
Foundation Series on Digital Learning (pp. Youth, Identity, and Digital Media
Volume). Cambridge, MA.: MIT Press.
[2] Cohen, J. (Winter 2008). Visibility, Transparency, and Exposure. The University of
Chicago Law Review , Vol. 75, No. 1 pp 181-201.
[3] Colleague. (2009, October 15). Associate Professor of Computer Science, Siena
College.
[4] Davis, J. (2009). Design Methods for Ethical Persuasive Computing. Persuasive .
[5] Friedman, B. K. (2006). Value Sensitive Design and information systems. In P. Z.
(eds), Human-Conmputer Interaction in Management Information Systems:
Foundations (pp. 348-372). Armonk, New York: M.E. Sharpe.
[6] Gaspary, S. (2008, May 28). Social Technologies and Recruiting - How to extend
the reach of your employment brand. Retrieved October 19, 2009, from Career
Builder Community: http://thehiringsite.careerbuilder.com/2008/05/28/social-
technologies-and-recruiting/
[7] Kleumper, D. &. (2009). Future employment selection methods: Evaluating social
networking websites. Journal of managerial Psychology, 24 , 567-580.
[8] Pressroom, F. (n.d.). Facebook Statistics. Retrieved Nov. 19, 2009, from
Facebook.com: http://www.facebook.com/press/info.php?statistics
[9] Sridharan, V. (2008, Sept. 14). 22% of Employers Check your facebook profile when
they're looking to hire you. Retrieved Oct. 19, 2009, from Business Insider:
www.buisnessinsider.com/2008/9/22-of-employers-check-your-facebook-profile
[10] Subrahmanyam, K. a. (Spring 2008, Vol. 18 No. 1). Online Communication and
Adolescent Relationships. www.futureofchildren.org , pp. 119-140
46
EXPANDING CS1: APPLICATIONS ACROSS THE LIBERAL
ARTS*
ABSTRACT
This paper will describe how applications in a variety of disciplines can
enhance the teaching of the CS1 course. Examples will be given from a range
of disciplines, including mathematics, economics, linguistics, history, biology,
art and music. The applications will be linked to the computer science concepts
being discussed. Such an approach broadens the appeal of the introductory
course and also teaches students valuable problem solving skills.
INTRODUCTION
There have been a variety of approaches for teaching introductory computer science
that have been used to entice students into the discipline. Some of these include the use
of animation [10], film [7], or web design [2]. Other approaches have integrated the
natural sciences into the computer science curriculum [1, 5]. At the same time that
computer science is broadening its reach into other disciplines, there has also been an
increased emphasis on problem solving techniques in the CS1 course. Some of these
techniques have been quite extensive and complex [4, 9]. Others stem from the research
by Margolis and Fisher [8] that shows that women are more likely to major in computer
science if they can see the tangible applications and ways in which computer science can
be used. Problem-solving activities also seem to increase the self-confidence of women
taking CS1 [6]. Since the last Taulbee survey [3] shows that 11.8% of undergraduate
degree recipients were women and nearly two-thirds of the undergraduate majors were
white and non-Hispanic, it is imperative that efforts continue to be made to broaden the
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
47
JCSC 25, 6 (June 2010)
appeal of CS1 to underrepresented groups. Thus, using problem solving across a wide
range of disciplines is a natural approach.
At smaller colleges the CS1 course has multiple audiences: serving as a base for
those desiring to major or minor in CS but also serving as an introduction to the discipline
for students who might only take one or two courses in the subject. Thus one of the first
goals of the course is to produce a challenging but accessible and interesting course for
all audiences. Another goal for this course, obviously, is to introduce basic programming
concepts in computer science. Discussions at the college also focus on two additional
goals. The first is to emphasize the importance of computer science in solving a variety
of interesting, practical problems; students should become active problem solvers
themselves. And then the final (implicit) goal is to interest a broader group of students
in the joys of computer science; in the best case they are enticed to become majors and
active practitioners and in any case all students finish the course with a greater
appreciation for the discipline and a confidence in their abilities to apply these concepts
to their own fields.
The language that is used to teach the introductory course is Python. This language
seems particularly well suited to meeting the goals of this course: it is relatively easy to
teach and learn, it does not have a lot of jargon, the programming environment is free and
thus promotes continued use beyond the end of the course, and there is a wide range of
modules that provide accessibility to a host of applications.
48
CCSC: Northeastern Conference
49
JCSC 25, 6 (June 2010)
Once students understand basic graphics (which also gives them an early taste of
object-oriented programming) and loops, it is instructive to have them create graphical
animations. Even simple animations are useful for teaching a number of lessons: they can
again be used to help students practice writing modular and parameterized functions (e.g.,
speed or direction of the animation can be parameters), they can be used to show creative
uses for loop counters (at this point it is still early in the course and students are still not
quite comfortable with the idea of using the built-in definite-loop counter variable within
the body of the loop), but it also gives students a sense of the processing speed of the
computer. While they may feel many other tasks could be done manually (if slower),
animation exercises can concretely affirm to them that there are tasks where the role of
the computer is truly indispensible.
More complicated graphics introduce visualization of data. By using graphics as
well as functions with parameters, students are asked to take actual data sets from
economics (such as census information, employment statistics, etc.) and decide how best
to visually impart the data. They often choose data which has particular meaning to their
own interests. Although they produce fairly complicated and interesting graphics, this is
still a topic that occurs quite early in the course, in the first month.
Students start out in the course writing console applications, and in that setting it is
naturally harder for them to relate to the context of the program’s flow (as most students
have only used applications with graphical user interfaces). Thus, giving them an early
chance to create a graphical user interface with clickable buttons creates a more familiar
user-setting that helps to motivate indefinite loops and event-driven programming
techniques. Because of their extensive experience as users of GUIs, students can fairly
easily grasp the concept of a user’s button-click driving the control of program flow.
Recursion is often a challenging concept for students. An engaging way to illustrate
the power of recursion and allow students to really experience it is to have students create
drawings of fractals. Using a simple graphics package, students can create a
straightforward program that draws straight lines and keeps track of changes in direction.
Then, after some practice with simpler recursive images, the students can be given the
task of creating more complex, well-known and beautiful fractals, such as the Koch
snowflake and Sierpinski Triangle. They can also be given the opportunity to
create/devise their own fractal drawings.
50
CCSC: Northeastern Conference
structure of wav files, showing them to be collections of bytes that can be controlled and
changed. Some of the programs for this application include generating simple songs and
tunes, doing simple analyses of wav files, and altering wav files (for example, changing
the volume).
As students look at the quantity of data necessary for pixel information (and then
extrapolate to video) and also look at the size of wav files, this presents an opportunity
to talk a bit about compression methods, how important they are, and how crucial good
algorithms become. The processing of images and sounds also presents an opportunity
to show the power and convenience of external, already-written modules. Students not
only learn how to interface with these modules (reinforcing the versatility of functions
and parameters, the importance of modular programming, as well as object-oriented
programming concepts like encapsulation), but also realize the potential of tapping into
a well-established but evolving body of knowledge.
51
JCSC 25, 6 (June 2010)
lovely application in genetics. Genomes are composed of DNA molecules which contain
sequences of millions of bases (A, G, C, T). These molecules contain chromosomes,
which in turn contain genes. It turns out that genes can be identified by using
straightforward string processing techniques (they are subsequences with certain easily
identifiable starting and stopping codons). This topic presents an opportunity to talk about
classes, inheritance and methods for those classes. Data for this application are taken
directly from the National Center for Biotechnology Information (NCBI) website.
Students are able to download strands of DNA and then pick off the genes. They can then
compare genes in different organisms, looking for identical ones or ones that are similar.
Once again they are able to see both the computing power that is necessary for such
applications but also the possibilities for asking and answering interesting questions about
this discipline.
Other areas in science where object-oriented techniques and external data have been
used include environmental research information obtained from colleagues. Often this
information is contained in spreadsheets. In most institutions one can find colleagues who
have data sets that can be mined for interesting conclusions.
CONCLUSION
This cross-disciplinary CS1 curriculum has been created and shaped over several
semesters. It has been well-received and seems to have attracted an increased number of
majors to the computer science department. The fact that the number of female computer
52
CCSC: Northeastern Conference
REFERENCES
[1] Adams, J. B., Computational science as a twenty-first century discipline in the
liberal arts. J. Comput. Small Coll. 23 (5), 15-23, 2008.
[2] [2] Baird, B., Web design: interface to the liberal arts, J. Comput. Small Coll. 21
(6), 14-19, 2006.
[3] CRA Taulbee Survey, Computing Degree and Enrollment Trends 2007-2008,
www.cra.org/info/taulbee, retrieved November 16, 2009.
[4] Faulkner, K., Palmer, E., Developing authentic problem solving skills in
introductory computing classes, Proceedings of the 40th SIGCSE technical
symposium on Computer science education, 4-8, 2009.
[5] Ivanov, L., The N-body problem throughout the computer science curriculum, J.
Comput. Small Coll. 22 (6), 43-52, 2007.
[6] Kumar, A., The effect of using problem-solving software tutors on the self-
confidence of female students, Proceedings of the 39th SIGCSE technical
symposium on Computer science education, 523-527, 2008.
[7] Lim, D., Lights..camera..computer science: using films to introduce computer
science to non-majors. J. Comput. Small Coll. 23 (5), 58-64, 2008.
[8] Margolis, J., Fisher, A., Unlocking the Clubhouse, Women in Computing,
Boston, MA: MIT press, 2003.
53
JCSC 25, 6 (June 2010)
[9] Rao, T. M., Mitra, S., Canosa, R., Marshall, S., Bullinger, T., Problem
stereotypes and solution frameworks: a design-first approach for the introductory
computer science sequence, J. Comput. Small Coll. 22 (6) 56-64, 2007.
[10] Stiller, E., Teaching programming using bricolage, J. Comput. Small Coll. 24 (6),
35-42, 2009.
[11] Zelle, J., Python Programming: an Introduction to Computer Science,
Wilsonville, OR: Franklin, Beedle & Associates, Inc., 2004.
54
INTEGRATING RESEARCH PROJECTS IN CS1*
ABSTRACT
This paper discusses our experience integrating research topics into a first
course in computer science. We introduced a medical image processing project
using two-dimensional arrays in order to expose students to research topics
early in their computing education career.
INTRODUCTION
Many studies have reported on the benefits of introducing undergraduates to
research in computer science [2,6 ]. These studies cite engagement of students in learning
as well as evidence of increased retention in the major. However, they also report on the
challenges of placing inexperienced students in research labs while ensuring that the
student and the mentor both benefit from the experience [7]. In addition since research
funding is limited, relatively few students profit from this enrichment. These findings
have led to an inclusive approach with the integration of research projects into the
undergraduate computer science curriculum. These projects are usually included in senior
level capstone courses or in advanced electives [1,5,8]. Some have attempted to introduce
research topics early in the curriculum [3,4].
Project Goals
Our goal was to expose students at the beginning of their educational career to
research topics in computer science. This pilot study was meant to examine whether it
is feasible to include relatively advanced real-world projects in a course in which students
are just beginning to develop their skill set. To do this, we wanted students to write the
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
55
JCSC 25, 6 (June 2010)
METHODS
Two introductory computer science classes participated in this study. This course
is highly coordinated with each section assigned the same textbook and programming
exercises. The two sections (each with approximately 30 students) were essentially equal
except for scheduling with students choosing sections without knowing which was
experimental. The control section programmed a tic-tac-toe program. While this exercise
is fun and demonstrates indexing into two-dimensional arrays, it is relatively easy and
does not necessarily show students how difficult real-world problems can be solved using
programming. The experimental section was given an additional lecture with an overview
of research topics in computer science with a focus on medical image processing. The
motivating project was to process MRI images with possible MS lesions.
The companion programming assignment was to process an MRI image using two
dimensional arrays. The students were given the basic code to read a .bmp file by first
reading header information and then the image data (figures 1 and 2). In class they went
over the code to invert the image (figure 3b). The assignment was to create two binary
output images: a mask of the outline of the brain and a thresholded image based on user
input (figure 3c).
The IDE used was Visual Studio which allows one to view image files from within
the interface. Thus the student could easily view the original image and the processed
output image.
56
CCSC: Northeastern Conference
//read number of rows from the BMP header portion of the file
fseek(bmpInput, ROW_OFFSET, SEEK_SET); //point to correct
part of file
fread(&numberRows, 1, SIZE, bmpInput);
//read image data from file and put into 2-D array
for(int r=0; r<numberRows; r++)
{
for(int c=0; c<numberColumns; c++)
{
fread(&oneChar, sizeof(char), 1, bmpInput);
imageArray[r][c] = oneChar;
}
}
Figure 2. Code to read the image into the array
RESULTS
Students were engaged in the lecture, actively participating and asking meaningful
questions. Significantly, all students were able to complete the project on time. We
administered two surveys to each of the two sections participating in this study to assess
their attitudes towards research at the beginning and end of the semester. The questions
are shown in Table 2.
57
JCSC 25, 6 (June 2010)
One surprising result was that while in both sections over 90% of the students
responded that they had never worked on a research project in computer science, over
50% felt that they had a clear idea what research entailed. In each section there were
relatively few students officially majoring in computer science (around 25%). At the end
of the semester the students’ interest in working on computer science projects had
predictably declined. One encouraging finding was that for the students in the enriched
section the decline was lower (down 12% compared to 27% in the control group).
Although the surveys did not show a statistically significant difference in the
attitudes of students in the two sections, our goal of introducing an achievable research
project in a beginning programming course was met.
DISCUSSION
Our pilot study showed that it is feasible to create simple entry-level research-based
exercises that students can understand and complete. Moreover, the project provided an
opportunity to explain when dynamic allocation and pointers are necessary (when sizes
are only known at run-time). We learned that one intervention, in the earliest possible
course, is not sufficient to increase motivation in students to pursue research. We hope to
introduce a more extensive image processing exercise to form the histogram using a one
dimensional array and then finding using this data to generate a threshold value to form
the binary output image. Similar more advanced projects that compare adjacent pixel
values can be introduced into CS2 that build on the material covered in CS1. In CS2 one
can develop image classes with methods to simplify the organization of the code. Further
study is needed to determine whether exposure to research topics early on will lead to
better retention rates.
58
CCSC: Northeastern Conference
REFERENCES
[1] Beasley, R. E., Cupp, J. W., Sanders, D., and Walker, E., Developing senior
capstone projects: panel discussion, J. Comput. Small Coll. 20, (1) 26-26, 2004.
[2] Dahlberg, T., Barnes, T., Rorrer, A., Powell, E., and Cairco,L. 2008. Improving
retention and graduate recruitment through immersive research experiences for
undergraduates. Proceedings of the 39th SIGCSE Technical Symposium on
Computer Science Education, Portland, OR, March 2008.
[3] Huntinroads, K., Using Image Processing to Teach CS1 and CS2, SIGCSE
Bulletin 86 Volume 35, Number 4.
[4] Matzko, S., Timothy A. Davis, Teaching CS1 with graphics and C, Proceedings
of the 11th annual SIGCSE conference on Innovation and technology in computer
science education, June 26-28, 2006, Bologna, Italy.
[5] Pastel, R. 2005. Integrating science and research in a HCI design course. In
Proceedings of the 36th SIGCSE Technical Symposium on Computer Science
Education, St. Louis, Missouri, USA, February 23 - 27, 2005.
[6] Peckham,J , Stephenson, P., Hervé, Y. , Hutt, R , Encarnação, M., Increasing
student retention in computer science through research programs for
undergraduates, ACM SIGCSE Bulletin, v.39 n.1, March 2007.
[7] Peckham, J., Raicu, D., Russell, I., REUs: Undergraduate Research Experiences
and Funding, Volume 23 , Issue 5 (June 2007), Papers of the twelfth annual
CCSC Northeastern Conference, p. 208-211.
[8] Walter, E., Slotterbeck, O., Integrated research components: a practical and
effective alternative to senior projects, Journal of Computing Sciences in
Colleges, Volume 22 , Issue 1 (October 2006) p. 72 – 83.
59
AN INTRODUCTORY COMPUTATIONAL COURSE FOR
SCIENCE STUDENTS*
ABSTRACT
This paper describes an introductory CS course, in a liberal arts setting,
designed for science students to learn programming using MATLAB. This
course differs from many introductory CS classes in that 1) students are not
expected to continue taking more CS classes and 2) MATLAB is used in a
general computational context rather than in an engineering setting. Students
learn to write software to solve problems, visualize and analyze data, perform
computer simulations, and implement and test computational models that arise
in a wide range of scientific disciplines. The course culminates with an
individualized final programming project in which students apply their
MATLAB skills in their particular area of scientific interest.
INTRODUCTION
Science requires computation. There are data to be analyzed, changes to be
measured, and predictions to be made. The manner in which established scientists learn
about computing, however, is typically haphazard [4]. At liberal arts colleges, from
which graduates go on to earn PhDs in the sciences at a higher rate than other
undergraduate institutions [1,2], training in computing is essential. We designed a CS0
course to teach science students about computation using MATLAB.
At the time the course was developed, our CS department offered two introductory
courses: a Java based course for CS majors, and a course for non-CS majors on web
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
60
CCSC: Northeastern Conference
design using HTML and JavaScript. Our goal was to create a CS0 course aimed at
science and social science majors who do not intend to enroll in further CS courses.
Science and social science students need to learn computation, not as computer scientists
per se, but rather as scientists who need to compute.
MATLAB was chosen because it is a powerful and widely used technical computing
environment with advanced graphics, visualization and analysis tools, and a rich high-
level programming language. MATLAB is widely available on campus. One advantage
of MATLAB is that students can quickly generate meaningful programs and results, an
important factor in introductory programming classes. In our course, MATLAB is a tool
for teaching computation, much in the vein of Kaplan [3,4], as opposed to a CS0 course
targeting engineering students [6].
CURRICULUM
Our goal was to provide a solid foundation of basic programming concepts, with an
emphasis on computing that is particularly useful in the sciences. Accordingly, our topics
fall into three main categories: 1) Data representation and organization, 2) Program
structure and flow and 3) Data analysis and modeling. In data representation, we cover
the various ways that scientific data, both numerical and textual, can be stored in
MATLAB. This includes variables, matrices, strings, structures and cell arrays. For
program structure and flow, we teach the fundamentals of writing individual functions
using conditionals and iteration (including recursion), as well as the higher level skill of
how to design a large program using multiple functions and subfunctions. The design
process emphasizes the important ideas of abstraction and modularity. We also teach how
to create graphical user interfaces (GUIs), and merge the underpinnings of a program with
the user interface. For the third category of data analysis and modeling, we cover reading
external files of many types, writing files in a useful format, visualizing 2D and 3D data,
and selecting and sorting data. We also introduce the powerful MATLAB toolboxes.
Specifically, our students learn about the Curve Fitting, Image Processing and Statistics
Toolboxes, as well as the Interactive Plotting Tool.
The course meets three times per week for 13 weeks. Each week includes two 70-
minute lectures and one 110-minute hands-on laboratory. During lecture, students often
engage in group problem-solving. The laboratory revolves around generating MATLAB
code that instantiates concepts from the previous week’s lectures. There are typically 8
homework assignments, each requiring 6-8 hours on average, that are completed outside
of class. There are also two in-class examinations and a final project.
Our homework assignments have illustrated many different ways that MATLAB can
facilitate problem-solving and computation. Students have written MATLAB programs
to perform tasks often needed in the world of science. Sample tasks included: examining
the frequency of occurrence of structures or events, e.g. identifying a foreign language
given occurrences of the most common letters [5]; simulating dynamic processes, e.g.
population growth or spread of disease in a population; performing statistical analyses,
e.g. removing outliers in a data set, or extrapolating from a data set to make predictions;
performing graphical analyses of data, e.g. energy production and consumption data, and
supply and demand data; creating synthetic images, e.g. visual illusions and recursive
61
JCSC 25, 6 (June 2010)
pictures; image processing, e.g. counting grains of rice using luminance data and
analyzing the spectral composition of astronomy images; processing text, e.g. translating
nucleotide sequences to amino acids [3] and selecting or sorting numerical or textual
information in a database, e.g. manipulating data in a bird species database. Our choice
of programming tasks emphasized general problem-solving skills that are relevant in the
sciences.
We wanted to build a level of comfort and expertise with MATLAB within a single
course so that after completing the course, students would naturally turn to MATLAB (vs.
Excel, Maple, and other statistical packages) for routine tasks like plotting and analyzing
data as well as for more complex programming needs. MATLAB has the tools for these
routine tasks seamlessly integrated into a general programming environment. This
provides much greater flexibility for students to customize their data analysis and
visualization tasks, and to build a program that can integrate many analysis steps
efficiently, and a GUI that allows the user to work with the data interactively. With this
in mind, our course culminates in a final project where each student builds a substantial
MATLAB program from scratch, drawing upon the wide array of computational
resources that it offers.
62
CCSC: Northeastern Conference
The development of the MRI brain slice assignment in two parts allowed us to
emphasize some key computational ideas: 1) the ability to read an external file and
display and morph its contents, 2) the division of a large program into smaller functions,
and 3) the separation of the program’s function from the program’s user interface. The
students were introduced to the MRI data early in the semester, before GUIs were taught.
The second MRI assignment used the same data, yet the students wrote a completely
different and more complex graphical interface that displayed the brain images in three
dimensions. We emphasized the separation between the computation that a program
performs and its user interface. One goal of this assignment was to provide a model by
which the students understand how to decompose a problem into smaller units, and then
build a new, more powerful and flexible user interface for that program.
FINAL PROJECT
The final project provides students with an opportunity to integrate and reinforce the
many skills learned throughout the course. Each student designs a large project from
scratch, typically 2-3 times larger than a homework assignment. Most students design
and implement the program largely independently. This process has many benefits for
our students. Creating their own project builds students’ confidence and develops their
self-reliance and resourcefulness. While working on their projects, students sometimes
learn new MATLAB that is particularly relevant for their project. Independent
programming on a self-chosen topic also helps students stay highly motivated and
appreciate the relevance to their field of interest. Many of our course’s final projects
have supported research projects with other faculty, providing our students with a source
of pride when demonstrating their project to their research advisors. Faculty in other
departments have directed their research students to our course, as MATLAB is a
63
JCSC 25, 6 (June 2010)
valuable tool in their research. As our final project requires a series of written reports as
well as presentations, this strengthens students’ writing and public-speaking skills.
Finally, as a long-term assignment spread out over 6 weeks, the final project requires
strong time-management and resource allocation skills.
Students chose final project topics based on their own interests. The final project
consisted of four phases: 1) a general text description of the project with sketches,
including lists of each MATLAB function or script; 2) a detailed code skeleton with
roughly one-third of the code written; 3) an informal presentation of the project in
progress during class; 4) a final project demonstration with the course instructors,
submission of code and documentation. Table I lists a sample of the wide variety of final
projects. Virtually all projects incorporated a graphical user interface; many projects read
input data files and output results files.
Table I. Final projects in Computation for the Sciences
Simulation Highway traffic jam formation model, airplane flight
simulation, mass-spring system, 3D trajectory of ball under
gravitational and wind forces
Educational Tools Interactive periodic table, visualization of electrical and
potential fields around charge distributions, economic
forecasting, analysis of bonding in chemical structures,
simulation tool for teaching game theory
Research Assistance Data coding and analysis for motor learning study, data
tabulation from internet search of gene and function
correlations, analysis of MRI data from the College MRI
facility, analysis of Maine coast tidal data, analysis of eye
tracker data from perceptual experiments, analysis of NMR
spectral data to determine molecular structures, analysis of
peak absorbances and phase changes from chemical
wavelength and absorbance data, creation of experimental
color perception, analysis of eye alignment in historical
images of visual artists
Fun & Games Mastermind, Snake, Frogger
Miscellaneous Travel planner, health risk evaluation, decryption and
encryption
CONCLUSIONS
Computation for the Sciences has been taught 5 times in 3 years to students whose
majors represent many diverse fields (Biology, Chemistry, Physics, Astronomy,
Economics, Computer Science, Neuroscience, Cognitive Science and Psychology). The
students ranged from first-years to seniors. Within the broader curriculum at our college,
this course satisfies a distribution requirement in the area of mathematical modeling and
problem solving. Although this was not the intent of this course, several students who
took Computation for the Sciences in MATLAB as their first CS course subsequently
declared CS majors or minors. The foundations of programming were sufficiently
covered such that students have successfully transitioned into more advanced CS classes
64
CCSC: Northeastern Conference
after our course. Feedback from the graduates of our course has been very positive. In
the students’ anonymous end-of-semester evaluations, 92% indicated that they would
recommend our course to fellow students (78% indicated they would “strongly
recommend” the course). One student summarized her course experience (Spring 2009)
as follows: “I wanted to learn how to use a tool that would help me become a better
scientist, and maybe learn a bit about computer programming. I'd wholeheartedly
recommend this course to students who want to learn a programming language that is
useful for the sciences.” We have also received positive feedback from faculty in other
departments whose students have taken our course.
Perhaps the most compelling examples are those students who, after taking our
course, continue using MATLAB for computation in their independent research projects,
or in their field of choice. At our college, MATLAB is widely used in teaching and
research in disciplines such as Neuroscience and Physics. Some students in these and
other scientific fields have made it clear that knowledge of MATLAB programming from
our course facilitates advancement in their scientific careers. For example, one graduate
of our course uses MATLAB extensively for her Geosciences thesis project, and is able
to efficiently analyze and present her data to her advisor, who is not familiar with
MATLAB. Other students are using MATLAB in their graduate or professional work,
in areas such as physics and medical imaging.
REFERENCES
[1] Cech, T.R., Science at liberal arts colleges: a better education? in S. Koblik and
S.R. Graubard, eds, Distinctively American: the Residential Liberal Arts
Colleges, Transaction Publishers, 2003.
[2] Freeman, R.B., Jin, E., Shen, C-Y., Where do new US-trained science-
engineering PhDs come from?, National Bureau of Economics, June 2004.
[3] Kaplan, D., Introduction to Scientific Programming and Computation, Pacific
Grove, CA: Brooks/Cole, 2003.
[4] Kaplan, D., Teaching computation to undergraduate scientists, Association for
Computing Machinery, 36, (1), 358-362, 2004.
[5] Kaplan, D., Scientific Programming Resources for Instructors,
www.macalester.edu/~kaplan/ScientificProgramming/ForInstructors.html,
December 2004.
[6] Tew, A. E., McCracken, W. M., Guzdial, M., Impact of alternative introductory
courses on programming concept understanding, International Computing
Education , 25-35, October 2005.
65
TEACHING COMPUTER SCIENTISTS TO PLAY WELL WITH
OTHERS*
PANEL DISCUSSION
Charles Welty 1
Professor of Computer Science
Computer Science Department
University of Southern Maine
Portland, ME 04104
(207) 780-4240
welty@usm.maine.edu
ABSTRACT
Most undergraduate computer science programs include classes that require
team work. This helps our students work well with each other, but does not
address the problem of working well with people from other disciplines.
Computer scientists have preconceived notions of people in other professions
and people in other professions have preconceived notions of computer
scientists. These preconceptions can interfere with good working
relationships. Computer scientists tend to work on projects of use in an
application field that may be unknown to them and, thus, must work with
people in that application field.
1
Contact person.
___________________________________________
*
Copyright is held by the author/owner.
66
CCSC: Northeastern Conference
Many computer scientists enjoy the comic strip DilbertTM by Scott Adams. A
problem with the strip is that it paints stereotypical portraits of the various
professionals that Dilbert works with. The marketing people lie and make
impossible demands. Management is composed of idiotic, power mad people.
Advertising people will promise anything. The human resources department
is out for your blood. Certainly graphic artists and usability professionals
would come under similar fire if they are ever part of the strip. Of course, the
computer scientists (or engineers) are also negatively stereotyped as having no
lives, being obsessed with hi-tech toys, having poor social skills and,
generally, being geeky (see http://en.wikipedia.org/wiki/Geek). The problem
is that these stereotypes often contain a component of truth. Computer
scientists and others must learn to look beyond the stereotype and see what a
person can actually do.
This panel will look at several ways to foster appreciation of other disciplines
to help broaden the sometimes narrow perspective of our graduates.
Jesse M. Heines
Exploring interdisciplinary course models.
Like our colleagues at the University of Southern Maine, we at UMass Lowell
believe that there is great value in exposing computer science students to the work of their
peers in other disciplines. With the help of a National Science Foundation (NSF) grant,
we have tried to go beyond bringing in presenters from other disciplines to give students
concrete experience in working on interdisciplinary projects.
67
JCSC 25, 6 (June 2010)
In 2007, a team of UMass Lowell professors was awarded an NSF CPATH grant to
explore the intersection of computer science and the arts through interdisciplinary
courses. The team consisted of two professors in computer science, two in art, one in
music, and one in theatre. This team developed two types of courses: "synchronized" and
"hybrid."
"Synchronized" courses pair two existing of upper-level courses for majors in two
departments. The courses remain independent, but the students work together on a joint
project developed within the scope of the two courses. "Hybrid" courses are ones that are
taught by two instructors simultaneously, one instructor from computer science and the
other from the arts. These courses are open to all students across the university and co-
listed in two departments. Science students earn Arts & Humanities General Education
("GenEd") credit, while Arts students earn Technology GenEd credit.
Not unexpectedly, each course model turned out to have pros and cons. Our work
taught us a number of lessons that we are now using to revise the courses. As we move
through our third year of this project and approach the end of our NSF funding, we feel
that we have laid sufficient groundwork for at least the hybrid courses to continue to be
offered. Enrollments in these courses has increased over time, and the professors
involved remain enthusiastic about working together. The university administration has
embraced the effort and allowed the professors to count the joint teaching as part of the
professors' normal teaching load.
We see these developments as indicators of a successful program that we expect to
continue to grow and help prepare students for the interdisciplinary project teams they
will encounter after graduation in the workplace.
Margaret Menzin
Working with a course in another discipline
In my Systems Analysis course I try to present students with opportunities to both
interview high level stakeholders and to work with domain experts from another field.
Last year one project in the course was the design of an informational website for
prospective students. My students had to identify the stakeholders and then write to and
interview them: many high level administrators at our university (deans, head of the
Library, etc.) and groups of other students to determine what content and functionality
should be on the site. We also invited to our class people such as the Vice President of
Marketing, who spoke about the institution’s approach to presenting ourselves and
answered student questions.
After students had determined the architecture of the site we turned to the Video
Production course in our Communications Department to provide content on a specified
list of topics. Videographers are creative people and they can produce "fun" content,
wonderful videos with humor and "voice". Creative people, however, don’t necessarily
follow your specifications. After the students in the Video Production course had made
more than a dozen wonderful videos, my students had to turn to other sources to find
images and videos for the remaining topics which needed visual material. There were also
negotiations with the videographers about whether or not certain scenes in some videos
68
CCSC: Northeastern Conference
were appropriate for the new site. And there were some other tensions around maintaining
a time schedule (which my students had developed on Open Project), a problem well
known in all software development.
In retrospect my students and I didn’t get enough "buy in" from the Communications
students, and failed to communicate to them the nuances of the site’s purpose, while the
Video Production students didn’t get enough of an understanding of what it means to be
on “an assignment”. I think some of these problems could have been solved by
scheduling the courses at the same time so that the students could have worked more
closely together. On the other hand, both groups of students gained an enormous
appreciation of what the others had to contribute to a project and what it means to
collaborate across professions. As a measure of the success, we are planning future
collaborations between the two courses.
PANEL TIMING
First, there will be a brief introduction to the panel and panelists (3 minutes). Each
panelist will then present their position for at most 12 minutes, allowing about 5 minutes
for questions following each presentation and 15 minutes for questions after all the
presentations.
69
TEST-FIRST DESIGN PEDAGOGY AND SUPPORT FOR
INTRODUCTORY OO PROGRAMMING*
TUTORIAL PRESENTATION
Viera K. Proulx
College of Computer and Information Science
Northeastern University
Boston, MA 02115
617-373-2225
vkp@ccs.neu.edu
The hands-on workshop will show how testing and test-first design can be
incorporated into every introductory course on object-oriented programming using Java.
We will show the syntax for the tests that use our novice-friendly tester library, and
describe the pedagogy we use to enforce test-first design from the very first program
students write. The tester library is freely available on our web site with extensive
documentation that shows how to use it with Eclipse, NetBeans, BlueJ, or just command-
line Java compilation.
Test-driven design or test-first design has been used in software industry for years.
The reports on using this approach reveal faster development time, more robust program
design, and a more readable code --- divided into shorter methods and smaller classes. On
the other hand, many reports on catastrophic failures caused by software flaws point out
to a small overlooked error in the program design. We all have experienced the times
when after struggling with a bug in our code we find the problem in a small method that
just cannot be wrong.
One would think that all courses on introductory computing would adopt this
beneficial test-driven approach. However, this is not the case. A survey of over twenty
current textbooks shows only two that attempt to require tests for the methods students
design. The rest of them include a perfunctory section that proclaims how important
testing is --- with no attempt to include it in the suggested curriculum.
One of the difficulties in enforcing test-first design for novices is the steep learning
curve for use of standard libraries for testing. Students struggling with the syntax-heavy
programming language (Java) are not able to digest the extra burden of designing tests
in a separate environment (such as JUnit), especially if it requires that they override the
___________________________________________
*
Copyright is held by the author/owner.
70
CCSC: Northeastern Conference
equals method before they even understand what are the different kinds of equality
between Java objects.
Over the past six years our introductory computing courses enforced test-first design
from the very beginning. To make this possible we have designed a supporting test
library, tester, that enables the novice programmer to define all examples of data and all
tests in an Examples class that represents the client for the code that the student has
designed. There is no new syntax, no need to define equality, as all objects are compared
for the value of their fields. Tester evaluates all tests defined in the Examples class,
pretty-prints the values of all data defined in the Examples class, and reports on all failed
tests with a display of both the actual and the expected values, as well as a link to the
failed test. Additionally, there is a support for checking whether the actual value matches
one of several expected ones (e.g a random number being one of 1, 2, 3, or 4), or whether
the given value is within the given range (as determined by a Comparator or an
implementation of the Comparable interface). There is also a support for detecting
whether a method when invoked by the given object and the given argument list throws
the expected exception --- with the expected message.
Our curriculum focuses initially on mutation-free program design: the result of every
function or method is a new piece of data. This makes the test design easier, as all we
need to do is to compare the actual outcome with the expected one. However, the tests
for imperative methods (that produce void) are not much harder to design and will be
covered in the tutorial.
This workshop illustrates hands-on the benefits of test-first pedagogy on a series of
typical introductory programming assignments. It prepares the participants to adopt test-
first design approach in their introductory (and advanced) courses. The material presented
here is orthogonal to the ReachJava curriculum and can be used in every course that
focuses on Object-Oriented programming using Java.
Each participant will receive both paper and electronic copy of workshop notes and
exercises. Additionally, the tester library web site contains a tutorial, examples, the tester
library downloads and documentation. The participants can also access a wealth of labs,
examples, assignments, and lecture notes already available on our web pages.
PRESENTER'S BACKGROUND
Viera Proulx is a Professor in College of Computer and Information Science at
Northeastern University in Boston, MA. She has been involved in curriculum and
software development for introductory computing for nearly 20 years. During the past six
years she has been developing and implementing curriculum for data-driven class based
introductory course on object-oriented programming, working with the
TeachScheme/ReachJava team.
Professor Proulx has led faculty development workshops and several conference
workshops on the ReachJava curriculum. The work on the tester library is supported by
the NSF DUE-CCLI grant number 0920182.
71
JCSC 25, 6 (June 2010)
REFERENCES
[1] Proulx, V. K., Test-Driven Design for Introductory OO Programming. SIGCSE
Bulletin, 41(1) 2009.
[2] Proulx, V. K., and Gray, K. E., Design of Class Hierarchies: An Introduction to
OO Program Design. SIGCSE Bulletin,38 (1), 2006.
72
FLIPPING COINS: AN ACTIVITY FOR INTRODUCING
MAJORS*
DEMONSTRATION
David Toth
Computer Science Department
Merrimack College
315 Turnpike Street
North Andover, MA 01845
978-258-1208
david.toth@merrimack.edu
ABSTRACT
In this demo, I will present an activity that I use to introduce computational thinking
in my non-majors course and outreach talks at high schools. I do this by first talking
about what modeling and simulation are and why they are useful. Following this
explanation, I introduce a variant of a problem about Alice and Bob. In the original
problem, Alice and Bob take turns flipping a coin until one of them gets heads and wins.
If Alice goes first, what is the probability that she wins? In class, I introduce this variant
of the problem: “Bob suggests to Alice that they play a game. They will take turns
flipping a coin until one of them wins by getting heads. The winner will then receive a
dollar from the loser. If Bob says he will always let Alice go first, should Alice play the
game?” While this problem is trivial for those comfortable with basic probability and
familiar with geometric sequences, most of my students who are not computer science
majors are not comfortable with math. Thus, I explain that although the problem can be
solved with some math, instead we should first model the problem. Once we have
modeled the problem, I have my students get some intuition by pairing off and having
each pair play the game 20 times. I collect the results and discuss how so few trials are
not sufficient to draw conclusions. Finally, I run a simulation that runs the game one
million times and demonstrates that Alice should win 2/3 of the time and thus should play
the game.
___________________________________________
*
Copyright is held by the author/owner.
73
ENSEMBLE - THE ONLINE COMMUNITY CENTER FOR
COMPUTING EDUCATORS*
DEMONSTRATION
Gregory W. Hislop
Drexel University
hislop@drexel.edu
ABSTRACT
This demo will introduce attendees to Ensemble, the online community center for
all computing educators. Ensemble provides content, communities, and tools for
computing educators and students. The content consists of freely available computing
education resources stored within Ensemble or at other locations. Ensemble provides
federated search, indexing, annotation, reviews, and other services to make these
resources accessible, visible, and more useful to the community. Ensemble also provides
information streams such as news, notices, and blogs of interest to computing educators.
Ensemble communities support interaction among computing educators via facilities
such as discussion forums, posting of working papers, and connections to venues such as
Twitter and Facebook. These services support open collaborations such as a CS1
community site and also hosts closed working spaces for groups like the ACM Education
Board and the Future of Computing Education Summit working groups.
___________________________________________
*
Copyright is held by the author/owner.
74
CCSC: Northeastern Conference
Ensemble tools provide access to more advanced facilities to help instructors and
students access and organize materials relevant to computing education. An example is
Visual Knowledge Builder, which provides a workspace for collecting and organizing
computing education resources.
Ensemble supports the full range of computing disciplines and also programs that
blend computing with other STEM areas (e.g., X-informatics and Computing + X).
ACKNOWLEDGEMENT
This material is based upon work supported by the National Science Foundation
NSDL program under Grants DUE 0840713, 0840721, and others.
75
PSUzzle: WEB-BASED INTRODUCTION TO PROGRAMMING
PRACTICE*
DEMONSTRATION
Delbert Hart
Computer Science Department
SUNY Plattsburgh
Plattsburgh, NY 12901
518 564-2775
hartdr@plattsburgh.edu
DESCRIPTION
PSUzzle is a web application where students using programming concepts to solve
puzzles. The application is geared towards students taking CS 0 and CS 1 courses and
do not have previous programming experience. The puzzles incrementally take students
through the process of building small programs to solve problems by using visual
programming. Students start with a simple sequence of statements. As they progress they
are introduced to conditionals, loops, and functions and are challenged to solve puzzles
with the new components as they are introduced. The application also supports exercises
where the students translate the visual programs to and from textual representations. The
application tracks each student's progress and generates the puzzles based on their current
level of achievement. The goal of the application is to give students confidence and
experience in creating programs.
PSUzzle differs from more generic environments such as Scratch and Alice in that
it focuses on teaching specific programming concepts. PSUzzle is structured as a
sequence of exercises tied to the courses it is used with. Instructors are able to track
student progress and provide feedback. The demonstration will show both the student's
and instructor's use of the tool. During the student portion of the demonstration a walk
through of some exercises and their pedagogical goals will be given. The instructor
portion of the demonstration will look at how exercises are enabled and the data collected
from them.
Instructions and an online demo of PSUzzle is available at
http://www.cs.plattsburgh.edu/psuzzle/
___________________________________________
*
Copyright is held by the author/owner.
76
CCSC: Northeastern Conference
BIOGRAPHY
Delbert Hart is an assistant professor in the computer science department at SUNY
Plattsburgh. His past research interests have been in distributed computing and
information visualization. His current research interests are in developing instructional
tools and computer security. He has a DSc in Computer Science from Washington
University in St. Louis.
EXPERIENCE
The presenter is the developer of the tool. He has used a preliminary version of the
tool during guest lectures in several sections of a CS 0 course. During the spring he plans
on working with instructors of CS 0 and CS 1 to make use of the tool in their courses. He
has taught CS 0 and CS 1 courses, as well as a variety of other computer science
undergraduate and graduate courses.
___________________________________________
*
Copyright is held by the author/owner.
77
ROBOTRAN: EVOLUTION OF AN UNDERGRADUATE
SOFTWARE PROJECT*
ABSTRACT
Student software projects occasionally evolve into useful, long-lasting
applications, but are seldom documented well, making maintenance by later
students and faculty extremely difficult. Dealing with this type of legacy code
poses challenges but presents interesting opportunities for students to learn in
a deep way why software engineering is important. Skills of structure
discovery can be taught and will be useful in a student’s future career in the
software industry.
INTRODUCTION
When we undertook the creation of a software simulator for the popular Lego
Mindstorms RCX in 2005 [4][5], we did not realize how daunting the task would be, nor
how useful and long-lasting the resulting product would be. The simulator passed to
other students who all struggled to understand the complex system in order to debug and
expand it. This paper details their adventures and attempts to discover some redeeming
lessons from the experience.
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
78
CCSC: Northeastern Conference
system seems to defeat most programmers due to “long distance,” irregularly patterned
dependencies between the modules and sections of a program, even when modern object
oriented languages are used [3]. Furthermore, agile methods, which have challenged the
traditional view of software documentation, do not appear to help when software needs
to be maintained later [7].
Some studies of how programmers approach an unfamiliar program focus on
metacognition strategies by which the programmers attack the problem of learning a
program’s structure [7]. Surprisingly, programmers continue to rely on the actual source
code much more than documentation, structure diagrams or other descriptive tools [6].
In fact, many documentation artifacts rank fairly low on the chart of how important they
are rated by programmers, including data models, requirement descriptions, test plans,
data dictionary, user manual, architectural model, glossary, and so forth [6]. Some types
of global documentation artifacts are consulted once to get a general understanding of
the system and are never consulted thereafter [6].
79
JCSC 25, 6 (June 2010)
detection, whereby the simulated robot would stop when it ran into the wall or obstacles
that we placed in its on-screen world. In spring 2007, we offered a seminar section that
would attempt to document Robotran as well as enhance it. Six students worked on this
project in two teams: three worked on documentation and three on bug fixing and
programming. The latter group investigated a number of collision detection strategies
but failed to get it working.
The documentation group did not fare much better. They investigated several
automated UML tools, including Green UML [1] developed at SUNY-Buffalo, that
automatically generate class diagrams. Originally, they wanted to create both a
programmer’s manual and internal javadoc documentation to enable future developers
to more easily maintain Robotran, but got mired down in the complex structure. One of
them wrote a number of scripts to comb through the Java code and create concordances
and maps but these long lists of names did little to explicate the structure.
As a part of the seminar, the documentation group attempted to enumerate the ways
a person goes about “discovering” a software project. Lacking specifics about how to
do this, the students attempted to study their own thought processes and document the
various ways they used to unravel mysterious code. Not surprisingly, this turned out to
be quite difficult, as most self-introspection usually is, and it seemed to interfere with the
more immediate task of producing the desired documentation for Robotran. As a result,
this part of seminar saw little progress. In hindsight, the goal of learning how to
“discover” a software system is so large that it should be its own seminar topic.
80
CCSC: Northeastern Conference
abilities and limitations, I found it easier to locate the code controlling the various parts.
The search feature of Eclipse became indispensible to be able to make any significant
changes. Frequently, trying to find names related to errors led to the frustration of
having to dig through several layers of object-oriented code, where seemingly everything
had a superclass and was calling some other class. But this was made much easier by the
“open call hierarchy” and “open declaration” context features of Eclipse, which would
bring me to the place from which the item I was looking at was drawing code.
Unfortunately, after applying some fixes even more things broke, requiring even more
tracing to see what I broke or a complete rethink to attempt to find another section of the
code relating to the problem. After several weeks of this, I began to develop a
subconscious mental map of what affected what, which classes controlled other classes,
and which classes controlled the largest sections of the program. Difficulties occurred
even then because there were repeated class names, and the attempted generalization to
include NXT code meant there were objects for both the robot and its RCX subclass.
The virtual ROM also caused problems while reviewing the code, and so the concept was
scrapped when building the NXT version. Adding features was another beast entirely.
Many times new additions required tracing through code to determine the hierarchy of
controls. Expansion of the program also seemed to be far more likely to introduce other
errors. Several of the program’s objects for the robot’s world were in arrays, causing
many expansions to the code to throw index out of bounds errors.
Coming into a large project with incomplete documentation, and where the principal
programmer was for all intents and purposes hit by the proverbial bus was easier than
expected for me because of the perspective I brought into the project. While some people
feel the need to know how everything works, especially in a project they have inherited,
I was perfectly willing to allow large sections of the code to remain black boxes to me.
By not worrying about every section of the code, I was able to focus on the parts that had
to do with my current task and trust that the rest of the program would continue to do its
job. After several iterations of this, a plot began to form in my mind of the entire
program, much the same as if I had spent several weeks just looking through the code and
documentation to learn the program. I was ahead of that curve, though, because not only
had sections been completed during those weeks as I learned the program, but I had
learned better how the program interacted by actually writing and changing the code
within it.”
81
JCSC 25, 6 (June 2010)
should also provide some kind of high level documentation, even if only in the form of
an audio or video recording explaining what the program does, how it does it, what the
underlying code structure is, and what problem areas may become tar pits. Software
engineering teachers might consider providing these basic skills. There is a fine line
between encouraging quickly produced and shoddy documentation versus polished
designs that are carefully thought out and well documented. By always emphasizing
traditional, large-system software designs, software engineering teachers give students
huge and cumbersome tools that they will never use for smaller designs, which are
probably the only kind they’ll see in school.
Naturally, creators should try to use hygienic software practices like sticking with
accepted object oriented principles and using reasonably descriptive identifiers. Even
one line of explanation next to a variable can be a godsend later. Writing javadoc
documentation is useful, but if the time cannot be found for this, then a minimal
explanation of what a method is supposed to do will serve as the basis for a future clean-
up of the code. Until IDEs encourage writing method headers and comments first, and
de-emphasize actual code, this will always be a struggle.
Post-developers face an entirely different set of intellectual challenges, starting with
the most basic of discovering the underlying skeleton of the system. Though a post-
developer may have some idea of what the system is supposed to do and what it looks
like when it runs, actually poking through the source code opens up an entirely different
world whose connection to the user experience is very indirect. Because they didn’t
design and code the original system, post-developers do not have that all-important
mental map that creators have. Even the mental maps of creators will deteriorate rather
quickly without continued involvement with the software. This is where the creators can
help enormously with taped interviews or audio explications, by helping post-developers
quickly gain the outline of a mental map.
By and large, post-developers will have to rely on discovering the structure
themselves. Initially we hoped that technology would help, such as concordances of
variable names, UML diagram generators and other tools. However, those tools are not
able to help with the more general mental map. Introspection skills, which can be taught
to some degree, can help post-developers develop this mental map by encouraging them
to explore the tangled jungle of code and not get overwhelmed by it. They can document
their progress, refine an emerging mental map by drawing diagrams or making notes or
by writing about the structure as they uncover it. The mental map in the mind of a
programmer is a kind of hypothesis that is refined as new details come to light.
“Programming by searching” describes how we zoomed in on the code details of
Robotran. Eclipse allows on-the-fly concordance generation by hovering over a method
name and it helped Kevin enormously in his hunting for relevant areas of the code.
Sometimes he only knew a part of a method name, or suspected that a particular identifier
existed. A search of the code turned it up somewhere near where he needed to go.
Summarizing what seemed to work, we note that a post-developer is ideally
someone who is adventurous and curious, but not overwhelmed by a lack of structure at
the outset. He or she needs to be persistent and willing to know only a little bit at a time
and to be able to search intelligently. Being vocal and willing to write about what is
going on their head is a great plus if the project is to continue. Perhaps we should seek
82
CCSC: Northeastern Conference
those who keep diaries or journals. In short, a post-developer should be someone who
can build his or her own mental map and be willing to share theirs with future
programmers.
Reflecting on the failures of the seminar group, we note that the students were very
disparate in abilities and motivation, but their non-involvement in programming and
subsequent lack of direction led to aimless wandering through the forest of code. The
students who were assigned the documentation task did gain some understanding of the
project, but they did not communicate much with the group who were trying to extend the
program to enable collision detection. This was very different from Kevin's work, where
his understanding of the program was entirely motivated by his desire to fix and extend
it. In summary, documentation will never be very good if there is no good motivation
to produce it. Everyone harps on the fact that documentation should accompany every
phase of the project from inception to maintenance, but the reality of student work
requires that we take a new, creative approach to understanding and thence maintaining
large student programs.
CONCLUSION
Since most computer science majors will face the horror of being assigned to a
legacy system at least once in their career, computer science education should prepare
them in a more scientific fashion by perhaps incorporating code discovery techniques in
a software engineering course or requiring that a student take an internship or work on
a project that is fairly large and complex. This experience should not be a “sink or
swim” experience where the student is nearly drowned in a sea of bad code but rather an
opportunity to utilize new techniques. Students who are inducted into this level of
software boot camp may come away with a greater appreciation of the need for
traditional, methodical software engineering techniques, as well as skills for surviving
in the messy real world of legacy code.
REFERENCES
[1] Alphonce, C. and Martin, B. Green: a pedagogically customizable
round-tripping UML class diagram Eclipse plug-in. Proceedings of the 2005
OOPSLA workshop on Eclipse technology eXchange, 115-119, 2005.
[2] Bagnall, B. Core LEGO Mindstorms Programming: Unleash the Power of the
Java Platform, Prentice-Hall, 2002.
[3] Feathers, M.C. Working Effectively with Legacy Code Upper Saddle River, NJ:
Pearson Hall Professional Technical Reference, 2005.
[4] Meyer, R.M. and Burhans, D.T., Robotran: A Programming Environment for
Novices Using LEGO Mindstorms Robots, Proceedings of the Twentieth
International Florida Artificial Intelligence Research Society Conference,
321-326, 2007.
83
JCSC 25, 6 (June 2010)
[5] Meyer, R.M. and Puehn, D.C. Simulating a LEGO Mindstorms RCX Robot in
the Robotran Environment. Proceedings of the Twenty-second International
Florida Artificial Intelligence Research Society Conference, 154-159, 2009.
[6] Shaft, Teresa M. Helping Programmers Understand Computer Programs: The
Use of Metacognition, Database, Vol. 26, No. 4, 25-46, 1995.
[7] de Souza, S.C., Anquetil, N., de Oliveira, K.M. A Study of the Documentation
Essential to Software Maintenance, Proceedings of the 23rd annual
international conference on Design of communication: documenting &
designing for pervasive information, 68-75, 2005.
[8] Spinellis, D. Code Reading: The Open Source Perspective Boston, MA:
Addison-Wesley, 2003.
84
COMPUTER SCIENCE MEETS INDUSTRIAL ROBOTICS: A
COURSE*
ABSTRACT
This paper describes a visual servoing project that has been incorporated into
a traditional upper-level computer vision course in a typical ABET accredited
undergraduate computer science curriculum. Traditional computer vision
concepts are reinforced in a hands-on industrial robotics setting where
students implement a closed-loop vision algorithm using an industrial robotic
arm. As industrial robotic arms and other technology become more readily
available to academia, it should be investigated as to how this equipment can
be integrated into a traditional computer science curriculum in order to:
improve the quality of instruction; generate more interest in both fields of
computer science and industrial robotics; and train a highly skilled
manufacturing workforce.
INTRODUCTION
Manufacturing environments continue to evolve into sophisticated marriages of
robotic equipment, computer technology, and humans. It is clear that the inability to adapt
either equipment or human assets will result in the loss of American jobs to international
companies. “Automate or Evaporate” is the saying in the manufacturing world. Industrial
robotic systems improve productivity by increasing throughput and enhancing the quality
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
85
JCSC 25, 6 (June 2010)
of manufactured goods. It is amazing that robotic automation has existed since the early
1960s - long before the age of personal computers, the internet and email.
North America has historically lagged behind many countries in the area of
industrial robotics and manufacturing. A recent 2009 report by the International
Federation of Robotics [1] compares the number of robots that are being employed by
Asia, Europe, and North America. Figure 1 shows how North America has been and is
estimated to be behind in this area in the coming years. Although North America lags
behind other countries in this area, the integration of robotic technology in North America
has historically grown steadily. Even though growth has recently stagnated, the forecast
is still expected to continue to trend upward starting in 2010-2012 once the worst of the
current economic crisis has abated [1].
On the computer science front, it is no secret that the number of students declaring
computer science to be a major has decreased steadily since the 2000 bubble. Figure 2
shows the historical trends in computer science majors [2]. It seems as though the decline
may perhaps finally be leveling out as it did in the early 1990s after the 1987 bubble.
Manufacturers say that they face a serious shortage of highly skilled workers who
can fix and program robots and other equipment in a 21st century factory [3]. The
integration of industrial robotics and computer science, and potential job opportunities
that come with this marriage, will help to attract more students into the area of computer
science and technology. Both industrial robotics and computer science areas of academia
and industry will benefit from this marriage. The work presented in this paper provides
a concrete example of how industrial robotics equipment can be incorporated into a
computer vision course in a computer science curriculum.
Figure 1. Recent and future lag of North America behind Asia and Europe in the
number of industrial robots being used. Source: The IFR Statistical Department.
86
CCSC: Northeastern Conference
RELATED WORK
Recent years have seen industrial robotic equipment becoming more available to the
world of academia primarily because of two reasons: (1) many U.S. companies are
donating their used equipment as they upgrade to current state-of-the-art machines, and
(2) many robot arm makers now have special educational packages that make such
equipment more attainable. Our robotics laboratory features a total of seven robotic arms,
most of which were donated to us by the Stäubli Corporation.
Unlike mobile robots which are popular in academia [4-9], industrial robotic arms
have traditionally been prohibitively expensive and thus there has been little work done
on how to incorporate industrial robotics equipment into a computer science curriculum.
In previous work, we have shown how such equipment can be incorporated into a
traditional artificial intelligence course [10]. In that work, we presented a course long
project that incorporated several traditional artificial intelligence concepts into a game
playing robotic arm system. This paper is similar to that work as here we present an
interesting industrial robotics project that encompasses several traditional computer
vision concepts. A series of published articles which lay a framework of how industrial
robotics equipment can be incorporated into several areas of computer science will aid
computer science faculty as they pursue robotics equipment.
PROJECT OVERVIEW
A key point of this work is to integrate industrial robotic equipment into existing
computer science courses, not to introduce new robotics courses into a curriculum. The
87
JCSC 25, 6 (June 2010)
intent is that hands-on applications of traditional computer science topics using high-tech
industrial robotic equipment we reinforce the material and increase interest in the
computing field. The following project touches on several traditional topics found in
popular computer vision texts [11-13]. The whole project concept is explained very
easily:
A round, black checkers piece is lying on a
white background on which a black
triangle of similar size is painted. Using a
robotic arm with a camera and “pointy
tipped tool” mounted to the end, push the
checkers piece so that it comes to rest on
top of the triangle.
The initial concept of this project is based
on a more complex project that we observed
during a conference presentation [14]. The
project is easy to setup and is shown in Figure 3.
An interesting aspect of this project is that its
implementation can be done in several ways so
that it could either be a small 2-3 week
programming assignment or a semester long
project. In the following two sections, we outline
the basic robotics material (transformations and
Euler angles) that must first be covered followed
by several of the computer vision aspects of the Figure 3. Project set up: checkers
project which can include: thresholding, piece and triangle on a white
segmentation, structuring elements, erosion, background; camera and pointy
Canny edge detection, active contour tracking tipped tool attached to robotic arm.
(Snakes), smoothing using Gaussian masks, and
Hough transforms.
88
CCSC: Northeastern Conference
⎡ A P ⎤ ⎡ BA R A
PBORG ⎤ ⎡ B P ⎤
⎢ ⎥= ⎢ ⎥⎢ ⎥ (1)
⎣ 1 ⎦ ⎣ 000 1 ⎦⎣ 1 ⎦
⎡ cosα cos β cosγ − sin α sin γ − cosα cos β sin γ − sin α cos γ cosα sin β ⎤
⎢ ⎥
A
B R = ⎢ sin α cos β cos γ + cosα sin γ − sin α cos β sin γ + cosα cosγ sin α sin β ⎥ (2)
⎢⎣ − sin β cos γ sin β sin γ cos β ⎥⎦
!
VISUAL SERVOING AND COMPUTER VISION TOPICS
A visual servoing system is a closed-loop system in which images of a scene are
repeatedly captured and compared to a target scene. Each time an intermediate image is
compared to the target image an error vector is computed which indicates how to move
the robot so that the error between the intermediate and target image is minimized. See
[15] for a detailed tutorial on visual servoing.
In this project, the target image is when the checkers piece is on top of the triangle.
When each intermediate image is snapped, the exact angle must be computed so that the
piece is pushed towards the triangle. Because of the “pointy-ness” of the tool, the
checkers piece will randomly slide off during the push movement either to the left or right
89
JCSC 25, 6 (June 2010)
side of the tool’s tip. During each iteration, the push angle must be recomputed. The
compete algorithm along with reference to computer vision techniques is as follows:
1. Automatically determine a threshold which can separate background pixels from
object pixels. This can be done automatically because of the fact that there are only
two objects on a white background. Every possible pixel threshold (0-255 for a
typical grey scale image) is considered and the number of objects in the resulting
binary image is counted using a “hole counting” algorithm [11]. The average of all
the thresholds which result in two objects in the image is the final threshold.
Computer vision topics covered: working with images, binary images, thresholding,
and hole counting.
2. Determine which object is the triangle and which is the checkers piece. This can be
accomplished by performing “erosion” on the image with a “disk structuring
element” [11]. This will not only identify the checkers piece but also produce its
pixel centroid in the image. This is the simplest way to differentiate the objects in
the image, however, this portion of the project could be extended by implementing
more complex algorithms. For example, the pixel centroid of the circular piece
could be determined by first finding the edges in the image using the “Canny” edge
detection algorithm [11] followed by the circle-finding version of the “Hough
transform” algorithm [11]. A pre-cursor to these steps would be smoothing using a
Gaussian filter [11] to minimize noise in the image. These algorithms are typically
always covered in a computer vision class and would extend the complexity of the
project considerably. Although more complex, the students would learn the benefits
of these techniques. For example, these algorithms solve the problem even if the
size of the triangle or checkers piece changes during execution, or other objects
(noise) is present in the image. Computer vision topics covered: morphology,
erosion, structuring elements, and possibly also: smoothing, Gaussian masks,
Canny edge detection and Hough transforms.
3. Center the checkers piece in the image. The relationship between the X and Y axes
of the camera frame {C} and tool frame {T} must be calibrated at this point. This
calibration can be manually accomplished simply by looking at the camera and tool
to determine which axes in the two systems are most closely aligned. Centering can
then be accomplished by iteratively moving the tool along its appropriate X and Y
directions until the pixel centroid of the piece is in the center of the image.
Computer vision topics covered: visual servoing, and simple camera calibration.
4. Once centered, the transformation {X} that relates this image to the actual piece
must be calibrated – really only the translation information is important. This can
be done by manually moving the tool to the piece and noting the initial and final
frames of the tool – which is easily accomplished on Stäubli machines. From these
locations the translation is computed by simply subtracting the X, Y and Z
components of the locations. Computer vision topics covered: matrices and
transformations.
5. Since the centroids of both the triangle and circle have been determined, as well as
the transformation {X} that relates {T} to {P}, it can now be computed where the
tool must go to initiate a push of the piece towards the triangle. This can be
accomplished by determining the standard straight line formula (y = Ax + b) using
90
CCSC: Northeastern Conference
the two known points. Note that vertical lines, of course, pose a problem for this
equation and need to be handled. Depending on the resulting slope of the line, an
“appropriate” new x can be plugged into the line equation to get its corresponding
y. The new x is simply the checkers piece x ± some predetermined number of
millimeters. The sign depends on the sign of the slope of the line. The resulting new
(x,y) location is away from the center of the piece and oriented exactly on the side
opposite to the triangle. The pointy tool should go to the newly computed (x,y)
location and then move straight to the triangle frame {G}. See Figure 5 for an
illustration of this step. This process could be enhanced by implement i ng a
deformable contour following algorithm like the Greedy Snakes algorithm [11]. The
advantage of this algorithm is that the shape of the checkers piece or triangle can
still be tracked even if their shape
changes during execution. Computer
vision topics covered: possibly
deformable contour tracking, greedy
snakes.
– Steps 2-5 are repeated until only one
object is present in the image. The
checker piece on top of the triangle
will image as one object in the
binary image.
– Note: since everything occurs on a
flat table surface, depth can be
hardcoded which simplifies this Figure 5. Push movement generated along
project tremendously. the computed line function.
CONCLUSIONS
Industrial robotics equipment will become more commonplace in academia as
American companies upgrade to new machinery and robot makers continue to offer
special educational incentives. This equipment could play a key role in teaching several
traditional computer science courses. In this paper, a detailed project for a computer
vision course has been outlined. This project was introduced into the fall 2009 computer
vision course at USC Upstate and was well received by the students who were eager to
spend numerous hours outside of class working on it. Two videos are available online in
which student groups demonstrate their implementation of this work.
Please visit http://faculty.uscupstate.edu/svandelden and click on “Robotics Videos”.
ACKNOWLEDGEMENTS
We would like to sincerely thank the Stäubli Corporation for their generous donation
of robotic equipment as well as their continued support of research at our institution.
91
JCSC 25, 6 (June 2010)
REFERENCES
[1] Executive Study of World Robotics 2009. The International Federation of
Robotics’ Statistical Department. Hosted by the VDMA Robotics and Automation
Association. 2009.
[2] Higher Education Research Institute (HERI) at the University of California at Los
Angeles. [3] Tulmuthy, B. Skilled Manufacturers Workers in High Demand. USA
Today. 11/13/2005.
[4] van Delden, S., and Zhong, W. Effective Integration of Autonomous Robots into an
Introductory Computer Science Course: A Case Study. Journal of Computing
Sciences in Colleges. vol 23(4), pp. 1019. 2009.
[5] Jacobsen, C., and Jadud, M. Towards Concrete Concurrency: occam-pi on the
LEGO Mindstorms. ACM SIGCSE’05, February 23-27, 2005.
[6] Hood, C., and Hood, D. Teaching Programming and Language Concepts using
LEGOs. ITiCSE’05, June 27-29, 2005.
[7] Lawhead, P., Bland, C., Barnes, D., Duncan, M., Goldweber, M., Hollingsworth, R.,
and Schep, M. A Road Map for Teaching Introductory Programming Using LEGO
Mindstorms Robots. ACM SIGCSE Bulletin, 35(2):191-201, 2003.
[8] Flowers, T., and Gossett, K. Teaching Problem Solving, Computing and
Information Technology with Robots. Proceedings of the 18th Annual
Consortium for Computing Sciences in Colleges. 2002.
[9] Klassner, F. A Case Study of LEGO Mindstorms Suitability for Artificial
Intelligence and Robotics Courses at the College Level. ACM SIGCSE’02,
February 27-March 3rd 2002.
[10] van Delden, S. Industrial Robotic Game Playing: An AI Course. Journal of
Computing Sciences in Colleges. Volume 25, Number 3. Pages 134-142. 2010
[11] Shapiro, L., and Stockman, G. Computer Vision. Prentice Hall. 2001. ISBN:
0130307963.
[12] Davies, E.R. Machine Vision, Third Edition: Theory, Algorithms, Practicalities.
3rd Edition. Morgan Kaufmann. 2005. ISBN: 0122060938.
[13] Forsyth, D., and Ponce, J. Computer Vision: A Modern Approach. Prentice Hall.
2002. ISBN:
[14] Ihn, Y.S. Ryu, S.H. Choi, B.J. Ha, S.H. Choi, H.R. Lee, S.M. Koo, J.C. An
Enhanced Vision Processing Algorithm for a Micro-manipulation System.
Proceedings of the 5th IEEE International Workshop on Robotic and Sensors
Environments. 6-11. Ottawa. 2007.
[15] Hutchinson, S., Hager, G., and Corke, P. A tutorial on visual servo control. IEEE
Transaction on Robotics and Automation, vol. 12(5), pp. 651-670, 1996.
92
ARCHITECTURE OF A JAVA FRAMEWORK FOR
ABSTRACT
In this paper we present the architecture of a flexible, object-oriented Java
solution framework for implementing genetic algorithms (GA) solutions to
NP-hard problems. The framework realizes problem-independent features of
any GA solution. Its flexibility lies in the fact that it can be easily configured
with components specific to a particular solution. We discuss the classroom
usage of our framework and also present how instructors can use this
framework to vary the level of difficulty of a GA programming project,
depending on the desired learning outcomes. Finally, we present a comparison
of our framework with others that are available on the Internet.
1. INTRODUCTION
The Artificial Intelligence (AI) course at The College at Brockport covers traditional
AI topics such as problem solving using search, game playing, expert systems,
evolutionary computing, etc. Students enter this class with a good background in data
structures (stack, list, etc,), algorithms and considerable programming experience in Java.
It is an extensive programming course with students expected to complete three or four
major programming assignments. Each programming assignment is devoted to a specific
AI problem-solving technique. Students are required to implement the technique, solve
one or more problems using it and experiment with these solutions.
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
93
JCSC 25, 6 (June 2010)
94
CCSC: Northeastern Conference
quality as a solution. We seek to find the individual with the best fitness. The population
goes through a pre-determined number of cycles of evolution. In each cycle, a series of
genetic operators are applied to modify the population. The standard operators are
evaluate, select, crossover and mutate. Other operators to prevent the population from
dying out may be added. The problem-solver keeps track of the all-time-best performing
individual till the end of the computation. Thus, the main protocol of a GA consists of:
95
JCSC 25, 6 (June 2010)
96
CCSC: Northeastern Conference
that both the desired class names and configuration data values are properly set up in the
configuration data file.
97
JCSC 25, 6 (June 2010)
98
CCSC: Northeastern Conference
REFERENCES
[1] Cormen, T., Leiserson, C., Rivest, R. and Stein, C. Introduction to Algorithms,
MIT Press, 3rd Edition, 2009
[2] JGAP: Java Genetic Algorithms Package, http://jgap.sourceforge.net/, retrieved
August 11, 2009
[3] Luger, G. Artificial Intelligence: Structures and Strategies for Complex Problem
Solving, Addison-Wesley, 6th Edition, 2008.
[4] Rao, T.M. and Mitra, S., Synergizing AI and OOSE: Enhancing Interest in
Computer Science Through Game-Playing and Puzzle-Solving, Proc. AAAI
Spring Symposium 2008, 74 – 79.
[5] Russel, S. and Norvig, P. Artificial Intelligence, A Modern Approach, Prentice
Hall, 2nd Edition, 2003. Also at: http://code.google.com/p/aima-java/, retrieved
September 4, 2009.
[6] Ventura, S., Romero, C., Zafra, A., Delgado, J., and Hervás, C. JCLEC: a Java
framework for evolutionary computation, Soft Computing - A Fusion of
Foundations, Methodologies and Applications, 12(4), 381-392, 2008. Also at:
http://jclec.sourceforge.net/, retrieved October 19, 2009.
99
EXPANDING STUDENT ENTHUSIASM FOR, AND
PANEL DISCUSSION
Professors in computer science are challenged by the wish to make CS1 courses
more appealing to a broader audience, both to induce more students to enter computer
science and also to open up students to the possibilities of the field. This challenge is
especially acute when it comes to underrepresented groups. The panelists come from
three liberal arts colleges that have formed a consortium in computer science to examine
topics of mutual interest. Among other activities, the three departments have shared a
number of postdoctoral fellows, expanding the range of approaches brought to their
research and teaching. Further, they have collaborated on a number of initiatives to clarify
what a liberal arts degree in computer science should look like, and to deepen and
diversify their curricula, particularly at the introductory CS1 level. While the panelists
all come from liberal arts environments, they have different approaches to the CS1
course. During the course of this panel they will discuss their views and experiences on
the following list of topics:
• What languages and lab structure hinder or help students to understand the concepts
of CS?
• What techniques hinder/help women and other underrepresented groups to both
understand and enjoy the CS1 course?
___________________________________________
*
Copyright is held by the author/owner.
100
CCSC: Northeastern Conference
• It is often the case that there is a wide range of prior experience among students in
CS1. How do we challenge and engage these students who have more technical
experience without discouraging other students?
• What are the markers of success in a CS1 course: taking another course, enjoying
the course, future involvement in some capacity with CS, using the knowledge in
another course, not being “turned off”?
• What is the role of current technology (if any) in a CS1 course (for example,
smart-phones, web apps, mashups, social networking)?
Each of the panelists will comment on each of these topics; audience interaction on
these topics will also be sought during the course of the panel.
The panelists bring a rich array of experiences to the panel. Martin Allen is a
postdoctoral fellow, teaching at all three colleges in the CTW consortium as part of the
Mellon grant program, which intends to bring new doctorates from research-school
backgrounds into the liberal arts college environment. Given his recent experience at a
relatively wide range of different and distinct institutions, he will discuss the varying
issues that arise, and approaches one can take, when teaching CS to students with a
diverse range of experience, interest, and preparation. Christine Chung recently received
her doctorate but brings a wide range of expertise and experience. She has taught
introductory CS at both the college and high school levels and she earned a master’s
degree in secondary mathematics education. Norman Danner has taught introductory CS
at UCLA and Wesleyan, from 200-student lectures to 15-student classes, from no objects
to objects-only, and from programming-intensive to more writing than programming.
Madalene Spezialetti’s research focuses on the development and use of video and
animation in Computer Science education. She received a SIGCSE Special Projects Grant
to support her work in the production of video scenarios, which are short films designed
to develop computational thinking skills by presenting computing-based problems in the
context of extemporaneous, real-life situations.
101
UNDERSTANDING NSF FUNDING OPPORTUNITIES*
TUTORIAL PRESENTATION
Scott Grissom
National Science Foundation
4201 Wilson Blvd, Suite 835
Arlington, VA 22230
(703) 292-4643
sgrissom@nsf.gov
ABSTRACT
This session highlights programs in the National Science Foundation (NSF) of
particular interest to computer science educators. Topics include a description
of program goals, guidelines, review process as well as strategies for writing
competitive proposals.
INTRODUCTION
NSF supports projects to improve education in science, technology, engineering, and
mathematics through several programs in its Education and Human Resources (EHR)
directorate, as well as in its research directorates, including Computer and Information
Science and Engineering (CISE). This tutorial presents a description of some education-
related programs in the EHR and CISE directorates, and enables participants to interact
with the presenters concerning specific project ideas that could be appropriate for the
various programs.
___________________________________________
*
Copyright is held by the author/owner.
102
CCSC: Northeastern Conference
REFERENCES
[1] NSF Division of Undergraduate Education (DUE),
http://nsf.gov/div/index.jsp?div=DUE, 2009.
[2] NSF Directorate for Computer & Information Science & Engineering (CISE),
http://nsf.gov/dir/index.jsp?org=CISE, 2009.
[3] NSF Funding, How to Prepare Your Proposal, http://nsf.gov/funding/preparing,
2009.
103
EXPERIENCES BUILDING A COLLEGE VIDEO GAME
DESIGN COURSE*
Paul E. Dickson
Hampshire College
School of Cognitive Science
893 West St.
Amherst, MA 01002, USA
(413) 559-5861
pdickson@hampshire.edu
ABSTRACT
This paper details some trials and tribulations of the design and
implementation of a video game design course that not only enables students
to create video games but also to learn standard computer science skills. The
decisions that led to the platform decision of the iPhone/iTouch are discussed
along with the consequences of that choice. The project-based and dynamic
curriculum that encompasses real-world problem solving is described. Initial
successes and failures of this course and the lessons learned are addressed as
well as the level of student excitement surrounding it.
INTRODUCTION
In Spring 2009 we decided that a video game design course would be a good
elective within our computer science program. As our program does not have a set major
with a required number of courses and electives, our electives must have a broad appeal
in order to attract enough students to make them feasible. Video game design was decided
upon because it has a definite “cool factor” among students and because it would give our
students the ability to show their peers what they have learned in a way not often possible
in computer science.
It was decided that computer game design could be a valid addition to our
curriculum if the course focused on design from the ground up and did not just use
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
104
CCSC: Northeastern Conference
prewritten game development software. We envisioned that video game design could be
used to teach students about real-time processing and development, resource
management, real-world environments, and device limitations as well as give them good
practice programming large chunks of code and working in teams. Huang [5] describes
some of the advantages of game-related assignments in relation to student engagement,
teamwork, development of algorithms, etc. All of our choices about the design of this
course appear to fall within the framework of good use of computer games creation
within a computer science curriculum as described by Sung [12]. Sung’s review was
published near the end of the semester this course was taught.
RELATED WORK
Courses in computer game design generally are taught in schools that offer degrees
in game design or as single elective courses offered within an established computer
science or engineering major. While some traditional universities like DePaul University
[3] offer a complete major in video game design, most schools that offer these courses
tend toward career education, like ITT Technical Institute [6]. In either case the courses
taught do not relate to the one we chose to offer because no single course covered the
breadth of material we hoped to include.
Single courses in game design such as those taught Bruce Maxwell [10] and Kevin
G. Stanley [11] were also discovered. These courses focused on game design from start
to finish and helped lead to our course.
A new area where games are appearing in computer science curricula is in CS1/2
courses, where games are used to bring students into a major [12]. This type of
integration is not applicable to our course, which is intended for more advanced students.
PLATFORM DECISIONS
The first decision to be made about his course was what platform to use for
development and we considered Microsoft’s Xbox, a toy game development platform,
Flash, OpenGL, and the iPhone/iTouch. Our decision was based on the best combination
of feasibility, ease of entry, and students being able to show off their work.
We ruled out using a toy game development platform from the start since such
platforms would likely never be used again by students after the end of the semester. We
decided against Flash because while it is ubiquitous and would have made it easy for
students to show off their final games, it does not have the cool factor that would really
motivate students. In addition, every person who has played a Flash-based game has
played at least one really bad Flash-based game, and therefore it would be less exciting
because students would not have sufficient time to create a really good game. Creating
games that relied on OpenGL on the computer was eliminated because students would
have had to make sure that OpenGL was able to run on a given machine before they could
show off a game. The largest factor in disregarding the computer-based games was that
the platform did not lend itself to enabling students to show what they had created.
Our initial preference was to develop on the Xbox since Microsoft had previously
given out Xboxes to universities that wanted to build courses around them. Also,
105
JCSC 25, 6 (June 2010)
Microsoft made the development software available without charge and students would
be able to show off their final games. Discussions with Stanley [11] and a look at the fine
print disabused us of these ideas. First, Stanley described how only a small portion of the
student projects in his game development class had actually been ported to the Xbox
because of the large hassle involved with the device compilation, defeating the purpose
of developing on the Xbox. Second, Microsoft does not allow you do burn discs of
games, which means that downloading a game to a console requires a yearly paid
subscription. These barriers to students showing their work, in addition to the fact that we
are primarily an Apple campus and Microsoft’s game development suite only runs on
Windows, dissuaded us from using the Xbox.
The platform we decided on was the iPhone/iTouch. Grissom [4] does a good job
of describing the excitement and possibilities for using iPhones in courses. Apple has a
university developer program [1] that makes it free for schools to enable students to
download their created software to devices. In addition, many students own
iPhones/iTouches, making it easy from them to show off what they have created for at
least the time they are in school and under the school’s development license. Developing
for a hand-held device also has the cool factor as students can show off what they have
created anywhere they go and to anyone they meet. A final advantage is that it is a
platform with limited input capabilities, which limits what students may attempt to create,
a good thing in a course where students will only have limited time to create games.
COURSE FORMAT
The goal of this course is to teach computer science through the creation of video
games. The semester is divided roughly into 3 parts. The first third of the course is
devoted to students learning specifics of the platform. Students learn how to use Apple’s
Xcode development environment [2] to build interfaces that include buttons, text fields,
labels, multi-screen applications, and other aspects of the iPhone SDK. They are also
introduced to Objective-C (the development language used by Apple) and the steps
involved with downloading applications to devices. Each lecture takes place in a
computer lab, and students work through examples as they are presented and then are
given time to modify them in class before new material is introduced.
The second third of the course is devoted to an introduction to OpenGL ES, the
graphics library that runs on the iPhone. The goal of this section is not to
comprehensively teach students OpenGL ES but instead to teach them just enough to get
started building games with the reasoning that anything specific that they need and are
not been taught they can pick up on their own as needed. Therefore, basic point, line,
triangle, coloring, translation, rotation, touch recognition, and collision detection are
covered. Again, students follow along with material, typing it in while it is presented and
playing with it during class. In many cases, work created during class is presented by
students to the entire class to show off how the material can by used in ways well beyond
that fathomed by the lecturer.
The final third of the course relates to their final project games. To begin this section
each student presents an idea for a final project game to the class. Students then decide
which game they want to work on and form teams (this semester, 5 teams for the 17
students in the class). The rest of the semester is spent working on these final projects.
106
CCSC: Northeastern Conference
Each week one lecture is devoted to going over some minutia of game design or drawing
(e.g., texture integration into Open GL) that may be of use to the design teams in general.
The other lecture of the week is devoted to in-class work on the games. This lecture often
begins with mini-lectures given by students about interesting points and solutions that
they have discovered over the course of their work on the final project games.
Course References
Finding an appropriate set of reference materials for the course turned out to be one
of the greatest difficulties associated with it. Few books exist about iPhone development,
and the only iPhone game development books with code were published during the
semester the class was given. The textbook settled on was Beginning iPhone 3
Development [8] because it gave good worked-through examples that showed off both
how to use Xcode and how to write programs that utilize the iPhone SDK. Even the
choice of this book illustrates one of the issues associated with iPhone and other cutting
edge classroom development. It was discovered 3 weeks into the semester that students
had a newer version of the text than did the professor as the professor’s copy was bought
3 months before and was hence out of date and had been updated. Quickly outdated
source material proved a recurring theme throughout the course.
The best references found for OpenGL use on the iPhone were online tutorials [7,
9]. These tutorials both give good concrete examples of how to use OpenGL ES 1.0 on
the iPhone and proved invaluable. The downside was that they were 4 months old when
the class began and were out of date since Apple upgraded the iPhone to OpenGL ES 2.0.
This would not have been a problem except that all tutorials were written using a template
in Xcode that no longer exists. No written texts that have concrete examples of OpenGL
on the iPhone have yet been found by the authors of this paper.
The iPhone is such a new device that its standards and code keep getting massive
changes and upgrades and there is limited platform stability. Over the first 5 weeks of the
semester, we had to install 3 different versions of Xcode because Apple kept updating the
iPhone software and Xcode. The upgrades were required since any device that had been
updated (done without thinking by many students to their own devices and by the
instructor as well) could not have software installed on them without a software upgrade
(free but over 5GB to download each time). These updates fortunately did not appear to
include any updates to the templates used in Xcode but often changed the look of menus
and made small changes to software functionality.
Assignments
The course includes 4 substantive assignments, one of which is the final project. The
first assignment is intended as an introduction and to let students have some fun. They
have just learned how to build a basic interface and are asked to use buttons, labels, and
text fields to build an application that specifically tailors insults to the name that was
typed into the application. Students are given the opportunity to use what they have
learned but also to express themselves and have fun with the assignment.
107
JCSC 25, 6 (June 2010)
For the second assignment students are asked to build an application that has the
user enter a name and date of birth and then click a button to enable the application to
supposedly search the web for images of that person. When the button is pressed the
application returns an image of a monkey or something similar. This assignment
familiarizes students with how to build multi-screen applications and flip between the
screens, something important if they wish to have a settings page for their eventual
games. Again, creativity was encouraged and many students made their applications with
special provisions to show images of themselves when their own information was entered.
The third assignment is to build Tic-Tac-Toe or a similar game of their choosing.
This assignment is intended to give them both a first opportunity to build an application
that uses OpenGL to draw and to create basic opponent logic into an assignment. This
was the first assignment where pair programming was allowed and encouraged. As with
all previous assignments, students were given a week to complete it but unlike previous
assignments students ran into a lot of trouble. The task of building the interface, graphics,
and handling user touches proved the limit of what any students were able to accomplish.
The hurdle of getting graphics up on their own for the first time when none had
experience prior to the class with OpenGL or with handing user touches to a device
proved so high that none had enough time to begin game logic. In future offerings of this
course, this assignment will probably be broken up into two parts, the first related to
interface design and the second to program logic.
The final assignment is the final project. For this the students work in groups on
games the students have envisioned and chosen to work on. Students are given class time
to work as described above and a lot of leeway to design and work on the games as they
choose. Students have 5 weeks to take a game from an idea to a fully functional, if
simple, game. This first semester the 17 students in the course broke up into 5 groups of
3 or 4 members each. The groups were formed based on interest and therefore some were
stronger than others. By the end of the semester, 2 groups had succeeded in creating
games, 2 groups had made significant progress, and 1 group barely made any progress.
This latter group had only 3 students, 1 of whom stopped participating in the course and
failed.
CONCLUSIONS
At the conclusion of the course, a class meeting was held to discuss the course in
general and improvements that could be made. The instructor raised the issue of chaos
caused by software updates, out-of-date references, and hardware problems. Student
reactions were extremely positive: being able to show their work on an iTouch far
outweighed these concerns. The disorganization of the course did not bother them
primarily because they knew this was its first offering.
Working with the iPhone gave students a better look at more real-world
programming problems. Software development in a classroom does not translate well to
dealing with poorly documented technology. The students learned a lot from dealing with
hardware and under-development documentation. They suggested decreasing the time
spent on the introduction to the iPhone and increasing the time spent on the final project
, which was the part of the course that taught them the most. Working in groups on their
final project pushed them to learn more than did the individual smaller assignments
108
CCSC: Northeastern Conference
earlier in the semester. They commented that a larger final project with more evaluation
during the process would be an improvement. They also commented that because there
was no available expert on iPhone development, they had to learn more on their own and
thus now better understand the device and their code.
Though only 2 of the 5 final project games were completed, the project itself was
a success. All 4 of the groups (14 of 17 students) that made real progress towards final
games learned a lot from the experience. They were able to apply object-oriented design
principles, data structures, archiving schemes, etc. from other classes to this project and
learned a significant amount from doing it. All students had more confidence in their
ability to program and handle large projects at the end of the semester. The only downside
of the final project, from the student perspective, is that they did not have enough time.
At least 2 of the groups have continued to work on their game after the semester ended.
Overall, this course was a success. The work students do in computer science often
lacks a “wow” factor and therefore we sometimes have trouble motivating them to invest
in their work. This course reverses that trend and as one student was overheard to say,
“All my friends want a copy of this game once we get it finished”. If friends are this
interested, students will go above and beyond to create a great game and will learn a lot
more from the process.
REFERENCES
[1] Apple Inc., iPhone Developer University Program,
http://developer.apple.com/iphone/program/university.html, retrieved November
16, 2009.
[2] Apple Inc., Tools, Xcode, http://developer.apple.com/TOOLS/Xcode/, retrieved
November 16, 2009.
[3] DePaul University's College of Computing and Digital Media, DePaul Game
Dev: Game Design, Programming, Production & Animation Education,
http://gamedev.depaul.edu/, retrieved November 16, 2009.
[4] Grissom, S., iPhone application development across the curriculum, Journal of
Computing in Small Colleges, 24 (1), 40-46, 2008.
[5] Huang, T., Strategy game programming projects, CCSC '01: Proceedings of the
sixth annual CCSC northeastern conference, Journal of Computing in Small
Colleges, 16 (4), 205-213, 2001.
[6] ITT Technical Institute, ITT Tech Offers an Education For The Future, http://itt-
tech.edu/teach/list/degd.cfm, retrieved November 18, 2009.
[7] LaMarche, J., iPhone Development: OpenGL ES from the Ground Up: Table of
Contents, http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-
ground-up-table-of.html, retrieved November 16, 2009.
[8] Mark, D., LaMarche, J., Beginning iPhone 3 Development: Exploring the iPhone
SDK, New York, NY: Apress, 2009.
109
JCSC 25, 6 (June 2010)
110
MOVING CS50 INTO THE CLOUD*
David J. Malan
Harvard University
School of Engineering and Applied Sciences
malan@post.harvard.edu
ABSTRACT
In Fall 2008, we moved Harvard College’s introductory computer science
course, CS50, into the cloud. Rather than continue to rely on our own
instructional computing infrastructure on campus, we created a load-balanced
cluster of virtual machines (VMs) for our 330 students within Amazon Elastic
Compute Cloud (EC2). Our goals were both technical and pedagogical. As
computer scientists, we wanted more control over our course’s infrastructure
(e.g., root access), so that we ourselves could install software at will and
respond to students’ needs at any hour without an IT department between us
and our systems. As teachers, we wanted easier access to our students’ work
(as via su) as well as the ability to grow and shrink our infrastructure as
problem sets’ computational requirements demanded. But we also wanted to
integrate into the course’s own syllabus discussion of scalability,
virtualization, multi-core processing, and cloud computing itself. What better
way to teach topics like those than to have students actually experience them.
Although Amazon supported our experiment financially with credits, it was
not without costs. Serving as our own system administers cost us time, as did
some self-induced late-night technical difficulties. But the upsides proved
worth it, as we accomplished our goals. We present in this paper what we did
right, what we did wrong, and how we did both so that others can more easily
build their own home in the cloud.
INTRODUCTION
Computer Science 50 is Harvard College’s introductory course for majors and non-
majors alike, a one-semester amalgam of courses generally known as CS1 and CS2. Most
of the course’s students (94%) have little or no prior programming experience. Although
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
111
JCSC 25, 6 (June 2010)
112
CCSC: Northeastern Conference
And so we have long craved our own cluster of systems that we could optimize for
the course’s technical and pedagogical goals. But with that vision comes a need not only
for cash but also for space, power, and cooling, none of which we, as a course, have in
any supply. In fact, the university’s own supply of those resources is increasingly
limited. Moreover, we would prefer not to assume responsibility for technical problems
(e.g., failed hardware) that might otherwise distract us from our students. And we simply
do not need an entire cluster of systems every day of the year, as our computational needs
vary with problem sets’ deadlines.
We thus moved CS50 into the cloud, building within Amazon Elastic Compute
Cloud (EC2) [3] our own load-balanced cluster of x86-based virtual machines (VMs)
running Fedora Core 8. Not only did we gain the autonomy we sought, we also gained
pedagogical conveniences, every one of which helps with 330 students. The ability to see
and help students debug code prior to submission in situ (as via su), by itself, proved
invaluable, eliminating unnecessary exchanges of code via email and premature
electronic submissions.
In the section that follows, we elaborate on what it means to move into the cloud and
provide background on EC2 specifically. We then offer implementation details on how
we built our new home in the cloud. Thereafter, we present our results and admit to
mistakes we made during the term. We then conclude and reveal our plans for next year.
BACKGROUND
Although it once represented, often in cartoon form, any network beyond one’s own
LAN, “the cloud” now refers to on-demand computational resources whose provision
usually relies on virtualization. In more real terms, cloud computing means that courses
like ours (or, more generally, users) can pay for access to servers when and only when
we actually need them. Those servers just so happen to be VMs, otherwise known as
virtual private servers (VPSes), that live alongside other customers’ VPSes on hardware
that we ourselves do not own.
Amazon EC2 offers precisely this service, as does an exploding number of
competitors (e.g., Linode [16], unixshell# [24], and VPSLAND [25]). One of the largest
providers, though, EC2 offers multiple availability zones, “distinct locations that are
engineered to be insulated from failures,” in two regions (US and Europe). In the event
that some availability zone becomes, if ironically, unavailable, an EC2 instance
(Amazon’s parlance for a virtual machine) can be re-launched in another zone altogether.
Users need not even be informed of such changes thanks to EC2’s elastic IP addresses,
which can be re-mapped within minutes from unavailable instances to available ones.
An instance, meanwhile, can boot any one of several operating systems by loading
at startup an Amazon Machine Image (AMI). Amazon currently offers AMIs pre-
configured with Debian, Fedora, Gentoo Linux, OpenSolaris, openSUSE Linux, Red Hat
Enterprise Linux, Oracle Enterprise Linux, Ubuntu Linux, and Windows Server [3], but
customers can create [7] and share [6] their own too. Instances’ (virtual) disks are
typically ephemeral, though, whereby any changes made to an instance’s filesystem (vis-
à-vis some AMI) are lost upon shutdown (though not upon restart). But EC2 provides
persistent storage via a service it calls Elastic Block Store (EBS) [2], whereby an EBS
113
JCSC 25, 6 (June 2010)
volume (which can be 1 GB to 1 TB in size) can be attached as a block device to any one
instance. Changes to that volume persist even after an instance is shut down, and that
volume can be re-attached later to another instance altogether. EBS also supports
snapshots, whereby copies of volumes can be archived using Amazon Simple Storage
Service (S3) [4].
Instances can be created and managed from any networked computer using EC2’s
Web-based management console, Java-based command-line tools [10], or SOAP- and
HTTP-based APIs [7]. A number of third-party tools facilitate management too [8]. We
ourselves are fans of the Elasticfox Firefox Extension [9]. Links to the EC2 resources we
found most helpful appear in this paper’s appendix.
Although “cloud” computing is perhaps the buzzword du jour, we have found that
few, if any, services offer precisely what EC2 does: an ability to provision on demand
within seconds any number of (Linux) VMs without human assistance or additional
contracts. Perhaps related in spirit to EC2, though, are “grid” frameworks like Google’s
App Engine [14], Microsoft’s Windows Azure [19], University of Chicago’s Globus
Toolkit [13], University of California’s BOINC [11], Princeton’s PlanetLab [23], and
University of Washington’s Seattle [12]. But frameworks like these, inasmuch as they
provide APIs and managed environments for execution of distributed applications and
services more than they do familiar command lines and binaries, represent solutions to
problems that we did not have. We simply wanted some VMs that we could wire together
in order to implement a topology and workflow already familiar to us, per Figure 1.
Figure 1. Our cluster in the cloud comprised one “front-end” VM providing LDAP,
NAT, and NFS services to multiple “back-end” VMs. From their laptops on campus or
elsewhere, students SSHed throughout the semester to cloud.cs50.net, which
mapped via DNS to an elastic IP address bound to our front-end VM, which routed each
student to the back-end VM with the fewest connections.
IMPLEMENTATION DETAILS
For an introductory course like ours, it was not our goal to provide every student
with his or her own VM but, rather, to provide, for the sake of uniform experience, a
managed environment in which all students could implement problem sets. Although our
own local infrastructure was imperfect, its overarching design had always worked well:
a load-balanced cluster on which each student had his or her own shell account and home
114
CCSC: Northeastern Conference
directory. And so we sought to replicate that design inside the cloud, thereafter improving
upon it.
Although EC2 provides firewalling services between instances and the Internet at
large (via what it calls security groups), it does not offer load balancing (except on high-
numbered ports) for non-HTTP traffic, which we very much needed for SSH’s sake. And
so we had to implement our own load balancer. (In the interests of simplicity for
students, we were not willing to run sshd on a port other than 22.) We were determined
to avoid a DNS-based solution (whereby a fully qualified domain name resolves, via an
A record, to multiple IP addresses), as DNS caching by servers and clients can induce
dead ends lasting hours or days.1 Prior to term’s start, we knew of no non-DNS solutions
in use within EC2’s cloud, and so we set out to implement our own.2
After much trial and error, we came up with a solution. We first spawned two
instances using EC2’s AMI for a 32-bit installation of Fedora Core 8 (ami-2b5fba42).3
We then created a TCP tunnel between those two instances using VTun [18].4 We
assigned one end of the tunnel an IP address of 192.168.1.1 (much like a home router)
and the other an IP address of 192.168.1.10. We henceforth referred to 192.168.1.1 as
our “front-end” VM and 192.168.1.10 as a “back-end” VM, per Figure 1. We next
enabled IP forwarding on the front-end:
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/default/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/tun0/send_redirects
Meanwhile, we told the back-end to route any traffic from the front-end back through the
front-end:
echo 80 lvs >> /etc/iproute2/rt_tables
ip route add default via 192.168.1.1 dev tun0 table lvs
ip rule add from 192.168.1.10 table lvs
We repeated this process for additional back-ends (with IP addresses 192.168.1.11,
192.168.1.12, etc.). Next, using Linux Virtual Server (LVS) [26], we told the front-end
to route incoming SSH connections to one of the back-ends according to LVS’s Weighted
1
In the event a host in a cluster goes down, its IP address can certainly be
removed from a load-balancing A record. If some client (or some other DNS server
between it and the host) has cached that address, though, the client may continue to
look for the host at that address until the cache actually expires.
2
We are indebted to M. David Peterson [17] for his help with our quest.
3
We avoided EC2’s 64-bit AMIs lest we discover mid-semester (i.e., too late)
that some software we want only exist in a 32-bit flavor.
4
We also considered OpenVPN [22] but preferred the simplicity of VTun.
115
JCSC 25, 6 (June 2010)
Least-Connection heuristic, whereby the back-end with the fewest existing connections
wins the next one:5,6
ipvsadm -C
ipvsadm -A -t 10.253.131.161:22 -s wlc
ipvsadm -a -t 10.253.131.161:22 -r 192.168.1.10:22 -m -w 1
ipvsadm -a -t 10.253.131.161:22 -r 192.168.1.11:22 -m -w 1
ipvsadm -a -t 10.253.131.161:22 -r 192.168.1.12:22 -m -w 1
At the time, 10.253.131.161 was the private IP address that EC2 itself had assigned to our
front-end instance. Finally, we enabled network address translation (NAT) on our front-
end:
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 10.253.131.161
And we mapped cloud.cs50.net via DNS to an elastic IP address bound to our front-end.
Not only did our front-end ultimately serve as a load-balancing NAT router, it also
provided LDAP and NFS services to our back-ends as well. Usernames and groups lived
in a tree on the front-end, and home directories lived on an EBS volume attached to the
front-end that was then exported to each of the back-ends. Backups, meanwhile, were
managed by rsnapshot [21]. In fact, even though we preached the virtues of source
control to our students, we took it upon ourselves to take snapshots of their home
directories every 5 minutes. Thanks to its use of rsync and hard links, rsnapshot
maintains snapshots efficiently; it does not maintain multiple copies of files that have not
changed. The sheer number of panic attacks we averted among students by empowering
them to access so many versions of their code easily justified the additional gigabytes.
We installed on each of our back-ends gcc, gdb, valgrind, and more.7 On all
of our instances did we also install Webmin [15], a web-based GUI that facilitates system
administration. Ultimately, we relied entirely on freely available software and tools,
almost all of it installed via rpm and yum.
It’s worth noting that EC2 offers different types of instances (i.e., classes of virtual
hardware). We began Fall 2008 running 3 “small instances” (m1.small), each of which
had 1 (virtual) core rated at 1 EC2 Compute Unit (the equivalent of a 1.0 – 1.2 GHz 2007
Opteron or 2007 Xeon processor) and 1.7 GB of RAM. Because problem sets’
computational needs rose over time, we ended the term running as many as 6 high-CPU
medium instances (c1.medium) at once, each of which had 1.7 GB of RAM and 2
(virtual) cores, each rated at 2.5 EC2 Compute Units (i.e., 2.5 – 3.0 GHz).
Our front-end was indeed a potential single point of failure in our cluster. However,
because an EBS volume (e.g., students’ home directories) can only be attached to one
instance anyway, we considered that weakness an acceptable risk, particularly since we
5
We utilized Weighted Least-Connection instead of LVS’s Least-Connection
heuristic so that we could take back-ends out of rotation temporarily simply by
setting their weights to 0.
6
So that the course’s staff could still SSH to the front-end itself, we ran its instance
of sshd on a TCP port other than 22.
7
For efficiency’s sake, we actually configured just one back-end initially, thereafter
burning our own AMI based on it, and then spawning additional instances of that
new AMI.
116
CCSC: Northeastern Conference
RESULTS
At the very start of Fall 2008, we briefly relied, as usual, on our local cluster of
systems. On 3 October 2008, though, cloud.cs50.net debuted among a subset of
students. Two weeks later, we moved all 330 students into the cloud, where they
remained until term’s end in January 2009. Table 1 details our cluster’s consumption of
resources during that time.
CPU Disk I/O Bandwidth Cost
Requests
Sep 2,275 Hrs 125 GB 45,348 14 GB $274
Oct 3,425 Hrs 108 GB 93,257,314 191 GB $657
Nov 5,484 Hrs 199 GB 337,019,916 239 GB $1,252
Dec 5,206 Hrs 300 GB 427,639,962 52 GB $1,184
Jan 5,208 Hrs 300 GB 1,502,614,186 62 GB $1,298
Table 1. Resources consumed by our virtual cluster between September 2008 and
January 2009. CPU refers to the number hours our instances collectively ran; between
October and November, we transitioned from single-core instances to dual-core instances.
Disk refers to space used (for home directories and snapshots) on EBS volumes. I/O
Requests refer to our I/O activity on our EBS volumes, as measured by iostat.
Bandwidth refers to network traffic to and from our cluster. Per the upward trends over
time, our students’ utilization of cloud resources rose with problem sets’ computational
needs.
We ultimately judged our new home in the cloud a success, as we gained precisely
the technical autonomy and pedagogical conveniences that we had set out to claim. Not
only did the cloud empower us to install software and change settings at will, it allowed
us to examine students’ code and reproduce errors therein in situ via su and sudo,
thereby expediting a common scenario. To be sure, we could have had these same
powers on campus had we run our own cluster with actual hardware. But
cloud.cs50.net required no space, no power, no cooling from us. Someone else (i.e.,
Amazon) kept an eye on the hardware’s hard drives and fans. And provisioning more
capacity for students was as simple as clicking a button. In a word, reliability and
scalability proved easy (or, at least, easier) in this cloud. In fact, EC2’s own Service Level
Agreement (SLA) [1] commits to 99.95% uptime, which, we daresay, is even higher than
we’ve experienced on campus in terms past.
But our experience was not without hiccups, most the result of mistakes made by
this paper’s author. Simply preparing the cluster took multiple weeks (perhaps 80 hours
in total), largely because we tackled at once so many packages unfamiliar to us. Our
quest to implement a load-balancing NAT router within EC2’s confines took particularly
long but proved well worth the journey. We temporarily ran out of disk space on our
EBS volume midway through term, the result of our having been conservative with space.
And we experienced I/O delays around some problem sets’ deadlines until we realized
that OpenLDAP’s slapd was keeping open too many file descriptors.
117
JCSC 25, 6 (June 2010)
Although throughput between our virtual cluster and computers on campus was
high, we did suffer latency, whereby X applications (e.g., emacs) performed poorly. We
are not yet confident that we can eliminate that particular problem next time around.
Our time in the cloud cost us less than $5,000 (roughly $15 per student), although
Amazon defrayed those costs with EC2 credits. In fact, Amazon now offers Teaching
Grants “supporting free usage of [EC2] for students in eligible courses” [5], so our
arrangements are by no means exclusive. Had we been more conservative with VMs and
more attentive to usage, scaling our cluster’s size up and down more frequently, we are
confident that we could have accomplished our goals for less, perhaps even half this
amount.
CONCLUSION
In Fall 2008, we moved Harvard College’s CS50 into the cloud via Amazon EC2.
We turned to the cloud in search of technical autonomy and pedagogical conveniences,
both of which we realized in our new home. We even added capacity to our virtual
cluster as the semester progressed. Yet we did not need to find space, power, or cooling
on campus for cloud.cs50.net. And we did not even need to find dollars, thanks
to support Amazon has since institutionalized for educators at large.
To be sure, building this new home did cost us time, but we think it time very well
spent. Not only did we accomplish our goals, we introduced 330 students first-hand to
the cloud. We not only told students about scalability, virtualization, multi-core
processing, and cloud computing, we had them experience each. Ironically, had we not
told them that cloud.cs50.net lived somewhere other than campus, most would not
ever have known. But that in itself perhaps speaks to the potential of cloud computing
itself.
In Fall 2009, not only will we continue to spend time in the cloud, we will also make
available a stand-alone replica of cloud.cs50.net, a virtual machine that students
can download and run on their own Macs and PCs, even offline. Our goal now is to
distribute a whole “course in a box.”
APPENDIX
To get started with EC2, we recommend these resources:
Amazon Elastic Compute Cloud
http://aws.amazon.com/ec2/
Getting Started Guide
http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/
Developer Guide
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
118
CCSC: Northeastern Conference
ACKNOWLEDGEMENTS
Many thanks to Kurt Messersmith, Tracy Laxdal, and Deepak Singh of Amazon
Web Services, to M. David Peterson, and to CS50’s own Glenn Holloway and Keito
Uchiyama, without whose support this experiment would not have been possible. And
many thanks to Fall 2008’s 330 students and 30 teaching fellows for taking and teaching
a course in the cloud.
REFERENCES
[1] Amazon EC2 Service Level Agreement. http://aws.amazon.com/ec2-sla/.
[2] Amazon Elastic Block Store. http://aws.amazon.com/ebs/.
[3] Amazon Elastic Compute Cloud. http://aws.amazon.com/ec2/.
[4] Amazon Simple Storage Service. http://aws.amazon.com/s3/.
[5] AWS in Education. http://aws.amazon.com/education/.
[6] Amazon EC2. Amazon Machine Images.
http://developer.amazonwebservices.com/connect/kbcategory.jspa?ca
tegory%ID=171.[7] Amazon EC2. Developer Guide.
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/.
119
JCSC 25, 6 (June 2010)
120
LEARNING COMPUTER SCIENCE CONCEPTS USING
IPHONE APPLICATIONS*
ABSTRACT
Students use computers and technology at increasingly younger ages.
Nonetheless, enrollment in degree-bearing Computer Science programs is not
keeping pace with the need for professionals in the field of software
development [4]. Even in today’s technology-rich world, Computer Science
is still often viewed as an esoteric and cryptic field of study. While students
tend to be fluent in using computers and handheld devices, understanding how
these devices work and especially how they are programmed largely remains
a mystery. To address this problem and attract potential Computer Science
students at the middle and high school levels, we have developed iPhone
applications that present fundamental Computer Science concepts in the form
of a game. In particular, we have implemented Bubble Sort and Binary Search
applications. Our approach “talks” to the younger generations by using a
medium they are already comfortable with.
INTRODUCTION
Though we live in an abundantly technological age, enrollment in degree-bearing
Computer Science programs falls short in producing computing professionals for the
American workforce [4]. We find this to be surprising given the widespread use of
computers and technology at increasingly younger ages. To introduce Computer Science
concepts to future would-be Computer Science students and professionals, we propose
a series of instructional games for the iPhone, or more generally, for any programmable
mobile device. Figure 1 shows a sample screen shot of a Bubble Sort application.
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
121
JCSC 25, 6 (June 2010)
Simulation Environment
The iPhone Simulator provides a direct means to test mobile applications without
having to download to an actual iPhone or iTouch device. Aside from basic functionality,
the iPhone Simulator also allows you to simulate rotating the device to the left or right,
as well as performing the “shake” gesture.
122
CCSC: Northeastern Conference
Though invaluable to the programmer, the iPhone Simulator does currently have
some limitations and pitfalls. It cannot simulate the iPhone accelerometer or camera
features, which we have therefore avoided. Further, careful attention must be given to
mimicking a finger touch (via the click-and-drag of the mouse) when implementing the
touchesMoved() and touchesEnded() methods. While such finger touch movements are
natural on an actual iPhone, simulating those same movements via a mouse is unintuitive.
Another limitation of developing iPhone applications is that the development,
testing, and deployment must entirely be performed on Apple hardware. Because many
schools do not have Apple computers available or determine that such computers are too
expensive, this is a hindrance to integrating iPhone applications or their development into
the curriculum. To address this problem, writing applications for mobile devices other
than iPhone/iTouch can be accomplished using other platforms, including the Java ME
platform.
Programming in Objective-C
Objective-C is an object-oriented programming language designed by Brad J. Cox
in the early 1980s [2]. Objective-C is a combination of the imperative language C (in
particular, ANSI C) and the “pure” object-oriented language Smalltalk, one of the first
object-oriented languages. Because Mac OS X applications are written using the Cocoa
framework, which is written in Objective-C, it is no surprise that iPhone/iTouch
applications also use this same language. More specifically, these devices use the Cocoa
Touch framework, which is a scaled-down version of Cocoa.
As with many high-level languages, Objective-C’s corresponding Xcode IDE
provides color-coded text editing, syntax error highlighting, auto-completion, and other
such beneficial features. Note that Objective-C source code can be programmed and
compiled using Xcode or the GNU Objective-C compiler directly in a terminal window.
123
JCSC 25, 6 (June 2010)
of numbers in the same order, the student must drag either of the green number tiles into
their proper position. The application then presents the next pair of numbers (e.g. 7 and
5) and the user keeps going until the list is sorted. Upon completion, the application
appears as shown in Figure 3.
If the student attempts to move a green number tile into the wrong position, the
green number tile will move back to where the student dragged it from. The expectation
is that the student will realize his or her mistake and correct it. In doing so, the
mechanics of the algorithm are reinforced. In addition, the student may click on the
“How it works...” button to view a description of the algorithm, including pseudo-code.
124
CCSC: Northeastern Conference
125
JCSC 25, 6 (June 2010)
binary search tree; instead, the root node of the tree is shown, along with arrows pointing
to clickable tags “go left” and “go right.”
At each iteration of the binary search, the student decides whether to follow the right
branch or the left branch. For each correct decision, the student sees the next node. From
Figure 4(a), when the student correctly selects “go left,” the path from node 47 to node
22 is shown in green (see Figure 4(b)). If the student makes an incorrect choice, the node
“shakes,” showing the student that his or her choice was incorrect.
Figure 5(a) shows the next step in the example; and Figure 5(b) shows the final step.
When the target node is found, the entire tree is revealed.
126
CCSC: Northeastern Conference
use of our iPhone applications (and other similar apps) may spark early interest in
Computer Science, once again through the use of technology already very familiar to such
younger generations. Through simple observation, we find many in these younger
generations that constantly have their iPhones or mobile devices in hand, communicating
with others, playing games (e.g. Sudoku), and the like.
127
JCSC 25, 6 (June 2010)
REFERENCES
[1] Cormen, T., Leiserson, C., Rivest, R., Stein C., Introduction to Algorithms, 2nd
edition, Cambridge, MA: MIT Press, 2001.
[2] Kochan, S., Programming in Objective-C 2.0, 2nd edition, Pearson Education,
Inc., 2009.
[3] The Objective-C Programming Language, 2009,
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Object
iveC/ObjC.pdf, posted October 19, 2009.
[4] Science & Engineering Degrees: 1966-2006, Detailed Statistical Tables, NSF 08-
321, http://www.nsf.gov/statistics/nsf08321/pdf/nsf08321.pdf, October 2008.
128
EVOLUTION OF CAPSTONE-COURSES IN SOFTWARE
ENGINEERING
A FINISHING SCHOOL*
Timoth C. Lederman
Department of Computer Science
Siena College
Loudonville, NY 12211
518 783-4197
lederman@siena.edu
ABSTRACT
This paper describes the two-semester capstone courses in Software
Engineering offered in the Computer Science Department at Siena College.
These courses have been offered for 27 years and they have recently become
a graduation requirement for the major. The courses tie-together a variety of
educational themes and goals related to Software Engineering, professional
behavior, and preparation for professional careers. Over the years, the syllabi,
content, format, and teaching-approach has changed substantially. This paper
describes the two Software Engineering courses, and how the courses have
changed, and how faculty and students perceive the courses.
INTRODUCTION
Siena College is a primarily undergraduate Liberal Arts College located near
Albany, NY. The College has 3,100 full-time students. The Computer Science
Department has 13 full-time faculty and approximately 80 Computer Science majors. The
curriculum for the Computer Science major is 11 courses (34 credit hours); and, students
may take up to 13 courses in Computer Science. The two Software Engineering courses
are now a graduation requirement for majors and serve as a senior-year capstone
experience.
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
129
JCSC 25, 6 (June 2010)
Since these courses are a part of a Computer Science curriculum that closely
matches the ACM/IEEE Computing Curricula [1], these courses are significantly different
from a capstone course recommended for a Software Engineering major [2]. First and
foremost, our courses serve to introduce the students to the theory and practice of
Software Engineering. The students are guided by lectures and examples. In both courses,
the students work in teams, applying the principles of Software Engineering on a real
project, with a real client, in a realistic environment. This is theater in one sense, but the
students are learning their parts step-by-step and act-by-act, without knowing the nature
or purpose of future acts – the students learn their parts, play their parts, feel their parts,
and often take ownership of their parts. By the end of the course, in a successful year, the
students understand the purpose of each act and are proud of their final accomplishments.
However, learning software-development techniques and learning how to organize people
and activities are not the only themes and goals in the course. From the beginning of the
course, the students are informed that they are in a “Finishing School” that is (1) an
academic-culmination that draws upon all their other courses; (2) an experience that
should give them confidence that they are ready to go out into the “real world”; and, (3)
an opportunity for them to become aware of their professional responsibilities.
OVERVIEW
During the first semester, the class meets on Mon/Wed/Fri at 8:15 am (as a
“welcome to the real world”). Students are graded on their knowledge of principles that
are presented and discussed in class (and reinforced by their readings). There are two
short-essay exams (50% of the course grade). The other 50% of the course grade is based
on performance on the project. During the second semester, the class meets once a week
(6-9pm) and the format, pedagogical style, and grading change (70% project and 30%
class participation). The general format is: (1st Hour) either a lecture on a topics related
to the project or related to professional behavior, or a presentation by an alumni on a topic
related to tools or techniques used in software development. After Q&A, the speakers
discuss their professional careers, the professional development they have undertaken,
and how to balance professional and personal lives. These are valuable opportunities for
mentoring and networking. (2nd Hour) a student-led discussion on issues related to
software development: professional ethics; legalities; privacy; working in a technological
environment; and, social-professional responsibilities. These discussions are tied to The
Case of the Killer Robot [3]. Each week, one team leads a class-discussion on a Killer-
Robot chapter. Near the end of the semester, a team outlines and compares three codes
of professional Ethics (ACM Code, IEEE Code; and, IEEE Software Engineering Code).
(3rd Hour) each team has a quick “walk-through” with the instructor (“what’s been done
since last week; what’ll be done by next week; and are you having any problems”). These
exercises model a professional activity, and they provide a reality check.
The students learn several definitions of Software Engineering, but the courses give
emphasis to Roger Pressman’s definition “Software Engineering is a discipline that
integrates process, methods, and tools for the development of computer software.”[4] Our
courses give emphasis to Pressman’s four Ps: “People, Product, Process, and Project.”
Our students learn Software Engineering principles, tools, and techniques; they follow
a process; and, they produce deliverables throughout the year.
130
CCSC: Northeastern Conference
Throughout the project portion of the two courses, students are provided feedback at
major milestones. There are also mini-milestones wherein students are required to
produce examples (related to their projects) of what is covered in lectures and readings.
In the early years of these two courses [5], the lecture portion of the course was separated
from the project-activities of the students. Students were provided an outline of the
components of each phase of the project. Tools and techniques were presented in class.
However, students worked almost entirely on their own (as teams) to develop their own
understanding of what needed to be done – feedback was only provided at five major
milestones over the two semesters. In those earlier years, sometimes students found
themselves pursuing non-productive directions - the result of misunderstanding what
needed to be done, or the result of miscommunication with a client. The addition of mini-
milestones (website-critiques, User Case Narratives, UML diagrams, Requirements
Inventory, DFDs, Data Dictionary, and Test Plan) has resulted in the students making
better use of tools and techniques. The scheduling of more regular meetings with clients,
and the course-requirement of rapidly producing/publishing meeting notes has resulted
in students moving more correctly and more productively through the processes. Students
are still expected to figure out what needs to be done, but they are now provided more
guidance and feedback throughout the project. The use of similar strategies to enhance
student-success in a team-project-based course has been reported at other institutions [6].
131
JCSC 25, 6 (June 2010)
semester). Team leaders meet privately with the instructor at least once a week. During
lectures, the instructor provides “just-in-time” instructions on what the students should
be doing and how they should go about their activities. Class discussions and activities
are normally involved with Software Engineering theory and practices and how the
students are to carry out these practices in their projects. The Software Engineering model
that is followed is the classic Waterfall Model, which is convenient for setting due-dates
(Milestones) over the two semesters: (1) Software Plan , (2) Requirements Specification,
and (3) Preliminary Design (in the first semester); and, (4) Detailed Design and (5)
Acceptance Test (in the second semester). The course syllabi, calendars, reading material,
documentation, and eight years of team websites are published on the course website [7].
THE CLIENT
The client has a problem that is suitable for a software development project.
Sometimes the instructor approaches someone to consider defining a project and
becoming a client; and, sometimes a client knew about the nature of the Software
Engineering courses and contacts the instructor. In the early years of the courses, projects
were often batch-oriented and involved scheduled updating and reporting. Also, during
the early years of the course, the clients were often off-campus individuals or
organizations. For those projects, client-meetings could easily and adequately be
scheduled once or twice a month. Such clients could be at distant locations (one client
was a tax-assessor’s office 40 miles away). In those projects there was no need for the
students to meet regularly with clients during the Detailed-Design stage (or during
Development & Testing). If a meeting was cancelled, rescheduling was often a problem
for both the clients and students.
More recently, the clients have been on-campus individuals, and it has become
common for clients to be faculty in Computer Science. This is a consequence of requiring
an iterative development of requirements, necessitating two team-client meetings per
week. More recently, the projects have been web-based, with complicated user-interfaces.
Regular interaction with clients has become a necessity, not only in the Requirements
Specification “discovery” phase but also while screen-prototyping, which often extends
to the end of the Detailed Design phase of the project. Prospective clients are briefed
(screened) by the instructor prior to the beginning of the Fall semester. Clients are
informed that first-and-foremost the project is an academic exercise – there is no promise
of working-software being delivered at the end of the academic year. Clients are asked
to avoid guiding the students, especially during the requirements-gathering stage and the
design/development stages - students have to figure things out on their own.
THE DELIVERABLES
Half of the first-semester course-grade and all of the second-semester course-grade
is based on the teams’ and students’ performance in carrying out their project. At each
of the five Milestones, the students/teams are evaluated on the following: documentation;
oral presentations; team evaluations (by each member and by team leaders – of every
member of the team); updated resumes; and, team websites. At the Acceptance Test (at
the end of second semester), each team submits a CD/DVD that contains: the team’s
132
CCSC: Northeastern Conference
website; the lyrics and music to the team song; and, a README.TXT file that explains
what files are where. An enjoyable and greatly anticipated tradition of the courses is an
end-of-year Party for students, clients, faculty, and alumni/speakers. At this party, each
team presents a Team Song (of widely-varying quality, but recorded for posterity). To
gain entry to the party, the students must submit a written course-evaluation called The
Legacy, which is sealed and not read until after Commencement. The students are
encouraged to include in The Legacy their opinions about what works, what does not
work, and how to improve any aspect of the courses. The final “deliverable” takes place
at the end-of-year departmental party/luncheon, where all the team songs/videos are
played for the enjoyment-of (and abuse-from) faculty and underclass majors.
CAREER PREPARATION
In the early 1990s, a small amount of lecture/discussion would be directed towards
career development/preparation. Emphasis was placed on strategies for finding a job,
activities related to graduate-school application, and advice on how to prepare for a job-
interview. Over the past 10 years, these activities have been broadened and formalized
to include: lectures and speakers on types of graduate education and how to apply for
each; strategies for finding a job and the application process (cover letter, resume,
interview, and follow-up); attendance at a Job Fair & Networking event (and strategies
for making the best use of these activities); and, a Mock Interview. The students are
required to submit a revised resume at the beginning and end of both semesters. The
resumes are reviewed by the Career Center and must contain the URL of their teams’
websites, and information about their roles on their teams. Before the Mock Interview,
students are informed of technical-interview and behavioral-interview questions. For the
Mock Interview, a job-opening is posted by a mock company. Students submit a cover-
letter and resume. They arrive at the Mock Interview with a folder that contains a copy
of the job-posting, the cover letter, a resume, and a list of references. They are supposed
to have learned about the job and the company (via its website). The mock interviewer
is an alumna/us. A thank-you letter must be sent within 24 hours of the interview. Most
of these career-preparation activities take place out of class, thus taking up very little
class time.
PROFESSIONALISM
The students are familiarized with a variety of social and professional “etiquette-
skills” via lectures, guest-presentations, readings, and a Dining-Etiquette Seminar/Dinner
(with guests that include clients, faculty, and guests). This seminar covers how to respond
to an invitation, how to know what to wear, how and what to order (food and wine),
place-settings/glasses/cutlery, and “signals” to a waiter. In the seminar and in class, social
and cultural taboos are discussed. Throughout the year, students learn to show up on-time
(starting with an on-time class-attendance requirement), how to respond to an invitation,
how to dress-for-success. “Full dress” business attire is required at: five formal project-
presentations; the Dining Etiquette Dinner/Seminar; a Networking event; and, at a
campus-wide student-presentation event. Learning and practicing social-etiquette skills
starts in the first class session when the students are instructed on how (and when) to
shake hands; a skill that is regularly practiced with clients, and at the Dinner/Seminar,
133
JCSC 25, 6 (June 2010)
and at the Networking Event, and at the Mock Interview. The students are instructed how
to make introductions, how and when to maintain eye-contact, and how to become known
and remembered (as being professional and socially adept). Short lectures, readings, and
discussions on other etiquette-related topics include the use of cell-phones/PDAs, and the
use of email/telephone/voicemail. Students are informed of ways to follow-up with
informal and formal thank-yous (and when to do so). Social/professional etiquette skills
are exercised (and thus reinforced) throughout the year.
REFERENCES
[1] The Joint Task Force for Computing Curricula 2005, Computing Curricula 2005,
- The Overview Report, ACM/AIS/IEEE-CS, 2005.
[2] The Joint Task Force on Computing Curricula, Curriculum Guidelines for
Undergraduate Degree Programs in Software Engineering, IEEE/ACM, 2004.
[3] Epstein, R., The Case of the Killer Robot, John Wiley & Sons, 1997.
[4] Pressman, Roger S., SOFTWARE ENGINEERING 6/e, McGraw-Hill, 2005.
134
CCSC: Northeastern Conference
135
SUPPORTING AGILE PROCESSES IN SOFTWARE
ENGINEERING COURSES *
Delbert Hart
Computer Science Department
SUNY Plattsburgh
Plattsburgh, NY 12901
518 564-2775
hartdr@plattsburgh.edu
ABSTRACT
Software processes must be customized based on the project and the team
working on the project. This paper discuss our use of agile software processes
in an introduction to software engineering course. An overview of the
strengths and weaknesses of tools used in the course over the years is given.
We then present a new web application for software engineering courses
.
INTRODUCTION
A software process is a blueprint for how team-members create a specific software
product. Processes vary in their specifics, but typically include planning, requirements,
design, coding, and testing. One of the surprises that many students encounter in a
software engineering course is that coding itself is only one (often small) component in
software development.
Software processes can be labeled as traditional or agile. There is no specific criteria
for what is considered agile and what is traditional. One way to characterize the
difference between them is by their approach to communication. Agile methods
encourage frequent communications, traditional methods encourage correct/complete
communications. More information about the distinction between traditional and agile
methods can be found elsewhere, e.g. [1]. In the last decade agile methods have gained
in popularity for some types of projects. One of the areas that agile methods has been
successfully utilized in is computer science courses (e.g., [11, 13, 15, 16]).
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
136
CCSC: Northeastern Conference
The next section describes some of the benefits of agile methods in the classroom.
Then we describe our experience with software engineering tools and how well they
worked in the course. The last section describes a new tool that we are developing to
support agile methods in software engineering courses.
COURSE OVERVIEW
Our software engineering course is taken by students from a traditional computer
science major and by students in an information technology major. Students can take the
course immediately after their first programming course. The software engineering course
has an emphasis on requirements and design. The course has a lecture component that
introduces students to the concepts and methodology of software engineering. There is
a project component where the student gain experience with applying the concepts to
either one or two projects that span the semester.
Having used both traditional waterfall based and agile based software processes for
software engineering courses, our experience has been that students respond better to the
agile based processes. Students vary widely in the skill sets that they arrive to the course
with. Using an agile process for the course provides the instructor more opportunities to
adjust the project to reflect the students' interests and capabilities.
Motivationally the agile methodology is a good match for students. For example,
students working on a traditional requirements specification could mechanically follow
the frameworks and outlines provided, but they lacked the experience to intrinsically see
the value in having a good requirements document. In contrast students can see the
rationale of writing down User Stories as a first step in describing a software product. The
other work products in an agile process are likewise easier for the students to see the
value in compared to the corresponding work products in a traditional process. Better
understanding of the work products also improves the student's ability to perform
technical reviews.
Students develop a number of different work products during the Introduction to
Software Engineering course. The work products are assigned based on an increasing
level of technical analysis. Initially, students work on User Stories, which are paragraph
long descriptions of a piece of functionality. In a professional environment User Stories
would be written by the customers. In the course the User Stories get students to start
thinking about what the product should do. Some semesters we have introduced
acceptance testing at this stage, other semesters we have delayed the testing topic until
later. Next, students develop detailed Use Cases based on the User Stories. The Use Cases
provide an event sequence that elaborates on the specific actions that can occur. At this
point students can start to do some basic UML class diagrams, identifying the possible
objects, attributes, and methods that need to be present. From here a variety of different
work products can be developed. Function points can be derived to estimate the relative
amount of work needed to complete the product, and/or a specific User Story. The Use
Cases can be further developed into sequence diagrams and then swimlane activity
diagrams. After taking the product from User Stories to the design documents students
are given the option of which work products they want to work on for the rest of the
semester. How the students interact with each other changes over the course of the
137
JCSC 25, 6 (June 2010)
semester. Initially, students can work almost totally independently because they are each
developing their own User Stories and Use Cases. As the design work begins and reviews
start, they need good support for asynchronous collaboration.
Many agile methods operate on a daily schedule. Scrum uses a daily meeting to
bring team members up to date on the current status of the project and to facilitate
communication among the team. Many others require that a developer's work be
integrated into the main build on a daily basis and then checked against a suite of
regression tests. These frequent interactions help prevent small problems from
snowballing into larger delays or difficulties.
Although frequent interactions are important, daily interactions are infeasible in an
academic setting. In our experience weekly or semi-weekly interactions work well.
Students have a work product due on Monday morning of each week and the instructor
typically gets feedback to the students on their submissions by Tuesday morning's class.
This quick turn around time for the feedback is important for students to make progress
on their projects. When we have been unable to get students feedback within a day or two
we noticed a drop in project momentum. Students often need help with the technical
aspects of what they are working on. How to create good designs, how to specify good
requirements, etc. Since the student builds upon his past work it is important to provide
early feedback. If it is not readily apparent what changes a student has made, then it can
take an instructor much longer to give pertinent feedback. This is especially true as class
sizes increase. Students benefit from quick feedback from their instructors by correcting
errors in their work before they invest more effort into work products derived from
defective ones. This need for quick feedback necessitates good tool support for the
instructor to be able to easily see the changes that each student has made and be able to
place it in the larger context of the project.
Over the years we have used a variety of different software engineering tools to help
the students create and edit the various work products. The next section, talks about our
experiences with several of these tools.
TOOLS
Software engineering tools are important to the successful development of projects.
In a one semester course though there is a trade-off between utilizing a feature-rich tool,
with a corresponding learning curve, and a specialized tool for the academic setting. Most
software engineering tools are geared towards professionals where the cost of a steep
learning curve can be amortized more easily than in a 15-week course.
Another difference between professional developers and students is in their
interaction patterns. Professionals work on a project every day and have established
mechanisms for regular communication. Students enter a course with a variety of
preferences and constraints on how they collaborate and correspond with each other.
Hence we have found it useful for students to be able to work relatively decoupled and
asynchronously. One drawback to agile methods in the classroom is that this difference
in interaction style is more apparent. Agile methods are heavy on communication and
collaboration. For some teams of students there is no problem in communication, but
other teams of students have problems communicating frequently. The only guaranteed
138
CCSC: Northeastern Conference
times that students can collaborate is in or near class time, and with the course only
meeting twice a week that is not sufficient to advance the project.
Tools are important in a software engineering class by facilitating the creation and
sharing of the work products associated with a software project. Some important aspects
of software engineering tools are: 1) collaboration model, 2) versioning support, 3) work
product support, 4) availability and 5) granularity support. The collaboration model
supported by a tool describes the modalities available for teammates to collaborate.
Versioning describes the ability of the tool to track the history of changes to the work
product. Work product support is which types of work products that the tool can handle.
Availability is an important factor in how easy it is for the student to use the tool on their
own machines. In our discussion we focus on open-source tools that are easily available
for students to download and use. Granularity describes the size of change that is
supported. Finer grained change support facilitates student collaboration and instructor
evaluation of student work.
Eclipse[4] is an integrated development environment that uses a plugin architecture
to support a wide variety of features and capabilities. Eclipse has been our primary tool
for code development and unit testing, and it has been very capable in these areas. For
requirements, design, and reviews it has not been as useful. Eclipse does have several
plugins that support UML diagrams, but the semesters that we tried them the students
found the interfaces to the UML diagrams non-intuitive. Versioning is achieved via a
plugin for a source code management system (Subversion). There has been two problems
that students have had with Eclipse: 1) navigating and understanding all of the features
present and 2) installing and managing plugins.
There are other good integrated development environments that we have not used
in the software engineering course. BlueJ[3] is a widely used environment for Java
development. It has strong support for design diagrams as part of the development
process. JGrasp[10] is another editor with good design support. Eclipse itself has a huge
number of plugins that we have not tried as part of the course. One interesting plugin,
Green[6] provides round-trip editing, which allows changes in the code to be reflected
in the design documents and vice-versa.
UML is a design notation and is widely used for software engineering courses[9].
For the past couple of semesters we have used ArgoUML[2] for creating UML diagrams.
The students have found this tool to be more intuitive than the other UML creation tools
that they tried. It is written in Java and is freely downloadable for use, either as a
standalone product or as a plugin to Eclipse. We used the standalone version because of
some difficulties we encountered getting the plugin to work. The main disadvantage that
we had with ArgoUML is that it is not well integrated with our other work products or
with our review system. Another difficulty is that it saves the UML models as a single
xml file, which makes it difficult for students to work on different parts of the same
model concurrently. Another similar tool for UML editing is UMLet[7]. Vector and raster
drawing programs are another option that students have used for creating UML diagrams.
The advantage of these tools is ease of use. The disadvantages are lack of domain specific
support for UML and difficulty in tracking changes between versions.
User stories and use cases are simple enough that text files can be used. Students use
Subversion to commit them to the repository where other students can check them out and
139
JCSC 25, 6 (June 2010)
review them. We adopted a common file format and naming scheme for the files.
Reviews were appended to the file. One of the problems we had using text files is how
to manage changes. Students could have used the diff capability of Subversion to find out
what had changed, but preferred to keep the changes explicitly in the file. We found this
to be interesting, since performing the diff operation was a single command. They
preferred a solution, that (in our opinion) was less accurate, but was simpler.
Another option that we have tried for user stories and use cases was to use a wiki.
Wikis are simple to use and can be useful as a project collaboration tool[8]. A strength
is the simple versioning model and ability to see changes made. One of the main
drawbacks of wikis is the unstructured nature of the data makes it difficult to support
software engineering work products. While the students found it easy to work on
individual work products, it was more difficult to see the overall status of the project or
changes in related work products. After trying both most students preferred to use text
files for use cases and stories. We have not experimented with extensions such as
SemanticWiki or wikis such as Twiki that do support structuring.
We use Trac[5] as a web interface to the Subversion repository. It is useful to
browse the history of changes. From an instructor's point of view it makes it easy to see
recent changes made by students. One semester we tried using the issue tracker associated
with Trac, via the Mynln interface in Eclipse. The students were not regular about
keeping the tasks up to date via the issue tracker and creating the issues in a timely
manner. Trac also has a built-in wiki. One nice feature of Trac's issue tracker and wiki
is that it is easy to create hyperlinks between commits, issues, and wiki pages.
We have experimented with tools such as Bugzilla and issue trackers for project
management tasks. Currently we do not use these tools because the first half of the course
is dictated by our coverage of the various work products, and in the second half of the
course we coordinate activities via other communication channels. Project management
tools are useful though and frequently used to coordinate projects in software engineering
courses (e.g., [12] ).
AGILE WEB
Although there are good existing tools for the work products that the students
create, there is a need for a simple tool that can handle all of the work products. In a one-
semester course the cost, in terms of time in class and/or project momentum, limits the
number and sophistication of tools utilized. An ideal tool would:
1, Allow the work products, starting with the User Story and going through coding and
testing to be tightly integrated to facilitate traceability.
2, There would be support for reviews to be tightly integrated with the products, and
there would be fine-grained tracking of changes.
3, The tool would be simple enough to minimize the learning curve needed to use the
tool, yet have enough features to support how students would use the software. The
software should be able to be used by the student on whatever computing platform
they have.
140
CCSC: Northeastern Conference
These features are not extraordinary, but these needs are different enough from the
needs of professional developers that existing tools are not a good match.
The interaction paradigm that we chose is one similar to a wiki. Anybody can
modify anything, but a complete history is kept of all of the changes to make it simple to
roll back to an earlier version. We chose to develop this tool as a web application to allow
students to interact with the tool from anywhere with the same interface and centralized
access to data. Instead of pages the tool supports different types of work products. In our
initial version of the tool the work products supported are User Story, Use Case, Class,
UML Class Relation diagram, UML Sequence diagram, and Review.
After logging in the student chooses which project he is working on. On the project
home page is a list of stories, along with links to associated use case and sequence
diagrams. Going to a specific work product brings up an editor to modify that work
product and/or to create/read reviews of the work product.
The interface consists of a set of Javascript widgets. Each Javascript widget provides
a self-contained set of functionality. For instance, the review widget allows creation of
a review for an arbitrary work product. The widget responds to button presses and other
actions in its area through local changes and also via AJAX communications with the web
server. Most of the widgets deal with a single work product and have three modes: edit,
view, and compare. The edit mode creates buttons and fields necessary to edit the relevant
data in the work product. The view mode displays the work product in a non-editable
form, and the compare mode shows the differences between two versions of the same
work product.
The user interaction screens are built up as a set of widgets to support reusability.
Most of the widgets are utilized in multiple user screens. Another reason for this type of
design is to create an architecture accessible for students to build their own extensions.
Since widgets are self contained we plan on making the creation of new widgets for the
tool a project for future offerings of the course.
On the web server side, the tool is written in Perl and utilizes the Catalyst
framework. The server has a Representational State Transfer (REST) architecture. The
resources that the web server supports are the work products that we identified above.
One additional resource is a comment resource. Comments can be attached to any work
product and can be set as either public or private comments. Comments are used to
provide guidance, hints, or other information that is not part of a review. We do not put
student grades in any form in either comments or reviews. A Postgresql database is used
to store all of the project information. The database maintains the different versions of the
resources, timestamping each version of the resource. The database prevents data from
accidental deletions by only allowing newer versions of resources to be created.
The only work products outside the scope of the web application are source code
and unit testing. Integrated development environments, such as Eclipse, provide enough
useful features (e.g., refactoring) that it is worthwhile to use a separate tool for the source
code. Most of our students already have some experience with code development in
Eclipse.
141
JCSC 25, 6 (June 2010)
SUMMARY
Agile methods work well for student projects in an introductory software
engineering course. The work products associated with agile processes are easier for
students to get started with and seem to be better at keeping the students engaged in the
project. There are many excellent tools for software engineering, the problem with most
of them for an introduction to software engineering course is that they do not span all of
the work products, there is a learning curve associated with each that saps momentum
from the project, and they do not support instructors well in providing quick feedback to
the students. The new tool that we have created addresses many of these concerns, and
our initial experience with it has been positive. We plan on continuing to use and develop
this tool in future offerings of the course. Further information regarding the tool can be
found at http://www.cs.plattsburgh.edu/webse/
REFERENCES
[1] Agile manifesto. http://agilemanifesto.org/, 2009. retrieved November 20, 2009.
[2] Argouml. http://argouml.tigris.org/, 2009. retrieved November 20, 2009.
[3] BlueJ. http://www.bluej.org/, 2009. retrieved November 20, 2009.
[4] Eclipse. http://www.eclipse.org/, 2009. retrieved November 20, 2009.
[5] The Trac project. http://trac.edgewall.org/, 2009. retrieved November 20, 2009.
[6] Alphonce, C., and Martin, B. Green: a pedagogically customizable round-tripping
uml class diagram eclipse plug-in. In eclipse ’05: Proceedings of the 2005 OOPSLA
workshop on Eclipse technology eXchange (New York, NY, USA, 2005), ACM, pp.
115– 119.
[7] Auer, M., Tschurtschenthaler, T., and Biffl, S. A flyweight uml modelling tool for
software development in heterogeneous environments. EUROMICRO Conference
(2003), 267.
[8] Chao, J. Student project collaboration using wikis. In CSEET ’07: Proceedings of
the 20th Conference on Software Engineering Education & Training (Washington,
DC, USA, 2007), IEEE Computer Society, pp. 255–261.
[9] Ciancarini, P. On the education of future software engineers. In ICSE ’05:
Proceedings of the 27th international conference on Software engineering (New
York, NY, USA, 2005), ACM, pp. 649–650.
[10] Cross, II, J. H., and Hendrix, T. D. JGrasp: an integrated development environment
with visualizations for teaching java in cs1, cs2, and beyond. J. Comput. Small Coll.
23, 2 (2007), 170–172.
[11] Hanks, B., Wellington, C., Reichlmayr, T., and Coupal, C. Integrating agility in the
cs curriculum: practices through values. In SIGCSE ’08: Proceedings of the 39th
SIGCSE technical symposium on Computer science education (New York, NY,
USA, 2008), ACM, pp. 19–20.
142
CCSC: Northeastern Conference
143
TEACHING AN ITERATIVE APPROACH WITH ROTATING
ENGINEERING COURSE*
ABSTRACT
In order to provide a realistic software development experience, the University
of Mary Washington Computer Science Department offers a one semester
project based software engineering course. We use realistic projects to help
the students learn the entire software development process. However, during
the period of 2004 - 2008 two issues became apparent. First, students were
discouraged because of the failure to complete projects, even though they were
relatively small in nature. Second, viable clients began decreasing since word
had gotten out that students were unlikely to deliver working products at the
end of the semester. In this paper we report on how we changed the course to
use the iterative software process model and simultaneously changed our team
management technique to require student teams to change membership over
the semester. The original focus of this research was to investigate methods
to increase the quantity of projects completed and increase student satisfaction
at the end of the semester. This paper presents a combination of old and new
research. The older portion of the research, creating dynamic teams, was
implemented in the academic year of 2008-2009 and results were previously
published. Combining dynamic teams and using iterative software
development was used in academic year of 2009-2010, background and results
are presented in this paper. Overall, both changes improved the client
experience and added a touch of reality in the software engineering course.
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
144
CCSC: Northeastern Conference
BACKGROUND
Much of the motivation for the course revision was sparked by the need for greater
industry relevance and increased student motivation. The traditional method of teaching
software engineering emphasizes up-front planning and following a linear path through
development [4]. While this allows the instructor to cover the traditional academic
software engineering topics, it does not lend itself to the real world professional approach.
The approach also made it difficult for students to prioritize client needs and as a result,
few clients received working software at the end of the course. We decided to apply a
different software process to the course and selected the iterative approach.
The iterative approach has been used by a variety of universities. At the Milwaukee
at of Engineering, iterative development of a classroom example and an object-oriented
process based on two commercial software tools to improve the teaching of software
engineering [10]. However, students typically did not have an opportunity to apply the
lessons learned from the class example to a real world project [10]. More recently at the
Wilhelm-Schickard Institut für Informatik used an iterative approach in a graduate-level,
two semester course successfully. As a result of using the iterative approach the students
became more confident about the expected outcomes as they completed each iteration [3].
Another example of iterative software development is extreme programming. At
Victoria University of Wellington extreme programming was integrated into an existing
document-centric software project course [7]. Using extreme programming had a positive
effect overall, for the students and the clients. Students said there was no substitute for
actual project work and that the work was rewarding, such that they were able to produce
working code whereas in the past this was not the case. Clients were pleased that the
code produced was more aligned to their needs and they got a working product in every
case. The one downside was that some clients wanted more documentation than extreme
programming practices produced.
While these are only a few examples of using the iterative approach in a software
engineering course, they show that overall this approach can provide a positive
experience for both students and clients. The iterative approach permits students to learn
from previous iterations and incorporate previous experience and feedback into the next
iteration.
In addition to using a new software process model, we also incorporated a new
group management method: dynamic groups. We were introduced to the concept of
dynamic group composition by Donald Schwartz at the 2008 International Conference
on Frontiers in Education: Computer Science and Computer Engineering. He explained
how he used rotating groups in his software engineering course and how using this
approach improved the quality of documentation created by the teams [9].
145
JCSC 25, 6 (June 2010)
COURSE DESCRIPTION
The course described in this paper is an undergraduate single semester software
engineering course taught in a computer science department at a small liberal arts
institution. The course is a 14-week, semester long course and meets for a two-hour
session twice a week. The students enrolled in the course are computer science majors
in their junior or senior year. The course was offered using the rotating group approach
in the fall 2008, spring 2009, and fall 2009 semesters. Enrollments in chronological order
were 17, 20, and 15 students. In the fall of 2009 the modified iterative approach was fully
integrated into the course offering.
In the course, students apply the software lifecycle concepts to a group project for
a real-world client. Most of the clients are faculty from other departments on campus,
although occasionally the client is associated with a non-profit organization in the greater
community. During the fall of 2008 and spring of 2009 the students walked through a
traditional software lifecycle with the projects and complete a requirements document,
project plan and schedule, design document, and test plan. The students’ course grades
are heavily influenced by both their ability to create the software documents and
implement functional software that meets their clients’ needs.
During the fall of 2009 the students walked through a modified iterative approach
to the software lifecycle. Class time was used to teach the concepts necessary to create
software iteratively and apply the techniques discussed in class to their current projects.
At the beginning of the semester two hours were used to discuss the methodology and
then students spent two hours applying the principles to their current project and
presenting the status of their projects to the class and clients. Grades were determined
by assessing documentation, the team’s ability to meet responsibilities, success in
implementing functioning software, presentation of the software, and an exam.
146
CCSC: Northeastern Conference
• The amount of work an instructor must do by filling in for missing clients and
providing continuous feedback is increased [10].
• The instructor must make sure the projects selected are development-ready and
ideas are concrete in nature [5].
• Students do not get enough done in two weeks to actually call it iteration [6].
Based on this research, during the fall of 2009 we used a floating iteration period based
on how much course material was covered in a four hour time span during the week. This
led to three iterations. At each iteration and the preliminary stage the groups
memberships were changed
Iteration Weeks Material & Activities
Preliminary 1-2 Introduction, Project Plan, Gathering Requirements, Validating
Requirements
1 3-8 Prioritization, Project Planning, Requirements Document for
High Priority Requirements, Specifications, User Stories &
Tasks, Specifications on Highest Priorities, Design Highest
Priority Items, Iteration 1’s Design Specification Document, User
Interface Presentation and Acceptance to Client
2 9-11 Version Control, Implementation, Testing Document, Mini-
Design of reworked requirements, Presentation to Class and
Client
3 12-14 Implementation, Maintenance, Testing, Mini-Design of Lower
Priority Requirements, Weekly Presentations to Class and Client
Release 15 Final Presentation and Release of Software
Traditionally we have used Ian Sommerville’s Software Engineering book [11] for
this course. However, this text did not support the iterative approach well. Therefore,
we switched to Head First Software Development by Dan Pilone and Russ Miles [8]. The
book quickly but effectively leads the student through the software development process,
but it also assumes that students have worked with UML and Object Oriented Analysis
and Design. In our course, all but three students did have this background. Students
unfamiliar with these topics were able to assimilate the assumed knowledge quickly
through in-class practice and peer learning.
During the first week of the class the students were grouped and presented a
simplified requirements document. During the first couple of weeks the students learned
about interacting with clients, developing and expanding requirements, project planning,
and the iterative approach. Within a short period of time the groups met with their client,
prioritized requirements and completed a combined requirements specification and
project plan document.
Following the requirement specification student learned about designing and the
associated documentation. All in class activities were designed to go over concepts
learned and also incorporate practical application of concepts using the current group
projects. By week six the design document of the high priority requirements was
completed, and implementation was started. Class time was used to implement their
current projects, discuss and develop testing documentation, and talk about and use
version control software. During the second and third iteration mini-design and test plan
147
JCSC 25, 6 (June 2010)
documents were created but not graded. During the later iterations students interacted
with the clients on a daily basis, modified code based on client feedback and added the
lower priority requirements.
RESULTS
The number one benefit of using dynamic groups was that it provided students with
an opportunity to follow another person’s design, edit and manage code created by
another, and test/debug unfamiliar code. This was the same with and without using the
iterative model.
148
CCSC: Northeastern Conference
Results using just dynamic teams from the instructor’s viewpoint there were fewer
group breakdowns when team members underperformed, students received practice in
reading other people’s work, and students felt more comfortable in rating peers honestly.
From the students’ viewpoint, changing groups was a positive experience and they were
challenged to adapt to multiple personalities and skill sets. These results were the same
when we combined the iteration with rotating groups.
When combining dynamic teams and the modified iterative approach the project
completion rate for the course increased from 30% to 80%. All the projects were from
other departments located on the UMW campus and were hosted on BlueHost. The
projects included a submission form and database for the UMW Institutional Review
Board (IRB), a recruit tracking database for UMW Women’s Soccer Team, a UMW tour
guide scheduler and database, an IT equipment tracking database, and a social
networking website for UMW Business Department.
In all projects, only the highest priority requirements selected by the client were
completed by teams which allowed students to feel confident and satisfied with their
contributions. Because the high priority requirements were the foundations of the desired
software, their completion made the software usable for clients. Client satisfaction was
higher using the iterative approach.
In the fall of 2009 all projects completed their highest priority tasks and we believe
this was directly related to the iterative approach. The IRB software successfully
completed user registration, login, creating board members, submit application, upload
files with application, assign application to board member, view assigned application,
approve/deny/request revision application, and request board review. The Soccer
software successfully completed user registration, login, view/add/search/authorize/delete
recruits, an administrator feed of recent recruit information upon logging in, a virtual
notebook for each recruit and automatic email notification of activity of recruits. The
Tour Guide software successfully completed creating tours, automatically creating
semester tour guide schedule, approve/deny/update tour guide application and a CVS
dump. The IT software successfully completed a front end that allowed general user to
search for a classroom that fulfills their technology needs, a backend that allows the
administrative to manage and organize the school’s technological equipment and
supplies, as well as the spaces the equipment and supplies are located in. Finally, the
Business Social Network registered and confirmed users, created a forum for alumni and
students to make connections, post/search/delete job vacancies and resumes, search users,
and creating an administrator. Grade included one F and then the rest was evenly
distributed in the A and B range.
Even with these requirements all clients wanted more. The IRB project that was
delivered but did not have any ability to archive or delete processed applications. While
it works for now, once they have one or two years of applications the list of applications
would be numbered over 200 and viewing would be congested. The IRB has decided to
continue using it and is looking for a future student to continue work on the software.
The tour guide software does not automatically indicate a backup person if the primary
tour guide is unavailable. The admissions office decided to use the product and they will
schedule backup tour guides by hand. Students have continued to work on three of the
149
JCSC 25, 6 (June 2010)
projects during the spring 2010 semester as individual study projects. The software for
IT, Soccer, and the Business Department are being upgraded to add more features.
Overall, both changes improved the client experience and added a touch of reality
in the software engineering course. Students had a positive real world experience and the
clients were extremely excited about their projects outcomes.
REFERENCES
[1] Karen Anewalt, “Dynamic Group Management in a Software Projects Course,”
in the Journal of Computing Sciences in Colleges – Volume 25 Issue 2, 146 –
151.
[2] Daniela Damian, Allyson Hadwin, and Ban Al-Ani, “Instructional design and
assessment strategies for teaching global software development: a framework,”
in Proceedings of the 28th international conference on Software engineering
(Shanghai, China: ACM, 2006), 685-690.
[3] Holger Gast, “Patterns and traceability in teaching software architecture,” in
Proceedings of the 6th international symposium on Principles and practice of
programming in Java (Modena, Italy: ACM, 2008), 23-31.
[4] James M. Hogan, Glenn Smith, and Richard Thomas, “Tight spirals and industry
clients: the modern SE education experience,” in Proceedings of the 7th
Australasian conference on Computing education - Volume 42 (Newcastle, New
South Wales, Australia: Australian Computer Society, Inc., 2005), 217-222.
[5] Youry Khmelevsky, “SW development projects in academia,” in Proceedings of
the 14th Western Canadian Conference on Computing Education (Burnaby,
British Columbia, Canada: ACM, 2009), 60-64.
[6] Jouni K. Kokkoniemi, “Gathering Experience Knowledge from Iterative
Software Development Processes,” in Proceedings of the 41st Annual Hawaii
International Conference on System Sciences (HICSS 2008) (presented at the
41st Annual Hawaii International Conference on System Sciences (HICSS 2008),
Waikoloa, HI, USA, 2008), 333-333.
[7] James Noble et al., “Less Extreme Programming,” in Proceedings of the sixth
conference on Australasian computing education - Volume 30 (Dunedin, New
Zealand: Australian Computer Society, Inc., 2004), 217-226.
[8] Pione, D., Heads First Software Development, O’Reilly Media, 2008.
[9] Schwartz, D., CLOWNS – a software engineering semester project currently in-
use in kindergarten classes, FECS ’08: Proceedings of the 2009 International
Conference on Frontiers in Education: Computer Science and Computer
Engineering, 2008.
[10] Mark J. Sebern, “Iterative development and commercial tools in an
undergraduate software engineering course,” in Proceedings of the twenty-eighth
SIGCSE technical symposium on Computer science education (San Jose,
California, United States: ACM, 1997), 306-309.
150
CCSC: Northeastern Conference
[11] Sommerville, I., Software Engineering, 8th edition, Addison Wesley, 2006.
151
INSTRUCTIONAL ASPECTS OF STUDENT PARTICIPATION
PANEL DISCUSSION
ABSTRACT
Active participation in Free and Open Source Software (FOSS) projects can provide
students with large-scale collaborative software development experience. Frequently
these experiences include interacting with an international group of professionals. The
ability to participate in an active project empowers and motivates students to learn. FOSS
projects of a humanitarian nature further motivate students by providing students with the
satisfaction of improving the human condition in some manner. Thus Humanitarian FOSS
(HFOSS) provides a fertile environment for student learning.
___________________________________________
*
Copyright is held by the author/owner.
152
CCSC: Northeastern Conference
PANELISTS
Heidi Ellis will discuss the use of software engineering templates for deliverables
for students involved in HFOSS projects. The main issue to be addressed is structuring
gradable deliverables including rubrics.
Ralph Morelli will describe introducing both majors and non-majors to HFOSS
principles. The focus will be on a software development course and activities modeled
on a typical FOSS development community and process.
Greg Hislop will present an approach to helping students gain a basic understanding
of HFOSS tools and processes. The discussion will address the issue of introducing
students to the HFOSS development environment.
Norman Danner will discuss approaches for involving students with a range of
experience and backgrounds in complex HFOSS projects. The discussion will provide
perspective both from the standpoint of interacting with the project administratively and
ameliorating the student learning curve.
BACKGROUNDS
Heidi Ellis was one of the initial participants in HFOSS efforts at Trinity College and a
founding member of the HFOSS effort. She is PI on the NSF SoftHum project which
focuses on course-level details for supporting student open source experience within the
classroom. She has experience in involving software engineering students in HFOSS
projects.
Ralph Morelli has led the development of the HFOSS project and is PI on multiple NSF
multi-institution CPATH grants that fund the HFOSS effort. Dr. Morelli is also a co-PI
on the NSF SoftHum project. He has involved introductory and advanced students in
HFOSS projects within courses and in summer internships.
153
JCSC 25, 6 (June 2010)
Gregory Hislop is a co-PI on the NSF SoftHum project and is leading an effort to expand
active student involvement in open source software at Drexel University. He is exploring
open source participation in the context of introductory computing and upper level
software engineering courses.
Norman Danner is a co-PI and PI on the NSF HFOSS CPATH grants and has been
involved in the HFOSS effort for several years. He has supervised summer HFOSS
interns and in his most recent software development course, students contributed to an
existing major humanitarian FOSS project.
154
THREADS EARLY*
TUTORIAL PRESENTATION
ABSTRACT
The goal of this tutorial is to present an approach and supporting artifacts for
incorporating concurrent programming in the CS 2 and CS 3 courses
employing Java Threads. This work represents a three-year effort to upgrade
the CS 2 and CS 3 courses using an approach that balances objects and
algorithms. The approach employs several Java Threads course modules that
can be added to these courses by bringing Java threads into these courses by
integrating thread-based material into the existing course material.
INTRODUCTION
Threads are hard, or so we are told. Threads are hard if they are introduced in a
cavalier fashion and the potential pitfalls are not pointed out to the students from the
beginning. If left to their own devices, students will quickly get frustrated with threads
as their code gets caught in inadvertent thread deadlocks. Examples must include
software that appears to be logically well constructed but have inadvertent deadlocks
during execution. This tutorial is presented in three parts:
1. Thread Guidelines: Note, these are guidelines, not commandments. Threads
programming does not require following these guidelines, but our experience
has demonstrated that these guidelines keep CS 2 and CS 3 students out of
trouble.
2. The Course Modules: We present four modules, two for CS 2 and two for CS
3, that incorporate the applications of threads into topics that are normally
covered in these two courses.
___________________________________________
*
Copyright is held by the author/owner.
155
JCSC 25, 6 (June 2010)
THREAD GUIDELINES
Keep in mind that the goal of these guidelines is to get students started and keep
them out of trouble, especially inadvertent deadlock. The first part of the tutorial presents
the guidelines and the reason for each guideline. These guidelines are reinforced through
the course modules and artifacts, explained below. The guidelines are:
i. Judicious use of synchronized methods. We emphasize that when a developer
employs a synchronized method they are employing a locking mechanism. As
such the use of locks should be well focused with strongly cohesive methods,
methods whose code has a single purpose, to achieve the goal that required the
application of a lock, no more, no less.
Ii. Shared data/information objects. If information must be shared between
threads, construct classes that contain the shared information and have the
threads access and modify the information through, possibly synchronized
methods. [We’ll explain the “possibly” in the tutorial.]
Iii. Separate the Threads. Clarify thread construction, starting, and interaction.
We encourage the separation construction of threads, not having one thread as
an attribute (composed) within another thread. Sometimes, this requires a little
extra effort to handle inter-thread communications. But the result leads to
avoiding some potential deadlock issues.
Iv. Get the Boolean flags right. One flag = one purpose! Don’t try to do too
much with one flag.
v. Assertion test the wait/notify conditions: Build assert statements using
DeMorgan’s Laws to verify the correctness of thread execution conditions.
Since many wait conditions are compound conditions sometimes it is easier to
work backwards and build the thread execution condition,
A or B,
then use Demorgan’s Laws to construct the wait condition,
not(A or B) = (not A) and (not B).
MODULES
Module 1 (CS 2)
Module 1 focuses on introducing threads that are employed in the IteratorFactory,
an abstract class that assists software developers in constructing Iterators over arbitrary
containers. Students employ the IteratorFactory to construct Iterators over various
containers (lists, stacks, queue, trees, graphs, etc.). Afterwards they are introduced to the
156
CCSC: Northeastern Conference
Module 2 (CS 2)
Module 2 looks deeper into Java threads. We cycle back and reintroduce the basic
producer-consumer model. This time the model is enhanced by looking at the
construction of two-person games using three threads - two player threads and an umpire
thread corresponding to two producers (the players) and one consumer (the umpire). A
collection of artifacts are employed. The artifacts focus on playing the game called Rock-
Paper-Scissors.
Module 3(CS 3)
Module 3 reintroduces both the IteratorFactory and Rock-Paper-Scissors. The
IteratorFactory is reintroduced as an assignment – the replacement of the simple mailbox
and flag with a finite queue, a typical real-world producer-consumer model enhancement.
Rock-Paper-Scissors is reintroduced with what appear to be a simper set of Java
classes. However, when these artifacts are employed the software frequently hangs in
deadlock. This provides an opportunity to explore deadlocks and the role of the Thread
Guidelines in avoiding deadlock.
Module 4(CS 3)
A hashtable-based framework is introduced to tackle graph and digraph problems.
Two classical problems are presented, the Border-Crossing problem and the Four Color
problem. The students are introduced to the classical queue based solution to the Border
Crossing problem and an exhaustive stack, or recursive, based solution to the Four Color
problem. Threads are introduced into the hashtable based framework and both problems
are reintroduced with thread based solutions. In the process, either the Four Color
problem or the Border Crossing problem is given as an assignment. It should be noted
that the thread based four color solution serves to create a lot of interest in threads
because of the speed with which it will home in on a correct map coloring.
ARTIFACTS
The last part of the tutorial reviews the artifact sets. There are three sets of artifacts.
The instructor has some flexibility in presenting the artifacts and determining what they
wish to reveal and what they wish to leave for assignments. There are three collections
of artifacts, the IteratorFactory artifacts, the Rock-Paper-Scissors artifacts, and the
graph/digraph artifacts. As one might expect, the IteratorFactory is the simplest. It has
two variants, a simple flag/mailbox implementation and a finite queue model.
The Rock-Paper-Scissors artifact set is the most complex in that it contains a
working model, a model that raises deadlock, and an incomplete variant that can be used
as a framework for assignments. Similar assignments can be constructed based on other
two-player and umpire games.
157
JCSC 25, 6 (June 2010)
Some care must be taken when deploying the Graph/Digraph artifacts. Specifically,
the instructor must decide which elements will be presented in class and which elements
will be reserved for student assignments. We expect to see these artifacts expanded as
we gain more experience employing threads to resolve other graph problems. All tutorial
artifacts are available at,
http://www.cs.scranton.edu/~beidler/threads/
158
BANTAM JAVA COMPILER PROJECT: EXPERIENCES AND
EXTENSIONS*
ABSTRACT
A compiler course is a critical component in an undergraduate computer
science education. In this paper, we discuss our experiences in teaching a
compiler course using the Bantam Java compiler project, which enables
students to write a Java-like compiler. Both instructors and students have
found Bantam Java effective in their courses. We describe several significant
extensions to the Bantam Java toolset, which give instructors more flexibility
and also lower their overhead when using it in a course. These improvements
include an extended source language, a Java Virtual Machine target, an
Ant-based build process, and optimization and interpreter assignments.
___________________________________________
1
Some of this work was done while Lori Pietraszek was a student at Hobart and
William Smith Colleges.
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
159
JCSC 25, 6 (June 2010)
INTRODUCTION
A compiler course can have a tremendous educational impact on an undergraduate
computer science student. A compiler course, especially one with a significant
implementation project, improves the programming skills of the students in the course.
In writing a compiler, students implement the source programming language and thus
gain a deeper understanding of it, as well as other similar languages. If this language is
used frequently in other courses and professional settings, then student programmers will
benefit greatly from such a compiler course. As Hall et al. point out [14], "programmers
with a solid background in compilers tend to excel in their profession." Indeed, in a
project-based compiler course, students gain considerable software development practice,
including team-work skills. A compiler is large and complex. Developing a significant
piece of software and managing its complexity is a valuable experience for students.
A compiler course also helps students better understand computer systems. They see
concretely how high-level programs such as those they have written in other courses get
mapped into lowlevel machine language; the compiler course demystifies the gap
between high-level programs and the low-level machine. Students also gain some insight
into the impact of language design and implementation choices (e.g., type safety) on the
security of computer systems.
One problem in teaching compilers is finding a suitable language and compiler
infrastructure that enables students to implement their own compiler in the classroom. In
this paper, we describe our experiences with the Bantam Java classroom language and
compiler toolset [13]. We have found (anecdotally, at least) this course effective at
helping students better understand programming languages and computer systems, and
become better software developers.
In addition, we describe several significant extensions we have made to the Bantam
Java toolset, which increase its scope, add instructor flexibility, and make it easier for
instructors to incorporate the toolset into their own classroom. These extensions include
the following:
• Extended language with more language features (e.g., arrays) for use in ambitious
courses.
• JVM target for building a compiler that generates code for the Java Virtual
Machine (JVM).
• Optimizer component and assignment for teaching code optimization.
• Interpreter component and assignment for teaching program interpretation.
• Alternate build process for building the toolset via Ant [4], in addition to Make
[3], enabling students and instructors to install the toolset on non-Unix platforms
such as Windows.
160
CCSC: Northeastern Conference
extensions from this work) as well as the API for the compiler generated from javadoc
[19]. This documentation, along with source code to be completed by the student and
solution code for instructors, is freely available at the web site:
http://www.bantamjava.com/.
The source language, Bantam Java, is a significant subset of Java, a language used
in many computer science curricula. The language emphasizes object-orientation, since
most modern languages are object-oriented (e.g., C++, C#, Ruby), and students are less
familiar with these features and their implementation.
Although there exist other educational compiler projects, most of them are either
significantly different from commercial languages [7] or not object-oriented [8, 21]. The
MiniJava project [9] does not have these drawbacks. However, its documentation is
tightly integrated within a textbook, which reduces instructor overhead but also instructor
flexibility. Furthermore, some of the publisher-provided solution code for MiniJava is
incomplete. Finally, object orientation is treated as an optional add-on rather than a
fundamental feature of the source language.
One problem with any educational compiler source language (and Bantam Java is
no exception) is that the language must be small to ensure the compiler is implementable
in a single semester. Thus, Bantam Java cannot contain all of the features of Java. Some
important features like arrays had to be left out of Bantam Java. One contribution of this
work is to create an extended language that contains some of the omitted features.
A virtue of the Bantam Java Compiler Project is that it includes several
customizable components. For example, the instructor can choose between two sets of
lexer/parser generators (JLex [10]/Java Cup [15] or JavaCC [18]). The instructor can also
choose between two targets: MIPS/SPIM and x86/Linux. Furthermore, the (free) lab
manual can be used in concert with any traditional compiler textbook [6, 9, 11]. One
contribution of this work, is the inclusion in the toolset of additional customizations,
namely: the definition of an extended language, the support of a new target architecture
(JVM), and the addition of optimization and interpreter components and assignments.
Dublin City Geoff Fall '08 JavaCC Base MIPS None Make
Univ. Hamilton
Hobart & Marc Corliss Spring JLex/Cup Base MIPS Optimizer Make
William '09
Smith Col.
SUNY Scott Russell Fall '09 JLex/Cup Base MIPS None Make
Geneseo
Univ. of David Furcy Fall '08, JavaCC Base, JVM None Make,
Wisconsin '09 Extended Ant
Oshkosh
161
JCSC 25, 6 (June 2010)
Wofford Col David Sykes Fall '08 JLex/Cup Extended MIPS None Make
Table 1: Institutions that have used the Bantam Java Compiler Project along with some
of the customizations they have used.
Instructor feedback. There is evidence that the current adopters are satisfied with the
toolset. In fact, all of the instructors who have used the toolset plan on using it again. The
fact that one of them (Hamilton) has used the toolset in a two-course sequence
demonstrates the flexibility that our toolset affords instructors. Furthermore, one of these
instructors was so enthused about this project that he has become a full-fledged member
of the project (and a co-author on this paper!). Here is some of the feedback we have
received from two instructors who are not collaborators:
I found the set of projects to be reasonably challenging, but gave a very
good grounding in the art of compiler writing.
I couldn't have done the course as well as I did without using Bantam.
The second instructor also points out the virtue of a project-based compiler course:
[Students] spoke so highly of the course and how it helped them to tie a
lot of other courses together (including theory of computation, computer
architecture, and programming languages) that we are adding it to our
catalog.
In fact, all of the instructors who have used the Bantam Java project had favorable
comments.
There were also some minor negative comments. For instance, one instructor, who
used the extended language, found arrays to be too challenging for students. He thus
removed arrays from the code generation assignment. He also thought that the parser
solution code (only accessible to instructors) was hard to follow. We plan to address these
criticisms in the next version of the toolset. But overall, this instructor was happy with
Bantam Java.
Student feedback. Since "students [are] not that excited about implementing someone
else's toy language" [5] and "tend to believe that languages designed by their instructors
are not ‘real'" [20], we were looking forward to students' reactions to the experience of
building a compiler for (a subset of) Java, currently one of the most relevant
programming languages around. We were rewarded with quite a few positive student
162
CCSC: Northeastern Conference
comments (these come exclusively from the courses taught by two of the co-authors),
such as this one:
Component Options
Language Base, Extended*
Target MIPS, x86, JVM*
Lexer/Parser Generators JLex/Java Cup, JavaCC
Optional Advanced Assignments Optimizer*, Interpreter*
Build Process Make-based, Ant-based*
Table 2: Bantam Java toolset customizable components. * indicates aspects added in this
work.
I found that [I] have gained a better understanding of the semantics of
Bantam Java and Java programming languages because I had to actually
go through each part and think about it carefully.
Several students also recognized the inherent benefit of completing the
programming project. Here are quotes from two of them:
The projects taught me a lot about building a compiler hands on that I
could not have figured out from just learning the theory.
These projects have definitely helped in understanding the semantic
analyzer and code generator. Actually, I don't think I would really
understand either of them well at all without doing these projects.
The overall tenor of student feedback is best summarized by this other student
comment:
I found this project to be challenging and interesting [...] however [...] it
became more of a fun challenge than an obstacle.
163
JCSC 25, 6 (June 2010)
extra features, the extended language is significantly closer to full Java. Although these
features also add a significant amount of difficulty to the implementation of the compiler,
students may find it more compelling to implement a language closer to Java. Instructors
may now choose between these two versions of Bantam Java, based on the level of their
students and the length of the course. The extended language has been used in two
courses (at University of Wisconsin Oshkosh and Wofford College).
Ant-based build process. We have added an alternate way of building the Bantam Java
toolset. Previously, the toolset was built via Make [3]. Now it can alternatively be built
using the standard Java build tool, Ant [4]. This makes it possible to install and run the
Bantam Java compiler on non-Unix platforms such as Windows (e.g., it has been installed
and used on Windows XP). It may also make it easier for some students to install the
toolset on Unix systems. With this addition, the toolset can now be installed and used on
all current major platforms, namely machines running the Windows, *nix, or Mac OS X
operating systems.
164
CCSC: Northeastern Conference
FUTURE WORK
We will pursue future work in several directions. First, we plan to conduct a study
exploring quantitatively the importance of a project-based compiler course in the
undergraduate computer science curriculum. We hope to gather data from several
institutions to measure the impact of a project-based compiler course on students'
programming skills and their understanding of compilers and computer systems.
We also plan to add optional advanced assignments, such as a garbage collector
written in C. Furthermore, we will design a third version of the Bantam language. As
some instructors have already given us feedback that the extended language seems too
challenging for their course, we will create a language that sits between the base and
extended languages in terms of its feature set. Both the additional language and the
additional garbage collection assignment will give instructors even more flexibility in
designing their compiler courses.
CONCLUSIONS
In this paper, we describe our experiences using the Bantam Java compiler project
in the classroom. Overall, the instructors and students who have used this project have
found that it greatly enhanced their compiler course. Finally, we extended the project in
several ways to improve its effectiveness. We added an extended language, a JVM target,
an Ant-based build process, and optimization and interpreter components and
assignments.
ACKNOWLEDGMENTS
Joshua Davis and Lori Pietraszek were supported by student grants from the
Provost's Office at Hobart and William Smith Colleges. The authors thank the reviewers
for their helpful feedback.
REFERENCES
[1] The javac group. URL: http://openjdk.java.net/groups/compiler/.
[2] The GNU compiler for the Java programming language. URL:
http://gcc.gnu.org/java/.
[3] GNU Make Project. URL: http://www.gnu.org/software/make/.
[4] Apache Ant 1.7.1 Manual, 2009. URL: http://ant.apache.org/manual/.
[5] A. V. Aho. Teaching the compilers course. SIGCSE Bull., 40(4):6–8, 2008.
[6] A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles,
Techniques, & Tools. Addison-Wesley, 2nd edition, 2007.
[7] A. Aiken. COOL: A portable project for teaching compiler construction.
SIGPLAN Notices, 31(7):19–24, 1996.
165
JCSC 25, 6 (June 2010)
166
SEMANTIC HOOKS USING A MINI-LANGUAGE FOR A
COMPILER PROJECT*
John S. Mallozzi
Iona College, New Rochelle NY 10801
914 633–2565
jmallozzi@iona.edu
ABSTRACT
In presenting semantic specifications to a parser generator, numerous
connections and “hooks” must be presented, relating parsing and semantic
code. This paper describes, in the context of a particular toolset developed by
the author, a mini-language that can be used to specify these “hooks” in a way
that allows the user to concentrate on each aspect of compiler generation
separately.
INTRODUCTION
A course in compiler design generally combines treatment of the theory with a term-
long project. Fitting these two together coherently can be a problem. The student must
get the project underway as soon as possible, but the theory underlying the code needed
takes a good deal of time to develop. Most of us are not free to demand an entire
additional course to satisfy our needs, since there are plenty of competitors. This paper
will consider some tools that aid the process within a single three-credit semester.
The easiest way to assign a non-trivial project within a one-semester course that
must cover theory and other aspects of compiler design is to use a parser generator, which
allows the student to concentrate on semantic code-writing instead of the tedious – albeit
easy – details of applying parsing theory to actual code production and, more to the point,
waiting until that theory is covered in class to produce any code. To be useful, this
generator should accept specifications that include “hooks” to semantic code.
Often, one sees a quick, recursive descent compiler for a very simple language, a
brief discussion of the desirability of automation and then a quick switch to bottom-up
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
167
JCSC 25, 6 (June 2010)
tools such as lex-yacc (and their successors), followed by a project using these tools.
Some years ago, the author decided to frame the term project using top-down tools, and,
eventually, to concentrate on recursive descent in particular. There are many reasons why
one might think this approach best. Some of them, and some tools developed to support
the top-down approach, were described in [3]. The purpose of this paper is to explicate
more recent work, which makes the provision of semantic “hooks” easier, and in
particular describes a mini-language to express connections between parsing and semantic
processing. Use of this mini-language in compiler specifications appears (anecdotally)
to be beneficial in completing term projects. Formal study of this apparent benefit would
be appropriate in future course offerings.
DESCRIBING A LANGUAGE
The foremost practical advantage of bottom-up over top-down parsing methods is
that the former has access to more “natural” grammars (“LR” grammars) than the latter
(“LL” grammars). (There is also a significant theoretical advantage: LR grammars are
more inclusive than LL grammars and have nicer properties. However, the focus here is
on more practical matters.) The common example of expressions (see [1] and [2], for
instance) makes the point nicely. An LR grammar for (simplified) expressions is shown
in Figure 1
168
CCSC: Northeastern Conference
This last approach is arguably simplest and most transparent of all, and the theoretical
need for a CFG is not present if the project is written from EBNF using recursive descent.
The path from EBNF to recursive descent is quite smooth, and can be automated.
Certainly there are available tools to do this for all three approaches. Here, a set of tools
developed by the author is described, with emphasis on semantic “hooks,” especially as
they involve the mini-language, which is also described. The ease with which this mini-
language can be used within the EBNF is the reason the author prefers this approach.
169
JCSC 25, 6 (June 2010)
and parser along with stubs for semantic routines in a separate semantics class, with all
interfaces to the parser supplied. Working within a helpful IDE, such as Eclipse, it is
easy to note places where the student must insert code to complete the compiler.
A mini-language is employed in writing the specification file. Use of semantic
actions, as described for example in [2], is not unusual, except that here the actions are
methods which may include parameters and return values. As the student writes the
specification, the greatest difficulty encountered is in getting correct the interfaces among
several important components:
1. The parser recognizes tokens, using a one-symbol lookahead. One often must capture
the currently recognized token, to use it in semantic routines. However, this token must
be wrapped in an appropriate semantic record type.
2. Parsing routines, such as the one for an expression, frequently must return a value to
be used in semantic processing, which once again must be declared to be of an
appropriate type.
3. Semantic routines must use tokens and values from the parser and values from other
semantic routines to accomplish their tasks, and may return values to be used in other
routines.
The idea behind the tools described here is to allow the student to specify all needed
interfaces within the EBNF productions for the language, after which the tools will set
up the compiler in such a way that he or she may concentrate on one semantic routine at
a time.
170
CCSC: Northeastern Conference
EXAMPLE
Assuming that the nonterminal for an expression has been declared to return a value, and
that other symbols have been declared appropriately, Figure 4 contains productions for
the assignment statement and expression nonterminals.
In the first production’s action code, once the identifier on the left side of the assignment
symbol is recognized, it is saved in a variable, lhs, for later use. In actuality, the current
token is wrapped in a semantic record. After this, a semantic method is to be called to
check that the variable has been declared. After the expression on the right-hand side has
171
JCSC 25, 6 (June 2010)
been parsed, an action method is to be called to generate code for the assignment. It takes
as parameters the variable holding the earlier-saved token and the value returned by the
most recently called action or nonterminal method, in this case the one that parses
expression. (The symbol % is used to indicate the end of a production.) Similarly,
the action code for an expression saves the value returned from parsing a term,
remembers which addition-type operator was seen, and then uses these two (x and op)
and the value of the next appearing term for use in a semantic method that generates code
for the actual calculation. After all repetitions, the current value (actually a record for
where the value is stored) is returned as the result of parsing the expression. Note that
control, such as repetition, is generated automatically.
The parser code generated from the specification of assignments is in Figure 5. Note
how details such as declarations and casting have been handled automatically. The
student has no need to work with this code, although reading it may be beneficial for
understanding the parsing process.
The code generated for semantic method assign, with an indication of where to
insert code, is in Figure 6. It consists of just a stub, which remains to be coded by the
student. However, interfaces and details of type are automated, so that focus can be on
that coding task.
In all of this, the student may focus on what must be done at each stage, not on how
to fit it in with all the auto-generated and other student-written code. Once the skeleton
172
CCSC: Northeastern Conference
compiler is generated, the student will find stubs for each semantic method, which he or
she can then consider separately from all the rest of the compiler, using the parameters
sent and the value to be returned, and any local variables desired. Very few truly global
variables are needed, and these generally accompany less structured statements, e.g., the
location of the current loop if break statements are allowed in the language.
CONCLUSION
If the student uses EBNF with action code to specify a language compiler, properly
written tools generate a particularly effective skeleton compiler, which permits the
student to concentrate separately on specifications and the writing of semantic code. This
is done within a simple framework – EBNF and Java inheritance – not calling upon much
of the theory of compiler design or the use of parse stacks, semantic stacks, etc. As this
theory is developed, and while the compiler is being written, much can be said about how
the tools are written, using the theory, thus satisfying the curiosity of students and tying
all together by the time the course ends. However, the project itself can be started early,
with a minimum of theoretical preparation. Tools described in this article may be
obtained via anonymous FTP from the author, at
ftp://ftp.cs.iona.edu/pub/jmallozzi/compiler/
REFERENCES
[1] Aho, Alfred, Lam, Monica, Sethi, Ravi, and Ullman, Jeffrey, Compilers:
Principles, Techniques & Tools, Second Edition, Addison-Wesley, Boston, MA:
2007.
[2] Fischer, Charles, Cytron, Ron, and LeBlanc, Richard, Crafting a Compiler,
Addison-Wesley, Boston, MA: 2010.
[3] Mallozzi, John S., Thoughts On and Tools for Teaching Compiler Design, The
Journal of Computing Sciences in Colleges, 21, (2), 177-184, 2005.
173
LEVERAGING HARDWARE DESCRIPTION LANGUAGES
ARCHITECTURE COURSE*
ABSTRACT
This paper describes our experience with using hardware description languages
(HDLs such as VHDL) in the sophomore level Computer Architecture course
for Computer Science (CS) majors. In our approach, we leverage the students’
understanding of Object Oriented Programming (OOP) to introduce
programmatic specifications of computer components such as multiplexors,
adders etc. Students will be exposed to HDLs yet again in more advanced
hardware courses such as Digital Design, Computer Architecture and
Embedded Systems Programming. In this manner, we plan to harvest the
benefits of spiral learning, whose effectiveness in pedagogy is well accepted.
The proliferation of Fully Programmable Gate Arrays (FPGAs) and modern
development environments makes it feasible for CS majors to experience the
creation of functioning hardware using specifications coded in VHDL. We
expect our approach will result in improved learning outcomes for CS majors
in the hardware field.
INTRODUCTION
As part of a general revitalization of the curricula associated with undergraduate
computer architecture, we proposed a project to integrate modern digital hardware design
technology and build stronger integration among hardware courses for CS majors that
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
174
CCSC: Northeastern Conference
have been traditionally taught in isolation [2]. The ties between the courses will be based
on spiral learning techniques of redundancy and increasing complexity [6]. A hardware
description language, in particular Very High Speed Integrated Circuits Hardware
Description Language (VHDL), was used to introduce recurring topics iteratively in a
constructive way. Iterative reintroduction using VHDL over the entire hardware
curriculum will allow the students to leverage the knowledge gained as a CS major and
apply it to understanding computer architecture and the software that drives the hardware.
We expect that such an iterative approach reinforces understanding since it allows the
students to build upon their prior knowledge and, furthermore, to approach the very same
concepts from different perspectives and increasing complexity. This iterative method is
inspired by the idea of spiral learning [6] which builds on a constructivist view on
learning. It assumes that learning is an active process in which learners construct new
ideas or concepts based upon their prior knowledge. A curriculum can support this
process if it revisits its basic ideas repeatedly.
Traditionally, a computer hardware curriculum teaches theoretical knowledge and
employs simulation software to run projects. The revitalization project not only focused
on introducing and integrating new digital design technology into the curricula, but also,
moving the curricula from a theoretical /simulation based focus to a project based
learning environment and providing continuity over the entire hardware course sequence.
The impetus for this initiative is to improve, expand, and facilitate student learning about
digital design, computer circuits and hardware, while capitalizing on the students’
existing strengths in Object Oriented Programming (OOP) techniques. Our approach will
include using the VHSIC Hardware Description Language (VHDL) language, Field
Programmable Gate Arrays (FPGAs), and CAD software from Aldec and Xilinx.
Current trends in industry [11] demand that CS graduates have a fluency in modern
digital systems design techniques and become agile product development and rapid
prototyping team members. There is also a convergence of hardware design
methodologies (Software Based) currently used by Computer Scientists and Electrical
Engineers. Modern digital design techniques (Software Based) are essential to both CS
and Electrical Engineering curricula [14,15,16]. This provides a unique opportunity for
CS educators to produce graduates that are comfortable working in a realm traditionally
reserved for Electrical Engineers and demands that Electrical Engineering curricula
become more software centric [1,3,7,8,9,11,13]. This novel approach to digital systems
design will allow the students to apply the knowledge gained as a CS major to the design
and understanding of computer architecture.
Leveraging what CS students learn and employing a spiral curriculum will facilitate
the common threads pulled though the entire CS hardware curriculum. This paper
describes the experience of using VHDL in an introductory computer architecture course.
175
JCSC 25, 6 (June 2010)
176
CCSC: Northeastern Conference
if (input = = 0)
output = 0;
else if (input = = 1)
output = 1;
else { F1 = 0;
F2 = 1;
while (input >= 2) {
output = F1 + F2;
F1 = F2;
F2 = output;
input = input – 1;}}
Figure 1 – Fibonacci Algorithm
177
JCSC 25, 6 (June 2010)
178
CCSC: Northeastern Conference
course were the first level of the spiral curriculum [6] model for the hardware courses.
The concepts set will be revisited in each of the subsequent hardware courses (Principles
of Digital Computers, Digital Design Lab, Embedded Systems, and Advanced Computer
Architecture) of the CS major. Each exploration of the concepts will be at a higher level
of complexity than prior courses, reinforcing what was introduced in latter.
REFERENCES
[1] Areibi, S., A first course in digital design using VHDL and programmable logic,
Frontiers in Education, 01, T1C-19-T1C23, 2001.
[2] Baliga, G.R., Robinson, J.H., Weiss, L. (2009, October). Object Oriented
Hardware Design, Consortium for Computing Sciences in Colleges.
[3] Black, M., Building a Computer From Scratch: A Hardware Lab Sequence For
Computer Science Students, The Journal of Computing Sciences in Colleges, 24,
(3), 32-38, 2005.
[4] Bouchhima, A., Chen, X., Pétrot, F., Cesário, W., Jerraya, A., A unified HW/SW
interface model to remove discontinuities between HW and SW design,
International Conference on Embedded Software, 159-163, 2005.
[5] Britton, R., MIPS Assembly Language Programming, NJ: Prentice Hall, 2003.
[6] Bruner, J., The Process of Education, MA: Harvard University Press, 1960.
[7] Edwards, S., Experiences teaching an FPGA-based embedded systems class,
Workshop on Embedded System Education, 56-62, 2005.
[8] Hamrita, T. K., Potter, W. D., Bishop, B., Robotics, Microcontroller, and
Embedded Systems Education Initiatives at the University of Georgia, An
179
JCSC 25, 6 (June 2010)
180
WIDENING THE K-12 PIPELINE AT A CRITICAL JUNCTURE
WITH FLASH™*
ABSTRACT
Students at a young age acquire many negative stereotypes regarding computer
programming and computer science in general. These stereotypes discourage
students, especially young women and minorities, from pursuing an education
in computer science. Using an innovative curriculum focused on Adobe
Flash™ we try to dispel these stereotypes and encourage students to pursue a
computer science education. Adobe Flash provides a platform to demonstrate
that computer science can be a fun and interesting topic that provides many
unique and engaging challenges. This allows us to bring these students back
into the pipeline of potential computer scientists.
Categories and Subject Descriptors
K.3.2 [Computer and Information Science Education]: Computer Science
Education, Curricula, K-12 Education
General Terms Experimentation, Human Factors
Keywords
Computer science education, introductory courses, misconception, women,
minorities
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
181
JCSC 25, 6 (June 2010)
1. INTRODUCTION
Many well known stereotypes about computer science are misconceptions. For
example: ―Computer science is only for nerds and geeks, ―Computer science is only
for men, and ―Computer science means sitting by yourself in a cubicle writing code.
These stereotypes, well known in society, are picked up by students at a young age, and
reinforced by the attitudes and actions of peers.
These stereotypes discourage many students from pursuing an education in
computer science. The problem is especially acute among young women and students
from underrepresented minorities. The number of computer science degrees awarded to
women declined from 35.8% to 22% between 1984 and 2002 (Robb 2003). The trend has
worsened with overall declines in CS enrollments. Computing Research News reports that
―interest in CS among women fell 80 percent between 1998 and 2004, and 93 percent
since its peak in 1982 (Vegso 2005). As Camp (1999) observes, ―the computing
community cannot sit back and assume that as the numbers of students rises, the
percentage of women students will automatically rise and that the P[incredible shrinking
pipeline] will take care of itself.‘ We must take direct action to attract and retain more
women to computing at all points in the pipeline (i.e., K-12, undergraduate, graduate,
faculty and industry). Indeed, the pipeline shrinks even before female students get to
high school. One high school in our region reports having just one girl out of 125 students
in IT elective courses. Besides the well known and documented problem of decreasing
enrollments in the face of increasing demand for IT professionals, the narrow pipeline
will likely stifle the development innovative and fresh ideas that could be explored in the
field.
We have attempted to overcome these stereotypes with interactive multimedia that
explicitly seeks to overcome these misconceptions with video interviews of computing
professionals (including women and minorities), animation and interactive exercise
(Blank, Hiestand and Wei 2004). Though the results were promising, there is still a need
for an approach that incorporates a hands-on problem solving experience that introduces
novices to the excitement of programming without bogging them down with syntactic
details of difficult concepts. Our goal is to create curricula that dispel these stereotypes
at a critical juncture, just as students are entering high school, when they are entering high
school and deciding about electives and career goals. Using multimedia and the Adobe
Flash programming environment we aim to show students that computer science is a fun
and exciting field that involves team work and problem solving. Once we get the students
to this point and have broken the stereotypes we have also given the students the tools to
form their own opinions about computer science. A version of this curriculum was
developed as part of a three week summer program offered to at risk 8th and 9th grade
students in the Launch-IT project (www.lehigh.edu/launchit). With promising results, we
believed we could move this approach to a high school setting. Building on preliminary
results reported in Sands, Moukhine and Blank 2008, this paper chronicles further
developments that hold much promise.
LV STEM (Lehigh Valley Science, Technology, Engineering, and Mathematics) is
an NSF GK-12 project which recruits graduate students to help develop innovative
curricula in local schools (see www.lehigh.edu/stem). LV STEM puts graduate fellows
in K-12 classrooms where they can lend a hand to teachers while sharing their cutting
182
CCSC: Northeastern Conference
edge knowledge with students who see them as successful role models. Graduate fellows,
K-12 teachers, and professors work together to create novel curricula based on state of
the art research and real world applications. The Flash outreach team is one of eight in
the LV STEM program, two of which focus on computing. Rieksts and Blank (2008)
describe a program for middle school students, by developing missions for rovers on a
simulated Martian landscape; the remaining six teams are in other STEM fields, including
mathematics, biology, chemistry, physics, and mechanical engineering. The lead and
second authors of this paper are the graduate fellows for the Flash team and the third is
the faculty team leader and Principal Investigator of LV STEM.
2. METHODOLOGY
2.1 Motivation
Adobe Flash is a powerful multimedia authoring tool for creating animation and
interactivity in applications and web pages. Flash lets developers integrate efficient vector
graphics, animation, sound, and video into ―movies that can be played on any computer
with the freely and widely available Adobe Flash plug-in. Flash also includes a rich
programming language, ActionScript, that supports the development of dynamic and
interactive programs,. But what makes Flash especially attractive is the ability to create
animated movies in a matter of seconds, without any coding in a programming language.
Flash is an appealing language for all age groups, genders and backgrounds. A
novice can create vector-based graphics, finding Flash more versatile than something like
Microsoft Paint. Animation is then relatively easy, by dragging a graphical object, setting
keyframes, then letting Flash automatically interpolate the changes in intervening frames.
Graphics and animations are thus the hook that attracts students, who naturally want to
learn how to control their movies. Students are thus motivated to learn how to program
in ActionScript in order to turn these movies into interactive applications, responding to
button clicks, for example to stop and restart movies. Flash also lends itself to classroom
use by letting students of differing abilities work on the same projects. This also provides
the opportunity for more advanced students to help novice students with the project. This
is an enjoyable experience for both students and reinforces the knowledge that they are
learning. Students are also impressed that they can learn how to use a technology widely
used on the web, including many of their favorite sites. As opposed to other approaches
that seek to attract new students, such as microworld programming environments,
computer games or robotics, we have found, in both the Launch-IT and LV STEM
projects that Flash appeals to girls, boys, and students from underrepresented minorities.
Flash is also appealing to high school instructors. The Microsoft Office User Systems
(MOUS) course, required for all incoming high school students in Bethlehem,
Pennsylvania, has consisted of learning how to use word processors and spreadsheets.
Although these are important skills for the workplace and higher education, most students
are bored. Since this course is the only required technology education most of these
students get in high school, it tends just to reinforce negative stereotypes about the field.
When we urged updating this course, instructors and school administrators were receptive
to the idea, in part because of complaints from students and parents about the course, as
well as their own concerns about declining enrollments in IT courses—in high school.
Flash lets instructors demonstrate how to have fun with a powerful real world tool.
183
JCSC 25, 6 (June 2010)
Inserting a few weeks of Flash into the MOUS course spurs interest of students in the
field, including taking full term courses on Flash and other programming languages.
2.2 Curricula
Students were given projects to learn Flash and the basic concepts of programming.
The basic structure of the curricula was the instructor would demonstrate the concepts to
be learned for the project on the projector. A handout would then be given explaining
what the students had to do for the project. The instructor would then move around the
classroom helping the students with issues and providing guidance when needed. This
format allowed the students the most time for hands-on experience with Flash. The first
projects were aimed at teaching the students the workspace and the basics of drawing and
animation. After these concepts were covered the rest of the curricula covered
ActionScript and the basics of programming. For one of the projects students were asked
to create a Sunrise/Sunset scene that had different control buttons. When one button was
clicked it would cause the scene to play the sunrise animation. When the other button was
clicked it would play the sunset animation. Through this lesson the students learned
the concepts of event driven programming, conditionals, and variables (if it was already
sunrise you can‘t have sunrise again). In following project students learned user
interaction through the keyboard, a project that involved moving a character through a
world, and other basic programming concepts.
3. PREVIOUS WORK
The LV STEM project began working towards this goal in earnest during the
2007-2008 academic year. During this period a graduate fellow, Nick Moukhine, worked
with two teachers to begin improving their technology education programs. In the first
semester, using the trial version freely available from the Adobe site, we inserted one
week of Flash in the MOUS course, quickly introducing graphics and animation. The
positive results encouraged our team to expand to a two week curriculum in the second
semester, giving students more time to be creative with animated projects. Using funds
available from the PITA (Pennsylvania Infrastructure Technology Alliance), we partnered
with the Bethlehem Area School District to acquire an educational site license of the
Adobe Creative Suite for the school. A twoweek Flash course was run in four different
sections of the MOUS course. Students were quizzed at the end of the course and asked
about their interest in a full length Flash course. Of the 54 that responded, 28 (51.8%)
expressed interest.
4. CURRENT WORK
4.1 Three Week Intro Flash Course
Expanding the two week curriculum to three weeks was crucial, in order to take
students from animation to ActionScript. While graphics and animations is the hook, it
is important that novices see how programming adds more power and interactivity to their
movies. We would not want anyone signing up for a full Flash course without
understanding that it would involve more ActionScript programming. The three week
184
CCSC: Northeastern Conference
curriculum covers the basics of the Flash workspace and timeline, drawing, animation
(frame by frame and tweening), and the basics of ActionScript programming
Each lesson begins with a demonstration of the topic from the instructor.
Afterwards, the students are shown what they are going to be making, based on a handout
showing the tools and steps to take to learn and apply the topic being taught. For the
remainder of the class students work with Flash to create the project described in the
handout. Students are encouraged to work with each other to solve problems and issues
with Flash. During this time the graduate fellow and teacher walk around to assist
students with any problems they might be having.
This course was taught in three sections of the MOUS course at Liberty High School
during the fall semester. The results were so promising that it will be taught in every
section of the MOUS course at Liberty in the spring semester, now that all teachers have
been trained.
185
JCSC 25, 6 (June 2010)
tutorial, from the menu on the left. The tutorial demonstrates an earlier version of Flash
with animated lessons within the environment and an instructor teaching in either audio
or text mode. Visitors are also invited to check out the video interviews on
misconceptions about Computer Science, in the first chapter, described in Blank, Wei and
Hiestand 2004.
5. FORMATIVE RESULTS
5.1 Three-Week Flash Course Student Results
The Liberty High School population includes 33% from underrepresented minorities
and 43% from low income families. At the end of the three week course students were
given a survey. Theywere asked questions to gauge the amount of knowledge they
learned about Flash as well as their interest in the full length Flash course.
The 32 students, 2 Female African-American, 11 Female Caucasian, 5 Female
Hispanic, 3 Male African-American, 2 Male AfricanAmerican/Hispanic, 4 Male
Caucasian, 1 Male Caucasian/Hispanic, 2 Male Hispanic, 1 Male Pacific-Islander, 1 Male
Other, were asked the following questions: ―Before taking the 3-week Flash course how
much did you know about Flash? and ―After taking the 3-week Flash course how much
did you know about Flash? As shown in Figure 1, all demographic groups reported
significant learning. Of particular interest to us are the scores of the minority and female
groups. For all males in a minority group there were significant gains in self-reported
knowledge. Males in minority groups started with an average of 1.44 and reported a
mean of 2.89 afterwards, a doubling in the amount of Flash they perceived that they
learned. This increase also holds for femailes in minority groups, with a gain of 0.43,
while Caucasian females reported a gain of 1.45. Though the gains are smaller for
minority girls, they are still encouraging. These results suggest that high school students
in all demographic groups are able to gain significant confidence about what they can
learn about Flash animation and ActionScript programming in a short module of lessons
and hands-on activities.
186
CCSC: Northeastern Conference
187
JCSC 25, 6 (June 2010)
Overall the comments provided were very positive reported earlier in Sands,
Moukhine and Blank 2008.
6. FUTURE WORK
Although our approach suggests a significant contribution to computer science
education, there remain challenges for it to succeed more broadly. We have the following
goals which we are attempting to complete this coming academic year:
1. Create and teach the curricula for the basic and advanced Flash courses at Liberty
High School this fall.
188
CCSC: Northeastern Conference
2. Expand the curricula for the introductory MOUS course and two full Flash courses
out to the other high schools in the Bethlehem school district. The project is
underway by a new LV-STEM graduate fellow.
3. Disseminate all lessons, handouts, and media through the LV-STEM website
(vlstem.cse.lehigh.edu). Full course curricula will become available after they are
classroom tested in the upcoming months.
7. CONCLUSIONS
To widen the pipeline of new students entering computer science, we must
overcome negative stereotypes about computer science that K-12 students learn and
reinforce among their peers. Using Flash, with its popularity on the Web, relatively small
learning curve, powerful animation and programming capabilities, we hoped to dispel
these misconceptions and increase interest in the field. We especially hoped to increase
interest among women and students from underrepresented minorities at a critical
juncture, when they are entering high school and deciding about electives and career
goals. Our results show that we did accomplish our goals for the program. We increased
the knowledge about Flash and computer science especially in minorities and women. We
also spurred interest in the full length Flash course which will lead to other computer
science courses also in minorities and women. Our results show that we are creating
student interest in the field of computer science. Our results also show, via the creation
of the full length course and teaching of the three week course in all classes, that we have
heightened awareness and willingness to modernize the computer programming curricula.
Until we arrived, Bethlehem high schools had a sequence of Visual Basic, C++ and Java.
This sequence apparently reflects the history of how these languages were introduced in
the school, with Basic as the oldest and Java as the newest. But this sequence inhibits
students from taking the Java, which is now the language of the College Board Advanced
Placement test and the first programming language in many university sequences.
Moreover, C# is increasingly important for job opportunities and also teaches the same
concepts and skills as Java. We have convinced teachers and administrators to change
this sequence to Flash/ActionScript, then any of the other programming languages,
possibly adding C#. Bottom line, our new Flash curricula are attracting more and more
diverse students into computing classes and at the same time motivates teachers and
administrators as an improvement to their current curriculum.
An obvious drawback of Flash for K-12 education is its cost. We have found that
once administrators see the advantages of Flash, they are willing to invest resources in
site licenses. Partnerships that leverage state or federal funds can make all the difference.
It would certainly also be desirable if our community could persuade Adobe to reduce
its pricing structure in order to provide more access to students, especially in K-12.
Curricula and publications associated with the LV STEM project are available at
lvstem.cse.lehigh.edu.
189
JCSC 25, 6 (June 2010)
8. ACKNOWLEDGMENTS
LV STEM and Launch-IT are sponsored by NSF grant numbers 0639664 and
0624553, respectively. The Pennsylvania Infrastructure Technology Alliance (PITA) also
provided supplementary funding for this project. Any opinions, findings and conclusions
or recommendations expressed in this material are those of the authors and do not
necessarily reflect the views of the National Science Foundation or PITA. The authors
also express their appreciation to Liberty High School teachers Rebecca Wetzel and
Kevin Jones, as well as to Dr. Henry Odi, Co-Director of the LV STEM and Launch-IT
projects, for their invaluable help with this project. The lead author gives thanks to God
for inspiration and the opportunity to make a difference.
9. REFERENCES
[1] Blank, G. D., Hiestand, S., and Wei, F. (2004). Overcoming Misconceptions
about Computer Science with Multimedia, Proceedings of 35th SIGCSE
Technical Symposium on Computer science Education, March, Norfolk, VA.
Online at www.cse.lehigh.edu/~cimel/papers/sigcse04.pdf.
[2] Camp, T. (1999). The incredible shrinking pipeline unlikely to reverse. ACM’s
Committee on Women in Computing.
[3] Rieksts, I. and Blank, G. (2008). Inspiring Future IT Professionals with Mars
Rovers, Journal of Computing Sciences in Colleges, Vol, 23, 5, pp. 52-57.
Presented at Wagner College, New York, May 2008.
[4] Robb, D. (2003), IT Gender Gap Widening, ACM TECHnews, volume 5, January
2003, Also available online at
http://itmanagement.earthweb.com/career/article.php/1564501.
[5] Sands, M., Moukhine, N. and Blank, G. (2008). Widening the Pipeline of K-12
Students with Flash, Journal of Computing Sciences in Colleges, Vol, 23, 5, pp.
52-57. Presented at Wagner College, New York, May 2008.
[6 ] Vegso, J. (2005) Interest in CS as a Major Drops Among Incoming Freshmen,
Computing Research News, Vol. 17/No. 3 (May 2005)
190
CONNECTING UNDERGRADUATE PROGRAMS TO HIGH
Patricia Morreale
Department of Computer Science
Kean University
Union, NJ 07083
908/737-3804
pmorreal@kean.edu
ABSTRACT
The high school preparation of future computer science undergraduates can be
varied and depends strongly on the experiences and subject knowledge of their
high school teachers. In an effort to connect undergraduate computer science
programs to high schools for future student success in college, a public
comprehensive university is hosting high school teacher workshops to help
teachers enhance their teaching effectiveness. This has established a pathway
from the university to the high school. Pre- and post- workshop surveys show
that these teacher workshops have changed the perceptions high school
teachers had regarding careers in computer science.
INTRODUCTION
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
191
JCSC 25, 6 (June 2010)
High school students are commonly exposed to traditional math and science
(Biology, Chemistry, Earth Science, and Physics) as part of their high school curriculum
but exposure to computer science and associated computational thinking is frequently
absent from the high school experience in the United States. One theory is that today’s
classroom teachers are not aware of the materials available to them for use with students
and are not aware of the professional opportunities available to their students upon
graduation. While using computers may be part of the learning experience for students,
problem solving and an understanding of what computer scientists, computational
scientists, and information technologists do after college is not universally held among
the teaching population in high schools [1, 2].
The importance of computer science to the national curriculum has been addressed
by some states with teacher certification programs [3]. This paper does not presume to
address the large topic of K-12 teacher certification in computer science, but instead
provides an experience report on university faculty interaction with high school teachers
during which improving student preparation for university study in computing and
computer science was the focus. By holding teacher workshops for high school teachers,
a public comprehensive university updated and enhanced ideas current high school
faculty had regarding applications of computers in the sciences and the utility of
computational thinking in high school.
192
CCSC: Northeastern Conference
education. However, the one-day effort presented here is more inclusive, as math,
science, and computer science teachers from high schools are welcome, not just computer
science teachers, and the one-day workshop has the potential to impact a larger group of
teachers. Additionally, this one-day workshop allowed teachers who would otherwise not
been able to travel away from home for a week of professional development to attend.
Another benefit is that one-day workshops can be and are presented more than once a
year, with new workshop talks and presentations added to subsequent offerings.
As a result of this thinking, and in coordination with the College of Education, a
one-day workshop for high school math and science teachers was developed, offering
teachers continuing education units (CEUs) if they attended. By holding the workshop
on the university campus, university students and facilities would be available for
demonstration and discussion. This would offer the greatest opportunity for high school
teachers to ask questions and exchange ideas in a manner which might not be possible in
their home school and district. With the support of the Computer Science Teachers
Association (CSTA) [8] and the National Center for Women and Information Technology
(NCWIT) [9], a workshop proposal was developed and vetted by local high school faculty
and CSTA chapter members. Once consensus was reached, the event was promoted and
registration via a website [10] was conducted.
ENVIRONMENT
Nationally, discussion regarding CS preparation at the high school level usually
considers AP Computer Science test preparation and results as the strongest indicator of
student success at the college level in computer science. While this remains true, there
are many students who are not exposed to computing or computational thinking in high
school despite personal interest and aptitude, and unless they are quickly located on a
university or college campus may not be able to master the skills needed in the time
provided for university success in computer science. Due to these factors, by the time
students get to post-secondary education, it may already be too late for future success in
computing.
Therefore, the goal of this workshop was to address the educational ramp from high
school to university – the ramp which is the approach for students considering computer
science or any discipline involving computational thinking. In light of NSF’s planned
“10,000 school project” [11] which seeks to develop a new pre-AP secondary school
curriculum in fundamental concepts of computing and computational thinking, with the
goal of having this new curriculum taught in 10,000 schools, a professional development
pipeline to current math, science, and computer science teachers is vital.
With the professional development model in mind, workshop notices were circulated
to potential workshop participants through local CSTA chapter e-mails to members,
graduate education classes, and the superintendent offices of regional school district
offices. Additionally, an AP Computer Science list server received a posting from a
CSTA member, which also reached another community of potential workshop
participants. These approaches worked well, with the CSTA chapter e-mails being the
most effective. The workshop notice was directed at high school math, science, and
computer science teachers and the workshop participants came strongly from those areas,
193
JCSC 25, 6 (June 2010)
with many teachers having primary responsibilities which included teaching computer
science or mathematics. Physics, chemistry and biology teachers also attended.
Workshop Presentations
The workshop day started with a welcome. Two 90-minute sessions were offered
in the morning. After lunch, three 90-minute sessions were offered. On occasion,
popular morning offerings were repeated in the afternoon, so the participating teachers
did not have scheduling conflicts. Usually, at least five topics were provided on the
workshop registration site, in order to offer a selection. A sample of recent workshop
presentation topics is provided in Table 1.
Future workshops will include sessions on peer-led team learning (PLTL), pair
programming, and hosting and preparing students for student programming contests.
Discussions between workshop sessions and over lunch have been very productive, with
university faculty hearing about activities in the high schools, and high school faculty
viewing university student research posters and demonstrations.
Survey Results
Pre-workshop surveys administered identified that the teachers attending the
workshops usually have at least five years of teaching experience and many have more
than fifteen years of experience. The majority are from public, suburban districts; a few
are from private schools. Some C++ programming is taught to students, but the Java
programming is taught by more teachers. Most participants had never attended a
computer science or computational thinking workshop before. The high school teachers
considered themselves good at programming, and spreadsheets, with lesser skill reported
in database management and computer-based modeling. Their expectations for the
workshop included networking opportunities, learning about computational thinking, and
understanding more about professional opportunities in computer science for their
students.
After attending the workshop, post-workshop surveys were completed. All teachers
indicated that they felt much more comfortable advancing the use of computing and
computational thinking in their classes – which ranged from computer science, to high
school mathematics and science topics. The potential for infusion of computational
science throughout their curriculum was a real success story from the day, as far as the
194
CCSC: Northeastern Conference
I am more aware of advances in this field and career paths available to those with
degrees in Computer Science and Information Technology.
I will encourage more students to consider computer science as a major.
Became aware of the term “computational thinking” and plan to emphasize it in my
classes.
I learned that computing may be done on all levels and with minimal prerequisites.
Table 2. A Sample of Workshop Attendee Comments on the Post-Survey
The strongest endorsement has come from the repeated workshop participants. By
varying the program with each workshop, prior participants are able to find new sessions
to attend, and have indeed returned to succeeding workshops after their initial experience.
Table 3 shows the most important part of the workshop – the change in perception of
computer science as a major and the host university as a choice for their students.
195
JCSC 25, 6 (June 2010)
LESSONS LEARNED
Schedule the workshop early in the school year. High school teachers are busy
during late May or June, with advanced placement examinations, final exams, moving-up
ceremonies, proms, and graduation. Our first workshop was held in June, which resulted
in a smaller turnout than expected. Subsequent workshops have been held during the fall,
with greater attendance.
Work with your prospective audience when developing the workshop agenda. Local
CSTA chapters are of invaluable assistance in reviewing drafts.
Consider whom you’d like to invite--and make sure you do. Targeted outreach to
magnet schools and alumni can be very effective. E-mail specific professional
communities you would like to include.
Think off-campus. Consider inviting speakers from outside the university who may
be collaborators or employers of your students. This will provide interesting
perspectives, and real-world stories, which are a strong complement to the workshop
agenda. Our efforts have included several national and international speakers, which
have been very well received by our participants, who appreciated the expertise which
was shared with them, both from the ‘locals’ and the ‘out-of-town’ people.
Do a post-mortem. Follow-up with your participants and within the workshop team
to see what additional ideas and insight may have developed. The team meeting should
be held shortly after the workshop concludes. Plan on following up with your workshop
participants by building a mailing list of math, science, and computer science high school
teachers in your region which can be used to further develop post-event networking and
communication.
SUMMARY
The workshop has become a regular campus event, with both high school teachers
and university faculty looking forward to it and thinking about what might be useful to
include in the workshop agenda. Current university computer science and information
technology majors enjoy volunteering at the event and answering questions about their
own preparation prior to university and their experience once on campus. This has served
to personalize the ‘computer science student’ to the high school teachers in such a way
196
CCSC: Northeastern Conference
that they can share with their students, when they return to their high school, what a
computer science major really works on and how he or she got to that point.
The effectiveness of the workshop in the high school community is rated highly as
increasing awareness of opportunities in computing and information technology at the
local university. Teachers openly indicate that they are now suggesting to their students
that they consider majoring in computer science or information technology and consider
the local university. With first-hand knowledge of the faculty, resources, and facilities,
this recommendation is of the highest priority. A tracking project is underway to identify
students recruited to the major as a result of their teacher’s workshop experience as well
as to determine how frequently high school teachers are able to work with the materials
shared with them during the workshop.
REFERENCES
[1] Margolis, J., Estrella, R., Goode, J., Holme, J., and Nao, K. Stuck in the Shallow
End: Education, Race, and Computing. The MIT Press, Cambridge, MA, 2008.
[2] Wing, J. “Educating Future Generations in Computing”, Computing Research
News, Mach 2003, p.3.
[3] Ericson, B. Armoni, M. Gal-Ezer, J., Seehorn, D., Stephenson, C. and Trees, F.,
Ensuring Exemplary Teaching in an Essential Discipline: Addressing the Crisis
in Computer Science Teacher Certification, CSTA, September 2008.
[4] Vesgo, J. “Enrollments and Degree Production in US CS Departments Drop
Further in 2006-2007”, Computing Research News, Volume 20, Number 2,
March 2008, p.4.
[5] Lazowska, E. “Computing Research and Human Resources: The Current
Situation”, CRA Computing Leadership Seminar, February 2005,
[6] Moskal, B., Lurie, D. and Cooper, S. “Evaluating the Effectiveness of a New
Instructional Approach”, Proceedings of the 35th ACM Technical Symposium on
Computer Science Education (SIGCSE ’04), March 2004, pp. 75-79.
[7] www.cs.cmu.edu/cs4hs/ Explorations in Computer Science for High School
Teachers
[8] www.csta.org Computer Science Teachers Association
[9] www.ncwit.org National Center for Women and Information Technology
[10] www.kean.edu/~cssc
[11] Cuny, J. “National Science Foundation Survey on Intro CS”, e-mail to all CSTA
members, April 15, 2009.
197
RECRUITMENT OF CS MAJORS THROUGH A
ABSTRACT
Declining enrollments in computer science are a cause of great concern. There
has been a 30% decline in enrollments in computer science bachelor
programs over this decade and more than a 50% decline in the enrollment of
women in computer science [1]. This paper describes a unique way of
attracting excellent students to the major by inviting students and their teachers
to a day of exploration and competition hosted by our college. The program
has demonstrated an increased awareness of computer science among the
students and faculty who attend the day-long event. By including teachers and
guidance counselors in the day’s events, we hope to give them a better
understanding of computer science curricula and careers to bring back to their
high schools.
INTRODUCTION
Student IMPACT (Students Interested in Mathematics and Problem-solving
unAware of Computing Talent) is a one day program in career exploration and
competition for Computer Science and Information Systems (CS/IS). The program is
designed to provide high school students with demonstrated academic talent, especially
in mathematics and problem-solving, an opportunity to explore some of the ways college
students and professionals think and work in CS/IS. This opportunity is made available
___________________________________________
*
Copyright © 2010 by the Consortium for Computing Sciences in Colleges. Permission to copy
without fee all or part of this material is granted provided that the copies are not made or
distributed for direct commercial advantage, the CCSC copyright notice and the title of the
publication and its date appear, and notice is given that copying is by permission of the
Consortium for Computing Sciences in Colleges. To copy otherwise, or to republish, requires a
fee and/or specific permission.
198
CCSC: Northeastern Conference
for students who have not yet experienced a computer science course and are undecided
about their academic and career goals. It gives participating students the chance to
investigate areas in which they have potential talent.
Purpose
The program grew out of the need to recruit more computer science majors. Recent
U.S. Department of Labor surveys indicate that the areas set to experience the most
growth from now until 2016 include computer technology, health services and social
services. The computer related industry is expected to experience rapid growth, adding
489,000 jobs between 2006 and 2016 [2]. These statistics coupled with the declining
enrollments put our country in a precarious technological position.
Furthermore many students indicate that they never considered a computer science
major because they were unsure what computer scientists did for a living. Or if they did
have an idea, it typically wasn’t a very appealing image. Additionally, exposure to
computer science during high school is a deciding factor in 33% of girls’ decision to
major in computer science [3]. Programming contests exist for those students who
already are experienced in computer science. This alternative contest gives the same
competitive spirit and exposure to the exploration of various areas of the computer
science field.
Participants
The program was originally designed for high school juniors and seniors enrolled
in or having completed Pre-Calculus, who have taken no computer programming courses.
We have since targeted the program for high school juniors as it seems that seniors may
have already decided on their course of study for college. We also want to encourage
students to take CS courses at their high school if they are available.
Additionally, the high schools are instructed that prospective participants in
IMPACT should be strong math students/problem solvers, should be “people persons”
and possess good communication skills. The teams are required to include at least two
female students in their team of four.
We invite all high schools from the four counties surrounding Siena College. The
invitations are addressed to a math teacher at each school. Through previous outreach
programs, our secondary mathematics education program and personal contacts, we are
able to send personalized invitations to almost every school. We believe this was an
important factor in running a well attended inaugural program. Subsequent programs
have also been well attended based on the success of the previous programs.
SESSIONS
The program consists of a set of short (25 minute) instructional sessions where
students learn about CS/IS topics. These sessions are followed by slightly longer (40 to
45 minute) activity periods where students work on some task(s) or solve problems
related to the material of the instructional sessions. Possible topics are drawn from areas
199
JCSC 25, 6 (June 2010)
Programming Activity
This is one of the first mini-lessons that the students encounter. It explains how
programming is just one aspect of computer science and details why it can be an
important and useful skill. Finally, a short (15 minute) tutorial is given in Alice. After
the lesson, the students go to the lab to create their own Alice animations.
Some of the incremental goals that the students are given, and scored on, include:
• Creating a world with specific objects
• Adding a specified number of objects to the scene
• Adding some evasive moves to the story. For example, add a spin move where
either one of the characters spins to avoid a jab or kick.
We have run this session at every competition and it is always well received. The
students enjoy the challenge, but also appreciate the creative aspect of the problems.
Automata Activity
At first appearance, automata would not seem to be an attainable concept in a 25
minute lesson, but after a short lesson students are asked to describe languages
recognized by given finite automata state diagrams. They are also asked to construct
automata to recognize specified languages.
Examples of activities for this session include:
• Construct a DFA for M3 where L(M3) = {w | w contains an even number of
0s}.
• Describe the language recognized by the finite state machine in figure 1.
200
CCSC: Northeastern Conference
Students work hard in this session and are successful in achieving most, if not all, of
the problems.
Graphics Activity
A short lesson on graphics enables students to complete an activity using Game
Maker software. One year, the students created a Pac-man game similar to figure 2.
They were given incremental tasks which served the dual purpose of scoring and guiding
them to the final basic game. An example of one of the incremental tasks was to make
the stars disappear and fun sounds play when Pac-man collides with them. When Pacman
collides with the ice cream cone, which marks the end of the maze, play a fun sound and
make Pac-man stop moving.
201
JCSC 25, 6 (June 2010)
DETAILS
Some of the details of the program are included so that our model can be adopted
by as many schools as possible. The event was held on a school day during school hours.
We choose to hold it during school hours to maximize participation among faculty and
students. The feedback we have received indicates that this arrangement works well.
The only constraint is that the schedule must be tight as some schools need the students
to return to their high school before dismissal.
The number of schools participating have varied from 9 (during a snowstorm) to 16
bringing an average number of 55 students and 25 faculty to campus for the day. It is
important that the faculty attend the instruction and activity sessions so that they may
learn about computer science and bring this information back with them to the classroom
and guidance office.
Schedule
A sample schedule is provided to demonstrate the orchestration of the day. The
students and faculty are divided into two groups (to fit into classroom and lab space).
Each of the 50 minute instructional sessions cover two topics. To facilitate the switching
of topics, and minimize downtime, the presenting faculty switch rooms instead of the
guests. This works well as we don’t need to wait for 30 teenagers to settle into new
rooms again. This is indicated in the schedule as E ö V and V ö E meaning that Drs.
V and E switch rooms to give the same instructional lesson to a different group of
students.
At the end of each instructional session, the four team members decide how to
divide and attack the problems. For example, in the Alice and automata sessions, two
team members work on each activity session. Both subteams earn points for their school
on their respective tasks.
202
CCSC: Northeastern Conference
While the students work during the first activity session, the faculty are free to
observe the students at work. Many of the faculty expressed an interest in having their
own teams and competing too! During the second activity session, faculty meet with a
diverse group of alums. We try to get a mix of gender, careers, grad students and
government vs. private sector jobs to represent the different possibilities of a major in
computer science. The students listen to this same group of alums during lunch.
8:45 – 9:35am Instructional Session I Instructional Session I Instructional Session I Instructional Session I
Eö V Vö E Eö V VöE
9:45 – 10:30am Activity Session I Activity Session I Free to observe Free to observe
11:40 – 12:20pm Activity Session II Activity Session II Alumni Panel/CS Info Alumni Panel/CS Info
Session Session
Figure 3: Sample schedule for the day's events
Budget
For the size of event that we run, the cost averages out to be approximately $2000.
The cost is shared between the Computer Science department and the school’s
Admissions department. The Computer Science department covers the costs of general
supplies, such as folders, CS department notepads, mailings and CDs (for Alice and
Game Maker software). Admissions pays the food costs and provides gifts for the faculty
to thank them for bringing their students. We obtain donations to give away as prizes to
the top three teams.
CONCLUSIONS
The program has been well received by the students and faculty attending an
IMPACT day. Several methods have been used to collect data about the students and
faculty perceptions about computer science before and after the contest.
203
JCSC 25, 6 (June 2010)
From these surveys, we have learned that all students plan on attending college/university
after high school, but very few intend to major in computer science.
We follow up by sending a subsequent survey to their residence several months
after the event to see if there has been any change in plans and/or interests. Sample
questions from this survey include questions about plans to take a computer science
course and intended major (if a senior).
Through these surveys, we have seen that the day has changed their perceptions of
computer science and several students have decided to take computer science courses.
One of the best comments from one of the students was “I just signed up to get out
of school, but I had a great time! I thought we would be sitting in front of a computer all
day, but this was much different than what I thought computer science was all about.”
Future Plans
This coming January will be the fourth IMPACT program at our college. After this
event, we plan to do a detailed analysis of the surveys that have been submitted by the
students and the faculty to determine the effectiveness of the program.
We would love for this type of program to be run at other schools to convey to
talented high school students, and their teachers, the types of things that they can do in
computer science.
REFERENCES
[1] CRA Taulbee surveys. Computing Research News, May 2000-2009.
[2] United States Department of Labor, Bureau of Labor Statistics, 2008,
www.bls.gov, retrieved November 19, 2009.
[3] Margolis, J and Fisher, A., Unlocking the Clubhouse: Women in Computing,
Cambridge, MA: MIT Press, 2003.
204
WRITING INTENSIVE AND WRITING EXTENSIVE: A
SCIENCE EDUCATION*
PANEL DISCUSSION
SUMMARY
The importance of writing in computing education is widely agreed upon. In
addition to the individual efforts [4], national curricular guidelines for both Computer
Science [1] and Computer Engineering [2] further underscore the importance of writing.
The former insists that, “computer science students must sharpen their…writing skills in
a variety of contexts—both inside and outside of computer science courses” [1]. The
latter is less specific, but no less emphatic about writing’s importance: “Graduates should
be able to communicate…ideas effectively in written form….” “This is necessary to
ensure that students have the ability to communicate discipline-specific content.” [2].
Furthermore, national professional accrediting bodies such as ABET have emphasized
the importance of integrating the teaching of effective written communication into CS
curricula. ABET requires that these skills be developed through computer science
___________________________________________
*
Copyright is held by the author/owner.
205
JCSC 25, 6 (June 2010)
courses. Clearly the ability to write well is a priority for the profession, yet fulfilling
these standards does become very challenging for individual teachers, programs, and
institutions, taking into account the technical nature of the discipline.
One major challenge is that despite the acknowledgment of the importance of
writing (94% agreement in a recent survey [3]), there is not necessarily agreement among
these individual educators, administrators, or programs as to what constitutes effective
teaching of writing. There is often resistance to adapting writing to CS courses; CS
faculty do not feel properly trained or skilled to manage and grade writing. Students
often think that writing is not part of a computer science course and do not put much
effort into the writing process. It takes a lot of time to explain to students the importance
of the development of writing skills. One way to overcome some of these issues is to
collaborate with faculty who specialize in writing—either within a given curriculum or
across various disciplines. In this panel we present two different models of
collaboration.
One model (Widener University) has emerged from a university requirement calling
for students to take a certain number of writing-enriched courses. Here, Computer
Science (CS) and English faculty members coordinate on course design and assessment
to incorporate writing as a means of teaching effective communication. The other model
(Quinnipiac University) has emerged from a university commitment to training all faculty
through a grant-funded Writing Across the Curriculum (WAC) program. In this context,
the collaboration between the CS and the English faculty members focuses on faculty
development and research on writing practices in CS. As a result of this collaboration,
and the Quinnipiac University faculty member's participation in the wider, WAC
program, writing as a pedagogical component is now used in all CS classes.
Active audience participation is encouraged. The panel will provide an opportunity for
attendees to share their views and to exchange knowledge during a question-and-answer
period that will follow individual presentations.
206
CCSC: Northeastern Conference
students’ presentations, providing global written feedback for the students’ use, and
meeting with the CS faculty member for discussion of student performance.[5,6,8]
In addition to presenting the results of this collaboration, the collaboration will be
discussed in the context of writing and communicating in the disciplines, and specifically
the implications of WID for the teaching of written and oral communication in the field
of computer science. Our collaboration uses WID strategies to foster a more writing
intensive classroom for active student learning, and to achieve the combined learning
outcomes of mastering CS content and strengthening communication skills in preparation
for professional life.
207
JCSC 25, 6 (June 2010)
3. BIOGRAPHIES
Yana Kortsarts is an Associate Professor of Computer Science at Widener
University. She has been actively involved in integration of writing and oral enhanced
components into undergraduate computer science curriculum since 2005. She has been
successfully collaborating with English colleague Janine Utell since 2007. She is a co-
author of several papers on development of written and oral communication skills in
undergraduate computer science curriculum.
Mark Hoffman, a Professor of Computer Science at Quinnipiac University, has been
an active member of the highly successful writing across the curriculum (WAC) program
at Quinnipiac University since 2003. Mark has been trained as WAC trainer and has
conducted WAC writing workshops at Quinnipiac University and other institutions. He
presented papers co-authored with Timothy Dansdill at SIGCSE and CCSCNE. Mark
participated in a panel at the 9th International WAC Conference, May 2008, Austin, TX.
Timothy Dansdill, an Associate Professor of English at Quinnipiac University, is the
coordinator of its First Year Seminar course: "The Individual in Community." He has
been actively associated with QU's Writing Across the Curriculum program since 2002 -
both as a faculty trainer and as the chief organizer of its bi-annual conference (2006;
2008). He is a long time co-investigator with colleague, Mark Hoffman, on the history
of writing practices and programs in Computer Science education.
Janine Utell is an Associate Professor of English and Writing Center Faculty
member at Widener University. She has been active in the university's writing-in-the-
disciplines program since she joined the faculty in 2003, collaborating with colleagues
in Psychology, History, Chemistry, and Computer Science on teaching and research as
well as facilitating faculty development opportunities. She has presented at numerous
national and international conferences on WID pedagogy and its relationship to general
education and critical thinking.
Adam Fischbach is an Assistant Professor of Computer Science at Widener
University and has been actively involved in the department’s efforts to integrate oral and
written communication skills into the computer science curriculum. He recently co-
authored the paper "Developing Oral and Written Communication Skills in
Undergraduate Computer Science and Information Systems Curriculum" with Yana
Kortsarts and Janine Utell.
REFERENCES
[1] Association for Computing Machinery and Institute of Electrical and Electronics
Engineers Computer Science Joint Task Force, Computing Curricula 2001
[2] Association for Computing Machinery and Institute of Electrical and Electronics
Engineers; Joint Task Force on Computer Engineering Curricula, Curriculum
Guidelines for Undergraduate Degree Programs in Computer Engineering, 2004
[3] T. Dansdill, M.E. Hoffman, and D.S. Herscovici, (2008), “Exposing Gaps,
Exploring Legacies: Paradoxes of Writing Use in Computing Education,” JCSC
(23,5) pp 24-33
208
CCSC: Northeastern Conference
[4] M.E. Hoffman, T. Dansdill and D.S. Herscovici, “Bridging Writing to Learn to
Writing in the Discipline in Computer Science Education,” SIGCSE’06, March
1-5, 2006, Houston, TX
[5] Kortsarts, Y, Morris, R, Utell, J, (2008), “Interdisciplinary Introductory Course
in Bioinformatics”. In The Proceedings of the Information Systems Education
Conference 2008, v 25
[6] Kortsarts, Y, Rufinus, J, (2006), “Integrating a Project Component into the
Introductory Computer Science and Information Systems Curriculum”. The
Proceedings of the Information Systems Education Conference 2006, v 23
[7] Dansdill, T. (2006), “I Can’t Read/Write This!: Faculty Resistance to WAC
Training,” 8th International Writing Across
the Curriculum Conference, Clemson University
[8] Kortsarts, Y, Fischbach, A, Rufinus, J, Utell, J and Yoon, S C, (2009),
“Developing Oral and Written Communication
skills in Undergraduate Computer Science and Information Systems
Curriculum”. In The Proceedings of the Information Systems Education
Conference 2009, v 26
209
TEACHING VIRTUAL REALITY TO UNDERGRADUATES*
TUTORIAL PRESENTATION
Daniel Cliburn
Department of Computer Science
The University of the Pacific
Stockton, California 95211
(209) 946-2093
dcliburn@pacific.edu
ABSTRACT
Virtual Reality (VR) is a contemporary area of research with many exciting
applications in simulation and training. The National Academy of Engineering recently
named “Enhance Virtual Reality” as one of fourteen “Grand Challenges for Engineering”
(http://www.engineeringchallenges.org/) and many students find the subject to be exciting
and engaging. However, VR receives little or no attention in most undergraduate
Computer Science programs. This tutorial will have two objectives. The first will be to
introduce attendees to the field of VR through several freely available online lesson
modules, and attendees will be shown how the modules are actually being integrated into
a variety of existing courses. The second tutorial objective will be to describe two
immersive stereo display systems: a Head-Mounted Display (HMD) unit and a stereo
display wall.
___________________________________________
*
Copyright is held by the author/owner.
210
ACCESSIBLE ROBOTICS AND INTELLIGENT SYSTEMS FOR
POSTER SESSION
Tom Armstrong
Department of Mathematics and Computer Science
Wheaton College
Norton, MA 02766
508.286.5658
tarmstro@wheatoncollege.edu
___________________________________________
*
Copyright is held by the author/owner.
211
JCSC 25, 6 (June 2010)
approaches focus on specific pairings of disciplines like Computer Science and Art [10]
or Computer Science and Mechanical Engineering in specialty courses [6, 7]. However,
most contact with non-major students happens in a CS0-style course and often some
portion of the content is devoted to AI [2]. Or, the course has content tailored for a
specific other discipline [3]. Particularly at small colleges, there are few opportunities
to offer courses for non-majors. Intelligent Systems is distinct in form and purpose from
these other offerings for two reasons: 1) the course content is a rigorous technical
introduction to robotics and artificial intelligence without prerequisites; 2) it serves as a
Computational Thinking (CT) [9] course targeted at students in the social sciences with,
we argue, a compelling set of topics with greater appeal than a traditional or targeted CS0
offering.
The course is designed in a way that it is accessible to students with no prior
technical background. The first half of the course is a rigorous introduction to robotics
beginning with fundamental paradigms and then adding components to build larger
systems. We discuss and experiment with effectors and actuators, evaluate kinematics
and methods of locomotion, and explore sensors. Students gain hands-on learning
experience using iRobot's Create, an inexpensive programmable robotics platform, and
examining other robotic systems. Students are tasked with some programming tasks (e.g.,
wall following) and are expected to program the robots using a modified version of Alice
[8] and complete written assignments (e.g., designing and analyzing a robot for a specific
task).
The second half of the course builds on students' knowledge of sensing and acting
in autonomous robotic systems to focus on planning. We begin with discussions of
knowledge representation and single- and multiplayer games. We spend several weeks
on approaches to natural language processing and machine translation. Students use their
own second language skills and commercially available software to test and evaluate
Turing test contestants and machine translation systems. We cover emergent behaviors
of complex systems in the context of robot swarms and artificial life. The semester is
rounded out with a discussion of robotic ethics and the use of autonomous vehicles in
military and humanitarian domains. Each topic is accompanied with relevant literature
and significant class discussion.
During the second half of the semester, student groups propose and implement a
project. Students have access to a variety of robotics platforms (e.g., LEGO NXT, iRobot
Create, and Arduino kits), other computing resources outside of class, and Computer
Science majors with programming experience. One group built a decision tree learning
system for a game of “20 Questions” about Wheaton's campus. Another group
programmed a swarm of square dancing iRobot Creates and took extended-exposure
photographs of the swarm. Finally, a group built an Arduino-powered version of
Braitenberg's third vehicle, Love.
REFERENCES
[1] Z. Dodds, L. Greenwald, A. Howard, S. Tejada, and J. Weinberg. Components,
curriculum, and community: Robots and robotics in undergraduate AI education.
AI Magazine, 27(1):11, 2006.
212
CCSC: Northeastern Conference
213
ROLE OF THE PROGRAMMING ASSIGNMENT SUMMARY AS
PERFORMANCE*
POSTER SESSION
Karina V. Assiter
Department Of Computer Science
Wentworth Institute of Technology
Boston, MA 02155
assiterk@wit.edu
ABSTRACT
Homework assignments in a first or second year undergraduate programming
course (CS1 - CS3) are essential for skills development; instructors who assign
homework in CS1 - CS3 would like submitted solutions to both accurately
reflect student performance, and to indicate the level of student understanding
of course topics. Unfortunately, these are hard to gage when students
increasingly have access to solutions on the internet and are frequently
encouraged (for sound pedagogical reasons) to work on assignments in groups
or pairs. Questions that naturally arise include: a. how much of a students'
work is original, in other words not acquired from a friend or an open-source
repository, and b. how much did an individual student, working in a group or
pair, contribute to the final solution. To address these assessment concerns,
we incorporated a summary into the list of programming assignment
requirements. Though it serves many roles, including as a vehicle for analysis
of course topics, it's most important role is as qualitative measure of an
individual students' performance, which can then indirectly inform their final
quantitative assessment. This poster describes this assignment summary:
including its original purpose, example analysis and summary questions,
textual analysis of student responses, and, finally, correlations between
responses and student assignment scores.
___________________________________________
*
Copyright is held by the author/owner.
214
CCSC: Northeastern Conference
INTRODUCTION
In the CS1 - CS3 foundation courses, students have to be able to develop basic
software development skills through programming based homework. As instructors, we
would like submitted solutions to reflect student performance, as well as to indicate the
level of student understanding of course topics. This is difficult to gage when students
have access to software repositories on the internet or when work together in groups or
pairs; graders who assess submitted work have to evaluate: a. how much of it is original,
and b. how much did an individual student contribute to the final team solution.
Plagiarism
For every programming assignment there are likely to be student solutions (or
sub-solutions) that were acquired either from an electronic source, or from another person
(friend or paid programmer); as the author states in [1] "the store of solution code out on
the internet keeps getting better. The search engines are getting better at finding it".
Numerous authors have highlighted both the methods in which students cheat, as well
electronic and traditional methods of detecting plagiarism [2, 3, 4]. One author suggests
that, since students are able to subvert detection strategies, academics should also raise
awareness among students about academic integrity [5].
Fuzzy Collaboration
A more complex problem is assessing individual performance when students are
encouraged to collaborate on assignments (in pairs or teams) [6]. There is increasing
evidence that students benefit from peer-based collaboration [7, 8]. Unfortunately, there
is a fine line between collaboration, where all students contribute to the final assignment
solution, and cheating, where either a) one (or more) student(s) don't contribute fully to
the pair /team solution or where, b) students alternate assignments ("I will do assignment
1 and you do assignment 2"). As there is only one final solution, this type of cheating,
which we term "fuzzy collaboration", is hard to detect (let alone prove); we were only
able to discover it in cases where either a student admitted to it verbally, or when one of
the students (in a pair) had little (or no) understanding of the problem concepts.
ASSIGNMENT SUMMARY
To address our assessment concerns in CS2 and CS3, we incorporated a summary
into the programming assignment requirements. Though we were initially concerned
with evaluating student performance, we discovered that we could also use the summary
to:
• Require Analysis of the topic that the assignment covered
• Confirm that students gained an understanding of assignment concepts.
• Verify that collaborating students each contributed to the assignment
• Determine the complexity level (perceived by students)
• Gathering feedback about assignment improvements.
215
JCSC 25, 6 (June 2010)
The questions on the summary varied depending on the course and the assignment,
but most include some form of the following:
1. Describe how you approached and solved the problem. If you worked in pairs, how
did you make sure that each student contributed?
2. Where did you have trouble? How did you move forward? What topics still confuse
you?
3. What did you learn from this assignment? (be specific)
Student responses
In this section of the poster, we include: questions from students' assignments,
student responses from selected assignment/course combinations, observations about how
the grader interpreted these responses and the score that the student received on the
associated work.
CONCLUSIONS
In this section of the poster, we summarize correlations between student responses
and assignment scores. As this is a qualitative assessment, we caution against using
responses as anything more than a road map for subsequent assignment evaluation.
REFERENCES
[1] Parlante, N., Cheating and the Internet, inroads - SIGCSE Bulletin, 39 (4), 29 -
30, 2007.
[2] Daly, C. and Horgan, J., Patterns of Plagiarism, SIGCSE'05, St. Louis, Missouri :
ACM, 383 - 387, 2005
[3] Harris, J K. Plaigiarism in computer science courses, Proceedings of the
Conference on Ethics in the computer age, 133 - 135, 1994.
[4] Mann, S. and Frew, Z., Similarity and originality in code: plagiarism and normal
variation in student assignments, Proceedings of the 8th Australian conference
on computing education. pp. 143 - 150, 2006.
[5] Joyce, D. Raising awareness about academic integrity, SIGCSE Bulletin, 38 (3),
2006.
[6] Carter, J., Collaboration or Plagiarism : What happens when students work
together, iTiCSE '99, 52 - 55, 1999.
[7] Baer, J., Grouping and Achievement in Cooperative Learning, College
Teaching, 51, (4), 169 - 174 , 2003.
[8] Werner, L., Hanks, B. and McDowell, C. Pair programming helps female
computer science students. Journal on Educational Resources in Computing, 4,
2004.
216
CCSC: Northeastern Conference
[9] Dick, M, et al., Addressing Student Cheating: Definitions and Solutions. SIGCSE
Bulletin, 35, (2), 172 - 184. 2003.
217
TEACHSCHEME, REACHJAVA: INTRODUCING OBJECT-
SYNTAX*
POSTER SESSION
Stephen Bloch
Math/CS Dept
Adelphi University
Garden City, NY 11530
Phone 516-877-4483
Fax 516-877-4499
E-mail sbloch@adelphi.edu
ABSTRACT
This poster presentation summarizes the major pedagogical innovations of the
TeachScheme!, ReachJava approach, reports on the results of our past faculty workshops
(particularly the adoption of our approach by respected colleges, universities, and high
schools), and invites visitors to a free (NSF-funded) faculty workshop in Summer 2010.
Several textbooks and other instructional materials using this approach, e.g. (Bloch,
2010), (Felleisen F. F., 2008), (Felleisen F. F., 2010), (Felleisen F. F., 2001), (Sperber,
2009) will be available for examination.
A first course in computer programming should not be about the current “hot”
language in industry – which may be obsolete by the time today’s freshmen graduate –
but rather about lasting, transferable concepts and practices of good programming. Yet
beginning programming students spend much of their time wrestling with the language,
and often mistake that as the subject of the course. The programming language distracts
from the course material; on the other hand, students need a real language to write real
programs that really run on real computers.
We resolve this dilemma by starting in a language with simple, consistent syntax
and semantics, currently a subset of Scheme (omitting I/O, assignment, sequence, higher-
order functions, and local definitions). Our pedagogically-oriented IDE enforces this
subset, and gives error messages appropriate to the current subset, but allows students as
they outgrow each subset to advance to a larger one with a few mouse clicks. Students
become comfortable with fundamental programming concepts — variables, function
___________________________________________
*
Copyright is held by the author/owner.
218
CCSC: Northeastern Conference
composition, function definition, parameter passing, data types, design for reuse and
modifiability, conditionals, fields, polymorphism, self-reference and recursion, functional
abstraction, event-driven programming, model/view separation, etc. — in this sheltered
environment before encountering the same concepts in the more bewildering world of
Java, C++, etc.
Simultaneously, students are trained in a step-by-step design recipe for software
development: a series of concrete questions, with concrete products at each stage:
1) Identify the purpose, inputs, and outputs of the program (function, method,
whatever) to be written;
2) Identify (and, if necessary, define) data types relevant to the problem at hand;
3) Write examples or test cases of how the program will be invoked, in legal syntax
and accompanied by expected results, using the data types from step 2 as a guide;
4) Write a program skeleton, the syntax to define a function with the name and
parameters chosen above;
5) Write an inventory of available and likely-to-be-needed expressions, based on
parameter names and their data types;
6) Choose and combine items from the inventory to form a complete program body
(the hardest part, but in practice step 5 often does most of the work);
7) Test the program by running it on the examples from step 3.
We emphasize data types throughout, not only as a fundamental concept, but as an
invaluable tool in coding: to every data type correspond both a natural coding pattern,
which provides a rough draft of the code and helps students avoid “blank page
syndrome”, and a natural testing pattern, which provides guidance in building test suites.
In particular, recursion is introduced as simply the application of already-learned coding
patterns to a self-referential data type. The concrete methodology also provides a handy
grading rubric that shows students that every step matters, not only the coding.
For non-majors, we aim to convey important programming concepts and
methodology in one language. For CS majors, the course switches from Scheme to Java
late in the first semester or between first and second semesters. The Java stage is not
independent, but builds on and reinforces the programming concepts and methodology
already learned in Scheme, with explicit discussion of similarities, differences, and the
continued applicability of the concepts and methodology. Students learn to apply the
same test-driven, step-by-step design recipe in Java that they’ve been using in Scheme.
The result is a student who, after a year of coursework, can approach programming
problems in a principled manner (not “hack it until it works”), with understanding and
perspective.
Although we currently use Scheme as a first language and Java as a second, the
approach is applicable to other languages. Whatever the language, however, we believe
the first exposure to programming should be functional rather than imperative/
sequential/procedural: not only do functional programs have simpler semantics, relying
on the familiar model of algebraic expression evaluation rather than a load/store machine
model, but it’s enormously easier to write test cases for functional programs than for
stateful ones. Stateful testing, along with stateful programming, can be introduced late
in the first semester after students have thoroughly internalized functional techniques.
219
JCSC 25, 6 (June 2010)
Our approach has been adopted at a number of colleges and universities, including
Rice, Northeastern, the University of Chicago, Northwestern, the University of Utah, Cal.
Poly San Luis Obispo, Vassar College, and the University of Delaware, as well as dozens
or hundreds of high schools. We’ll be offering free (NSF-funded) one-week workshops
in Summer 2010 at four locations around the U.S.
REFERENCES
Bloch, S. (2010). Picturing Programs: an Introduction to Computer Programming.
London, UK: College Publications.
Felleisen, F. F. (2010). How to Design Class Hierarchies. Boston, MA, US: self.
Felleisen, F. F. (2001). How to Design Programs. Cambridge, MA, USA: MIT Press.
Felleisen, F. F. (2008, 1 1). How to Design Worlds: Imaginative Programming in
DrScheme. Retrieved 1 12, 2010, from How to Design Worlds: Imaginative
Programming in DrScheme: http://world.cs.brown.edu
Sperber, M. (2009, 1 1). DeinProgramm - Programmieren für alle. Retrieved 1 12,
2010, from DeinProgramm - Programmieren für alle: http://www.deinprogramm.de/
220
THE COMPUTING ONTOLOGY AND ITS IMPLICATIONS IN
COMPUTING EDUCATION*
POSTER SESSION
ABSTRACT
Ontology of all of the computing disciplines is available for use in a number
of applications. It describes various disciplines, topics, subtopics that belong
to the domain of computing, including computer science, computer
engineering, information systems, information technology, software
engineering, and the many very specialized areas that are emerging.
___________________________________________
*
Copyright is held by the author/owner.
221
JCSC 25, 6 (June 2010)
objective representation of the entirety of the computing domain so that curriculum and
course developers can make conscious choices about what to include and what to exclude
from any particular effort.
KEYWORDS
Ontology, education, relationship, overlaps.
Project Goals
An important task of the current work is to provide a usable, visible interface to the
Ontology. This visualization provides a graphical representation of the ontology that is
essential for effective understanding of bridges between domains. The poster will display
the current state of the visualization effort and seek input from conference attendees about
the most useful and meaningful representations.
The Computing Ontology also provides a controlled vocabulary to be used as an
indexing tool in collections of resources for computing education. Examples in the
CITIDEL project, implemented in DSpace, and the Ensemble project, built with Drupal,
will be illustrated on the poster.
The top level nodes for the Computing Ontology are these:
AlgorithmsAndTheory
ComputerHardwareOrganization
ComputingAndNetworkSystems
ComputingEducation
ComputerGraphics
DiscreteStructures
EthicalAndSocialConcepts
HistoryComputing
InformationTopics
IntelligentSystems
MathematicalConnections
ProgrammingFundamentals
ProgrammingLanguages
SecurityTopics
SystemsDevelopment
SysemsAndProjectManagment
UserInterface
CONCLUSIONS
The content of the ontology comes from a comprehensive survey of curriculum
documents, the ACM Computing Classification System, and other taxonomies of
computing topics. These were reviewed, edited, and merged by people with expertise in
the individual topic areas. Further input is welcome and revisions will be an ongoing
process because the field itself changes. The poster will expand several of these areas,
222
CCSC: Northeastern Conference
show the visualization efforts, and illustrate the use of the ontology for curriculum review
and development.
REFFERENCES
[1] The Ontology project can be tracked at
http://what.csc.villanova.edu/twiki/bin/view/Main/OntologyProject
223
ENSEMBLE: ENRICHING COMMUNITIES AND
POSTER SESSION
ABSTRACT
Ensemble is a new NSF NSDL Pathways project working to establish a national,
distributed digital library for computing education. Ensemble is building a distributed
portal providing access to a broad range of existing educational resources for computing
while preserving the collections and their associated curation processes. CITIDEL and
CSTA are two of the major educational resources that are part of this expanding
___________________________________________
*
Copyright is held by the author/owner.
224
CCSC: Northeastern Conference
REFERENCES
[1] Impagliazzo, J., L. Cassel, and J.A.N. Lee, ICT and digital libraries, Proceedings
of the 7th annual conference on Innovation and technology in computer science
education, ACM: Aarhus, Denmark, 2002.
[2] Goncalves, M.A., and et al., The XML Log Standard for Digital Libraries: Analysis,
Evolution, and Deployment, Third ACM/IEEE Joint Conference on Digital
Libraries, JCDL Houston, TX: ACM Press, 2003.
225
JCSC 25, 6 (June 2010)
[3] Klas, C and et al., An experimental framework for comparative digital library
evaluation: the logging scheme, 6th ACM/IEEE-CS Joint Conference on Digital
Libraries, Chapel Hill, NC USA: ACM Press, 2006.
[4] Fox, E.A., Advancing Education through Digital Libraries: NSDL, CITIDEL, and
NDLTD, Digital Library: IT Opportunities and Challenges in the New Millennium,
Beijing, China, 2002.
226
CSTA SOURCE: A WEB REPOSITORY OF K-12 COMPUTER
POSTER SESSION
ABSTRACT
The Computer Science Teachers Association is a membership organization
that supports and promotes the teaching of computer science and other
computing disciplines. The project is about designing and maintaining CSTA
portal which is a web repository of K-12 Computer Science Teaching and
Learning Materials. It is a collection of materials developed specifically for
computer science and information technology education.
GENERAL TERMS
Design
KEYWORDS
Digital library, computing education
___________________________________________
*
Copyright is held by the author/owner.
227
JCSC 25, 6 (June 2010)
INTRODUCTION
CSTA Source is a Web Repository of K-12 Computer Science Teaching and
Learning Materials which is built to reach the people across the full range of audiences
for computing education. It contains materials developed specifically for computer
science and information technology education. The repository is kept updated with the
recent materials which are reviewed by the administrators before adding them to insure
that they are comprehensive, relevant, age-appropriate and pedagogically sound.
The repository content is organized as Communities and sub communities. Within
each community are a number sub communities and collections. Each collection has a
number of items relating to the collection, which can be in any format. The repository
provides the flexibility to accommodate differing needs of communities by allowing them
to decide on policies such as: who contributes content, whether there will be a review
process, who will have access, workflow - reviewing, editing, metadata, management of
collections. The CSTA web repository is customized to include new features to address
the needs of K-12 teachers and students. Some of the recent enhancements include the
ability of users to comment and give ratings to the resources in the repository, adding a
counter which counts the number of visits to the K-12 repository, adding a counter which
counts the number of downloads of individual resources in the repository, dividing users
into groups and providing different access privileges to people in the different groups.
Project Goals
! Building a web portal for CSTA to provide access to a broad range of existing
educational resources for computing while preserving the collections and their
associated curation processes.
! Expansion of CSTA Source web repository with curriculum and learning materials
specifically related to K-12 computer science.
! Customizing the web repository to make it more intuitive for its users.
! Encouraging contribution, use, reuse, review and evaluation of educational materials
at multiple levels of granularity.
! Creating and disseminating materials to support the implementation of the
curriculum. Facilitate sharing of projects/ideas among members.
! Building a strong community of computing educators who share their knowledge.
! Providing teachers with opportunities for high quality professional development.
POSTER CONTENT
The poster will provide an overview of the CSTA project work with a particular
focus on ways to build a strong community of computer science educators who share their
knowledge. The various aspects of our project include: (1) making various enhancements
to the web repository by adding new features, (2) defining appropriate metadata and
methods for indexing computing resources - including using an ontology to describe
computing topics, (3) instrumenting the portal so that we can track use and reuse of
resources (so that faculty can easily get metrics analogous to citation counts for the
228
CCSC: Northeastern Conference
educational resources that they create), (4) integrating social software into the portal, (5)
providing access to resources at multiple levels of granularity,.
ACKNOWLEDGEMENTS
CSTA project is funded by ACM and NSF (National Science Foundation).
REFERENCES
[1] Computer Science Teachers Association
http://www.csta.acm.org/About/sub/PurposeAndGoals.htm
[2] CSTA portal http://csta.villanova.edu
229
A WEB DESIGN & MULTIMEDIA DEGREE WITH A TWIST*
POSTER SESSION
The education of a technical student in the area of web design is often 'not a pretty
sight'. They adapt to the skills but do not acquire the 'design' aspects necessary to make
a website both functional AND attractive.
Why not take a talented student who has mastered design and add the skills of Web
Development to their repertoire?
The Bachelor's degree in Web Design and Multimedia was designed as a completion
degree and focuses on attracting students with Associates’ degrees in graphic design.
These students have proven their ability to function well in their respective discipline and
also have achieved academic recognition by already completing one degree.
This student may be a recent graduate or may be already out 'working in the field'.
The degree delivery is done 'online' allowing for both situations. Many graphic artists are
finding that the print medium is no longer sufficient for their career goals. Additionally
they may need a Bachelor's Degree to progress within their organization. This degree
program achieves both goals.
Students will be trained to combine artistic vision with technical skill in order to
design and computerize environments where different sources of information (text,
graphics, moving images and sound) work together. The 2-year completion degree will
compliment the student’s associate degree without duplicating the area they studied.
Three of the courses are based on the CIW- Certified Internet Webmaster industry
certification. Students may choose to sit for the 2 exams necessary to fulfill the Associate
Design Specialist certification at the end of their first year of study. Vendor-neutral
certification can be a differentiating factor for a professional who is looking to advance
in the IT job world. To a hiring employer, not only does a certification provide evidence
of an individual's familiarity with a particular technology or practice. It also demonstrates
___________________________________________
*
Copyright is held by the author/owner.
230
CCSC: Northeastern Conference
initiative on the part of the applicant because he or she has invested the extra time and
effort to become certified. In turn, employers often pay certified employees more than
they pay non-certified employees.
The curriculum also includes client and server side scripting as well as device
development. Students will gain project management skills as they work on real projects
throughout their degree coursework which will culminate with a capstone Senior Project
experience.
According to Diana Middleton, author of a recent article published in the Wall Street
Journal, "Career experts say the key to securing jobs in growing fields will be coupling
an in-demand degree with expertise in emerging trends. For example, communications
pros will have to master social media and the analytics that come with it; nursing students
will have to learn about risk management and electronic records; and techies will need
to keep up with the latest in Web marketing, user-experience design and other Web-
related skills." She also states, "More than two million new technology-related jobs are
expected to be created by 2018, according to the BLS. Jobs that are expected to grow
faster than average include computer-network administrators, data-communications
analysts and Web developers."1
The Bureau of Labor Statistics, www.bls.gov, predicts "computer applications
software engineers are expected to grow rapidly from 2008 to 2018. Expanding Internet
technologies have spurred demand for these workers, who can develop Internet, intranet,
and Web applications. Demand for Web administrators and Web developers will also be
strong. More of these workers will be needed to accommodate the increasing amount of
data sent over the Internet, as well as the growing number of Internet users. In addition,
as the number of services provided over the Internet expands, Web administrators and
developers will continue to see employment increases."2
In the area of graphic design, the Bureau of Labor Statistics states, "employment
is expected grow about as fast as average. Keen competition for jobs is expected;
individuals with Web site design and animation experience will have the best
opportunities. Employment of graphic 1. http://online.wsj.com/article/
SB10001424052748703278604574624392641425278.html?
mod=rss_Today%27s_Most_Popular 2. http://www.bls.gov/oco/ocos305.htm designers
is expected to grow 13 percent, as fast as the average for all occupations from 2008 to
2018, as demand for graphic design continues to increase from advertisers and computer
design firms. Moreover, graphic designers with Web site design and animation
experience will especially be needed as demand increases for design projects for
interactive media—Web sites, mobile phones, and other technology. Demand for graphic
designers also will increase as advertising firms create print and Web marketing and
promotional materials for a growing number of products and services. Growth in Internet
advertising, in particular, is expected to increase the number of designers. However,
1
http://online.wsj.com/article/
SB10001424052748703278604574624392641425278.html?
mod=rss_Today%27s_Most_Popular
2
http://www.bls.gov/oco/ocos305.htm
231
JCSC 25, 6 (June 2010)
growth may be tempered by reduced demand in the print publishing, where many graphic
designers are employed."3
The above statistics further validate the need for combining the skill sets. Colleges
are under pressure to design innovative curriculum offerings that will prepare students
for the new jobs and promising career paths that are expected to emerge in the next few
years. Web and interactive media graduates should continue to enjoy excellent job
prospects as the expanding integration of Internet and interactive media technologies
results in a growing need for specialists who can develop and support Internet, intranet,
and interactive media applications.
3
http://www.bls.gov/oco/ocos090.htm
232
COMPUTER GRAPHICS TAUGHT BY BUILDING A
RENDERING ENGINE*
POSTER SESSION
Paul E. Dickson
Hampshire College
School of Cognitive Science
893 West St.
Amherst, MA 01002, USA
(413) 559-5861
pdickson@hampshire.edu
ABSTRACT
We have created a curriculum for a computer graphics course that teaches computer
graphics through the implementation of a ray-tracing rendering engine. Students begin
the semester by building a 2D ray-tracer and then shifting it into 3D. By the end of the
semester they have implemented a rendering engine capable of handling 3D objects with
point and ambient light sources.
The premise of this course is that students gain a greater understanding of the
concepts behind computer graphics by implementing them than by simply using them in
a commonly available graphics language such as OpenGL. In this course students must
apply the information taught about how ray-tracing works in order to create each week’s
assignment. Each assignment builds on the previous assignments and leads to the creation
of the total rendering environment.
Students build the engine in C++ and use it to implement an object-oriented design.
The overall structure of the engine is defined by library header files given with each
assignment. Specifying the basic structure of the code makes it possible to build a test
suite of images that can be used to test each student’s engine. Building the renderer also
helps students to see how different components of a ray-tracer interact and to better
understand graphics.
Students are required to work in pairs for this course. The reason for this is twofold:
first, the assignments are too large for a single individual to handle easily; second, it is
good practice for them to learn to work with another person while coding.
___________________________________________
*
Copyright is held by the author/owner.
233
JCSC 25, 6 (June 2010)
The curriculum has been used once so far and the results are positive. One-third of
the student completed all assignments for the course successfully and two-thirds made
significant progress on the material. All students gained a good working knowledge of
ray-tracing.
One of the real successes of this course was how much better students programmed
after the semester was completed. In classes taught since the semester of this course, all
of the students from this course have shown and expressed greater confidence in their
programming and ability to handle large assignments. The course greatly improved their
ability to debug code. Students found this course to be difficult but did not get
discouraged.
Anyone interested in teaching this course or one similar can find the material
pertaining to it at http://helios.hampshire.edu/~pedcs/classes/cs209Spring09/index.html.
234
THE BENEFITS OF USING SCRATCH TO INTRODUCE BASIC
CLASSROOM*
POSTER SESSION
Patrice Gans
The Fraser-Woods School
173 South Main Street
Newtown, CT 06470
203-426-3390
pgans@fraserwoods.com
Computer programming is traditionally reserved for the high school classroom. The
majority of students often take their first programming course as a high school junior or
senior as many high level mathematical concepts are prerequisites for the class.
Consequently class sizes are shrinking as high school students find themselves
overwhelmed with course options and intimidated by the rigor of the computer
programming curriculum.
Recognizing that the key to attracting students is to grab their attention at an earlier
age, the Lifelong Kindergarten group at the MIT Media Lab in collaboration with UCLA
Graduate School of Education and Information Studies developed Scratch. Scratch, a new
graphical programming language, was created specifically to attract a nontraditional
student population, those students who might not have ever imagined themselves as
programmers. With this goal in mind, the developers sought to construct a new approach
to programming. By taking advantage of recent advances in computing power and
interface design the designers of Scratch were able to create a programming language that
is more engaging and accessible for children and teens. The program enables students,
as young as six, to create interactive stories, games, and animations which they can then
share with one another over the Internet through the MIT Scratch website
(http://scratch.mit.edu).
Over the last year and a half, I have been teaching Scratch in my computer classes
to students, ages seven to thirteen. My experience with this age group is that the
overwhelming majorities of children quickly adapt to the Scratch environment and rise
to the challenge of creating their own programs. The students find the Scratch language
___________________________________________
*
Copyright is held by the author/owner.
235
JCSC 25, 6 (June 2010)
236
CREATING THE TECHNOLOGICALLY SAVVY K-12
TEACHER*
POSTER SESSION
The ubiquitous nature of computer science has become a dominant form of cultural
pedagogy that both youth and, to a lesser degree, adults are currently engaged. computer
applications, even relatively widely available ones like YouTube, have, to a large degree,
changed how modern society learns. Each day, we see computers being used in ways that
creatively enhance educational opportunities. For example, social networking sites are
helping students connect with their peers to complete homework. Many educational
institutions routinely use intranet sites and classroom management systems to share
course materials. Internet tutorial videos covering nearly all high school subjects flourish
on YouTube and Google Video. Innovative and creative educational computer
applications abound. Yet, educational approaches harnessing these resources are
relatively limited. A technologic disconnect exists between these applications and
teachers who routinely do not use them. To address these issues we created a course
within our Teachers on Sabbatical program that give teachers the tools and skills they
need to integrate computer science into their teaching and curricula.
The Teachers On Sabbatical program at the College of Staten Island is a new and
unique program tailored toward professional development of in-service teachers during
their sabbatical year. Program focus has been to increase teacher awareness of new and
relevant educational practices. To this end, teachers were exposed to a breadth of
educational techniques and issues, including a focused approach to computer science in
the classroom. Community building was encouraged using team projects to foster
relationships that extended beyond the scope of the program. A core course in this
program was focused on giving teachers a breadth of experience in education related
computer applications, internet skills, and programming using games and robotics. The
basis for the course curriculum was to introduce teachers to computer software, hardware,
___________________________________________
*
Copyright is held by the author/owner.
237
JCSC 25, 6 (June 2010)
238
INTEGRATING MERKLE-HELLMAN KNAPSACK
SCIENCE CURRICULUM*
POSTER SESSION
Yana Kortsarts
Computer Science Department, Widener University, Chester, PA
Tel: 610-499-4367
URL: http://www.cs.widener.edu/~yanako
ykortsarts@mail.widener.edu
Yulia Kempner
Computer Science Department, Holon Institute of Technology, Holon, Israel
Tel: 972 - 3-5026739
URL: http://www.hit.ac.il/departments/computers/staff/yuliak/yuliak.htm
yuliak@hit.ac.il
ABSTRACT
In classical symmetric or private-key cryptosystems the encryption and decryption
keys are either the same or can be easily found from each other. A new type of
cryptosystem, call a public-key cryptosystem was invented in the 1970s. In a public key
cryptosystem the fact that one knows how to encrypt the message does not mean that it
can be easily decrypted. One of the earliest public-key cryptosystem was proposed by
R.C. Merkle and M.E. Hellman in 1978. The Merkle-Hellman cryptosystem is based on
the subset sum problem, a special case of the knapsack problem.
There have been many variants of knapsack cryptosystems and the history of their
development and the history of the development of their cryptanalysis are very important.
We present a way to integrate Merkle-Hellman knapsack cryptosystem into introductory
cryptology course and into introductory core computer science courses. Ideas for the
undergraduate student projects are proposed and discussed.
Poster will present a short history of the development of public-key cryptology.
Poster will focus on three types of knapsack cryptosystems: Additive Knapsack
Cryptosystem; Multiplicative Knapsack Cryptosystem; and Multiply-Iterated Knapsack
___________________________________________
*
Copyright is held by the author/owner.
239
JCSC 25, 6 (June 2010)
Cryptosystem. Each cryptosystem will be illustrated by the examples and poster will
discuss ways to integrate these knapsack cryptosystems into the following undergraduate
computer science courses: Introduction to Computer Science, Cryptology, and Analysis
of Algorithms. Poster will also discuss ideas for undergraduate student projects.
240
medPing: USING DATA STRUCTURES WITH EMBEDDED
MEDICAL DEVICES*
POSTER SESSION
Mark D. LeBlanc
Computer Science
Wheaton College
Norton, MA 02766
508.286.3970
mleblanc@wheatoncollege.edu
The future of monitoring our health is about to radically change. Embedded devices
providing real-time monitoring of one’s health (e.g., blood pressure, glucose level, heart
rate, DNA mutation) are an active area of current research and development and will be
increasingly commonplace. Today, individuals with diabetes wearing a particular glucose
meter who drive a Lincoln sedan can have their meter warn the driver of a negative slope
in glucose levels, thereby warning the driver in real time of a potential blood sugar “low”
while driving [3]. This poster presents an example that exposes students in their initial
year to a set of lab and programming assignments featuring these state-of-the-art changes
in medicine in order to motivate them to participate in the exciting innovations occurring
in the boundary of medicine and software.
medPing is a collection of C++ classes that provide an Application Programming
Interface (API) for building applications that interface between (currently emulated)
embedded medical chips and an iPhone. Has your heart rate been too high for too long?
Your cell gets a “ping”. Is your blood pressure falling too low while you sleep? “Ping.”
Is your DNA sequence in a skin cell gene significantly different from a previous
sequence? “Ping” (your oncologist too). The use of medPing is part of a larger effort at
Wheaton College (Norton, MA) to repeatedly expose computer science students to the
exciting and necessary role of computing in biology [2]. The emergence of
bioinformatics, health IT, and research and development at “big pharma” are generating
sustainable options for employment and graduate programs for computer science students
who can apply their computational skills to the challenges of health research and practice.
Used in the Data Structures course on the Mac OS X platform in Spring 2009 and
again in Spring 2010, a number of medPing labs and assignments introduce the classes
that emulate an embedded medical chip under the skin of a person. All output from the
___________________________________________
*
Copyright is held by the author/owner.
241
JCSC 25, 6 (June 2010)
medPing API appears on an iPhone console screen. Originally, students practice reading
the API and experimenting with medPing methods. Two labs and two assignments lead
students to (1) investigate the relation between a method’s behavior and its
implementation details, (2) create apps that monitor and analyze a patient’s vital signs,
and (3) enhance the class functionality to store a patient’s medical history over time.
While medPing was especially successful as a teaching model early in the course, the
course does not focus on medPing throughout the semester. The Data Structures’ syllabus
(our second course in the major sequence taught using C++) is full of critically important
topics (e.g., exposure to multiple data structures, recursion, pointers, and the C++
Standard Template Library), thus we have not at this point attempted to force medPing
further than its originally intended purpose of providing a motivating introduction to
objects and their associated APIs [1]. That said, it has proved successful in providing a
set of objects for reference purposes, e.g., “Recall the child classes of the medPing
object….” or “why did we need destructors in our queue of medPing objects?”
MedPing methods offer levels of abstraction that buffer students from the iPhone’s
Objective C code that handles input and output from the iPhone console. Vital sign
emulators provide bell curve random number generators for realistic values, for example,
a range of (normal) systolic blood pressure values between 90 and 140 mmHg. A non-
Mac version is provided for those students who cannot access the campus Mac labs in off
hours; in this case all output appears on a standard output console.
REFERENCES
[1] Data Structures syllabus at Wheaton College (Norton, MA) using medPing
http://cs.wheatoncollege.edu/mleblanc/cs2/syllabus.pdf
[2] LeBlanc, M.D. and Dyer, B.D. Perl for Exploring DNA. New York, NY: Oxford
University Press, 2007.
[3] M-POWERED Car for Diabetics. Tuesday, June 10, 2008,
http://www.medgadget.com/archives/2008/06/mpowered_car_for_diabetics.html
, retrieved January 11, 2010.
242
LEARNING DATA STRUCTURES THROUGH TEXT
ADVENTURE GAMES*
POSTER SESSION
Lisa N. Michaud
Saint Anselm College, Manchester, NH
(603) 641-7126
lmichaud@anselm.edu
Pedagogical research has already established that couching lessons within the use
or design of computer games can be an effective method of instruction. Text adventure
games are a particularly excellent vehicle for exploring many Data Structures topics. In
these games, the interface is console-based and involves a simple input-response cycle
that is easy for novice programmers to master. The game's player uses typed commands
to move around a series of locales, each of which is described upon entering. There are
physical objects in each location that can be inspected, picked up and carried, dropped,
and sometimes used in some way. Meeting the requirements of a global objective causes
the game to end. Beyond this, student creativity can add layers of plot complexity and
puzzles, humor, and originality without requiring advanced programming expertise.
Students can build this project in multiple phases stretching over half of a semester.
The game concept naturally lends itself to the incorporation of multiple object class
design tasks at the beginning of the semester, requiring one object class to represent the
locations in the game world, one class to represent the physical objects that can be
manipulated, one to represent the player, and one to represent the game world as a whole.
Students next come to recognize the usefulness of class inheritance when they see
that since the player class carries objects and the location class also contains objects - and
the process of accessing and manipulating those objects is the same in each case - they
need to create a superclass for both players and locations. All object-containing and
-manipulating code is encapsulated there, while the location class extends this to include
such things as a description and exit and the player object class contains implementations
of hunger, points acquired, etc.
The classic linked-list implementation project also folds into this game as the
object-container superclass is implemented as a linked list, with methods for traversal (list
all of the objects in the room / in the player's inventory), search (find a specific object by
name in order to inspect it), insertion (pick up an object and add it to the inventory, or
___________________________________________
*
Copyright is held by the author/owner.
243
JCSC 25, 6 (June 2010)
drop an object and add it to the room), and removal (remove an object from the room or
drop it from the inventory).
A final class-wide competition in which games are played by friends and classmates
and judged on complexity, creativity, and ease of play provides a capstone which doubles
as a motivator to make the game world and plot original and exciting, while providing the
larger community with exposure to Computer Science projects as an expression of
creativity.
244
RUNNING A COMPUTER SECURITY COURSE:
POSTER SESSION
___________________________________________
*
Copyright is held by the author/owner.
245
JCSC 25, 6 (June 2010)
246
CCSC: Northeastern Conference
Academic software package was used for studying firewalls and virtual private networks.
Using this knowledge and skills, students develop their own lab projects and include
virtual lab techniques into their research projects related to various network security
protocols, such as the Diffie-Hellman asymmetric key agreement protocol and RADIUS
protocol.
Students are encouraged to conduct research and write project papers on modern
computer-security technologies. They select projects that would be beneficial for their
careers and valuable for companies and the community. Usually, students demonstrate
their project portfolios during job interviews. Such demonstration of their actual
professional skills in computer security helps students in finding a job immediately after
the graduation. Many projects are implemented in local companies and the community,
e.g., “Secure Wi-Fi Technologies for Enterprise LAN Network”, “Steganography and
Steganalysis”, “Intrusion Prevention System”, “Security and SQL Injections”, “Virtual
Private Networks”, “Firewalls Overview”, “RADIUS Protocol”, and “Secured
Communication in Java”. Students are encouraged to submit summaries of their research
projects to professional journals and magazines.
The authors believe that this project-based, tool-exploration, and virtual-lab
approach can be effectively applied to future courses of a similar nature in academia.
247
USING GROUPS ON FACEBOOK TO IMPROVE
POSTER SESSION
James Ryder
Dept. of Mathematics, Computer Science, and Statistics
SUNY Oneonta
Oneonta, New York 13820
607-436-3647
RyderJ@Oneonta.edu
ABSTRACT
When I was young and learning to fish, an old angler once told me something that
was, on one hand, trivial. On the other hand, it was almost prophetic. He said, “If you
want to catch fish, you have to go where the fish are”. For many years I have used
LISTSERVs with all my classes to enable open conversation among students and me.
Over the years, it has become more and more difficult to manage LISTSERVs for me at
my college. Also, although still very useful, they are archaic as communication means.
My reason for using LISTSERVs has always been to maximize communication among
participants in a course.
Today, on the Internet, there are many types of social networking sites. Students
have Facebook [1], Twitter [2], and MySpace [3] accounts galore. “If you want to catch
fish, go where the fish are”. As an experiment during the Fall 2009 semester, I used
Twitter as our way of intra-class networking. It was a dreadful failure. I have always
stayed away from sites like Facebook because I have not wanted to intrude upon students’
personal lives. In the past, accounts tended to be so open that to be a ‘friend’ meant that
a person saw all or most of whatever was being posted by friends. This is no longer
entirely true. There is a Facebook tool called a ‘Group’ that allows people to join with no
requirement to be friends, thus providing the firewall between college and private life.
The only thing that a person needs is a Facebook account, which is free and easy to set
up. During the Spring 2010 semester, I will run an experiment with Facebook groups to
enable active intra-class discussion. I have created three Facebook groups named CSCI
100, CSCI 246, and CSCI 344. As part of Homework 1, I will require students to join
their course group. None of the students’ private information will be accessible to any
group member. But, all group members can contribute to the group through posts to its
___________________________________________
*
Copyright is held by the author/owner.
248
CCSC: Northeastern Conference
wall, participate in any discussions, view scheduled events such as study sessions and
exams, and even post images or videos. I will be the administrator of each group. By the
time CCSCNE 2010 takes place, I will have good, empirical information about using
Facebook groups to enhance communication among participants in classes. I will present
this information via a poster during the Faculty Poster session.
REFERENCES
[1] Facebook, www.facebook.com, Spring 2010
[2] Twitter, www.twitter.com, Spring 2010
[3] MySpace, www.myspace.com, Spring 2010
249
A GENERAL EDUCATION COURSE - “INTRODUCTION TO
POSTER SESSION
Namita Sarawagi
Dept. of Mathematics and Computer Science
Rhode Island College
600 Mt. Pleasant Avenue
Providence, RI 02908
(401) 456-8038
nsarawagi@ric.edu
___________________________________________
*
Copyright is held by the author/owner.
250
CCSC: Northeastern Conference
for such examples and problems. Both these books are excellent choices as textbooks for
this course. Most of the examples/problems presented in this course, were taken from
these books [2, 3]. Some of these problems, the concepts involved in their
solutions/algorithm, and the discipline they fall under are listed in the following table.
251
JCSC 25, 6 (June 2010)
REFERENCES
[1] Courses at the 100-Level, Mathematics and Computer Science Department, RIC,
www.ric.edu/mathcomputerscience/courseList.php?level=1, retrieved January
25, 2010.
[2] Crews, T., Murphy, C., A Guide to Working with Visual Logic, Boston, MA:
Course Technology, Cengage Learning, 2009.
[3] Farrell, J., Just Enough Programming Logic and Design, Boston, MA: Course
Technology, Cengage Learning, 2010.
[4] Olivieri, L. M., Using Visual Logic© to teach programming logic in an
introductory CS course. Journal of Computing Sciences in Colleges, 24, (6), 146-
148, June 2009.
[5] Visual Logic, © PGS Systems, LLC, www.visuallogic.org/, retrieved January 25,
2010.
252
A DIJKSTRA'S ALGORITHM SHORTEST PATH ASSIGNMENT
POSTER SESSION
James D. Teresco
Visiting Associate Professor of Computer Science
Mount Holyoke College
South Hadley, MA 01075
(413) 538-3253
jteresco@mtholyoke.edu
___________________________________________
*
Copyright is held by the author/owner.
253
JCSC 25, 6 (June 2010)
highway data files are used as input to the support programs developed by the author to
generate a set of composite highway data for a given highway system. The composite
highway data is stored in a format convenient for use in this assignment, and is readily
processed by student programs to construct a graph structure for a highway system.
During the Fall 2009 semester, the highway systems made available to students included
small systems that are useful during development and debugging such as the Interstate
highway system in Hawaii (47 waypoints/vertices, 48 connections/edges) and the Yukon
Provincial highway system (351 waypoints, 354 connections), and larger systems such
as the set of all Interstate, U.S., and state highways in New York state (7265 waypoints,
8416 connections). Several other highway systems are available from the CHM Project,
with many more under construction.
The CHM data provides real and appropriately-sized input for an academic study
of Dijkstra's Algorithm. The Google Maps API provides a fun and useful way to
visualize the data and the results. The Google Maps API is free to use, but a domain-
specific API key must be obtained and specified in the plotting program. Points and
routes can be plotted in a browser window, much like that done by Google Maps and
other mapping sites. The students' Java programs produce output files consisting of
points to be plotted, with connections optionally drawn between successive points.
Students upload their output files to the course web server, where they can visualize their
results in map form. Students are encouraged to examine the Javascript program that
generates the maps, but they need not modify it.
Students are provided with a starter program with a few methods left as stubs to be
filled in. Students are required to implement methods that construct an appropriate graph
structure, print the graph data to the screen or into files suitable for display using the
mapping scripts, and compute shortest paths using Dijkstra's Algorithm and print them
to the screen or into mapping data files. Students base their implementation of Dijkstra's
Algorithm on the one provided as an example by Bailey's free textbook, Java Structures
[1], the primary text for the course. Students are also provided with input data format
descriptions, output format requirements, and instructions to upload files and view results
in the Google Maps environment.
Student reaction to the assignment was very positive. They were excited to be able
to work on a program that would produce results that they could display with the mapping
scripts. Students were allowed to work in groups of 2 or 3 for this assignment, and were
given about a week and a half to complete the assignment. Students formed 4 groups, 3
of which made submissions that were complete and correct or nearly so.
This assignment will continue to be improved for use in future offerings of data
structures. Additional development will improve the pre-processing tools and further
automate the process of displaying mapping data. Improved processing of the CHM data
will result in more user friendly highway data. For example, the junction of New York
state routes 29 and 30 would currently receive the waypoint name
@NY29:NY30@NY30:NY29, a simpler name such as NY29/NY30 could be generated
automatically and would be easier to work with. Waypoints that are not at important
intersections but are included only for route shaping (typically prefixed by + in the CHM
data) could be folded into adjacent edges. Improvements to the map display will allow
more control over the points to be plotted and will further automate the visualization
254
CCSC: Northeastern Conference
process. Ideally, a student will be able to upload results through a web form rather than
separate steps to copy to the server and to enter an appropriate URL, as is currently
required.
Support materials, handouts, and sample solutions are available on request from the
author.
REFERENCES
[1] Bailey, D. A., Java Structures, Data Structures in Java for the Principled
Programmer, sqrt(7) edition,
http://www.cs.williams.edu/~bailey/JavaStructures/Welcome.html, Williams
College, 2007.
[2] Google, Inc., Google Maps API Reference, 2010,
http://code.google.com/apis/maps/, retrieved January 10, 2010.
[3] Reichard, T., The Clinched Highway Mapping Project, 2010, http://cmap.m-
plex.com/, retrieved January 10, 2010.
255
OUR EXPERIENCES INCORPORATING ROBOTICS INTO
POSTER SESSION
David Toth
Computer Science Department
Merrimack College
315 Turnpike Street
North Andover, MA 01845
978-258-1208
david.toth@merrimack.edu
ABSTRACT
A number of colleges and universities are using robots as a focus in introductory
computer science courses to try to stimulate students’ interest in computer science.
Several colleges have integrated robots into their CS1 courses or even built an entire
course around robots [1, 2, 3, 4]. Other colleges have integrated robots into CS0 courses
[5, 6]. In this poster, we present the experiences we had when incorporating robotics into
our service course, which is designed to be neither a CS0 nor a CS1 course.
Our course, Introduction to Information Technology, aims to introduce students to
the concepts in information technology and their uses in the workplace. Because of
breadth of this subject, we are only able to devote 1-1.5 weeks to any particular topic,
including introducing students to computer programming. The course is almost entirely
populated by students who will not major in computer science, although on rare
occasions, a student taking this course will continue on to CS1 and the computer science
major. Previously, we introduced programming with Scratch and also had students play
a game called LightBot, which requires students to “program” a virtual robot to light up
tiles [7, 8]. Many of the students had a lot of success with LightBot and enjoyed it.
Conversely, a large portion of the students did not appear to be engaged with Scratch.
This year, following the success of using LightBot, we considered alternate methods
to introduce programming and chose to use robots in the course to introduce students to
computer programming. We used the Scribbler robots from Parallax, Inc. in three of our
four sections of Introduction to Information Technology this fall [9]. The Scribbler robot
comes with a graphical programming environment that can be used by students instead
of using the Basic Stamp editor that also comes with the robot. Students were taught how
___________________________________________
*
Copyright is held by the author/owner.
256
CCSC: Northeastern Conference
to use the graphical programming environment to make the Scribblers move, make
decisions using if/else statements, repeat tasks with a while loop, and detect obstacles
using the robot’s sensors. The students were encouraged to play with the robots for the
50 minute class period to get comfortable with them. They were told that during the
following class, which was 100 minutes, their assignment would be to program the robots
to navigate a simple U-shaped maze. The students were told that their robot should be
able to be placed at either entrance of a maze by the professor and be able to enter the
maze and exit out the other side.
We had mixed results and encountered several unexpected challenges when
conducting the lab. The success rate of the students was low and few students were able
to complete the exercise the way we had hoped they would. This may have been due to
some of the many problems we encountered while conducting this lab. However, the
reason for changing the vehicle for introducing programming was to try to engage more
students and a greater proportion of the students appeared to be engaged in trying to make
the robot traverse the maze than had been engaged by Scratch last year. We also noticed
that several students who had not seemed to be particularly engaged during the course
were working hard on the lab and appeared to be enjoying themselves. Given that we
were primarily looking to engage the students more successfully than last year, the lab
may have worked better than the success rate indicated.
REFERENCES
[1] Institute for Personal Robots in Education, Institute for personal robots in
education, http://www.roboteducation.org/schools.html, retrieved October 26,
2009.
[2] Union College, Computer Science 2009-2010,
http://www.union.edu/applications/catalog/deptView.php?mode=catalog&year=2
009&code=CS, retrieved October 26, 2009.
[3] Lauwers, T., Nourbakhsh, I, and Hamner, E., CSbots: Design and Deployment of
a Robot Designed for the CS1 Classroom, Proc. 40th SIGCSE 2009, 428-432,
2009.
[4] Summet, J., Kumar, D., O'Hara, K., Walker, D., Ni, L., Blank, D., and Balch, T.
Personalizing CS1 with robots, SIGCSE Bulletin, 41 (1), 433-437, 2009.
[5] Connecticut College , Connecticut College: course catalog: computer science,
http://aspen.conncoll.edu/camelweb/?fuseaction=registrar&circuit=cc&function=
course&action=computerscience, retrieved October 26, 2009.
[6] Cliburn, C., CS0 Course for the Liberal Arts, Proc. 37th SIGCSE 2006, 77 – 81,
2006.
[7] Scratch | home | imagine, program, share, http://scratch.mit.edu/, retrieved
October 26, 2009.
[8] Armor Games, LightBot, http://armorgames.com/play/2205/light-bot, retrieved
October 26, 2009.
257
JCSC 25, 6 (June 2010)
258
ON SLIDER PUZZLE PROJECTS WITH .NET COLLECTION
CLASSES*
POSTER SESSION
Linda Wilkens
Department of Mathematics and Computer Science
Providence College
Providence, RI 02918
401 965-1896
lwilkens@providence.edu
ABSTRACT
This poster presentation reports classroom experience using Sam Loyd’s Sliding
Tile Puzzle for student programming projects which use .NET collection classes both to
store game tree nodes, and to support user and computer generated solutions to the
puzzle. This project offers the students the opportunity to develop a non-trivial
application, to design classes, to reuse data structures developed during the semester, and
to leverage existing data structures including several of the .NET collection classes.
The sliding tile puzzle has been used extensively for programming projects. A
description of the puzzle and a discussion of its history can be found on several
websites[1, 2]. The advantages of the puzzle for student projects is that the computational
requirements of a module to find a computer-generated solution to a particular puzzle can
be controlled by designating the difficulty of the puzzle; i.e., by creating a solvable puzzle
by making random valid backwards moves from the original solution state.
The students can first implement an application that allows users to solve the puzzle,
and then try to develop their own heuristics for generating computer solutions. Then
finding a computer solution can be guided by a directed search, such as a best-first search
through the generated tree of game states, where the root is the initial tile configuration,
and the fringes are the unexplored reachable states. This search requires the students to
contain the generated node states in a structure that can be searched efficiently for a node
with a particular state and that also allows for quickly finding the most promising state
from among the unexplored fringe states. The students are given an outline of the A*
search algorithm, and are led through a set of labs which result in a working but minimal
version of the program. From this point they need to implement the module for computer
solution, exploring various alternatives for storing both the open and closed lists and the
___________________________________________
*
Copyright is held by the author/owner.
259
JCSC 25, 6 (June 2010)
implicit tree that is generated as the algorithm progresses. Naïve data structure choices
lead to implementations that can solve only simple puzzles, whereas using more
sophisticated alternatives, if implemented correctly, give better results.
Because the description of A* search discusses an open list, a closed list, and a game
tree, students frequently start with a very literal interpretation of the algorithm and choose
a linear container such as the .NET Collection class ArrayList or the templatized List<T>.
Most students quickly realize that if they keep their lists in sorted order they can use a
binary search rather than a linear search for a particular element, thus speeding up
solution execution. A major goal of the project is to have the students then replace their
linear list with either a hashtable or with .NET’s Dictionary class which takes two
template parameters, one for the type of the item, and one for the type of the key. Using
either a hashtable or an instance of the Dictionary class is best supported by implementing
the IEquatable interface, in order to allow two different nodes in the game tree, which
may have different costs and different parents in the tree but which represent the same tile
configuration, to be considered equal. Another goal of the project is to have students use
a priority queue to support quickly finding the most promising fringe node to explore
next. A related challenge for the students is to link the priority queue with the other data
structures, thus leveraging the use of reference variables and exploiting the advantages
of both types of structures.
Additional issues addressed in the project include file I/O, code instrumentation,
using profiling for performance analysis, comparing algorithm analysis with timing
results, and user interface design.
The choice to develop in .NET lead to a language decision: the projects discussed
here were developed in C#. However, the author has used this same project in previous
semesters, combining Visual C++ with Standard C++ Library container classes. The
poster will compare the two approaches, and will list advantages and disadvantages of
each. The website www.codingquest.com lists resources used during the course and links
to html-ized versions of the students’ slider puzzle project presentations.
REFERENCES
[1] Slocum, Jerry and Weisstein, Eric W., 15 Puzzle,
mathworld.wolfram.com/15Puzzle.html, retrieved Jan 4, 2010.
[2] Wikipedia: The Free Encyclopedia, Wikimedia Foundation Inc. Encyclopedia
on-line, Fifteen Puzzle, 2010, en.wikipedia.org/wiki/Fifteen_puzzle, retrieved
Jan 12, 2010
260
INDEX OF AUTHORS
Abelson, H . . . . . . . . . . . . . . . . . . . . 8 Hildreth, E . . . . . . . . . . . . . . . . . . . 60
Allen, F . . . . . . . . . . . . . . . . . . . . . . 5 Hislop, G . . . . . . . . . . . . 74, 152, 224
Allen, M . . . . . . . . . . . . . . . . . . . . 100 Hoffman, M . . . . . . . . . . . . . . . . . 205
Alnajjar, H . . . . . . . . . . . . . . . . . . . . 1 Imberman, S . . . . . . . . . . . . . . . . . 237
Anewalt, K . . . . . . . . . . . . . . . . . . 144 Inguva, S . . . . . . . . . . . . . . . . . . . 221
Armstrong, T . . . . . . . . . . . . . . . . 211 Joiner, D . . . . . . . . . . . . . . . . . . . . 191
Assiter, K . . . . . . . . . . . . . . . . . . . 214 Kempner, Y . . . . . . . . . . . . . . . . . 239
Bailie, F . . . . . . . . . . . . . . . . . . . . . 15 Klibaner, R . . . . . . . . . . . . . . . . . . 237
Baird, B . . . . . . . . . . . . . . . . . 47, 100 Kortsarts, Y . . . . . . . . . . . . . 205, 239
Baliga, G . . . . . . . . . . . . . . . . . . . 174 LeBlanc, M . . . . . . . . . . . . . . . . . 241
Beidler, J . . . . . . . . . . . . . . . . . . . 155 Lederman, T . . . . . . . . . . . . . . . . . 129
Bi, Y . . . . . . . . . . . . . . . . . . . . . . . 155 Lee, S . . . . . . . . . . . . . . . . . . . . . . . 60
Blank, G . . . . . . . . . . . . . . . . . . . . 181 Leete, D . . . . . . . . . . . . . . . . . . . . 230
Bloch, S . . . . . . . . . . . . . . . . . . . . 218 MacDonald, I . . . . . . . . . . . . . . . . 121
Brusilovsky, P . . . . . . . . . . . . 74, 224 Malan, D . . . . . . . . . . . . . . . . . . . 111
Cassel, L . . . . . . . . . 74, 221, 224, 227 Mallozzi, J . . . . . . . . . . . . . . . . . . 167
Chang, G . . . . . . . . . . . . . . . . . . . 191 Marion, B . . . . . . . . . . . . . . . . . . . . 15
Chang, M . . . . . . . . . . . . . . . . . . . . . 8 Mastropaolo, K . . . . . . . . . . . . . . . 78
Chung, C . . . . . . . . . . . . . . . . 47, 100 Meinke, J . . . . . . . . . . . . . . . . . . . . xi
Cliburn, D . . . . . . . . . . . . . . . . . . 210 Menzin, M . . . . . . . . . . . . . . . . . . . 66
Connelly, R . . . . . . . . . . . . . . . . . . 34 Meyer, M . . . . . . . . . . . . . . . . . . . . 78
Corliss, M . . . . . . . . . . . . . . . . . . . 159 Michaud, L . . . . . . . . . . . . . . . . . . 243
Cotler, J . . . . . . . . . . . . . . . . . . . . . 40 Mitra, S . . . . . . . . . . . . . . . . . . . . . 93
Coulter, P . . . . . . . . . . . . . . . . . . . 230 Morelli, R . . . . . . . . . . . . . . . . . . . 152
Danner, N . . . . . . . . . . . . . . . 100, 152 Morreale, P . . . . . . . . . . . . . . . . . . 191
Dansdill, T . . . . . . . . . . . . . . . . . . 205 Moturi, S . . . . . . . . . . . . . . . . . . . 227
Davis, J . . . . . . . . . . . . . . . . . . . . . 159 Mustafaraj, E . . . . . . . . . . . . . . . . . . 8
Delcambre, L . . . . . . . . . . . . . 74, 224 O’Rourke, J . . . . . . . . . . . . . . . . . 121
Dickson, P . . . . . . . . . . . . . . 104, 233 Pietraszek, L . . . . . . . . . . . . . . . . . 159
Egan, M . . . . . . . . . . . . . . . . . . . . 198 Polack-Wahl, J . . . . . . . . . . . . . . . 144
Ellis, H . . . . . . . . . . . . . . . . . . . . . 152 Potluri, S . . . . . . . . . . . . . . . . . . . 224
Evans, J . . . . . . . . . . . . . . . . . . . . 181 Proulx, V . . . . . . . . . . . . . . . . . . . . 70
Fax, W . . . . . . . . . . . . . . . . . . . . . 224 Rao, T . . . . . . . . . . . . . . . . . . . . . . . 93
Fischbach, A . . . . . . . . . . . . . . . . 205 Riabov, V . . . . . . . . . . . . . . . . . . . 245
Fox, E . . . . . . . . . . . . . . . . . . . 74, 224 Rizzo, J . . . . . . . . . . . . . . . . . . . . . . 40
Furcy, D . . . . . . . . . . . . . . . . . . . . 159 Robinson, J . . . . . . . . . . . . . . . . . . 174
Furuta, R . . . . . . . . . . . . . . . . 74, 224 Russell, I . . . . . . . . . . . . . . . . . . . . . 1
Gans, P . . . . . . . . . . . . . . . . . . . . . 235 Ryder, J . . . . . . . . . . . . . . . . . . . . 248
Garcia, D . . . . . . . . . . . . . . . . 74, 224 Sabin, M . . . . . . . . . . . . . . . . . . . . . 26
Goldschmidt, D . . . . . . . . . . . . . . 121 Sands, M . . . . . . . . . . . . . . . . . . . 181
Grissom, S . . . . . . . . . . . . . . . 14, 102 Sarawagi, N . . . . . . . . . . . . . . . . . 250
Hart, D . . . . . . . . . . . . . . . . . . 76, 136 Shipman, F . . . . . . . . . . . . . . . . . . 224
Heines, J . . . . . . . . . . . . . . . . . . . . . 66 Spezialetti, M . . . . . . . . . . . . . 11, 100
Higgs, B . . . . . . . . . . . . . . . . . . . . 245 Sturm, D . . . . . . . . . . . . . . . . . . . . . 55
261
Teresco, J . . . . . . . . . . . . . . . . . . . 253
Toth, D . . . . . . . . . . . . . . . . . . 73, 256
Turbak, F . . . . . . . . . . . . . . . . . . . . . 8
Utell, J . . . . . . . . . . . . . . . . . . . . . 205
van Delden, S . . . . . . . . . . . . . . . . . 85
Welty, C . . . . . . . . . . . . . . . . . . . . . 66
Whitfield, D . . . . . . . . . . . . . . . . . . 15
Wilkens, L . . . . . . . . . . . . . . . . . . 259
Young, A . . . . . . . . . . . . . . . . . . . . . 6
Zelikovitz, S . . . . . . . . . . . . . . . . . . 55
262
263
264
JCSC Volume 25 Number 6 June 2010