General

  1. Use version control! Version control lets you easily manage your progression over time, diagnose problems with your code, coordinate with others or even with different machines you might use, and back up your work. Git is one of the most popular systems available. Bitbucket.org is a git host that provides free, unlimited private repositories to students. Alternatively, you can host your own repository on the CS network.
  2. Maintain a healthy work-life balance. If you aren't finding any time for yourself, schedule it in. Taking time away from academics can help you think more clearly and be more productive when you return.
  3. Don't focus all of your time on a single thing - have a couple of projects so that when you get sick of one you have something else to work on.
  4. Stay in touch with your thesis committee after passing the proposal. Contact them once in a while, update them about your progress, and possibly ask for their opinions on future work to consider for your thesis.

Papers

  1. Use version control!
  2. Send drafts to Peter well before your deadline. If you've already sent an earlier draft, use latex-diff with the previous version so that he can focus on the parts of the paper that have changed.
  3. Give Peter access and instructions for your version control system so that he can check in comments directly.
  4. Use pdflatex for compiling latex documents - it supports a wide range of image formats and compiles faster than basic latex.
  5. Use algorithmicx for algorithms, not algorithmic. It's a lot more flexible and easier to use.
  6. Don't generate images using latex code, it's just terrible to use.
  7. Keep organized notes and start writing parts of your would-be paper early. This will help you with completing a paper later on, with crystallizing your thoughts, and with better understanding your work and how to describe it to people (especially Peter early on).

Research

  1. Read a lot of papers, both in your own specific subfield and in related areas. There's a lot of research going on and it's important to keep track of the state of the art.
  2. Go over the proceedings of big conferences that are relevant to us - these might include AAAI, AAMAS, ICML, NIPS, IJCAI, ECML, UAI, KDD, etc. Filter by titles and abstracts to narrow down the list of papers that are relevant to your work. Skim these and go deeper on the ones that you can really build from.
  3. Join reading group mailing lists and attend meetings for those that are relevant or interesting to you. Consider reading groups at UT (the RL group, Ray's group, Kristen's group, FLARE, MAP, etc.) as well as outside groups (http://reading-group.net.technion.ac.il/, http://www.math.tau.ac.il/~mansour/advanced-agt+ml/index.htm, etc).
  4. Discuss your work and maintain a healthy interest in what other labmates are working on. Not only is it nice to be more aware of what others are doing, receive and provide useful comments and feedback - it might also give rise to interesting collaboration opportunities.
  5. Read related work early and often. Use a .bib file to keep track of the work you've read and add some comments to each entry. As this file grows you will build a large body of work to skim and reference throughout your academic career.

RoboCup

  1. Test early and often. Don't believe that your code works until you've seen it working in a practice game in multiple realistic tests.
  2. Focus your attention on a project and own it.
  3. Plan to spend time both working on your project and on integrating it with the rest of the codebase. Get pieces of your code running in the main codebase as soon as possible. For large additions, add compiler switches so that you can easily turn your changes on or off until they're effective enough to be relied upon.
  4. Don't wait for an assignment - be proactive and find something that excites you. There are lots of ways to help the team.
  5. If you're getting stuck on a problem, ask for help. It takes a long time to learn the codebase and you don't want to waste time strugging with problems that other people have already struggled with. Your teammates are there to help - use them!
  6. If someone else's problem is blocking your progress, make sure that the person knows. If they can't fix it now, take a look at it yourself. It's good to understand new parts of the system.
  7. RoboCup takes a lot of time that would otherwise be spent on your thesis. But for that time you get experience with the complexities of applying complex algorithms to a huge codebase on real robots; you get opportunities to network with scientists and engineers around the world; and you get a platform that's exciting to talk about with people outside of CS and with future colleagues and employers.

Peter

  1. Meeting with Peter is effective when you have a good idea of what you want to talk over in depth. If you don't have a lot to discuss, a concise email is the most efficient way to interact with him. Longer emails are good when you want to convey a bigger idea, but his response will be slower and it may be necessary to supplement with an in-person meeting.
  2. Refresh Peter on your research when meeting with him. Email him an update about a day before your meeting to give him time to digest your progress and reacquaint himself with your work. This will also make it easier for you to lay out your thoughts clearly in the meeting and gives you a written history to pull from when you're working on papers.
  3. If you're being held back by hardware, let Peter know. He can get you monitors or new machines if it makes sense. Don't be held back without discussing it with Peter.
  4. Don't expect Peter to keep track of you and what you're working on - it's your responsibility to keep him up to date and in the loop.
  5. Peter will tend not to push you to settle on a project and propose. If you want to finish quickly (~5 years) you have to be proactive and start discussing your proposal with Peter near the end of year 3.
  6. Keeping a log of the meetings with Peter can be useful. Before the meeting you can prepare a list of items to discuss, and during or after the meeting summarize Peter's suggestions, and try to make them your todo list for the coming week. Even if it's not possible to complete the items before the next meeting, try to complete as much as you can, and make sure you follow Peter's advice closely. Each piece of advice from Peter, if followed, can be your key to going a successful direction.
  7. Listen carefully to Peter's advice from the beginning. If you do that, you might be surprised at how things can go better than you thought possible.