topitem
topitem item2a topitem

HOME | PROJECTS | BLOG

item2a
Projects

This page contains descriptions of research and development projects I have supervised at the University of Toronto Mississauga. Several of these projects are active, and I'm always looking for motivated undergraduates who are interested in starting a new project or contributing to an existing project. If you're a student at UTM and are interested in working with me, drop me an email or visit my office to chat. If you would like more information about a specific project, the resources page contains some related presentations and software.

Anonymous Feedback

Instructors of large lecture courses often struggle to get timely, relevant feedback from students and to connect with members of the class. An anonymous email system provides the instructor with feedback from the class and helps the instructor and class build a rapport. If you're interested in deploying this system in your course, please email me.

Recent Undergraduate Projects

Mobile Devices in the Classroom (CSC399, 2009-10) -- Since many students bring electronic devices to class, we have an opportunity to enrich the lecture experience by offering them a framework for collaboration. Students taking notes on laptops could submit their notes and questions in an instant-messaging like interface, creating a rich transcript of the lecture and submitting questions and feedback to the lecturer in real time. Students (and instructors) commenting on, editing, and rating these posts after class create a complete record of the material, and auto-summarization and transcription software may be able to use the notes to create better quality records from the audio streams.These tools will be presented at the ROP fair in March 2010.

Static Analysis in the Eclipse CDT (CSC492, Fall 2009) -- Static analysis tools are becoming increasingly important to developers. The ability to prove properties about code provides guarantees that cannot be matched with testing alone. For example, one could prove that file operations are only performed on open files or that locks are always taken and released in the correct order. We have developed a plugin for Eclipse that implements property simulation. This allows developers to define finite state machines modeling proper behavior and to verify that their code executes this machines correctly. The work will be presented at the EclipseCon poster session in 2010.

Implementing Scientific Code for a GPU (CSC399, 2008-09) -- Scientific programs are often data parallel and computation intensive. Ideally, they would be run on clusters of machines, and in many cases, they are. However, the startup cost to create a cluster and convert the code to run on it is high. Are single desktop systems with a high-end graphics processing unit (GPU) a viable alternative? In this project, we explored existing GPU architectures and attempted to port a scientific application of interest to the biology department to a GPU system. We found the porting effort to be extremely difficult, not least because the original code had been signficantly optimized and had to be completely restructured to be suitable for a GPU.

Visualization of Operating System Internals (GSoC, Summer 2008) -- At UTM, we use OS/161, a pedagogical operating system developed at Harvard. However, even a simplified OS like OS/161 is very large and can be difficult to debug, let alone extend. To help students understand the relationship between events occuring in multiple threads in the OS, we developed a gdb extension that graphically displays th threads being executed and marks important system call invocations and changes to system state. This tool was deployed at UTM in Fall 2009.

Security Policies for the UTM MCS Department (CSC493, Summer 2008) -- Departments in the University of Toronto must abide by a set of internal and external regulations that regulate how computing systems are used and how student information is kept secure. This project analyzed existing regulations and recommended a set of policies designed specifically for the Mathematical and Computational Sciences department.

Analyzing Instructional Data

Our goal is to increase the security of private student information while facilitating program evaluation and educational research by reducing the difficulty of collecting, processing, and sharing student data from multiple courses. We have developed a system which stores identifying information on a single, secure server, aggregates data in response to user queries on that server, and releases only sanitized, anonymous results. This system correlates data for individual students across courses (rather than the more common practice of anonymizing and then aggregating), providing more information to the researcher while maintaining the anonymity of the students in the programs being investigated.

Currently, the UTM MCS department is using the system to analyze department data. In Summer 2010, we will process feedback on the system to increase its usability andwill add checks to verify that the results of series of queries cannot uniquely identify a student.

Memory Model Visualization

Novice programmers do not have a good concept of the what the computer "knows" and struggle with aliasing, name resolution, and scope. A visual representation of memory -- a memory model -- can help them understand these concepts and provide a framework for reasoning about program behavior.

The Python memory visualizer and debugger is being deployed in CSC108 at UTM, StG, and UTSc in Fall 2009. The code is being open sourced and will continue to be developed in Summer 2010.

LOAM: Curriculum Development Support

Instructors are faced with the challenge of supporting a diverse set of requirements -- accreditation guidelines, degree-level expectations, and skill-based standards -- within individual courses and across their programs. We have developed LOAM to aid in the process of analyzing a course from an external perspective. Instructors using LOAM relate their course objectives and settings to external indicators using a hierarchical, self-scaffolded cognitive framework and, in the process, learn more about the structure of their course and the skills the students must master to complete it.