EECE 496: Projects

I am offering the following projects as part of EECE 496 at UBC. If you are interested in any of these projects, please send me email with your resume (in PDF format) and transcripts. I will get in touch with you if I’m interested. The projects below require a strong programming background, so please make sure you mention programming experience in your resume.

List of Projects

  1. Architecting fault-tolerant Web 2.0 Applications : This project will involve the use of sound software engineering principles to create Web 2.0 applications. The project will build a JavaScript-based web application to interact with the server and perform computations at the client. The goal is to ensure that the application can tolerate some degree of inconsistency and flakiness at the server. You need to know JavaScript and at least one server-side language (e.g., Java) for this project.
  2. Power-efficient execution on smart phones:This project will attempt to build smart phone applications that are conscious of their power consumption and attempt to optimize themselves accordingly. You are expected to be proficient in writing smart phone applications on the platform of your choice (smart phones will not be provided for this project). The application should be made highly configurable and must allow users to trade-off performance or reliability for power savings.
  3. Building low-overhead, fault-tolerant heaps in C++: C/C++ are not memory-safe languages as they permit memory corruption errors (e.g., buffer overflows, dangling pointers). Such errors can cause programs to crash or produce incorrect outputs. The objective of this project is to mitigate the effect of such failures using heap-based protection mechanisms. The project will build a fault-tolerant heap abstraction for C++ programs to continue executing correctly in the face of memory corruption errors.

I expect students working with me to commit a significant amount of time to the project and to be relatively independent in terms of the implementation. I am happy to help you with the design aspects of the project however, and will make an effort to meet with you regularly during the course of the project.

I am also open to supervising other projects in my areas of interest. If you would like to do any other project in the area of software fault-tolerance or security, send me email to set up a time to talk about it.