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
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".
Salesforce.com 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.
http://www.forbes.com/sites/ciocentral/2012/08/29/welcome-to-the-api-economy
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.
https://qspace.library.queensu.ca/bitstream/1974/12274/1/Yip_Keith_201407_MSc.pdf
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