List of Student Projects

 

Current Projects

Location-based annotated tours: Design and build a web and/or smartphone application that uses location-based services (JavaScript or smartphone APIs) to allow users or owners to annotate locations on a map with text, photos or audio narration. This could be used, for example, for building guided tours for nature areas or parks.
Details: Project may be coordinated with a local nature preserve.

Texting for 9-1-1 (emergency calls): Today, you can only call 9-1-1 by voice, but in many circumstances, text, photo and video communications would be helpful in improving emergency response. The goal of the project is to build an Android or iPhone app that allows to communicate with a 911 center (public safety answering point), using text and, optionally, send pictures.
Details: The project is based on our on-going NG911 (next-generation 911) project and efforts by the US Federal Government to improve 911 service. The project will leverage existing SIP, RTP and LoST (location look-up) libraries to contact the right 911 center. The application may be used during NG911 demos and trials.
Prerequisites: Java; experience with Android or iPhone helpful, but not required.

Java on FreeBSD and/or OpenWrt: This project investigates different Java environments on FreeBSD and/or OpenWrt.
Details: Java runtime and development environments on Windows, Linux and Solaris operating systems are very mature at this point. This project investigates the state of affairs on two other important UNIX platforms for network devices--FreeBSD or OpenWrt (or both!) You will survey all available Java runtime and development environment on your chosen platform. Your investigation should include (but not limited to) relative performance by well-designed measurements, memory footprint of the runtime, degree of conformance to Java 2 Security framework, how Java thread is implemented in relation to OS threads, any available runtime optimization such as JIT, Java Native Interface (JNI) support, and the availability of recent features such as OSGi module framework, Java 2 libraries and DirectByteBuffer.
Prerequisites: Strong Java skill required; Familiarity with UNIX environment required; Working knowledge of C highly desirable; Must be analytical and organized; Must be a self-starter who requires minimal supervision.

SIP communication using Bonjour: This project will implement Bonjour-based SIP user agent discovery into an existing open-source SIP phone.
Details: Bonjour, also known as Zeroconf, is a technology pioneered by Apple that lets local devices to be connected without the need for configuration by the users. SIP phones can use this technology to discover other SIP phones on the same network, the details of which are described in an Internet draft. This project will implement the spec on an existing open-source SIP phone.
Prerequisites: Strong programming skill required; Experience working with a large exiting code base is a definite plus; Familiarity with SIP and/or Bonjour is a plus but not required.

Using 3G/EDGE and WiFi links to improve download speed in iPhone: Using an iPhone (or any other smart phone), evaluate the power consumption and download speed when downloading a file using EDGE/3G interface and a WiFi interface. Evaluate how download speed can be increased by using both EDGE/3G and the WiFi network interfaces. Sign up for this project with Prof. Henning Schulzrinne.
Details: For more information, please contact salman@cs.columbia.edu
Prerequisites: Computer Networks (desirable) iPhone API (desirable)

Port Wengo-P2PP phone to Qutecom: We have incorporated our P2P library in Wengo phone. There is an increasing demand by researchers and folks in industry to port the P2P library to the newer version of Wengo phone, known as Qutecom (http://www.qutecom.org). This is a high impact project and p2p changes in qutecom can be incorporated in their source tree. Sign up for this project with Prof. Henning Schulzrinne.
Details: For more information, please contact salman@cs.columbia.edu
Prerequisites: Computer Networks

Flash based VoIP / video for real-time communications: Incorporate RTMFP in Qutecom, an open source SIP phone (http://www.qutecom.com/). Develop a web-based phone that can establish VoIP and video sessions with RTFMP enabled Qutecom. RTFMP is a real-time protocol by Adobe which can be used to establish media sessions between peers. http://download.macromedia.com/pub/labs/flashplayer10/flashplayer10_rtmfp_faq_070208.pdf
Details: For more information, please contact salman@cs.columbia.edu
Prerequisites: Computer Networks

Implement Resouce Location and Discovery Protocol (RELOAD): RELOAD is a P2PSIP working group protocol, that is in the process of being standardized. Implement RELOAD over secure transport (TLS, DTLS) and scale the p2p network to 100 nodes. There will be opportunities of presenting this work at the Internet Engineering Task Force (IETF).
Details: For more information, please contact salman@cs.columbia.edu
Prerequisites: Computer networks (must) Network security (desirable)

Power consumption of VoIP/Skype on mobile phones: Evaluate how use of Skype / VoIP drains power on mobile phones (iPhone, Nokia). Find out the power consumption of keep-alive traffic, VoIP, IM, and video. Compare and contrast it with the power consumption of a non-VoIP voice call. The output of this project will be a technical report that has the potential to impact research on VoIP and power consumption. Sign up for this project with Prof. Henning Schulzrinne.
Details: For more information, please contact Prof. Henning Schulzrinne.
Prerequisites: Computer Networks An iPhone or Symbian-phone

SIP on iPhone: Port an open source SIP phone to iPhone. Measure call quality, and power consumption. Design an easy to use interface for interacting with this SIP phone. Sign up for this project with Prof. Henning Schulzrinne.
Details: For more information, please contact salman@cs.columbia.edu
Prerequisites: Computer Networks (desirable) Familiarity with SIP (desirable) An iPhone!

NetServ: Dynamically installable network services: We are building a new way to deploy network services, allowing dynamic installation of services. Java modules can quickly deliver new services, such as video storage and peer-to-peer systems.
Details: NetServ is a new way to deploy services in the Internet, using the OSGI framework and the CLICK programmable router. Services might include service discovery, content distribution, peer-to-peer services, multicast, location-based services, and network diagnostics.
Prerequisites: Knowledge of Java; network background helpful.

Indoor positioning using ultra-wideband: Use ultra-wideband positioning technology to automatically track speakers with a video camera.
Details: Location tracking is a very powerful application in many domains, such as healthcare, for following people and assets. A number of technologies are competing to provide the best solution. One such technology is Ultra Wideband (UWB), which can ideally provide an accuracy of within six inches. We have an UWB system installed in the CS Department conference room that uses sensors on the walls to locate small badges. There is also a video camera installed on the wall in the same room whose positioning can be controlled programatically. The two systems can be combined to make the camera focus on a specific person in the room. This is very desirable when meetings are held and remote viewers would like to see different participants (e.g., in a panel or a larger discussion group). The project student would be responsible for integrating these two systems through the use of existing APIs in order to demonstrate the aforementioned functionality. Presence technology used in VoIP is one possibility for communicating between the two systems.

Echo detection for VoIP: Design an echo detection module that measures the volume and delay of echo in a voice-over-IP system.
Prerequisites: Some background in signal processing.

Audio and video codec measurement: For audio and/or video, measure how users react to codec changes. With the help of your mentor, you will recruit students as experimental subject. The test subjects will evaluate whether they prefer constant quality or varying quality, for different bit rates and codecs.
Prerequisites: Understanding of basic digital audio and video properties; COMS 6181

Evaluating protocol parser performance: Construct an optimal HTTP and SIP parser with both eager and lazy evcaluation.
Details: Eager evaluation evaluates all header components and splits the body into parts, where needed. Lazy evaluation only parses headers required for initial processing and defers parsing other request parts until needed. compare fixed and variable header format. In a fixed format, all header and parameter names use standard capitalization, no spaces after the header field or parameter name and the equal sign, no spaces after the parameter-introducing semicolon,single line without continuation lines and a fixed order of header fields. Encode the same header information in XML, as is done in BEEP and XMPP (Jabber). Compare the text parsers to a TLV (type-length-value) binary encoding of the same information.
Prerequisites: C/C++; COMS 4119; some familiarity with XML

Automated busy discovery: Build and design applications that detect if a user is likely to be receptive to receiving phone calls or otherwise being disturbed and whether the user is physically present. Use acoustic sensors to detect speech (e.g., for meetings) and track telephone usage, generating presence data and influence call behavior, so that incoming calls are automatically redirected to another party or voicemail.
Prerequisites: COMS 4119 or equivalent; C/C++

MAC OS X Leopard server implementation of BASS Application Sharing System: MAC OS X Leopard server implementation of BASS Application Sharing System
Details: BASS Application Sharing System is efficient, reliable, independent of the operating system, scales well via heterogenous multicast, supports all applications, and features true application sharing. Currently, BASS has a Java client and Windows XP server. We've searched the possible ways to implement a MAC OS X server and found the required API methods. The student should implement a BASS Leopard server with objective C and Cocoa.
Prerequisites: Computer Networks, Cocoa, Objective C

RFID name badge: Using creditcard-sized RFID tokens and a Gumstix embedded Linux system, build a system that recognizes the RFID card and transmits the identifier via an 802.11 LAN to a display system that consults an LDAP database to map identifiers to names and other details.
Details: At conferences, students and researchers ask questions at a microphone, but the audience cannot always tell who is speaking. We propose to use RFID chip cards carried in name badges and a sensor installed at the audience microphone. The sensor reads the RFID card of the person at the microphone and sends a message with the unique identifier to a server. The server then translates the identifier into a name and affiliation, displaying it on a screen or submitting it to a chat room for the meeting. We plan to test the system at the IETF, a large meeting of network engineers that takes place every four months.
Prerequisites: Willingness to work with embedded systems.

Spam analysis: Analyze some of the network properties of spam.
Details: Based on either your own collection of spam or one provided, analyze how spam is delivered, i.e., via open relays or via "bots" and whether techniques such as SPF are deployed and helpful.
Prerequisites: COMS 4119 or equivalent.

Counterfeiting-proof documents: Many important documents, such as birth certificates or property titles, are very easy to counterfeit, as they rely on simple techniques such as raised imprints. These documents were designed during an era without networks. Today, we can re-think documents as simple access keys into a database that contains the unaltered originals.
Details: Build an architecture using a camera that automatically checks whether a document is real or fake.
Prerequisites: Network and basic security knowledge.

Location-based services: We are developing an open points-of-interest database for locating services (such as restaurants, wireless access points and gas stations) based on the user's location.
Details: The project should implement an automatic detection mechanism for wireless access points and other services, possibly using services such as Loki. Implementation can be either on an iPhone, MacOS, Linux or Windows platform.
Prerequisites: Knowledge of networking fundamentals.

Columbia Audio Tool (cat): Using our existing audio and protocol libraries, build a robust networked audio tool that supports low delay audio.
Details: The tool can be developed on either the MacOS, Windows or Linux platform. Libraries are available
Prerequisites: C/C++; COMS 4118 and COMS 4119 or equivalent.

Columbia Video Tool (covit): Build a robust video network tool.
Details: The tool builds on existing network and codec (H.26x) libraries.
Prerequisites: C

Linux server implementation of BASS Application Sharing System: Linux server implementation of BASS Application Sharing System
Details: BASS Application Sharing System is efficient, reliable, independent of the operating system, scales well via heterogenous multicast, supports all applications, and features true application sharing. Currently, BASS has a Java client and Windows XP server. There is a working linux implementation but it requires some changes. The student will update&modify the old linux server implementation.
Prerequisites: Computer Networks

Acoustic user location: Using a stereo microphone and a mobile device with microphone, prototype an in-room location system.
Details: The system is based on triangulation and (possibly) tightly synchronized clocks. The loudspeakers send out inaudible sounds that are picked up by the microphone and used to determine which room the person is in and where, approximately, within that room.
Prerequisites: System-level programming in C; statistics; undergraduate physics; COMS 4119 or equivalent


Archived Projects

TCP-over-UDP: Due to the prevalence of network address translators (NAT) in home and office routers, it may not be possible for two hosts behind two different NAT devices to directly establish a TCP connection. However, the hosts may exchange UDP packets without an intermediary. Further, many legacy NAT devices restrict the number of outgoing or incoming TCP connections which can impact the performance of p2p applications. The goal of this project is develop a library that implements TCP-over-UDP. This is a high impact project and is likely to lead towards standardization in IETF. Sign up for this project with Prof. Henning Schulzrinne.
Details: For more information, please contact salman@cs.columbia.edu
Prerequisites: Strong programming skills Computer Networks

Laserpointer or Wii as mouse: Based on the idea by R. Eckert or Wiimote, write an application that controls a mouse using a red laserpointer, projector and camera.
Details: (The implementation at Binghamton only works with very specific hardware, unfortunately.)
Prerequisites: Windows system programming; C/C++

Permission-Based Sending (PBS): Permission-Based Sending (PBS) is a signaling architecture for network traffic authorization. This architecture aims to prevent Denial-of-Service (DoS) attacks and other forms of unauthorized traffic. PBS exploits control plane signaling architecture and uses cryptography algorithms for authentication. We are implementing PBS on the ns-2 network simulator.
Details: To participate in the project, students should be familiar with ns-2 simulator and network security. This project also requires programming.
Prerequisites: C/C++, Computer networks and Network security

P2P-NAT library on Mac: Currently, out P2P-NAT library runs on Windows and Linux. You will port our P2P-NAT library to Mac OS-X and incorporate it in an open source Mac SIP phone.
Details: You will perform development on our lab's Mac machines. For more information, please contact salman@cs.columbia.edu
Prerequisites: Computer Networks

Rich presence for mobile devices: Using sensors built into modern mobile phones, deliver rich presence information.
Details: Using a smartphone such as the iPhone or Android, gather presence information to generate rich presence data (RFC 4480). Examples include: an ambient sound detector to detect where the presentity was by analyzing ambient sounds; a motion detector to see if the presentity was sitting still or running/walking, or even ambling in a mall (would need some sort of a decision system to impart scores in a manner that would be consistent with the motion); aggregate data from a motion detector with an ambient sound card to derive rules (no motion and constant sound may indicate listening to music, no motion, no light -- need a light detector as well-- and variable sound may indicate in a movie or church, etc.); a motion detector and some rules to figure out if the presentity was "in-transit" (i.e., not driving a car, but a passenger), etc.

Windows Vista server implementation of BASS Application Sharing System: Windows Vista server implementation of BASS Application Sharing System
Details: BASS Application Sharing System is efficient, reliable, independent of the operating system, scales well via heterogenous multicast, supports all applications, and features true application sharing. Currently, BASS has a Java client and Windows XP server. Windows Vista's Aqua interface and other new features break the XP server implementation. The student will make the necessary changes to run the server on Vista
Prerequisites: Computer Networks

Analyzing 802.11 networks in highly congested environments: The project involves analyzing the wireless networks in the surroundings of the Columbia University campus and beyond. Information such as interference, channel assignment, range, GPS position, etc. need to be collected and analyzed.

Investigating SIP Server Overload Control: This project explores SIP overload control with the goal of contributing to the standardization body as an extension to SIP. We will develop and evaluate SIP overload control schemes on both experimental testbeds and OPNET-based simulators.
Details: The Session Initiation Protocol (SIP) has been widely adopted by major standardization bodies as the core signaling protocol for Next General Networks. A SIP server can be overloaded by emergency-induced bulk calls, flash-crowd effects, and denial of service attacks. Without appropriate control, the performance of an overloaded SIP server may exhibit congestion collapse behavior. We investigate mechanisms to overcome this problem and contribute the results to the standardization bodies.
Prerequisites: C/C++ programing and basic networking knowledge.

Disruption-tolerant networks and applications: Frameworks and applications for opportunistic networks, where devices meet each other for transient periods of time without a central infrastructure in the absence of a client-server model.
Details: In today’s mobile networks, devices often move from one network to the next, forming transitory associations without a fixed support infrastructure. This scenario calls for new frameworks and applications that need to be aware of node transitions as well as peer metadata or properties.

Applications that fit this scenario include, but are not limited to: - an electronic BBS system with allows users to share information about events - a localized Twitter-like microblogging application - automatic file sharing and synchronization

Students are also encouraged to come up with their own ideas or concepts of useful applications.

Prerequisites: - Java (for Windows/Mac/Linux platforms) - Objective-C (for iPod/iPhone platforms) - Basic knowledge of networking concepts and programming (TCP, UDP, sockets) - Knowledge of service discovery and/or multicast a plus

PowerPoint slide capture: Using our VGA-to-Firewire converter, capture slides being shown on a projector. They are then served by a replication server to remote viewers.
Details: The slides are transmitted using JPEG over RTP. We plan to test the system at the IETF, a large meeting of network engineers that takes place every four months.
Prerequisites: Java or C/C++. Willingness to work on multiple OS platforms.

iTunes music sharing on Facebook using Zeroconf-to-Zeroconf Toolkit (z2z): This project explores the possibility of combining z2z with the social network of Facebook in order to provide iTunes music sharing among Facebook friends.
Details: The Zeroconf-to-Zeroconf Toolkit (z2z) is an open-source command line program that extends the reach of Apple Bonjour services beyond the usual local subnet by exporting and importing service announcements across the Internet. A popular usage of z2z is to share iTunes music libraries across the Internet. The current version of z2z uses a public peer-to-peer lookup service called OpenDHT (http://opendht.org). Benefits: Potentially become the author of one of the most popolar Facebook app!
Prerequisites: Strong Java skill required; C/C++ desirable; Network programming experience desirable; must be a self-starter who requires minimal supervision

Java mobile wallet: Using mobile Java, build a mobile wallet for smart phones.
Details: Today, users have dozens of passwords and often as many IDs, from credit cards and student IDs to drivers licenses and loyalty cards, such as those for frequent-flyer programs and grocery stores. Using the BlueTooth capability in most cell phones and the Java implementation, design a mobile wallet that can supplement or replace some of these cards. For example, the mobile phone can automatically produce a dynamic credit card validation code, the three-digit code printed on the back of the credit card.
Prerequisites: Java

Network file synchronization: Performance comparison of remote file synchronization mechanisms.
Details: Software updates and web content synchronization consume significant amounts of bandwidth. One way to reduce the bandwidth consumption is to avoid transmitting whole files and send differences instead. One of the most popular synchronization mechanisms is rsync, which, roughly speaking, uses hashing on blocks to detect which blocks have changed. This mechanism works even if the client only has the old file and the server only has the new file. However, in many cases, the server has both old and new files, so it is likely that edit-based algorithms are more efficient. These algorithms directly apply insert, delete and other elementary string editing techniques on the remote file. For given data sets, compare the efficiency of both rsync-like and editing-based techniques. [Suitable for possible publication.]
Prerequisites: 4119 or equivalent.

Network fault detection: Currently, it is hard to monitor network functions in large networks, so that detecting problems relies on users sending email to system administrators. This is often difficult since problems may be transient and since users often cannot describe their problems accurately.
Details: Using Linux netfilter or equivalent Windows functionality, detect whether applications are working correctly. For example, your module should detect whether DHCP, DNS, HTTP or SIP are succeeding or failing.
Prerequisites: Network knowledge

Automatic gain control: Implement an automatic gain control function for our SIP conference server that balances the audio volume (amplitude) level from various participants using digital amplification of audio samples before and after mixing. Also allow manual control from the participants phone using DTMF or from web interface.
Prerequisites: C; COMS 4119

Shared whiteboard: Create a shared networked drawing tool that uses the SVG (XML vector graphics) format to exchange drawings during a video conference.
Prerequisites: C; willingness to learn Tcl/Tk or other graphics library; COMS 4119

Passive Infrared Sensors (PIR): Using an X10 passive infrared (PIR) sensor, build a device that reports to our presence and geolocation system whether there is somebody in the room. Uses SIP for publication of events.
Prerequisites: System programming; COMS 4119