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 and reports — 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, with several projects achieving legendary status and immortalized in the department culture. A list of these projects through our department’s nearly 40-year history follows.
“The day we reach peak LMUCS is the day we are able to code K'tah in Nebula VR” -- Serena Zafiris ’20
Nebula VR (2018)
NebulaVR is an integrated development environment for designing programs that are compiled through the Nebula-lang compiler. The goal of NebulaVR is to make programming collaboratively more natural. Concurrent communication with syntax introduces a complex layer of translating human ideas into abstracted programming constructs while also trying to collaborate with other human partners. NebulaVR explores removing the extra layer of complexity to make collaborative programming convenient and intuitive in VR. With visual programming the process becomes more intuitive to those who have never programmed before by representing complex programming constructs with visual clarity. |
|
Interrobang (2018)
Interrobang is a First Person 3D Puzzle Video Game built around a looping map design, developed in Unity and Maya. The player moves around various rooms, negotiating obstacles, opening doors, jumping, landing on buttons, and working through several different levels to complete a goal. |
|
Rehabilitation Driving Simulator (2018)
The LMU Rehabilitation Driving Simulator is designed to assist the recovery and rehabilitation efforts of people who have suffered a stroke or other serious brain injury when re-learning how to drive. The goal of the project is to help these drivers regain confidence on the road by allowing them to practice driving on realistic simulated tracks. The simulator offers a car seat that moves to provide haptic feedback expressing the reality of driving, and typical driving controls. Precise computer controls link the interface and the simulated roadway to provide a life-like experience. |
|
Mobie Dock (2018)
Mobie Dock is an Electric Scooter Solar Charging Application that provides a mobile interface for users to track locations of charging stations for mobile electric devices such as Lime and Bird scooters and electric cycles. Along with locations of stations, the amount of charge per scooter, the number of charging slots available, and data regarding energy saved/used is also collected. Incentives are provided for riders to use specific stations. This project is done in concert with the City of Los Angeles. |
|
Co Op (2018)
Co Op is a React Native application that provides groups of people with a platform on which they can hold each other accountable for activities they are doing together. The main page for an activity contains the core functionality of a group messaging application. Added to the messaging interface are accountability features, such as checking in on a friend's progress on a task, having a friend prove their check-ins, and wagering "money" for competing towards a goal. |
|
Debased (2018)
Debased is a distributed database application which is built on the ideas of "proof of stake" and using Blockchain technologies. The main idea of Debased is that by using these two core technologies the integrity of the data in the database can be verified and proven correct; in the event that the proper rules are not followed, the data never makes it into the database, improving consistency and security, and upholding all the tenets of ACID: Atomicity, Consistency, Isolation, and Durability. |
|
Deeper Insights (2018)
Deeper Insights is a private deep learning algorithm aimed to be used by the government and non-profit organizations. The algorithm was developed with the aim to predict climate change and El Niño, although flexibility in the algorithm implementation allows for the possible extension of this algorithm to be used to predict other natural events such as the hurricane trajectories and earthquakes. Deeper Insights features a Recurrent Neural Network (RNN), a Convolutional Neural Network (CNN), and a user interface to present the results of the algorithm in real time as new data is obtained. The RNN is used to make accurate predictions on data that is obtained over a specified longitudinal time period. The CNN processes data that has many layers, namely climate change-related features such as air temperature, sea temperature, pressure, and humidity. |
|
自律的風力 (2018)
Jiritsu-teki fūryoku is a React.js web portal and visualizer for non-destructive test (NDT) data streamed from drone reconnaissance over wind farms. The portal is a user-friendly web application for wind turbine farm owners to easily access inspection data and analysis. Data is obtained via inspection drones which can fly up and attach directly to wind turbine blades, providing close up inspection that would be time- consuming, expensive, and somewhat dangerous for humans to perform. Photo and heat map data thus obtained can allow operators to know when a turbine might require immediate maintenance, and can assist in providing them information about severity and other factors for scheduling routine maintenance. |
|
Heartwired (2017)
Heartwired is a puzzle-platformer game application that allows users to control characters to maneuver in a three-dimensional environment and solve a variety of logic puzzles. The player can switch between two characters, B.E.A.R. and Taliah. Each character possesses unique abilities that can impact environmental obstacles. The game was made using the Blueprints system in Unreal Engine 4. The user's experience is informed by a Health UI and interactive 3D assets created in Maya. The programming team also worked with a team of five CG artists, a composer, a concept artist, a sound designer, and a screenwriter to create this product. |
|
Bored & Broke (2017)
Bored & Broke is a browser-based application that allows users to connect based on activities that they have a mutual interest in. On the website, the user will be asked to create a profile, which will store information such as location, name, and saved activities. The user can then see and save activities in their location. When a user saves an activity, they are brought to that activity's page. On that page, they can see more information about the activity, such as photos and exact location, as well as a list of the other users who have saved that activity. The user is then able to contact those users individually through a third-party messaging app. |
|
Case X (2017)
CaseX is an interactive web application and database solution optimized for the management of physical case data. CaseX was developed in partnership with the Los Angeles Police Department Homicide Library Unit. |
|
Cryptosym (2017)
CryptoSym is a website that aims to provide a safe environment for people to practice trading cryptocurrencies on a exchange in real-time. Users can begin by trading with any amount of money, ranging from $1 to $100,000. It serves as a learning tool for people who are unfamiliar with the cryptocurrency markets and want to practice with fake money. The application offers a tutorial on the real-world process of transferring money from your bank account to the exchange, creating a risk-free and informative environment for the user. |
|
CrookBook (2017)
Crookbook is a case information database and front-end interface for the Los Angeles Police Department that provides detectives with the ability to add new cases, update existing cases in response to new information, and query all existing cases with a wide search criteria. The database tracks |
|
Memebank (2017)
Memebank is a personal online database and social media platform that allows users to store, sort, and share links to their favorite memes. |
|
OneUp (2017)
OneUp is a web application that aims to expose young skateboard talent through crowdsourced curation. The app manages a video database of user uploaded skate clips that are curated by upvotes and downvotes from other users. OneUp aims to create a space where skaters can surface up democratically, powered by those who know and love skating. Skaters are constantly aiming to get sponsored while building their personal brand, and OneUp can make this process more efficient. Besides serving the committed skater, anyone who simply enjoys watching skate videos will have a place to watch the top clips and have a say in which skater should be noticed. |
|
Markit (2016)
Markit is your go to app for selling and purchasing used goods within a college community. Users can search, sell, purchase and track items via Android, iPhone or your favorite web browser. Markit has a dynamic chat and offering system which provides great communication between the buyer and seller. Worried about being robbed or cheated? Markit allows users to rate each other! Are you looking for an item but it's not available? Markit will track that for you! Markit is your one stop app for buying and selling used goods! |
|
Impossible 3 (2016)
Impossible 3 is a real time strategy game developed in Unity 3D. The player must control 3 different units simultaneously: a mage, an archer, and a knight. These 3 characters face the impossible task of fighting endless waves of oncoming enemies. But they can use their skills to their advantage and level up new abilities to strategically face and battle the evil horde. |
|
Safe Place for Youth (2016)
Safe Place for Youth is a 501(c)3 nonprofit seeking to automate their intake process for the youth experiencing homelessness whom they serve. Currently, their staff must make the best of working with hard-copy forms and excel spreadsheets, manually recording and extracting client information and participation data each month to publish reports for donors and track the performance of their services. This project consists of a database-driven web application built from scratch, providing SPY with the functionality that will make it easy for them to manage information for the youth via profiles as well as display and publish reports on their metrics to use for marketing and fundraising. |
|
Coliseo (2015)
Coliseo is an Oculus Rift game, consisting of a client written in Unity and a leaderboard server written in Node.js. Participants attempt to survive in virtual reality coliseum, using either an Xbox controller or the mouse and keyboard, and battle both inside buildings and outside. Many hours were put into improving the Oculus user experience over the basic free support provided in Unity. The leaderboard webapp is fully internationalized and supports security best practices such as strong password hashing, XSS prevention, CSRF synchronizer tokens. |
|
Hayabusa (2015)
Hayabusa is a side-scrolling action game written in Unreal 4, with novel gameplay features such as teleportation. Ryu Hayabusa, a ninja from one of the last few ninja clans known to exist, is the sole survivor of a deadly massacre led by the mighty yet evil ninja master Heishiro Daison and his horde of deadly assassins. In the bloody bout, Daison slayed Hayabusa's master and stole his prized sword, Shishi-Oh. Vowing to avenge his master and to retrieve his sword, Hayabusa journeys across the land to slay Daison and his assassin clan, as well as retrieving Shishi-Oh. |
|
Grapevine (2015)
Grapevine is an application that automatically populates a user's calendar with events from Twitter and Facebook. Events are extracted by an intelligent agent that listens to feeds that the user follows. The server is written in CoffeeScript with a bit of Python and the NLTK libraries. An iOS client is written in Swift and an Android client is written in Java. |
|
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 web service 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 between 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 golf cart, 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 R. 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 artificial 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. |