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