I am ready to accept students who are willing to do projects in hardware compilation. These are the typical steps involved:
- Pick a (standard) interesting algorithm in topics such as neural networks, image processing, graphics, network routing, security, etc.
- Implement the algorithm in a regular programming language such as C or Java.
- Implement the algorithm in a special programming language we are developping. It is a simple programming language, similar to C without pointers.
- Compare the performance parameters of the two implementations using various benchmarks.
You may have to learn some basic hardware design concepts and some basic use of design tools.
The level of difficulty of the particular project we will choose can be tailored to match the skills of the student. The basic technical challenge of the project will be working with an experimental compiler that is less sophisticated and less forgiving than usual.
I am prepared to accept weaker students so long as they are willing to work hard!