Senior Capstone Projects

Loyola Marymount University's Computer Science program was one of the first innovators of the undergraduate software engineering capstone project in the early 1980s. Such projects are now an expected part of a quality curriculum in Computer Science.

Since 1982, all computer science majors have been required to take part in two software engineering practica in their senior year, culminating in the production of working software applications and all associated design artifacts — presented to an audience of family, friends, faculty, administrators, fellow students, alumni, and industry representatives.

The fall practicum consists of projects implemented in one or more groups while the spring practicum is similar to a senior thesis, where students work individually on the project of their choice under supervision of a faculty advisor.

The fall "senior group project" is one of the highlights of the computer science major experience. A list of these projects through our department's 30+ year history follows.

CherAmi (2014)

CherAmi  is a social sharing application with a number of features to control sharing with one's dearest friends in a simple, fun, and secure way, and, in the case of celebrity users, monetize their fanbase. Participants can post text, image and video content, decide whether postings are free or paid, embed secret messages in content, enable content locking and expiration, and gain reputation via activity within the app. In addition, celebrities can expose content (backstage passes, discounted tickets, signed photos, songs, early access) only to fans with a minimum reputation.

The application features a REST API, written in Go and backed by a Neo4j graph database; an HTML 5 client implemented with Backbone, Marionette, Bourbon, and Sass; and an Android mobile client.

Kalventure (2014)

Kalventure is an application that encourages users to exercise via an interactive story game. The story is about a computer named KAL who has trapped the user inside the game. KAL believes all humans are lazy and out of shape so KAL has hidden fragments of the exit code behind security that requires physical movement to uncover. By playing through the different activities, users give the KAL programmers time to hack through KAL’s defenses and enable the users to bypass KAL’s security by making cheats for the user to progress through the games.

The game is an Ruby on Rails application and movement is tracked via LEAP Motion device.

Chuzr (2013)

Chuzr is a social ranking application where users give opinions in products, ideas, businesses, sports teams, restaurants, celebrities, and similar entities by voting, ranking, rating, or tagging.  Users can gain reputation for their actions and acquire coupons and random prizes.

The project actually consists of four subprojects: the app itself, written as an HTML5+CSS3 webapp; a RESTful API web service, or API (Node + Express + Mongoose, backed by MongoDB); an ingestor that fetches source data (currently we use Shopzilla's API to fetch products only); and an analysis and reporting tool for providing reports in CSV, HTML, JSON, and a variety of visualizations built with d3.js.

Wutup (2012)

Wutup is a social event management service that allows users to create and promote events, invite friends to events, and register for events. Events can be searched by category, geography, sponsor, or date range. The service connects to other social networking sites including Facebook and Twitter for promotion and registration, and exposes a RESTful API so developers can generate any number of clients (web, mobile web, iOS, Android, an so on).

The webservice is implemented in with the Jersey implementation of Java's JAX-RS.  Two clients, one written in HTML5 (with some help from jQuery and Bootstrap) and one for Android, are provided to illustrate the service.

K'tah! (2011)

K'tah! is a browser based, cooperative, class-oriented zombie survival game designed for true team play. Players not only work in synergy with, but also depend upon, one another in order to reach the highest levels of achievement. Unlike most titles in the genre, K'tah!'s gameplay requires players to route, outrun, and outsmart the zombie horde, rather than follow the usual hack, slash, and obliterate paradigm. Players undergo progressive development, enriching class-play with added abilities and features.

The game is implemented with a full JavaScript stack: HTML5 / CSS3 / JavaScript + jQuery on the client side, and node / express / backbone on the backend. The templating engine is Jade, and the graphics engine is Copperlicht. A MySQL database is used for player account information.

Manic Monkey Madness (2010)

Manic Monkey Madness is a two-player, physics-based game in which monkeys go head to head in order to destroy each other's fortress and claim treasure. Players take turns strategically aiming their shots to cause the most destruction to the opposing fortress.

The game is written entirely with JavaScript and HTML 5 (no Flash!) with original graphics and original music. The physics engine is Box2D.

There is also a modest server written in Java deployed on Google App Engine. Communication beteween server and client is done via Ajax with JSON for serialization.

Serengeti (2009)

Serengeti is a location-aware social networking application in which users join teams and check-in from multiple (real) locations to effectively conquer territory. Check-ins can be made from either a web application optimized for mobile phone browsers or a native iPhone app. Players can engage in friendly competitions, organize events to raise money for charity, or simply find out where their friends or enemies might be hanging out.

The server and web application is authored in Java, using the Spring and iBATIS frameworks, as well as JavaScript and jQuery. The iPhone client is written in Objective C.  Google APIs are used for mapping and related functionality.

iDeccka (2008)

iDeccka is a networked card-deck simulation game for the iPhone or iPad Touch. The application simulates a card table for up to eight players. The game host can select up to eight decks to be used simultaneously for any type of card game which is desired. Other players can join games remotely, and all players are visible to all other players on their devices. 

Holding the device in portrait orientation shows the table view so that all cards on the table can be seen, either face-up or face-down. Holding the device in landscape orientation shows only the cards in the player's hand, which are not visible to the other players in either view. 

Cards can be dragged, flipped over, and dealt from piles, thereby simulating any imaginable game.


B.L.Y.T.S.S. (2007)

BLYTSS is a turn-based two-player game much like chess or checkers, but with the addition of battling between game pieces similar to role-playing games. The game is played on a board, which is built in three dimensions. Players have teams composed of units. Each unit can move and take an action with each turn. Units can attack each other, but attacking a unit doesn't necessarily defeat it. The game ends when a player has defeated all of the opponent's units.

JOGL Da Ball (2006)

JOGL Da Ball (JDB) is a combination of Sega's Super Monkey Ball and the board game Labyrinth. Players use the keyboard or mouse to tilt the game platform and cause a ball to roll along the platform to fall through a hole, much like in golf. In advanced levels, there are no sides to the platform so the ball can roll off into space. 

Successive levels of difficulty subject the player to randomly moving obstacles which can block or capture the ball, as well as different platform widths and orientations and hole locations. Several different modes of play are available including a time trial mode, a practice mode, and a head-to-head competition mode.

The application is written in Java, and packaged via Java Webstart.

Carcassonne (2005)

Carcassonne
 is a Java application based on the board game of the same name. Players develop the area around the French town of Carcassonne by placing land tiles. 

In each turn, the playing area becomes larger as the players expand and add roads, fields, cities, and cloisters. The players may also deploy their followers as thieves, farmers, knights, and monks to control and score points for the roads, farms, cities, and cloisters. As players have only a few followers, each must plan moves carefully and deploy followers when and where they can earn the most points.

Supermarket Mystery (2004)

Supermarket Mystery is a version of the classic board game Clue, played in a supermarket. 

The project is written in Java using the Swing API and uses UDP as the networking protocol.

LMU Sleuth (2004)

LMU Sleuth is a multiplayer, Internet-based clone of the classic murder mystery game, Clue. Acting as detectives, game participants are able to play over the Internet from any location using a Java-enabled computer. The goal of the game is to have each player decipher, from a series of clues, who committed a murder, what weapon was used, and where on the game board murder occurred. 

The game is set on the LMU campus with possible crime locations: The Lair, The Vonderahe Library, The Hilton Building, Pereira, Seaver, St. Robert's, The Chapel, Gersten Pavilion, or a parking lot.  The murder weapons are a golfcart, a gun, a knife, a textbook, food from the Lair, or a USB cable.  The six suspects are, to no one's surprise, August, Dickson, Dionisio, Dorin, Marino, and Toal.

The application is written in Java using low-level (socket-based) networking primitives.

Island Adventure (2003)

Island Adventure is an Internet application where players interact with each other and their environment on a island filled with games in which players compete to earn island currency.

Reality High (2003)

Reality High is a multiplayer Internet-based game, intended for 10-14 year olds, that simulates typical middle and high school activities, such as taking tests and quizzes in mathematics, science, and English. Players can chat with each other, eat at the cafeteria, run from bullies, date each other, and take on roles such as soccer team member or hall monitor.

The web application is written in Java using both raw servlets and JSP pages. The chat subsystem is coded with low-level networking primitives.

Galaxy Sleuth (2002)

Galaxy Sleuth is a multiplayer, Internet-based game based loosely on the board game Clue. Rather than the traditional game featuring rooms and hallways in a mansion, players travel through space to gather clues to solve a murder.  Murder settings include the planets Evilon, Linuta, Verlute, Neudel, Phaedrun, Psu, Ping, and Earth; murder weapons include biological weapons, phasers, radioactive chemicals, hyperropes, and laser swords.  Suspects include Mona Moonwalker, Tina Timetraveler, Uhura Universalist, Steve Stargazer, and Sam Spacevoyager.
The Class of 2003 was split into three teams, each responsible for building its own version of the game from the ground up. Each team used Java and low-level (socket-based) custom protocols for gameplay and chat. 

One team, apparently dissatisfied with the word "sleuth" in the project title, named the project Space Chicken.

Quest for the Last Turing Machine (2001)

Quest for the Last Turing Machine is an interactive role-playing game in the spirit of video game console classics such as Final Fantasy. The project features an elaborate, futuristic story and game environment (with student-designed character art) to immerse the player in a world of science fiction fantasy.

The project is written in C++ and uses the OpenGL graphics library.

RAPID (2001)

RAPID (Remote Access Product Information Database) is an inventory and supply-chain management application similar to SAP R/3. It can be employed by any company that uses materials as components to be combined into a finished product for sale. Intended users of the system are managers, sales personnel, factory supervisors, and supply chain management, with side benefits to financial and accounting operations. 

Sales personnel can use the client on a portable computer from a customer location to place orders, to check order status, to query availability or products, and to provide price information. Factory supervisors can use the application to help track input and output of both components and finished units, and to supply metrics to upper management on processes and productivity. Supply chain personnel are able to track component usage over time and thus can more accurately predict reordering of components and stock. Managers and financial/accounting departments will have available the reports they need to insure cost and schedules are met, which will help them cut expenses, increase productivity, and grow their businesses.

The application is built with a Java GUI client, a Microsoft Access Database, and a server written in LabWindows/CVI.

NOVA (2000)

NOVA (Natural Language Processor Outputting VRML Architecture) is a tool that accepts 3D scene descriptions in natural language and builds VRML representations of the scene and displays them in a VRML browser. The tool is comprised of a client component with a custom NLP engine for generating intermediate representations of the scene descriptions, and a server component hosting a database of predefined VRML components and a translator from the intermediate representation to VRML.

The application is written in Java with the Swing graphics library and low-level networking and database connectivity primitives.

WAPi (2000)

WAPi (Wireless Application for Personal Information) is a service for entering personal information (calendar, To-do lists, etc.) through a traditional website, saving this data to a database, and later retrieving it on cellphones via WAP. The application also reads email via POP.

The web application is written in PHP. The WAP client is authored in WML.

Keck Wars (1999)

Keck Wars is a networked space combat flight game in the tradition of X-Wing and Tie Fighter. Players fly combat missions, escort convoys, and perform rescues. The game can be played in single player or multi player mode and includes intelligent computer players.

The project is written in Microsoft C++ using the MFC graphics library for 2-D rendering, and OpenGL for 3-D graphics.

Risk (1998)

The class of 1999 has built a computerized version of the board game Risk.  The class was divided into three teams, each of which created their own GUI, their own game rule implementation, their own computer player, and their own interface into a common custom networking protocol.  Each team can thus play against each other.  One team trained their computer player via genetic programming, but the winning team adopted a strategy of brute-force grabbing, keeping, and expanding from Australia.

The game was written in Java.

Acquire (1997)

Acquire is a networked, multi-player computer version of the board game of the same name from 3M Games and Avalon Hill.  During each turn, the players can buy or sell stock, add tiles, and manage hotel chains.

The program has features such as game save/restore, time limits, chat, and a computer player which was trained via genetic programming.

The program is implemented in Java and uses low-level socket IO for networking.

Lions' Strike (1996)

Lions' Strike is an arcade-style game in which players have to avoid and destroy robotic patrols deployed by LMU Security that have gone out of control.  The robotic tanks feature a particularly strong AI component and collaborate to attack and kill players quickly and effectively.

Casino Games (1995)

The class of 1996 produced a suite of Casino Games for their group project.

Abalone (1994)

The Abalone game written by the class of 1995 features an extraordinarily strong computer player whose AI engine was genetically refined over many days of playing many games of Abalone against itself. 

The computer player was able to easily beat all human players (including its authors) and computer players from various other universities.



Scramble (1993)

The class of 1994 has written a computerized version of the board game Scramble, including a computer player.  The application is written in Borland C++.

Backgammon (1992)

Did you contribute to the senior project backgammon game in the fall of 1992? Let us know more about this project.  Thanks.

Risk (1991)

The class of 1992 has built a computerized version of the classic board game Risk.  The application comes bundled with two computer players, one supposedly good and one supposedly "not-so-good," which can play against human players or against each other.

Monopoly (1990)

The class of 1991's Monopoly game is written in Modula-2 and assembly language, and improves on last year's group project in several ways. The game runs in 320 x 200 x 256 graphics mode under DOS, and features an assembly language bridge for the mouse driver and a completely custom-generated GUI complete with menus and basic windows.

Monopoly (1989)

The class of 1990 has become the first class to move to Modula-2 for their senior group project, producing a version of the popular Monopoly game with rudimentary graphics.  Graphics and mouse handling are done in assembly language.  (The development of this project was discussed in the papeR. J. Toal and P. M. Dorin. Software engineering and the game of Monopoly. ACM SIGCSE Bulletin 22(4):2-10. December, 1990.)

Text Editor (1988)

The class of 1989 has built a DOS-based, console mode text editor with keyboard shortcuts, typing assist, and speech input for most of the commands. The editor, unfortunately, does not have a catchy name, although it dutifully carries out spoken instructions such as "open," "save," "page up," "left," and "quit."

The project is written in Turbo Pascal, and uses an off-the-shelf speech recognition library for with a low level interface to a low-cost commercial speech board.

Monopoly (1987)

The class of 1988's Monopoly computer game runs under DOS in graphics mode. The game is written in Microsoft Pascal (for game logic) and assembly language (for rendering and keyboard interaction).

Othello (1986)

This Othello game for the PC features a nice graphical game presentation and user interface, and a notably strong computer player that has handily beaten most of its competitors in the world of PC AI Othello programs, as well as most human challengers. The application is written in Pascal.

Monopoly (1985)

The class of 1986's Monopoly computer game runs under DOS in graphics mode. The game is written in Microsoft Pascal (for game logic) and assembly language (for rendering and keyboard interaction).

Backgammon (1984)

The class of 1985 has produced a backgammon application running under DOS, featuring assembly language color graphics, low-level sounds, and an artifical intelligence engine for game play that defeated the engine produced by the course instructor and a graduate student in the official end-of-semester seven-game tournament, 6-1. 

The application is written in Microsoft Pascal and assembly language. Ease on Down the Road is played on the PC speakers upon victory.

Chess (1983)

This Chess game runs on the new IBM PC and is written in BASIC.  The program features a decent board position evaluation function and computes its next move without (yet!) any lookahead.

Chess (1982)

The members of the class of 1983 have written an interactive chess playing program in Pascal.

Note: The 1982 project was completed in the spring semester of 1983.