Students are welcome to propose alternative projects, though preference will be given to those listed below. I expect groups to document their progress on a website and meet me regularly throughout the year. David.
Note: I may well come up with more proposals, so please check back in a few days.
Literature Survey Aid: Research generally starts with a survey of existing literature related to the specific research question. Locating and organising relevant papers can be a formidable task, one that cries out for computer support. Information related to articles (including reference lists, abstracts and even full text) is now generally available online, either via email or RSS feeds for newly published papers, or search engines for previously published works. For an existing work, forward citations, i.e. references to papers that reference it, may also be available. This paper trail is, of course, only part of the story. The more difficult part is deciding on the relation between the papers, in other words, why was a paper cited. Did it support or refute the argument, or was it simply background information and so largely irrelevant. And perhaps there are important criteria concerning the ideas/experiments/results that are reported, that must be considered too. Part of this project then, is text-analysis, to try to figure out these relationships (semi-) automatically. This project would be extremely useful and could lead to a journal publication. It may also be part of a larger research project--coming soon?
Optics Game: Imagine a rectangular region with a beam of light shown entering it and then exiting somewhere else. The player has to place mirrors, lenses and prisms appropriately within the region, so that the incoming beam does actually exit correctly. The entire game would be a sequence of such puzzles of increasing difficulty. The hope would be that users would get hooked on the challenge and so learn something about optics though playing the game. The same concept may be (is) used for learning physical motion, gears, etc. Relatively simple project, so it needs doing well--both the end result and the process of attaining it are important!
Educational Observation Game: Cell phones that include digital cameras, GPS, and 3G internet connections are now common-place, so how about making use of this amazing technology to help children have fun while learning about their environment. A hi-tech version of an old favourite might be really neat. The basic idea is to have something like an electronic "book" with a particular theme (animals, trees, plants, traffic signs, architecture, etc.) which challenges players to locate, and helps them identify examples of, the various concepts it depicts. They photograph what they find and add it to their online book, which not only provides evidence, but also acts as a sort of journal and reinforces the learning experience. Obviously, users should be able to share experiences, so this is a also a social-networking, Web 2.0, project. Use the latest Google App Developer for Android phones, Microsoft's development environment for Windows Phone 7, or even something on iPhones, perhaps.
Imagine Cup: Use your imagination to come up with solutions to the UN's Millennium Development Goals and put them into practice using Microsoft's technologies. Enter your project for the Software or Game Design categories of Microsoft's Imagine Cup and show the world what you can do! I think we should focus in particular on population growth and reducing waste. Note: the educational observation game project listed above may fit into this contest too.
InfoPoints: The World Wide Web grew extremely rapidly because it allowed anyone to add information to it. Sadly, the same cannot be said of Location-Based Services. Service providers, such as Turkcell & Vodaphone, tended to place limitations on the location information available to phone developers/users forcing them to go through their own portals and so restricting the sector's growth. The availability of mobile phones with integrated GPS and 3G internet connections, has the potential to break this monopoly. Google Maps, and its public API, have also helped. What we need now is a knowledge organisation for local information that can be easily understood, used, and added to by anyone. The final piece of the puzzle is economic; a means to financially reward contributors and a way to persuade the service providers to price 3G roaming connections sensibly to avoid crippling its use!) Google's App Developer for Android phones may make this a much simpler proposition than it was a few years ago.
RememberMe: Meeting someone at a conference or similar event, can be the start of a productive relationship, but only if you can remember who it was you met and what you talked about! Provide a simple, reliable & scalable solution to this problem.
iLikeThis: Use the latest mobile phone technology to allow people to recommend places (or pretty much anything else) they like by uploading photos, comments and ratings to a publically available website. Anyone can then browse these recommendations and find gems which other people with similar likes, liked.
Java Programming Game: Everyone likes games and the trend is for education to capitalise on this in order to encourage learning of various topics. We want to do the same for CS101/2 by building on an idea from a CS102 project last semester. In essence, students would have to write little programs in order to progress through the game. One obvious scenario would be a spy breaking into a top-secret laboratory in order to steal the designs for a new missile system. The door has a combination lock on it, so students would have to write a program to try all the possible combinations until the correct one was found. When they eventually locate the designs they are encrypted requiring the student to write a little program to decrypt them. I intend to have this year's freshmen students come up with ideas and would like a group of Senior students to provide the necessary programming infrastructure and support. Hopefully, an academic paper would result from the experiences.
RoboObjects: Extend the existing Robo package (used as an introduction to software engineering in CS101), to make it object-oriented and animated. The basic idea is to continue to allow users to define line drawings, such as rectangles, houses, etc., but also provide methods, e.g. move, rotate, scale, attach, unattach, etc., to animate and group them. The system would then allow multiple named instances of such RoboObjects (drawings) to be instantiated and manipulated. An inheritance mechanism should also be provided, allowing more sophisticated RoboObjects to be created from simpler ones. In essence, you would be building a very simple animation creator (a bit like Flash?) and providing a few examples to demonstrate Object-Oriented design and programming. It should be possible to implement this reasonably quickly, conduct an experiment and write a conference paper.
e-Journal: This project asks you to produce an electronic replacement for the paper journals used in CS101/2. Design and implement a framework and a set of plug-in modules that will help students to do their algorithm and object designs online, providing tips and help as appropriate. The final designs should produce outline Java code that can be directly used in a Java IDE. The system should be designed to integrate simply with the university's Moodle system. A prototype has already been designed as part of a CS102 project, so Senior students should be able to complete this quickly and, ideally, write a conference or journal paper by the end of the project!
Reviving TYWC: This project involves taking the content from the existing TYWC website (one of the oldest and largest children's writing sites on the web, but currently offline due to technical problems) and putting it into a completely redesigned site using one of the new breed of CMSs, such as Joomla, Drupal and/or a custom designed AJAX website. This project is not particularly difficult, but it does require some thought and, given the nature of the task, it is vital that students demonstrate a professional approach to their work. The revived site must be reliable and maintainable into the future! If an open source package is used, I would hope that some form of contribution in the form of code and/or documentation could be made to the community.
WIZ - Semi-intelligent Tutoring System: Keep track of the learners current knowledge state based on their history and responses to questions. Use this information to decide what modules to present next. Implement in ASP.NET 2.0 (This is a up-to-date implementation of ideas first prototyped many years ago. In essence it provides personalised tutoring/learning via the web!)
Redesign and implement the university calendar application using the latest
version of ASP.NET MVC technology.
See my project proposals from previous years.