Doing Computational Research

Below is general advice for being an effective computational scientist:

  • Read through the documentation/tutorials/forums: you will run into jobs crashing or coding bugs or error messages many times. A good place to start is the documentation/tutorials/forums. These are maintained by the software developers themselves so there is a good chance that someone else has run into similar problems and it has been answered.

  • Start small and simple and build from there: it is easy to get overwhelmed in a project. Start small, do test cases, try things in increments and be systematic about it. Know how you did something and why. And of course, write it down!

  • Always have a purpose for the calculation: Each calculation you run should have a specific purpose in mind that adds to the progress of your project.

  • Be cognizant of the resource you use: We mainly use computer hours, which are shared among the whole group. Be aware of the resources you use and how much. Always aim to use resources as efficiently as possible.

  • Backup your data: your calculation data, your data analysis, everything back it up. Even better, back it up multiple times and in separate physical locations. Redundancy is your friend.

  • Regularly evaluate where you are in research: sometimes it is easy to lose sight of the forest through the trees. Take a step back, re-evaluate what you have done and what makes sense to do next, keep track of what worked and what didn’t work, and make a plan for the next day. For example, Wennie likes to have tiered to-do lists that are organized in terms of time scale; so there is a long-term calendar that pans out a few months, then a monthly to-do, then a daily to-do that you revisit and adjust regularly.

  • Be a good lab citizen: we share our office space with others and computing resources with others. Be cognizant and respectful of others. Use what you need, think carefully before submitting calculations. Each calculation should have a clear purpose and be benchmarked to make sure it is using resources efficiently and effectively.

  • Building a physical intuition: in any new field, you want to start building a foundation for a physical intuition- what are the common units, what is a reasonable order of magnitude, what are the common metrics, what are the common measurement techniques, what are the limits of this equation, what are general rules of thumb, how much error or spread is reasonable, etc.

  • Shed light on the black box: At the end of the day, the tools you use were built by someone and there is no guarantee that what you get out is error-free. Thus, it is important to make sure you understand the tool you are using, e.g., understanding the theory behind the methodology, knowing what kinds of quantities can or cannot be computed/measured, etc.

  • Knowing when to reinvent the wheel: as part of a computational group, you will certainly pick up on many coding practices and coding/scripting languages. Oftentimes there will be existing codes that can do the task you have in mind (e.g., on github, stack exchange). However, sometimes the tool doesn’t quite do what you want or it needs to be adapted, so in some cases you may need to create your own code. If you decide to do this, do so with a clear objective in mind for how it advances your research/project.

  • Figure out a workflow and file management system: you will inevitably be managing lots of files, whether that is what comes out of the calculation or what you generate yourself. Figure out a workflow strategy and organization system where you can track your progress. And don’t forget version control- either through dating the fille, using git, etc. More info on the Research Resources

Last updated