CISC499 projects for Fall 2016/Winter 2017

This list contains 4 project suggestions. Unfortunately, I will not be able to supervise all of these. A maximum of 1 or 2 is more realistic.

1. Learning how to program using Minecraft?!

The goal of this project is to evaluate the utility of Minecraft for learning how to program.

To this end, the project will involve (1) surveying the current state-of-the-art in using Minecraft for educational purposes, and (2) implementing standard algorithms in Minecraft that leverage Minecraft's appeal and strengths such as algorithms for maze construction (see, e.g., [1]) and maze solving (e.g., graph traversal via depth-first and breadth-first search).

This project is most suitable for a student with interest in finding new, attractive ways to teach programming.

[1] http://weblog.jamisbuck.org/2011/2/7/maze-generation-algorithm-recap.html

2. Experimenting with Scratch and App Inventor

MIT's Scratch [1] and App Inventor [2] are two of the more successful recent attempts to bring programming to, predominatly young, masses.

The goal of this project is to gain some practical experience with these development environment and identify their strengths, weaknesses, limitations.

This project is most suitable for a student with interest in programming languages and finding new, attractive ways to teach programming.

[1] https://scratch.mit.edu
[2] http://appinventor.mit.edu

3. Executing state machines

In previous work, we have developed a textual modeling language for the description of concurrent, state-based systems in which components communicate solely through message passing [1,2]. The language is suitable for the development of real-time, embedded systems as found in various domains including telecommunications, automative, avionics, and in many parts of the envisioned "Internet of Things".

The goal of this project is to first get some practical experience with the language and its interpreter. Then, areas of improvement for the interpreter are to identified (e.g., support for different debug modes) and implemented.

This project is most suitable for a student with interest in state machines, programming languages, and interpreters.

[1] Keith Yip. Urml: A textual toolkit for teaching model-driven development for reactive systems. MSc Thesis. School of Computing, Queen's University. July 2014. https://qspace.library.queensu.ca/bitstream/1974/12274/1/Yip_Keith_201407_MSc.pdf
[2] https://github.com/kiwi4boy/urml

4. Implementing a formula evaluator

The first assignment in CISC422 involves the implementation of a formula evaluator. The point of the assignment is to give students a better understanding of recursion, induction, and evaluation. Moreover, the assignment involves the use of a parser generator. On top of all this, the assignment could also provide a very good illustration of two of the most important software design patterns: Composite and Visitor. However, in its current form, the assignment doesn't support this.

The goal of the project is to extend the provided assignment such that it supports the Composite and Visitor pattern and such that it can be used to illustrate these concepts.

This project is most suitable for a student with interest in programming and design patterns.

Last modified: Thu Sep 29 21:51:25 EDT 2016