2018 Computer Science Capstone Symposium

May 4th and May 5th

Join the Computer Science Department to hear the senior capstone presentations. Student presentations will take place Friday and Saturday. All talks are scheduled in Morken 203.

Friday, May 4th

1:45pm – ListJockey: Cross-Platform Collaborative Spotify Playlist Application
Andrew Gjerness (BSCS), Adam Grieger (BSCS)

ListJockey is a cross-platform web application that runs in a browser and on mobile devices. Users can create collaborative Spotify playlists where they can synchronously listen to songs and interact with other users. This is done with the use of the Ionic Framework on the client side which allows for cross-platform development using Angular and TypeScript to create a rich, user friendly application. The use of the ASP.NET framework on the server-side allows for a robust set of REST API functions and WebSockets for real-time communication between users.

2:20pm – LuteLive: PLU iOS Sports App
Carson Ketter (BSCS), Jacob King (BSCS), Taylor Lunde (BACS)

LuteLive is an iOS application aiming to promote general student engagement among PLU athletics. Inspired by GoLutes.com, we aimed to make an easier and more accessible application that allows a user to pick a favorite sport, to be kept up to date, as well as informed about upcoming events. Users will have access to the current team rosters, schedules, and statistics. Using Swift, AlamoFire and Kanna libraries, we were able to translate HTML data into live information in a user friendly format. Users have the option to create an account and receive customized push notifications with information about their favorite sports. All of our data is scraped from GoLutes.com and displayed within our application.

2:55pm – Transcribr: Music Composition Software
Paul Dalenberg (BSCS), John Doster (BSCS)

Transcribr is a music composition software that is designed around user friendliness and accessibility. It consists of a robust model that can represent complex scores and a user interface that allows for easy integration with the model structure. Scores are displayed with a dynamic, user-friendly GUI. Additionally, individual score components can be altered with the mouse and keyboard, and scores can be played back.

3:30 Break

3:45pm – Nameless Heroes: A D&D-Based Game
Giles McIntire (BACS), Xavier Ramos (BSCS), Rachael Scott (BSCS)

Nameless Heroes is a turn-based, role-playing game implemented using Java that follows the general rules and features found in Dungeons & Dragons. The game allows 1-4 players to cooperatively explore a randomly generated dungeon using a peer-to-peer network connection, and perform basic actions such as attacking or examining to interact with things located on the 7×7 game board. Players are able to communicate using the chat box in order to strategize, and view their inventory and statistics from a side menu without interrupting gameplay. Character statistics are based on the chosen race and class, but player’s may choose to randomize them as well using the typical “roll 4 drop 1” method found in D&D.

4:20pm – GradSchooler: A web-based tool to aid prospective students who want to apply to graduate schools
Isiah Behner (BACS), Jessica Chase (BACS)

GradSchooler is a website built in C# using the ASP.NET framework. It compiles various difficult-to-find resources to aid users who are preparing to apply to graduate schools. This information is difficult to find because it is not cohesively available on the internet through any sources. The goal of the website is to provide users with as much information as we could find on graduate schools from a spreadsheet and by navigating two websites in order to prevent users from scouring the internet for answers. The university and program data is scraped from two websites: gradschools.com and graduateshotline.com, using the HTML Agility Pack API, and cross referenced with the spreadsheet information. This data consists of university names, the programs that they offer, and other important information regarding deadlines and tuition. Due to the scarcity of this data and lack of availability by scraping techniques, we gave the user the ability to contribute to the given data by submitting a request form to add to or alter the data the is currently being displayed to them. In addition, the user can create save their favorite schools and programs, and keep track of important application deadlines through Google calendar.

Saturday, May 5th

9:00am – AI in Geoscience: Blur detection in images
Zach Golden (BSCS), Boen Zhang (BSCS) 

Utilizing machine learning and blur identification, our project aims to assist in the creation of 3D maps from remote drone imaging in geoscience. With images provided by the Department of Geoscience at PLU, by calculating the Laplacian variance of a single channel of an image we trained a support vector machine with more than 2000 images and used our model trained from the SVM to classify images on the level of blurriness. Using a React based web application, users can submit images and manage projects by storing multiple datasets and set parameters for the amount of blurriness deemed acceptable for any given project. The blurriness of the images is rated (1 to 5) to determine if images are in the acceptable range for the modeling datasets. Implications of this project could be used to efficiently sort or classify large image datasets. Currently, in the field of Geoscience, numerous images of topography are captured via drone imaging and manually sorted for the purpose of monitoring changes in topographical structure over time.

9:35am – OnTime: Scheduling Website
Jeankie Aczon (BACS), Miguel Castillo (BSCS)

OnTime is a web application that helps students with managing a busy lifestyle. We decided upon this project because we know how stressful time management can be with an endless list of tasks to complete and only so much time to complete it all. A major portion of our project is devoted to database management for low and medium sized traffic using SQLite. For the frontend of our project, we utilized JavaSpark (a micro framework) alongside Freemarker (a Java-based template engine) to add a dynamic generative feature to our project. HTML, CSS, and JavaScript were used to add some interactive and attractive qualities to the web app. Our personal goals were to gain skills in web development from the design stage to coding, and debugging. We hope OnTime will provide a friendly and simple environment for managing checklists, entering tasks, viewing schedules, and tracking progress.

10:10am – PlantStone: A Plant Identification Application
Kyle Bendebel (BSCS), Joel Goh (BACS), David Ries (BSCS)

The goal for this project is to aid the user in identifying plants through utilizing the camera on Android smartphones and tablets. When you are outside hiking, biking, rafting, or walking, there are many beautiful and interesting plants around you. It is impossible to identify every species or type of plant that exists, even if you have been living in the same area your whole life. PlantStone is a plant identification algorithm that implements a Convolutional Neural Network utilizing the TensorFlow framework to solve this issue. The A.I will be ran as a mobile application created with Java and Android Studios. The mobile app utilizes the user’s phone camera. When the user takes a picture of a plant it will prompt the A.I to analyze the photo and output the name, scientific name, and how to care for the flower to the user’s screen. The mobile app also allows the user to search for flowers by name.

10:45am Break

11:00am Basic 3D Video Game Exploring the Concepts Involved in Game Engines
Eric Sundberg (BSCS)

The overall goal of this project was to learn about advanced concepts and algorithms that are used in modern game engines. To that end, it models them by means of a simple third person shooter game. In the game, the user moves the player around in a small world and tries to shoot as many enemies as possible before being shot. As for implementation, the game has includes simpler versions of industry-level algorithms, such as Shadow Mapping, Collision Detection, and Particle Systems. For example, while in modern games you might see characters made up of billions of little triangles, these are comprised of only a few hundred. This choice, and others like it were made due to restrictions on scope and time. While the code is supported by the OpenGL API and JOGL library, one of the design goals was to create as much of the code from scratch as possible.

11:35am – Robot with Basic Mapping and Pathfinding Capabilities
Christien Chandler (BSCS)

The falling cost of computer hardware combined with the increasing sophistication of electromechanical components has resulted in an explosion of worldwide interest in robotics. Mobile robotics in particular are seeing drastically increased use in a variety of fields such as photography, police work and medicine. Robot Operating System (ROS) is the industry standard software framework for robotics development. The goal of this project was to build a prototype mobile robot based on ROS with the ability to detect and process its environment with onboard LIDAR and to enable navigation of the robot within the space. A map image will be generated from the detected surfaces in the room and the robot will be able to find a path to a desired point on the map.

12:10pm Lunch

1:00pm – Kinect Lifter: Implement Dynamic Movement Tracking and Correction with the Microsoft Kinect
Paul Jett (BSCS), David Stoppenbrink (BSCS), John Woelfel (BSCS)

The Kinect Lifter is designed to provide useful adjustments, utilizing the Microsoft Kinect and artificial intelligence algorithms, to improve a lifter’s technique in either the snatch or clean. This software is unique in that it does not require the attachment of any devices to the lifter to track their motion. An analysis will be achieved by automatically cropping and comparing a user’s lift against a set of previously scored lifts. Our top scored lift data was gathered from professional olympic lifter Harrison Maurus(ranked 3rd in the world). A neural network is employed to make these comparisons. The neural network will provide a score of the overall lift (independent of individual errors) that is used to determine which weighted error is most relevant to the user’s ability and thus will yield the most helpful suggestion to improve his or her progress. Additional functionality and portability will be provided by implementing an Android application and database.

1:35pm – Blockscape: A Distributed Application Engine
Daniel Beal (BSCS), Matthew Conover (BSCS)

Today, most networked programs use centralized servers to manage and coordinate execution. These types of systems come with various issues including expensive computing resources, limited transparency, and the potential for downtime. To help solve these issues, we have developed Blockscape, which is a decentralized, computation engine built on blockchain technology—the same technology that powers Bitcoin. The goal of Blockscape is to provide an easy way for developers to create decentralized applications which can operate securely and reliably in a trustless environment. It handles the construction of a peer-to-peer network which stores and validates the blockchain, computes the application, and provides tools to generate new blocks using a proof-of-stake algorithm. As a demonstration, we are developing a game using the engine to showcase its capabilities.

2:10pm – Listen Up: Singing Exercise Application
Sean Murphy (BACS)

The goal of this capstone project was to create an application that can be used by PLU music students to practice their singing skills. Music students at PLU take four sections of Ear Training courses, and while an application for practicing their listening skills is present, an application to practice the singing skills of the class is lacking. Therefore, this application is targeting music students, specifically at PLU, with different exercises to practice singing skills. Using an API called “TarsosDSP”, I have created an application that uses the microphone of a computer to listen to the students singing and will give them feedback on the particular exercise they practiced. This program takes in the pitch, compares it to actual note values with a robust algorithm, then compares it to what the notes should be in the specific exercise, and shows the students feedback based on what notes they sang. Exercises offered include chords, scales, intervals, and more, and there are over 20 exercises per type.