It will take place over the course of one summer. I want to take part because undergraduate (paid!) research sounds very rewarding. However, I don’t really have many ideas. My professor had suggested looking at machine learning algorithms to improve TCP congestion control over wireless networks, but frankly I am much more interested in software architecture / engineering than networking. Does anyone have any advice or suggestions?
1. If you have a chance to work with a professor, my suggestion is to choose something in his/her area of expertise, and try to consult every or every other week if possible.<p>2. Any self-directed research as an undergrad will probably turn into a literature review. Make sure to hit the books <i>hard</i> right at the outset, and try to organize the information so you can use it.<p>3. Look for interesting work around your school or other schools especially if you have contacts. Anyone who just finished an interesting project will undoubtedly have educated ideas about how it could be improved, or some ideas for similar work.
You might take the job offered, and keep an open mind. You're likely to pick up a lot about machine learning, and perhaps less about networks. Furthermore, implementing it may teach you some practical aspects of software engineering.<p>My undergrad was a co-op program. Six months of the year I spent in a semiconductor fab, rotating to a new work group every three months. Every assignment taught me something, and often not what I would have expected going into it.
I have been reminded over and over again to be mindful of Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.<p>Remember to keep a narrow focus. A summer seems like a long time, but it's not.<p>Good luck, it sounds like fun. You will enjoy it more if you keep the scope to something you can wrap up by the end of the summer.