CS 279: Software Projects
Joe Hoffert
jhoffert@dre.vanderbilt.edu
Department of Electrical Engineering and Computer Science
School of Engineering
Vanderbilt University
Locations
- Classroom -- 306 Featheringill Hall, TR from 1:10 to 2:25pm
- Office Hours -- Featheringill Hall 226, Tuesday and Thursday from 2:25pm to 3:55pm
- TA -- Aaron Thompson, Office Hours: Monday, 2:00 - 3:30, Email: aaron.thompson@vanderbilt.edu
- TA -- Akshay Dabolkhar, Office Hours: Friday, 2:00 - 3:30, Email: aky@dre.vanderbilt.edu
Philosophy
Good design and programming is not learned by generalities, but by
seeing how significant programs can be made clean, easy to read, easy
to maintain and modify, human-engineered, efficient, reliable, and
secure, by the application of good design and programming practices.
Careful study and imitation of good designs and programs significantly
improves development skills. -- Kernighan and Plauger.
Let us change our traditional attitude to the construction of programs.
Instead of imagining that our main task is to instruct a computer what
to do, let us concentrate rather on explaining to human beings what we
want a computer to do.
--Donald Knuth
Good judgment comes from experience, and experience comes from bad judgment.
--Frederick P. Brooks
Prerequisites
- CS 101 and CS 201
- Proficiency in OO programming and Java or C++
- Knowledge of email and WWW
Handouts
- Course Overview and Build Cycle
- Patterns and Resources Used for DRE Systems
- Frameworks & GoF Design Patterns
Assignments
Current Projects
sunna -
This project implements a a taxi management system by connecting the cab driver, the dispatcher, and the customer through an iPhone application.
Project Members:
- Emily Ross
- Guy Kopsombut
- David Hamrick
Vandopoly -
This project is a Java based 2D board game similar to Monopoly where players buy, collect, and renovate Vanderbilt's properties.
Project Members:
- Matthew Gioia
- Alessandra Mazzia
- James Kasten
Pops -
This project is an order processing system designed for a produce business.
The basic functionality includes order processing, customer profiles,
price sheets, basic accounting & reporting functionality, and
online ordering system for clients.
Project Members:
- Igor Ges
- Mark Sakauye
- Michael Seth Parrish
VU Parking -
This project gives you everything you need to know about parking at Vanderbilt
University:
currently available parking spots, how to go there, parking policy, parking
rates, etc. It also includes user-centered functionalities such as
automatically choosing best available parking spot according to preset user
information and preferences, user making comments on a parking spot etc.
Currently this application only applies to Vanderbilt University campus.
Potentially it can be expanded and developed to fit large scale areas such
as a whole city.
Project Members:
Past (Counter)Example Projects
javassonne - This project implements a Java-based 2D tile game similar to the board game Carcassonne. The game implements multi-player functionality and customizable terrain tiles.
whisperim - The Whisper IM client is designed to provide secure communication between clients using existing server technology without any additional support required on the server side. It is designed to be fully extensible to support an infinite number of chat protocols.
commando-engine - The COMMANDO engine is an open-source gaming engine built upon Microsoft's XNA Framework. The engine can be used in the development of tactical, top-down shooter video games. In the sample game, the player character must utilize objects in the environment in order to hide from and eliminate enemies. The enemies will use coordinated goal-planning to find and terminate the player character.
Possible Projects
Vanderbilt Mobile Applications Team (VMAT)
- This project brings together VU students interested in mobile computing,
and individuals at Vanderbilt University who have a mobile need. Our students
work closely with the individuals in need to develop cutting edge mobile
applications. We currently work with the Google Android, and Apple iPhone
platform, but would like to add more platforms in the future.
Any ideas benefiting the university would be acceptable, as long as they
involve mobile applications in some way. In many cases this involves
writing a server that provides and coordinates information for mobile clients.
Some possible projects include:
- Athletics App
- Campus Maps App
- Campus Events App, e.g., Facebook integration, more data sources
to add
- Dining app and server - food ratings, pictures, restaurant line
speed/length, etc.
- Multiplayer Mobile Gaming
- News App
- Indoor Way Finding
- Vandy Van Tracking
- VU webcam viewer
World of
Wordcraft - Students can collaborate with the English department
(English 115F
) on a role-playing world.
The reference guide presents more information.
Collaboration with EECE 262 - EECE 262 will be developing the following
projects. Students in the class might wish to collaborate.
- Interest Pairing
Have you ever gone into an internet gaming room and created or joined a multiplayer game? This project will be a real world application for this where Vanderbilt students can browse locations and events on campus created by their peers and other students. They would be able to go for instance, to a location 'Rec Center' and see the number of people in that group, and then browse more specifically by events listed. They can create their own 'events' like: playing frisbee on Alumni Lawn, Racquetball at the Rec Center, or a chess game in Featheringill. They can also create a friends list and be updated on what these people's events are. There could also be reputation points that people could earn by creating successful events that others who didn't know them enjoyed (by rating the event experience afterward).
This project is going to be very scalable, so we may add features, controls, or other levels of detail as we finish some of the more basic functionality. We will be creating event types and allowing a "host" to set some event details. Some variables attached to the user will include an ID, reputation, friendsGroup, and current location. Location could be used to allow people to browse available events close by.
Other extensions could include different event classes for larger sporting events or concerts, allowing people to rate them during the event (on a 5 star basis). However the main focus of this will be a small group forming social mixer. Vanderbilt students (ie a commons experiment) would be the intended focus group for the social/network experiment.
-
TaskShare
This software allows users to create tasks and keep them or assign them to someone else. Users can further subdivide the tasks they have received and reassign the subtasks. Finally, users can create and join task groups. In a task group, the owner can assign tasks to the group and it will automatically be assigned to each individual in the group (think professors assigning homework). There is a lot of room for additional features (i.e. deadlines, concurrent tasks that can be completed by any one person they are assigned to, having tasks that can be delivered through text message or email, etc.).
Server Side
- Handles user authentications
- Stores each user's task list and performs synchronization
- Maintains task list groups
- Maintains friend lists
- Provides a simple web interface (optional)
- Tracks subdivided tasks and reassigned tasks
- Provides feedback to the creator of the original tasks
This would probably be most easily done in a php/mysql type server, but if you want to do the project, implement it however you want to. Maintaining synchronization and coming up with a good database schema will be big challenges.
-
VUMC hall navigation
(NavigateVU -- an app initially designed to guide patients through the
VMC maze, and then expanded to include other audiences and the VU
campus (excluding areas such as some tunnels that Security does not
want showing to the public). I think of it as being like a Garmin for
VU pedestrians. It will be able talk you down hallways, up elevators,
inside and outside, to particular clinics and areas of the hospital to
start with. It will also guide you to the closest pharmacy, food and
chapels. Later it can expand to include other buildings, etc., around
campus. To start with, it may need to use some floor plans I have,
but in time the idea is to use the floor plans campus planning has
already (I'm told) digitized. Jules suggested using barcode scanning
to help with it. Another possibility is that Android phones with this
app could be handed out at the hospital information desks; these VMC
phones could have something like RFID to help find lost patients. One
initial requirement is that it be easy to update, e.g. when a clinic
moves. In later versions, it could perhaps be made an extension of
Google Navigate. So, for example, Google Navigate helps you to get as
far as a Med Center Garage, and then asks, "Would you like to
directions on how to walk to to your Vanderbilt destination from
here?" If you click yes, it hooks into NavigateVU. Another later
possibility is it could flip from floor plans to a photographic or
video view.
-
Classroom "clicker" response system
I talked with Richard Cyr the other day while he was on campus giving a talk. He's a biology professor at Penn State who teaches *very* large biology courses. 700 students in the same room, usually. He uses clickers in his teaching, and when he asked me what the latest news was in the clickers world, I shared with him an idea for a smart phone app that I've been thinking about. He's very excited about this app, and he's already started talking it up with some colleagues of his at Penn State in physics and education.
The Idea: I saw last week an iPhone 'flash card' app for students taking anatomy classes. One feature of the app is that you can have it quiz you: It names a part of the body and you point to that part of the body on a diagram that appears on your iPhone screen. The app tells you if you're right or wrong. That's cool.certainly more than paper-based flash cards can do on their own. However, I thought: What if you could have all the students in a class take a quiz like this, then project on the big screen the same diagram with all the students' answers shown, like pins on a Google map. You might see a cluster of pins in the right location, and other clusters in wrong locations.
The Plan: Richard really liked this idea, mostly because biology courses are so full of images and diagrams. We started thinking about other courses where this kind of image-based response system might be helpful: earth sciences, art history, really anything that involves analyzing images. I said something about getting a grant to create such a system, and Richard said that we should just go ahead and do it ourselves, perhaps using a little of funding he has to employ some undergrads to create the system. (I should add that we're thinking of a Web app so it will work across devices.) I'm sure I can find a few instructors here who would be willing to test the system, and Richard has some folks at Penn State. Plus, I know of a couple of iPhone initiatives at other schools where groups of students all have iPhones (Abilene Christian University, Miami Dade University, Central Michigan University) who might be interested in testing. And Richard's got a great person in education at Penn State who might be interested in helping us assess impact on teaching and learning.
Test and Training Enabling Architecture (TENA)
- Several TENA projects are available. This is work done with defense
contractor SAIC in Washington, D.C.
An overview of TENA presents
additional context for the projects below.
- TENA Data Logger -
Objective: Develop a plugin for the TENA
Object Model Compiler
(OMC)
that can read an arbitrary TDL file,
create a database with appropriate schema, and
generate an application that populates the database.
Evaluate trade-offs between different tools/approaches (e.g., MySQL
vs. SQLServer, SQL directly vs. JDBC). There is no correct
solution. However, justification for approach taken needs to be presented.
Resources: TENA applications that publish and subscribe to various
data (supplied by SAIC). TENA applications that print TENA data to the
screen (supplied by SAIC).
Possible tools to use: MySQL database, Microsoft SQLServer database
Express Edition, SQL, JDBC.
Acceptance test(s): Results of plug-in should be compared with TENA
applications that publish and subscribe various data (supplied by SAIC)
for accuracy and completeness.
Follow-on/Alternate:
Develop an application to playback and/or query from all loggers or databases.
- UML - TDL Converter -
Objective: Develop an application that will convert from a
Unified Modeling Language (UML) drawing format to an ASCII
TENA Definition Language (TDL) file and from an ASCII TDL file to a
UML drawing format.
Evaluate trade-offs between different tools/approaches (e.g., MagicDraw
vs. openArchitectureware). There is no correct solution.
However, justification for approach taken needs to be presented.
Resources: TDL metamodel in Eclipse Modeling Framework Project (EMF)
format (supplied by SAIC)
Possible tools to use:
Acceptance test(s):
SAIC can supply numerous TDL files. Manual inspection of conversion to/from
UML for accuracy and completeness is acceptable.
Tools
- Java Development Kit
- JUnit
- TestNG
- Apache Commons Libraries
- Groovy
- Google Web Toolkit
- Google Code
- Eclipse
- Visual Editor Project for Eclipse
- CruiseControl
- ANT
- XStream
- Spring Framework
- Hibernate
- ohloh
- XFire
- Generic Eclipse Modeling System (GEMS)
- Subversion Client for Eclipse
- Tortoise SVN
- Freshmeat