Hi, everybody.I am a senior student in CS.I have not much idea about what to do with my senior project.I think any idea will be very helpful to me.I'm very much interested in algorithms and the math behind them.Thanks for any project idea with this subject.
There are lots of algorithms in Numerical Analysis, or doing linear approximations to differential equations, or stress strain Finite Element Analysis, that you might check into...
How about general Matrix inversion ??
Just an idea for you:
Write a file compression program. I believe, this is a good project because it is
- Based on strong math foundation
- Algorithms are non-trivial and interesting
- It involves both theory and practice. Implementation is non-trivial.
- It is quite practical and has connection to many fields where you might be working later: language/document modeling, image/video/sound coding, etc.
To explore this topic and state of art algorithms, search for "prediction by partial matching" and/or "burrows wheeler transform", and follow from there.
Choosing a project may be an important part of the project. In "The Complete Problem Solver" by Hayes Chapter 10, he recounts a study of the long term career success of artists. Success was correlated (> 0.5) with various signs that the artist spent time planning what to draw, as well as actually drawing it. I suggest that you spend at least a couple of hours writing down lists of possible projects and considering them. Here are some things to consider.
1) Comparative advantage. Is there any subject area where you are relatively stronger? - this might include hobbies.
2) Actually using it. Is there a project that would be of real use to you, or that you could sell, or base a career on?
3) New stuff. Is there new technology that you can play with, so that nobody is an expert on it yet? Mobile phone stuff comes to mind, and newly available data as well - http://data.gov.uk/
Particular suggestions: Look through problems in http://cs.utsa.edu/~wagner/knuth/ or other Knuth Fascile 4 stuff e.g. implement a ZDD package and test it against his worked examples
Mobile phones and palmtops are IMHO great for reading text but lousy for entering it. Can you use machine learning to speed up entry of stereotyped text (e.g. todo and shopping lists) by offering likely items from previous lists as options? Can you work out how feasible this is without even touching a mobile phone by predicting the success rate of such suggestions using similar data found on the web?
Think of areas where there are multiple different algorithms for the same problem - e.g. sorting, priority queues, maps. Implement multiple different implementations of the same interface. Use the different implementations to check each other - they should all get the same answer. Draw graphs of relative performance under different circumstances. Find examples where A beats B under conditions X but B beats A under conditions Y. Most algorithm analysis on paper doesn't consider the different costs of fetches out of cache or the impact of virtual memory on performance. Look for deviations between relative or absolute predicted performance in real life and what a naive understanding of the textbook answer is.