CISC499 Projects for Fall 2015/Winter 2016

This list contains 6 project suggestions. Unfortunately, I will not be able to supervise all of these. A maximum of 2 or 3 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.


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.


3. Examining and comparing Web APIs

The number of Application Programming Interfaces (APIs) for web-based software systems has skyrocketed recently. A publically accessble API has become not only a technical but also economic necessity for many companies that sell products and services over the web. In the words of a recent article in Forbes magazine [1]: "APIs have become a primary customer interface for technology-driven products and services and a key channel for driving revenue and brand engagement". introduced the first web-based API in 2000; now, almost 14,000 APIs are listed on ProgrammableWeb, a website that "chronicles the daily evolution of the global API economy" [2]. Google, Facebook, Amazon, Twitter, Yahoo, Netflix all have web-based APIs with, e.g., Google recording 5 billion transactions a day through its APIs in August 2012, Twitter 13 billion, and Amazon close to a trillion. According to Gartner, by 2018 more than 50 percent of business-to-business (B2B) collaboration will take place through web APIs [3].

The goal of this project is to get some practical experience using web APIs and to conduct some experiments on a few select APIs aimed at getting a sense of their size, complexity, and quality. These experiments will involve collecting and comparing simple metrics such as number of elements, average number of method names and parameters, similarity of method names, size of documentation, etc.

This project is most suitable for a student with interest in web-based software applications.

[1] R. Medrano. Welcome to the API Economy. Forbes. Aug 29, 2012.
[3] J. Swanepoel. API economy and mobile: What it means for your government organization. IBM Mobile Enterprise Blog. Jan 19, 2015.

4. 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.

5. 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.

6. Building a Semantic Web Site

The semantic web promises to smarter, more effective search capabilities because search engines would be capable of, in some form, understanding the "meaning" the content of a web page. Instead of having to rely on search strings occuring verbatim on a web page as with a standard search, a semantically enabled search would be capable of determining whether the meaning of the web page content matches the search string. While lots of supporting technology has been developed, the semantic web is still not yet a reality.

The purpose of the project is to experiment with this technology and to develop an understanding of what it currently takes to build a semantically-enabled web page. To this end, the student will be asked to independently acquire the necessary background (e.g., this page seems to provide a good starting point), and then to experiment with building small semantically-enabled web pages of his/her choice.

This project is most suitable for a student with interest and background in web development.

Last modified: Thu Sep 10 12:40:57 EDT 2015