Computer Science at Oxford
Computer Science project
From Computer Science at Oxford
All second year students carry out a group programming project in the third term. This is an opportunity to experience working collaboratively in a team to produce a working software prototype. Participation is compulsory but the projects are not assessed in a way that contributes to the final degree classification. Our students enjoy presenting their results at the end of the project and have the chance to win one of several industry-sponsored prizes.
Students in the third year of the Computer Science degree spend 25% of their time on a project, usually involving the creation of a more substantial computer program than they have worked with in laboratory exercises. In the fourth year, students undertake a larger project (37% of their time), often more oriented towards the research interests of a member of staff.
Mathematics and Computer Science students who elect to stay on for a fourth year undertake either a Computer Science project (37% of their time) or a Maths dissertation (25%).
Each year, the Department publishes a list of projects that members of staff have agreed to supervise, but students are also encouraged to propose their own projects.
Some examples of recent projects on offer include:
A Steganography App for Facebook
Steganography means hiding a hidden payload within an apparently-innocent cover, usually an item of digital media. Facebook is the ideal platform for the transmission of payload-carrying images, since images are so commonly uploaded and shared. And Facebook does not permit encrypted communications between users, who might seek an alternative way to preserve their privacy. This project is to develop a steganography app for Facebook, which allows messages to be sent and received inside pictures.
The Microsoft Kinect is a device with a depth camera that measures the distance out into a scene. It has software to detect the “skeleton” of people standing in front of it and to extract their “gestures”. The idea of this project is to use a Kinect to build a gesture-based control system for some electro-mechanical device. This might be a robot, or some other device, like a toy or an iPod player. The challenge is to devise and implement an easy to use interface to control the device by movement.
Building an Animation or Simulation System
The simulation of objects and beings within a computer has become a hot topic over the last few years, with applications to virtual reality, the design of safe stadia, synthetic actors and environments for films, and computer games, amongst others. This project would look at the design and construction of a relatively simple animation or simulation system, that would probably sacrifice ease of animation in order to focus on the modelling of interactions between the actors and their environments.
Computational Linguistics: Ellipsis Interpretation
Sentences like: `John likes Chopin, but Mary doesn't', or `John likes films, but not plays' contain ellipsis - `missing' components that have to be filled in from earlier parts of the sentence: John likes Chopin, but Mary doesn't like Chopin', `John likes films, but John doesn't like plays'. If you run the first pair of sentences through a parser like the Stanford parser: you will see that it gets the constituent structure right, but doesn't attempt to capture the interpretation. This project will attempt to develop and test a post-processing module for the Stanford parser which will interpret some common cases of ellipsis.
Microsoft .NET Gadgeteer is an open-source toolkit for building small electronic devices. We have a whole bunch of electronic bits and pieces from this toolkit in a box – your challenge is to bring them to life, and make an electronic pet. The CS Department doesn’t have a cat, but by the end of this project it could have a mouse, or a beetle, or a furby – can you create one? Will it make blood-curdling noises? Scuttle into a dark corner? Demand to be stroked? React to your mood? Or chase off burglars?
Friend Finding by Phone
There are smartphone apps to help you find friends (foursquare, blendr, grindr) but they only find people who have already signed up. How can you use a phone to find interesting people nearby who haven’t signed up to your app? By their tweets? Any other ideas? We have Windows and Bada smartphone handsets available – can you design and build an app to find interesting people around you by whatever signals they send out?
GeomLab and Mindstorms
Geomlab has a turtle graphics feature, but the pictures are drawn only on the screen. It should be possible to make a turtle out of Lego Mindstorms, then control it with an instance of Geomlab running on a host computer, with communication over Bluetooth.
Mine4Nuggets. Searching for Objects into Images
Most of the information on commercial websites (e.g., Amazon, Rightmove, and Autotrader) is rep-resented by (semi-)structured pages where the interesting data is structured into structured or visual patterns. However, some critical information is often represented with an image or a chart. As an example, on many estate agents’ websites, data about the energy efficiency of the property is represented by an EPC Chart, while the actual size of the rooms is represented through a floor-plan Have you ever tried to search for an energy-efficient property or one with a large bedroom? The answer is: you can't. This project is concerned with the study of semantic image analysis techniques that can be used to locate and extract interesting objects from pictures and charts on the web. The goal is to enhance current search technology with object-search capabilities for images, a field that offers challenging research and potential commercial opportunities.
Parallel Linear Algebra
The most common large-scale parallel architecture for scientific computing is a distributed memory computer. When using this architecture each processor has access to data stored in its own memory, while data stored by memory associated with other processors may only be accessed by communication across a network. For reasons of computational efficiency, many parallel scientific computing algorithms are implemented by partitioning the data stored so that communication across the network between processors is minimized. This project will investigate the most appropriate partitioning for linear algebra calculations.
Robot Path Planning
A robot cannot find its way by looking at a map designed for humans; rather, it must make a complex series of geometric calculations. Many algorithms have been developed for robot path planning, and the purpose of this project is to investigate (and improve upon) some of these. The `robot' might be an arbitrary convex polygon that can slide in a world composed of polygonal obstacles; an industrial robot arm; or a human trying to find their way across a strange city. Which algorithm(s) you investigate is largely up to you: they range from pragmatic, `suck-it-and-see' methods to mathematically-complicated methods that are guaranteed to succeed (after a lot of CPU time!). There is also considerable scope to think of novel robots. For example, previous groups have considered: a planetary exploration vehicle; a smart torpedo; and a model railway track.
Sell Computer Science
Apparently "Computer Science is boring. It's all about Microsoft Word, and is only for geeks and boys." No, we don't think so either. Create something, aimed at 14-17year olds, that introduces one or more important CS concepts. (For inspiration see Manufactoria, cs4fn, yousrc, Maze or GeomLab.) Your game/tool/app should inspire young people to want to get into computing. We want something that will attract attention on the Department's prospective students website (a game? a downloadable app?) – ideally something that we can also use with groups on open days. Let your imagination run wild!
Some Other Projects
Other projects on offer have included:
- Creating Patient-Specific Models of the Lung to Investigate Chronic Obstructive Pulmonary Disease
- Docu-Research. Object Annotation and Visualization for PDF Documents
- Medical Image Analysis
- Model Checking for DNA Computation
- Modelling and Reasoning about Pervasive Computing Systems
- Querying Blogs or Wikis
- Robot Sheepdog
- Robot Soccer Simulation
- Smartphone Security