CSI 4900 Projects


1. Exciting Project Access System (EPAS)

Your project aims to produce a Software Requirements Specification for an Exciting Project Access System (EPAS) that will provide most of the functionality and services required to effectively manage student involvement in project-based courses at the University of Ottawa (uOttawa).

Further information: English, français

Status: No longer available

Number of Students: 3

Supervisors: Daniel Amyot (damyot@uottawa.ca) and Amy Felty (afelty@uottawa.ca)

2. Implementation of a Programming Language Interpreter in OCaml (new for Winter 2022)

This is actually a set of projects that can be done in groups of 1, 2, or 3 students each, where each group will implement (in OCaml) one or more interpreters described in the following textbook:

Essentials of Programming Languages, Daniel P. Friedman and Mitchell Wand, MIT Press, 3rd edition, 2008.

All groups will start by reading parts of Chapter 2 (Section 2.2 up to the end of Section 2.2.2, Section 2.3, Section 2.5) and Chapter 3 (Sections 3.1, 3.2, and 3.3) and implement interpreters in OCaml for the LET and PROC languages.

Each group will then choose one or more options from other sections of Chapter 3 and from other chapters. Options include:

Status: Available in the winter term

Number of Students: 1, 2, or 3 in each group

Supervisor: Amy Felty (afelty@uottawa.ca)

3. Implementation of a Program Verifier

The verification of software systems provides a high degree of assurance that the systems will work correctly. Safety-critical systems such as nuclear power plants or cockpits of modern aircraft, systems that are an important part of society such as telecommunications systems, and programs that are commercially critical are examples of software that can benefit greatly from verification. This project involves the implementation of a system to verify programs using standard programming logic. The suggested programming language is OCaml, but others can be used such as Java, Scheme, or Prolog.

Status: No longer available

Number of Students: 1 or 2

Supervisor: Amy Felty (afelty@uottawa.ca)

4. Implementation of a Model Checker

Model checking is a technique that is used in the verification of concurrent and reactive systems, and is useful for finding bugs that are difficult to find by testing. This project will involve the implementation of a model checker for Computation Tree Logic (CTL), and the application of the system to some examples.

Status: No longer available

Number of Students: 1 or 2

Supervisor: Amy Felty (afelty@uottawa.ca)