CS courses paper - Ideals - University of Illinois at Urbana

advertisement
THE STUDENT/LIBRARY COLLABORATIVE:
SENIOR UNDERGRADUATE COMPUTER SCIENCE COURSE
PROJECTS AT THE UNIVERSITY OF ILLINOIS LIBRARY
Jim Hahn, jimhahn@illinois.edu
Abstract
With funding from an Institute of Museum and Library Services demonstration grant,
librarians of the Undergraduate Library at the University of Illinois partnered with senior
computer science project courses in order to design and build student-centered mobile apps. The
grant work called for demonstration of student collaboration strategies and computing
workflows that would enable greater access to collections and awareness of services, while
investigating aspects of location specific mobile digital services. This case study reports grant
strategies and goals, app design choices sourced from rapid use studies, and student/librarian
outputs at the end of the grant.
Introduction
The question as to design and develop software in libraries is not to be taken lightly.
Software projects are resource intensive, requiring sustained time and focused attention of a
variety of highly skilled Library IT staff. This staff includes, but is not limited to a project
manager, infrastructure specialist, and the expertise of one or more programming staff to produce
solutions to challenging technical problems. Once the system has been coded the software
project then enters multiple rounds of Quality Assurance (QA) for security and functionality
before released for the public to use.
The Student/Library Collaborative
1
Following the release of a software project there is then the risk that the designed and tested
system goes unused by students. As a novel approach to developing mobile applications in
libraries, Faculty in the Undergraduate Library at the University of Illinois designed a unique
collaborative grant project, which was funded to source student talent in creating applications
that would include student code and student vetted functionality. Grant staff and library faculty
addressed the following grant goals1:
1. Increase student collaborations and input into library software design;
2. Improve the abilities of libraries of all types to provide services for location specific
information needs;
3. Broaden access to library collections;
4. Create connections between changing student computing uses and library resources and
services.
The rationale for this IMLS grant was to test a non-traditional approach to services design.
The research values students as collaborators in the design and evaluation of library services.
Student programmers developed app functions through early prototype code that was further
vetted by a visiting research programmer supported by the grant.
Staff Roles
Academic professional staff funded solely for grant tasks included a visiting research
programmer and a visiting program manager. The visiting grant funded staff met weekly with
student computer science (CS) teams. The grant funded programmer supported CS course
collaborations by developing back end systems (web based APIs) that could power the designs.
The resulting back end code came to be utilized in multiple projects. The visiting program
manager role included coordination of the student course work with others in the library.
The Student/Library Collaborative
2
Three librarians in an Undergraduate Library at the University of Illinois joined these two
professionals. Librarians were involved in outreach to computer science faculty, meeting with
students, and vetting student ideas. Additional librarian tasks included writing rapid user studies
and assisting in evaluation of results. Rounding out the staff of the national leadership grant
personnel was hourly graphic design and hourly user testing support as needed. These hourly
staff helped to give the final mobile outputs polish and design support.
Librarian time invested in the grant project was about 10% of their weekly schedule. At
the close of the grant there is now a small, ongoing budget to continue to source student
programmer talent for library software development. A commitment of Librarian time and
leadership after the grant is devoted to managing student programmers who work for the library.
This work time includes one day a week of mentoring, code clean up, requirements verification,
and project incubation. The outputs of this post-grant team continue the spirit and technical use
of the student sourced grant work by managing the APIs developed to meet Library wide needs.2
Hourly graphic design support for interface layout and icon development work is an additional
funded position since the close of the grant.
Notable Grant Outputs
A statewide mobile application, Minrva 2.0, resulted as an output of this grant. The
application includes consortia catalog searching and a number of other modules for use in 82
CARLI I-Share libraries (the state consortium3) across the state of Illinois. The Minrva 2.0 app is
available for both iOS and Android devices4. The Android app has been installed in over 500
devices and the iOS version has over 400. These numbers are indicative of the use of grant
outputs and underscore the fact that student developed work is utilized as a new library
The Student/Library Collaborative
3
production service. The Library IT Infrastructure department maintains the server powering the
app with regular security patches.
The process that led to the creation of the Minrva app tested the student centered cocreative design methodology where students and librarians shaped app features and functionality
through early user feedback and rapid development of features based on student preferences.
While this paper will report solely on the computer science collaborations, grant staff
collaborated with non-technical majors and also hosted a coding camp outside of traditional
course projects. The latter two approaches are detailed in separate articles5.
The co-creative process was undertaken to test the hypothesis that collaborations with
computer science course projects offer efficiencies to library service design. Particularly in
building services that will be of use to students. Grant staff studied prototype versions of apps as
they were developed with a small sample of test users in the Undergraduate Library. These early
use studies helped technical grant staff further polish and integrate desired functionality into the
app modules.
The remainder of this paper progresses with a literature review situating this grant work
with other course projects and student work in libraries, a review of methodology relevant to the
rapid user tests and how outputs to this methodology fit into existing mobile module systems in
the Undergraduate Library. Following this are three case studies of CS project course
collaborations including hurdles encountered and successes of each semester cohort. The paper
concludes with lessons learned, impressions of working with students as co-creators of library
services, and considerations of sustainability and extensibility of this work in other libraries.
While computer science students and faculty were partners for this grant, the remainder of this
The Student/Library Collaborative
4
paper is written for general library practitioners and administrators interested in technology
collaborations on campus.
Literature Review
Senior projects are an important capstone to the undergraduate education of computer
science students at the University of Illinois at Urbana-Champaign. The CS Major requires a
two-semester project course to satisfy degree requirements. This is in line nationally with trends
in engineering disciplines. Examples of other senior projects in computer science with project
requirements include works by students enrolled in artificial intelligence (AI) courses.
Kumar writes on the experiences of teaching a project course where robots are utilized in
a junior/senior level course in which students demonstrated AI principles through a variety of
projects ranging from maze traversal to programming concepts, and demonstration challenges.6
The article also reports student deliverables for each of the project tasks. In the grant activities
described here, the library was given prototype code for mobile app modules which students and
grant staff helped shape. Each prototype project required code clean up and revision after the end
of the semester before integration as a library service.
An additional report on computer science capstone courses7 at the University of Nevada,
Reno, indicates the development included prototyping projects but that students are supported in
multiple ways and stress “… instructor and external advisor guidance play essential roles in
project development, refinement, and enhancement”8. Illinois grant staff consisted of multiple
advisors, including the grant supported research programmer who helped student programmers
choose appropriate technologies.
The collaborative student-library partnership at Cornell University repurposed library
data for an iPhone app, indicative of the promise of technical student collaborations in mobile
The Student/Library Collaborative
5
design9. The Auraria Library, University of Colorado Denver involved student course work in
services design in participant research activities10, finding that plans for library renovations could
be informed with data gathered through an architecture course, human factor engineering course,
and civil engineering11.
Utilizing previous methods in mobile apps user evaluation, this project made use of rapid
prototyping methods. Rapid prototyping is formative evaluation employed early in the design
process.12 While the rapid prototyping model is used differently in different professions, in a
generalized sense the model of rapid prototyping can be characterized as “a process that is
applied through continual customer involvement throughout the entire project…”13 This is the
non-linear design model by which the grant added to the Minrva app over time.
The partnership with the Undergraduate Library dovetailed with innovative module
mobile application design framework. This framework was developed for the purposes of
collaboration and as a methodology for future-proofing apps from obsolescence over time. To do
this, the mobile app is a set of modules that can be added to the mobile software over time. Each
module is a distinct program and communicates with the other modules indirectly using unique
identifiers for books. A user study for the modular approach is detailed in the code4lib journal
article Modular Mobile Application Design.14 As a starting point with computer science courses,
library staff utilized feature request findings from this article to begin coding requested features
users mentioned would be useful. This is the first collaborative case detailed in the computer
science collaboration section that follows.
Computer Science Collaborations (2012 – 2014)
Minrva VuFind catalog login modules and associated features. CS492: Senior Projects Fall
2012 - Spring 2013
The Student/Library Collaborative
6
In the Fall 2012 semester the grant team partnered with CS 492: Senior Projects in
Computer Science. This was a required projects based two-semester course for computer science
majors. Students are to learn a few of the common principles of software engineering including
understanding the problem, organizing work around a possible solution, defining a scope and
managing the implementation along with client expectations15.
The modules that the library tasked students in CS492 to help implement in the Android
native app included:16

Citation Module: The citation module is designed to allow a user to quickly and
accurately cite sources viewed while using Minrva in either MLA or APA format. The
module also allows the user to email the completed citation.

Checked out Module: Displays a list of checked out items. Information includes: the
title, institution, due date, and current status ("Checked-out" or "Renewed") of the
borrowed item. Users can renew any of their currently checked-out items.

Favorites Module: Displays a list of favorited items. Information displayed in the
favorites module includes: the title of the favorited item along with the author(s), artist(s),
subtitles, etc.

Requested Items Module: Displays a list of all of the items that a user has requested.
This module also allows the user to cancel any requests that they have placed.

Fines Module: Displays a list of all fines associated with this account. Information
displayed in the fines module includes: title of item, date fine was levied, amount, and
type of fine.
The Student/Library Collaborative
7

Favorites Module: Displays a list of favorited items. Information displayed in the
favorites module includes: the title of the favorited item along with the author(s), artist(s),
subtitles, etc.

Blocks Module: Displays a list of blocks against a user account. Information includes:
the institution that assigned the block, the day and time that the block was instituted, and
the description of the block.
Many of these features are portions of the library catalog (VuFind) patron account. Before
these modules were fully implemented in the app, grant staff hired and trained a PhD student
from Psychology, with previous experience in applied research to help library faculty run user
studies for portions of the modules. The studies used interviews and observations of students
interacting with the module prototypes.
After the results of the formative user studies on a small number of test users in the
Undergraduate Library were analyzed, we went back to the CS group and reworked some display
elements and interactions among the modules. Finished screenshots for these modules can be
viewed from the app website here: http://minrvaproject.org/catalog.php. A number of the
contributions from the CS group are now included in the Minrva Core offerings, which are also
available to over 80 libraries in Illinois. As a consortia implementation all libraries in the CARLI
I-Share consortium can use the software.
IWonder: Chat reference system re-architecting. CS 428: Software Engineering II Spring 2013
The Illinois grant team first met the Software Engineering group after responding to an
open call from faculty requesting programming projects that teams from the CS course, Software
Engineering II could address as semester long project based work.
The Student/Library Collaborative
8
The library had a vibrant and growing virtual chat reference service and the grant team
suggested developing a mobile app for direct questions from a mobile phone into the chat service.
When the team of eight junior/senior upper class undergraduate students began, they chose to
work on a mobile app interface for connecting to the chat software.
During consultations with the Library Software Development Group manager (a
consulting professional of this grant), the project scope for this course increased dramatically
from developing a module that would interface to an existing service, to prototyping a rearchitected chat reference system. The reason for the scope adjustment was that it made little
sense to build an app module into a system that would likely not be able to support the increased
load.
Computer science students frequently learn programming concepts to make a software
program or pieces of a software program. New programmers (students) generally do not develop
systems – since these are too large and rather complicated for novice programmers to be
successful in implementing. Brooks, in his classic work on software engineering The Mythical
Man Month17 articulates a quadrant of programming products which progresses in complexity
and cost from a program to system, defining the system product as:
“…a collection of interacting programs, coordinated in function and disciplined in format, so
that the assemblage constitutes an entire facility for large tasks. To become a programming
system component, a program must be written so that every input and output conforms in syntax
and semantics with precisely defined interfaces. The program must also be designed so that it
uses only a prescribed budget of resources – memory space, input-output devices, computer time.
Finally, the program must be tested with other system components, in all expected combinations.
This testing must be extensive, for the number of cases grows combinatorial. It is time-
The Student/Library Collaborative
9
consuming, for subtle bugs arise from unexpected interactions of debugged components. A
programming system component costs at least three times as much as a stand alone program of
the same function.” In order to assist the Software Engineering group in attaining their goal of
re-architecting a software system, the project was further divided into modular components
including front-end interface development, server side programming, and third party software
configuration.
Grant staff identified open source software that would help the student group bootstrap their
work. In particular, the open source chat server Openfire
(http://www.igniterealtime.org/projects/openfire/) was identified as the tool around which our
queuing system could be built. Library grant staff further assisted the group in this system
architecting by providing schema of the previously implemented architecture18. Particular
features coded that available commercial systems do not currently support include:

Queuing Incoming Chats
Incoming chats are queued into the operator’s interface whereby operators with
specialization in the query can pick the chat that is best suited for their area of expertise –
conversely generalists are able to identify the questions they can address immediately or in
the course of the reference interview and question negotiation, pull in the subject specialties
of experts across the library. Collaborative features to queue based on specialization are not
standard options in currently available third party chat software.

Private Operator to Operator chat
This feature allows operators to consult with other library staff privately before bringing
them into the chat or simply to consult on an active chat.

Multiple operators collaborating on a chat at one time.
The Student/Library Collaborative
10
Operators can bring in other operators who are logged into the service to their chat. This is
particularly useful in large decentralized systems where expertise exists in many unit libraries
and locations.
By the end of the semester, the group had basic functionality completed for logging in,
receiving a chat, and ending a chat. The group (named Group Wonder) completed a YouTube
video at the end of the project highlighting the new system: http://youtu.be/BmWSf8_o9Qw
Study Buddy App
CS492: Senior Projects Fall 2013 - Spring 2014
The final senior projects course our grant team worked with developed the Study buddy
app whose features include location-based services for students on a university campus. The
proposed app helps students locate where individuals in their classes are studying. The Study
Buddy app allows a student to form a study group around a class and then check in at a campus
location. The conceptualization of organizing content around courses and assignments was novel
to previous notions of location based mobile design on campus. The Study Buddy app idea was
the result of a campus wide student app competition19.
The requirements for the app called for the library team to gather the location and course
data that would make check-in features possible. The design of new back end systems was
necessary in order to help the student coders be successful in their implementation. Looking
toward already existing web services, we decided to use the VuFind library catalog account login
as an authentication tool. This helped ensure that only people who are affiliated (and thus
enrolled in courses) are allowed to view where groups of students are checked in and studying on
campus, which addresses security and privacy concerns.
The other functions of the app that required middleware20 development included:
The Student/Library Collaborative
11

Course listing for the Study Buddy app
While the campus educational computing department provides an XML feed for course lists
– our infrastructure requires JSON feeds that we can control the processing of, particularly
since the step by step portions of adding student courses, scheduling a study session, and then
checking in at a campus location is a process that necessitates a single source data pipeline.

Campus locations for the Study Buddy app
The middleware for campus locations was sourced from a webpage detailing all the locations
on campus and then giving these associations of GPS ranges. The database for building
locations and GPS coordinates is stored in a MySQL database and data is pulled into the app
through a RESTful web service that serializes the Building Name GPS coordinates.

Session management for groups in the Study Buddy app
Once a user has selected 1) a course of interest for finding a study group, and 2) a campus
location for that study group, the database needs to keep this information active in the app for
as long as students are studying. This requires a session management service within the
MySQL database – and as long as students are in a study group at a location, the database
will advertise the study location to any user who has logged into the Study Buddy app
module. Once all users have exited the study session and the time for the session has expired,
the session is closed and no longer advertised to users looking for a study group.

Additional Desired Features of the Study Buddy Module
Other features that are under active investigation include messaging other users from within
the StudyBuddy module. This would allow users to plan their study group sessions from
within the module, and also invite other users to attend the study group, if they are not
actively logged into the app or monitoring a study session. The team is also investigating
The Student/Library Collaborative
12
alerting users of study group formation with push technologies. Push notifications would
support the student need of receiving notification when a study group is forming for a course
in which they are enrolled.
Discussion and Conclusion
When the grant team began working with the CS course in Fall 2012, they were able to
allocate new resources and development cycles that allowed development of mobile prototypes
incorporated as Minrva mobile app modules. This is illustrative of one of the key findings for
what computer science senior projects are suited: technical coding projects for which
requirements have been scoped and needs have been shown.
The reason computer science students are well suited to address scoped projects is that
they have been educated in software engineering classes to respond to coding the results of
requirements gathering. Collaborating with teaching faculty in the computer science department
was key as they had specific goals for students that also aligned with the goals of the library.
These include teaching the process of software design, consulting, scope management, and
requirements gathering. Grant staff came to understand that creativity by novice programmers is
not always possible. It was asserted by one of the faculty members in the computer science
department that their technical capability is only a few years old –because students are new
programmers their aptitude for creativity in design will not be well developed. However, for any
given group of students, experience and technical expertise will vary based on experience and
mentoring support.
Strategies for successful with senior projects partnerships:

Senior students are actively job seeking. Recognizing that the students are in their final
year of study and by the end of the spring semesters they will likely have secured jobs at
The Student/Library Collaborative
13
large fortune 500 companies. Front loading as much work as possible in the early part of
the year will be the most effective use of senior programming time.

Weekly meetings with grant staff and library staff is crucial to ensure projects are
progressing toward their stated objectives.

Code cleanup is necessary for integration of the student projects into any sort of
production code that the library may want to use – this is crucial for security purposes
and system stability overall.

Students respond well to a challenging engineering problem, but at the same time the
library has to provide technical support in meeting those challenges, one that borders
mentoring and teaching software engineering best practices.
In addition to collaborating with the faculty and students, our grant work showed us that it is
critical to partner with other departments on campus. For example, the campus Office of
Technology Management and campus legal helped us to understand the licensing and code rights
necessary for making the code open source and available to the rest of the library community. In
order to open source student work, we were required to get signatures from the students, which
the Office of Technology Management at the University of Illinois Urbana Champaign campus
advised on and helped us to craft assignment of rights to the code.
Sustainability and Extensibility
While this case detailed the Illinois partnership experience, grant staff are cognizant that
nationally there are a number of IT organizational structures and needs that computer science
partnerships can be applied. Beyond mobile, there are many software projects individual libraries
are seeking support, like website redesign for example. In general, other libraries may be
interested in experimenting with student sourced senior projects as a way to advance their
The Student/Library Collaborative
14
software services, especially if there isn't a robust internal software development. Computer
science students are valuable partners for their diverse perspectives on what libraries can become
in the future.
As the grant cycle ends and the work of student programmers is slated for mainstreamed
projects in the University of Illinois Library, researchers have found that by aligning with other
project focused IT teams in the library, integrating student developer outputs is feasible on a
continuing basis. The library has integrated student developer code within their agile
development processes as they undertake a library web presence redesign. The website utilizes a
number of APIs which students and grant staff developed. The APIs developed in the process of
native mobile app coding are useful for other systems, since APIs can drive web applications and
native application alike.
Since the visiting professional staff who supported student collaborations during the grant
are not continuing with the library, some of the technical support such as code cleanup and
testing will be done in partnership with production IT staff in the Library Software Development
Group. At this time there are multiple projects underway in which Library IT staff support
student programmers as they meet the high standard of quality assurance and code maintenance.
Integrating student programming work may be possible in other library departments
nationally, though this will depend on both the student population, and the professional staff
whom they will collaborate. Students need to be consulted seriously and held to high
expectations for coding outputs, though this must be balanced with recognition that students’
schedules vary along with project interests and technical ability. Students will respond well to
high expectations and challenging work. Students ought not be expected to produce professional
code, but with the right mix of mentoring and defined and scoped projects, student code outputs
The Student/Library Collaborative
15
can be scaled to meet other technical software needs in library and campus settings, as we have
shown with the release of Minrva 2.0 for the library consortium in Illinois.
Acknowledgements
The author would like to acknowledge the work of Nate Ryckman, Visiting Research
Programmer, Joe Troy, Visiting Program Manager, Benjamin Ryckman, Mobile Software
Developer, Maria Lux, Graphic Artist, and Ricky Lung, Software Intern, at the Undergraduate
Library, University of Illinois whose work was fundamental to the computer science course
collaborations throughout the grant period. Thanks to Lori Mestre, David Ward, the multiple
reviewers and editors of Portal for comments on drafts and revisions of this paper. This work
was made possible through a National Leadership Grant from the Institute of Museum and
Library Services. Additional programming support for Minrva module development,
middleware/API design, and documentation was sourced from the Technology Prototyping
Service, at the University of Illinois Urbana-Champaign.
1
From “Student/Library Collaborative” grant website:
http://www.library.illinois.edu/nlg_student_apps/documents/summary_of_grant_2013.pdf
(accessed August 31, 2014).
2
An example of re-use of grant design patterns is the development of a Library Hours
API (http://minrvaproject.org/services_hours.php, accessed November 29, 2014) feed, which
The Student/Library Collaborative
16
students coded backend functionality to meet the requirements of a Library Hours feed in the
new library homepage.
3
The list of CARLI I-Share Libraries is available at: http://www.carli.illinois.edu/membership/i-
share_part (accessed August 31, 2014).
4
Minrva | Get App: http://minrvaproject.org/download.php (accessed August 31, 2014).
5
Two reports in addition to this article will serve as the grant communication plan. There is a
report detailing findings of a campus-wide mobile app design competition forthcoming from the
Journal of Learning Spaces, entitled “Designing mobile technology to enhance library space use:
findings from an undergraduate student competition.” A second report, the findings from a twoday coding camp for mobile web apps are detailed here:
http://ejournals.bc.edu/ojs/index.php/ital/article/view/5480/pdf (accessed November 29, 2014).
6
Amruth Kumar, “Using Robots in an Undergraduate Artificial Intelligence Course: An
Experience Report,” Frontiers in Education Conference, (2001): T4D - 10-14 vol.2
7
Sergiu Dascalu et al., “Computer Science Capstone Course Senior Projects: From Project Idea
to Prototype Implementation,” Frontiers in Education, (2005): S3J–1
8
ibid. S3-J2.
9
Matthew Connolly, Tony Cosgrave, Baseema Krkoska, “Mobilizing the library’s web presence
and services: a student-library collaboration to create the library’s mobile site and iPhone
application,” The Reference Librarian 52, 1 (2010): 27-35.
10
Margaret Brown-Sica, “Using Academic Courses to Generate Data for Use in Evidence Based
Library Planning,” Journal of Academic Librarianship 39, 3 (2013): 275-287.
11
ibid. 287.
The Student/Library Collaborative
17
12
Toni Jones and Rita Richey “Rapid prototyping methodology in action: a developmental
study,” Educational Technology Research and Development 48 (2000): 63.
13
ibid. 79.
14
Jim Hahn and Nate Ryckman, “Modular mobile application design,” Code4Lib Journal. 18,
(2012): http://journal.code4lib.org/articles/7336 (accessed August 31, 2014).
15
Course wiki available:
https://seniorprojects.cs.illinois.edu/confluence/display/CourseContent/Syllabus (accessed
August 31, 2014).
16
Nate Ryckman and Ben Ryckman, “Minrva | Catalog,” minrvaproject.org,
http://minrvaproject.org/catalog.php (accessed August 31, 2014).
17
Frederick Phillips Brooks. The mythical man-month: essays on software engineering (Reading,
Mass : Addison-Wesley, 1998) 5-6.
18
Features of the finished chat service are available here: https://chat.library.illinois.edu/
(accessed August 31, 2014).
19
The campus mobile app competition was another previously mentioned part of the grant. The
process, workflow, and findings for the app competition are detailed in a separate, forthcoming
paper, "Designing Mobile Technology to Enhance Library Space Use: Findings from an
Undergraduate Student Competition," in Journal of Learning Spaces:
https://libjournal.uncg.edu/index.php/jls (accessed August 31, 2014).
The Student/Library Collaborative
18
20
The term “middleware” is used to denote several interlocking sets of computing solutions: 1)
RESTful architecture using GET methods, 2) an API that feeds lightweight JSON for the HTTP
requests 3) the middle computing layer that includes HTML parsers, database connectors, as well
as business logic to provide the data objects the app requires.
The Student/Library Collaborative
19
Download