Previous ideas that have not been used

From Computer Laboratory Group Design Projects
Revision as of 14:44, 6 March 2016 by afb21 (talk | contribs)
Jump to navigationJump to search

Most of these were eventually not offered because we could not find an interested client. Many of them are either fun or feasible, and we're happy to consider using them in future.

2016

Message to the future

There are so many things that only happen once a year - birthdays, start of term, insurance renewals - if only your email system could remember what you did last year, and take care of it next time! Your job is to implement an email server @nextyear, that will interpret the content of any message it receives, work out which things will have to change next year, and then draft an automatic update. It would be safer if this went to the user for checking a few days in advance, and provided a web interface to review currently active processes, but everything should be achieved with the absolute minimum of mouse clicks or wasted user attention

Message to the future

There are so many things that only happen once a year - birthdays, start of term, insurance renewals - if only your email system could remember what you did last year, and take care of it next time! Your job is to implement an email server @nextyear, that will interpret the content of any message it receives, work out which things will have to change next year, and then draft an automatic update. It would be safer if this went to the user for checking a few days in advance, and provided a web interface to review currently active processes, but everything should be achieved with the absolute minimum of mouse clicks or wasted user attention

Liker-bot

Modern teenagers have to spend hours every day pressing like buttons on Facebook and Instagram. Your task is to automate this drudge-work. Of course, these companies really want to trap eyeballs, so they won't make it easy for you. You will probably have to emulate a web browser, which at least pretends to be looking at the posts before automatically "clicking" on the like-link. It will also be embarrassing if it likes the wrong thing, so some machine learning will be involved to monitor, learn and then anticipate the user's real preferences (kittens = like, parents = dislike etc).

2015

Machine morse

Flash a light - perhaps on a monitor - to hide an encoded message on the far side of the Intel lab. Use live video feed from a camera at the other end to identify location of the coded message, use machine learning to determine clock rate and decode.

Marker of the Beast

In the future, we’ll all have barcodes tattooed on our foreheads, but until then, it would be very helpful if Google Glass could recognise your friends (or enemies) by some kind of visual code that doesn’t look quite so apocalyptic. Your task is to create some kind of unique visual ID that can be applied to a face localised within an image, giving feedback to the Glass wearer such as what bands or sports teams you follow, what kind of beer they should buy you, or so on. The Viola-Jones face tracker can identify faces within an image, so from this starting point, you should work out what kind of coloured dots, stripes, or other decorations would uniquely identify any person in (say) your College.

2014

Digital Sheet Music Viewer

Client: Andrew Knights, Cambridge Consultants <andrew.knights@cambridgeconsultants.com>

A musical score is in effect a single line of n bars. Lines, pages, and to some extent repeat markers appear due to the score being printed on a page. Your task is to design software that allows a user to have complete freedom to arrange a musical score on their chosen display (be it a laptop, tablet, mobile-phone, or projector) in a format that best suits that display and their needs. Starting with a free digital format of the score, the software should allow users to manipulate on-screen scaling, rearrange the score layout using drag & drop of bars, automatically advance in a way that doesn't interrupt play, and supports annotation by one or more users. Ideally, it should be possible to capture the score using OCR from a scan of a paper copy. And of course, when playing in a group, it would be preferable to synchronise all of these functions across the screens used by multiple players.

Rent-A-Mob

Client: Frontier

Contact: Matt Johnson <mjohnson@frontier.co.uk>

Create a structured framework with a rudimentary graphical display which allows the loading of scripted scenarios, consisting of environment information, objects, targets, and properties, and also allows the loading of externally authored ‘Bots’ to function and execute objectives within the given environment.

The framework will offer these bots access via an API to information about the environment and other bots within it. The purpose of the application is to provide a workbench to trial different programmed AI’s, and strategies to navigate to targets and achieve a goal, either alone, as a crowd of either one type, or a mixture of different types of bots.

At least two different examples of bot logic should be provided along with the framework to demonstrate it’s functioning.

Zombie for a Day

Many people are vaguely aware that their home PC may be part of a botnet, but have no idea what this means in practice. The goal of this project is to create an educational botnet based on the Raspberry Pi to help people learn about computer security. Using Raspberry Pi means that there is minimal financial risk if things go wrong, and the owner of a node can reliably close it down simply by removing the SD card. Your job is to create a Raspberry Pi boot image that can be installed and used by a person having minimal technical knowledge - allowing them to "take over" in a controlled manner the Raspberry Pis of other volunteers (wherever they are), and simulate some of the behaviours of a botnet. A little bit of spooky paranoia wouldn't hurt - perhaps making mysterious sounds or unpredictably flashing lights after their node gets taken over. The distribution, location and status of the net should be visualised in a way that can be accessed from any web browser, but nodes should be able to find each other without any user intervention or central control. Of course, all this has to be achieved in a secure sand-boxed manner - real hackers shouldn't be allowed to get out of the sandbox!

Raspberry Pi Orchestra

The Raspberry Pi is cheap enough that it could be used instead of instruments in a school orchestra. Each one needs a small speaker, but not necessarily a screen - either a mouse or keyboard can control sound synthesis. If some devices had screens, they could be used to "conduct" (via a shared network clock signal, with tempo variations as appropriate), or even distribute code for remote execution elsewhere. A technical approach to synthesising good quality sound can build on the source code for the recently released Sonic Pi, and networking ideas can be borrowed from international laptop orchestras (PB_UP offers code distribution): https://esp-mcmaster.wikispaces.com/Laptop+Orchestra+bibliography

Robot Bartender

Proposed by Raoul-Gabriel Urma <rgu20@cam.ac.uk>

I have a fun proposal that would combine raspberry pie, robotics & mobile programming.

Essentially the students would have to build a remote controlled cocktail machine like this one: http://www.youtube.com/watch?v=hJIkJ9x0-JQ We could have it on display during Friday's happy hour.

I think it could be challenging for the following reasons:

  • build a system that takes orders from mobile phones (with a queue system)
  • processes a big list of recipe from the internet (crawling)
  • programming with raspberry pie and electronic components

There's even a startup who presented at techcrunch disrupt that is trying to do something similar: http://monsieur.co/

CheckMate

Client: Illumina Contact: "Oldham, Scott" <soldham@illumina.com>

Personal genome sequencing is now available to the masses! An individual human's genome sequence contains 3 billion bases. It can be represented as either a string of characters or as a graph showing where the sequence deviates from a standard, reference genome. Your task is to (1) write a tool to filter/compress such a file into a representation of the genetic status for a (provided) selection of serious diseases of an individual, such that it can be stored on a Raspberry Pi or smartphone, and (2) write a Raspberry Pi or smartphone app that can securely communicate with another to establish whether the two individuals represented share genetic status of any of the diseases considered.

For bonus points: The genetic details of one individual should not be revealed to the other individual - beyond reporting that the two individuals do or do not share genetic status for one or more diseases.

Appendix: Illumina stores variant calls resulting from the sequencing of a genome in a standard format (gVCF) file. Most healthy individuals are carriers of one or more mutations that, if present in two copies (i.e. inherited from both mother and father), would result in a serious disorder (eg 1 in 29 Caucasian Americans carries one mutation in the cystic fibrosis gene : http://www.cff.org/AboutCF/Testing/Genetics/GeneticCarrierTest/).

Graphical Programming for Budding Engineers on Raspberry Pi

Client: MathWorks

Contact: Milos Puzovic Milos.Puzovic@mathworks.co.uk

Model-Based Design (MBD) is a prevalent methodology that is used in complex control, signal processing and communication systems to address problems that arise during their design. Engineers in, for example, aerospace and automotive industries use MBD to define models that have advanced functional capabilities by pictorially combining well-defined building blocks and describing communication between them. Unfortunately school children are not exposed to MBD at an early age and as a result do not grasp how engineering is made enjoyable and rewarding by tinkering with combinations and communications between building blocks. Your task is to design a light-weight interface that can run directly on Raspberry Pi that will enable school children to write applications that can seamlessly use the underlying hardware and peripherals connected to the Raspberry Pi. You will need to identify basic building blocks that will make school children interested in your interface and are powerful enough to create applications that a child's mind may envision. Finally, you should be able to demonstrate how easy it is to create an application using your interface that is eye catching, such as tracking the movement of a yellow duck toy.

Low energy ECC (Elliptic Curve Cryptography) library

Client: Cambridge Consultants

Contact: Alistair Morfey <alistair.morfey@cambridgeconsultants.com>

An increasing number of our projects need to include embedded security. This is particularly true as more devices expect to support remote software upgrades in the field throughout their installed life. We see this a lot in smart metering. Many of these devices are battery-powered and need to implement modern security algorithms at low energy. There are open source libraries available for symmetric (e,g AES-128) and asymmetric (e.g ECC 256 primes) crypto algorithms, but they are mainly aimed at computers and require far too much memory and energy. We have found good open source libraries for symmetric crypto algorithms that are suitable for low energy use in embedded systems with small memories. However we have not been able to find any suitable libraries for asymmetric crypto algorithms such as ECC-256p. The challenge is to develop such a portable code set for an embedded 32-bit or 16-bit processor with a small amount of memory (code flash and data RAM). It should identify clever techniques to minimise energy usage and memory requirements. It should be made available as open source software.

feedback

Do you think that this project would be feasible on the ARM core used in the Raspberry Pi?

All students have their own Raspberry Pi this year (just for hobby use - we don't do any teaching on it), so this would be a reasonable target for a low-power implementation.

However, to make the project feasible for a group project, we might need to anticipate plausible ways that it could be divided among a team of 6. At present it looks more like a one or two person project.

Application for the new 32-bit XAP6 Processor

Client: Cambridge Consultants

Contact: Alistair Morfey <alistair.morfey@cambridgeconsultants.com>

This project needs a clearer target market before proceeding

There are now over 2 billion XAP embedded processors in silicon. These are all 16-bit devices. We are about to release a 32-bit XAP6 IP core. It is implemented in Verilog RTL and has a GNU software toolkit (GCC, Binutils) that connects to our xIDE debugger tool (can control a hardware target or instruction-level simulator). We have implemented the XAP6 in hardware on our xEMU mini PCB (that includes a Xilinx Spartan FPGA). The board also contains LCD, buttons, buzzer, Ethernet, RS232, ADC, DAC, 84 IO signals (in two 50-pin connectors) and our SIF debug interface (connects to PC with USB). We want to have interesting applications developed for this platform. Students can chose whatever they like. We simply want things that demonstrate the technology well. This is a good way to see the insides of a processor and gain a deep understanding of how the hardware world joins up with the software world. Alan Mycroft will be interested in this !

initial feedback

We have often had applications for new single-board devices, often with some kind of FPGA or other specialist functionality. We'd usually try to steer toward a specific market or application area that suits the strengths of the particular board. What do you see as the main technical strengths or market appeal of the dev board you'd like to use?

The goal here is to come up with some kind of business opportunity, application or benefit proposition. I may have missed something, but at present this one seems pretty much like "Here's a computer - what would you like to do with it?"

Wine Goggles

Replaced by Locally Augmented Retail

Client: Paul Bowes, Bacchanalia <Team@winegod.co.uk>

One of the group project coordinators has an excellent memory for wine, but a poor memory for names. When he walks into Bacchanalia, his local wine shop, he (like many other customers) often says "I'd like another bottle of that tasty Pinot Grigio you sold me last week". Paul's response is always the same: "It's my job to recommend the wine - it's your job to remember it". A simple Android app could solve all our woes. Satisfied wine drinkers just photograph the label, perhaps with a tasting note to share with others. The app recognises the wine from the label, and sends an email to Paul for later reference. This can link to a reference site with notes of specific wines and regions each customer likes, and even build up a taste profile for recommendations. If the label recognition works well enough, it should be possible to point a web cam at the shelves, automatically recording what wines are still in stock, or automatically responding to urgent online queries in the spirit of the Trojan Room coffee pot.

problem - existing product

This doesn’t really provide the retail support that you were asking for, but it provides quite a lot of the features we discussed …

https://www.vivino.com/

Cambridge Overlay

The Cambridge University Map supports a sophisticated annotation API, based on GeoJSON. The resulting map functionality can be neatly embedded in a page using an iframe.

Create a mashup that uses the Talks.cam API with some natural language processing to create an itinerary for a visitor with cross-disciplinary interests, for example to all the research groups that host seminars on neuroscience, or infectious diseases. If the academic visitor is feeling a little lazy, the talks might be a little less clearly related, but within a shorter walking distance. The final result should include a programme of events, with an embedded interactive map showing how to get to them.

Resources:

http://wiki.cam.ac.uk/university-map/Map_Annotation

http://talks.cam.ac.uk/

2013

Fix the past with Raspberry Pi

Suggestion by Peter Robinson / Simon Moore

Current status: it seems unlikely that the EDSAC reconstruction project will have a working chassis ready in time for group project public demonstrations in March 2013. It may be necessary to defer this project until 2014.

The pioneering Cambridge EDSAC computer is now being reconstructed at the national computing museum(??). However, the radio valves, mercury delay lines, and other components of EDSAC are all far less reliable than modern technology. This means it will be a real challenge keeping the thing running! Your task is to build an embedded diagnostic monitor device, using Raspberry Pi, that can continuously monitor the health of the reconstructed EDSAC, warning operators when something needs to be fixed, or perhaps that it is about to fail. We expect there will be multiple Raspberry Pi's in each chassis or frame of the EDSAC. They might even be able to compensate for temporary failures, imitating the behaviour of that chassis to keep the rest of the system working until a failed component is replaced.

Transparent public identity

Suggestion from Ross Anderson <Ross.Anderson@cl.cam.ac.uk>

Here's an idea. I was at the Europarl yesterday and a green MEP said it would be great to have a "tranparency app" that would enable her and her colleagues to look up the registered interests of people who come to meetings. This would involve (a) writing apps for android and iphone (b) having a service that would go to the various registers of interests in Brussels, London etc, aggregate entries and make them available (c) some smarts to make it usable. For example it would help that if Mr Johann Schmidt were registered as getting funding from Infineon AG, that the app would say that Infineon makes smartcards for use in banking and as identity cards.

Do you think this might make a suitable project, or is it too small? As for a user, I could ask the guys at Privacy International if one if them would volunteer, or in extremis I could be the customer myself

Raspberry Pi orchestra

The Raspberry Pi is an ideal platform for kids to learn more about computing with sound and video by working in social groups. Create a system that will allow a number of people in the same or different locations to play instruments of the Indonesian gamelan, producing a single music performance that can be heard by each of them. If a player needs to take a break,they can set their session to a robot mode, in which the appropriate notes are played at the right times relative to other players. Note that relative timing of the event streams, even in the case where no robots are playing, is likely to be a hard problem!

Infect your friends

Educational project suggestion on Raspberry Pi from Cecily Morrison <cpm38@cam.ac.uk>

Step 1: Groups of students can model the spread of influenza and then visualise it graphically on one screen or with sound/light across each students RPi as they get infected.

Step 2: This model can be made more complicated by making the rules relative to contact and therefore requiring sensing about where people are moving in the room.

Step 3: Add interventions and see how it changes

Step 4: Get students to think of solutions (e.g. hand washing) and use the RPi to monitor the amount of handwashing in a school through the use of various sensing attachments. This could also be applied to any other social networking problem if it is not winter.

Mashup tutorial builder

Maker and hacker communities like the hundreds of thousands of Raspberry Pi users need illustrated tools to explain tricky techniques or give introductory tutorials. Those tools can also be used to tell mashed-up stories based on other content - the huge expansion of Minecraft videos on YouTube is one example. The goal of this project is to create a tool that can grab any kind of content from a Raspberry Pi screen, allow users to edit that content with added text, voice-over or drawn annotations, and publish it via a forum in the style of www.instructables.com