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:
- Chapter 3: extend the interpreter to implement recursive
functions; learn about scoping and binding; implement a "nameless"
representation.
- Chapter 4: extend the interpreter to handle references and
state; implement different kinds of parameter passing
- Chapter 5: implement a continuation passing interpreter;
implment an imperative interpreter; extend the interpreter to handle
exceptions and/or threads
- Chapter 6: learn about continuation-passing style (CPS);
implement an interpreter that uses this style; implement a
translator that transforms any program to CPS
- Chapter 7: implement an interpreter for a language with types,
which includes type checking and/or type inference
- Chapter 8: implement an interpreter for a language with modules
- Chapter 9: implement an interpreter for an object-oriented
language
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)