Useful resources for researchers
Most of this is repeated elsewhere and much is out of date. But at one point, this was a useful list of things that people might want to know. Now that I don’t do as much networking I really need to update this with some things that networking/tech/law students need to know!
Applying/Starting out
- Choosing Graduate School in Computer Science
- A Princeton CS Major’s Guide to Applying to Graduate School
- How to Succeed in Graduate School
- Useful Things to Know About Ph.D. Thesis Research (H. T. Kung)
- Jon Crowcroft’s tips on applying to Cambridge
- Sugih Jamin’s list of pointers
- Hamming on research
- Keshav’s Hints on doing research
- Systems Software Research is Irrelevant
- How to Have a Bad Career in Research/Academia
- Rapaport’s How to Study
- The Researcher’s Bible
- Why do a PhD?
- Ten Questions To Ask Prospective Graduate Students
- Saleem Bhatti’s list of links
- Networking on the Network: A Guide to Professional Skills for PhD Students
Reading
- How to read a paper by Keshav
- My list of networking papers worth reading
- Dave Kotz’s favourite papers
- 25th anniversary edition of CCR
- Jon Crowcroft’s typically tangential reading list
- CCR has an occasional “recommended reading” column: Jim Kurose, Jon Crowcroft, David Wetherall, Matthias Grossglauser, Mostafa Ammar, Craig Partridge, Venkata Padmanabhan
- Matt Might’s reading for graduate students
- CS is inherently multidisciplinary. So take a look at Learning other fields (AI-specific, but the principles apply to any area of CS).
- The Task of the Referee
- Papers: ACM Digital Library, Google Scholar (but be careful interpreting results), IEEE Xplore, CiteSeer, DBLP, SSRN
- Mailing lists/CFPs: tccc, end2end-interest, NANOG, IMRG, WikiCFP
- Practical reading: O’Reilly Safari, Linux Documentation Project, ACM Professional Development, How NOT to go about a programming assignment
Writing
- Advice on Research and Writing from CMU
- Dave Kotz’s writing guidelines
- Some advice on PhD thesis structure from the department where I did my PhD
- How (and How Not) to Write a Good Systems Paper
- Simon Peyton Jones on how to give a talk and write papers and proposals
- Good Writing by Marc H. Raibert
- Phinished - “A discussion and support group for people trying to finish their dissertations or theses, and those who have been there”
- Writing For Research (Patrick Dunleavy)
- Strunk’s Elements of Style
- Lynch’s Guide to Grammar and Style
- Orwell on Politics and the English Language
- The Hemingway web app “makes your writing bold and clear”
- Other style-checking tools include diction, the Writer’s Workbench, Matt Might’s 3 shell scripts to improve your writing, and Neil Spring’s style-check.rb
- The Economist Style Guide has some good (and amusing) tips
- Writing a good introduction (Jim Kurose)
- Structuring and writing academic papers (Writing for Research)
- Catchy Titles Are Good: But Avoid Being Cute (Jacob Wobbrock)
- PhD skills from Toby Walsh (writing papers/grants/reviews, running experiments, etc.)
- A long list of posts on writing a literature review from Raul Pacheco-Vega
- Other tips on writing a literature review from Toronto and Trondheim
- Writing a good grant proposal
- Grammar Girl’s Quick and Dirty Tips for Better Writing
- How to write good (!)
- 50 Writing Tools: Quick List
- Matt Might’s guide to peer review
- For better or for worse, US grammar, spelling and vocabulary are somewhat different to that used in the rest of the world. So check whether your chosen venue uses American or British English, e.g., these ACM authors’ instructions. Moreover, if, like me, you have spent time in both the US and the UK, make sure that you aren’t using a bastardised combination of the two languages!
- The Not So Short Introduction to LaTeX2e and An essential guide to LaTeX2e usage
- Always useful for meeting those pesky page limits: Squeezing Space in LaTeX
- The devil’s guide to citing the literature (D. J. Bernstein)
- Statistics Done Wrong
- How to design an award-winning conference poster
Presenting
- Tips on Giving a Talk
- Giving an Academic Talk
- PowerPoint Is Evil (Edward Tufte)
- Which PowerPoint tips really work?
Practical skills
Things that I would like my students to know. You don’t need to know all of this before you start the PhD, but it would be good if you were comfortable with most of these points by the end of your first year. In my opinion most of these are the tools of the trade for network researchers. Don’t worry if it all looks a bit UNIX-specific. You don’t have to be a UNIX user to work with me, but if all goes well you will be one by the time you graduate :-)
- How to configure and build a kernel on {Linux|FreeBSD|NetBSD|OpenBSD|any other open-source OS}. I don’t care which OS, just that you understand the process and what most of the configuration options mean.
- How to setup a network. I don’t mean how to run a Tier-1 ISP. But you should be able to install a UNIX-like OS on three or more machines and set up routes between them. Ideally you will be familiar with the topics addressed in Linux Advanced Routing & Traffic Control.
- How to secure a network. You should be familiar with the firewalling capabilities of modern UNIX-like OSes. You should be able to port-scan, detect vulnerabilities, patch machines and so forth.
- How to use UNIX effectively and efficiently. You should be adept at writing shell scripts (I don’t care which language: sed, awk, perl, python, bash, csh or tcsh, zsh, ksh, fish, or even Windows PowerShell. Look at other people’s environment setups (.bashrc etc) as that often helps. You should be familiar with regular expressions (e.g., regex or pcre) and grep - see the Regex Coach.
- It is a great help if you can use a text editor properly: read Text Editing for Programmers. Pick one of vim or emacs and learn how to use them - emacs tutorial, vi introduction, vim Quick Reference card.
- It is also a great help if you can use version control properly. I don’t mind which program you use, but you should be familiar with one or more of cvs, subversion, mercurial, or git.
- You should have at least a passing familiarity with: ns2, gdb, gnuplot, tcpdump (or winpcap if you must), dummynet or NIST Net, netcat, ntop, LaTeX, BibTeX. See these lists of tools for more.