Computer Science Projects That Interest Me

Posted in Software Engineering, Technology
Thursday, October 13, 2005

Dijkstra, a famous computer scientist, once said: “Computer science is no more about computers than astronomy is about telescopes.” Computer science deals with design principles, requirements analysis, implementation of hardware and software, documenting and testing solutions and maintaining production systems. As you can see programming is only a small part of what is involved.

An article I read earlier this year lamented the fact there have not been any notable innovations in technology in recent history. So I thought about what innovations are possible given today’s technology. The following is my list of computer science projects which are ripe for innovation and which interest me:

COMPUTER SCIENCE PROJECTS THAT INTEREST ME

1. Compiled Javascript

Javascript is an interpreted scripting language built in to most web browsers. Most interactive web pages utilize javascript to do things like validate input or dynamically change form elements. One of the weaknesses with javascript is that all of the comments are sent, too. For pages with large amounts of javascript this amounts to lots of wasted bandwidth. It should be possible to compile javascript into codes that can be run in a sandbox within the browser. The process of compilation would eliminate comments and distill the code into a compact collection of byte codes.

2. Wired Elvis

A computer science professor once wrote a program to algorithmically generated jazz riffs using a functional programming language. I’ve always wondered what rock and roll could sound like if it were generated by a computer. Lets put the core in Haskore.

3. Anonymous P2P Networking

Peer-to-Peer (P2P) networks have made headlines lately. A fundamental issue with today’s P2P networks is that once you connect to the network your IP address is publicly available. This makes you a target esp. since information about your data transfers are routing through super nodes. It is theoretically possible to anonymize connection information. Some work has been done lately about obfuscating routing using a concept known as onion routing. It is not easy but I think it is possible to anonymize all connection information including the IP address. The question becomes, is it possible to ensure successful transfer given an anonymous destination? I think it is as long as you have at least three trusted servers. I haven’t worked out in my head how to protect the servers against untrustworthy servers or servers colluding to “poison the well”.

4. Whipping the WIMP

We can been using the same windows-icon-mouse pointer paradigm since it was invented in the 1970s. But people are still intimidated by using computers. Lets face it speech is a more natural means of communication. Advances in voice recognition mean that computers understand us better than ever before. Isn’t time that we at least augmented our system software with voice and gesture recognition?

5. Morose Pointer

Alan Turing proposed a test in which a computer program tries to fool human testers into thinking that they are communicating with a human. Every year there is a contest in which competitors try to see who does their best to meet the Turing Test. I’d like to go step beyond this. Can a computer make you cry? Can we care enough about a computer program to feel emotion? The mind boggles.

6. Parallel Compiler

In college I did independent research in the area of parallel computing. The compilers available at the time were poor. The best available was a compiler that took the C programming language and did its best to parallelize the instructions. There were other compilers and languages but they were awkward and difficult to program. As multiple processor PCs appear on mainstream desktops, the question is: is it time for a new programming language? I believe it is time for a language and compiler that is designed around explicit parallelism.

Tags: ,

Like what you see? Subscribe to the RSS feed.