Syllabus

This course is offers a broad overview of computational techniques and skills that are useful in performing research in operations research and related fields.

Topics

  • Version control

    An introduction to distributed version control systems.

  • Testing

    An introduction to unit testing, regression testing, and test-driven development. All code in this class should be accompanied by tests.

  • Computer architecture

  • Creating web APIs

    Web browsers can be used as a sophisticated front-end to code you write. We will go over the basics of creating a web application to interface with your code.

  • Working with databases

    A database is used to store and retrieve information. This can be used to cache expensive operations, store the results of experiments, and of course provide a convenient way to access data sets.

  • Tooling

    There are many existing tools to help you be productive. We introduce a number of them.

    • Working with remote systems

      An introduction to working on remote servers effectively.

    • Build systems

      Build systems automate the process of assembling software and related materials.

    • Working with long-running processes

      Many problems we want to solve can take a very long time to solve on even modern computers. It is useful to be able to pause and restart these processes without needing to re-do existing work.

Programming languages

This course is not an introduction to programming. I will assume you have familiarity in at least one programming language, such as

  • C
  • C++
  • Python
  • Java
  • Matlab
  • R
  • Go
  • Haskell

Most examples in class will be in Python or C++, although knowing these languages will not be necessary. Ultimately you can use any language that works on all major platforms. On a related note, this course will have a heavy focus on GNU/Linux. You are again welcome to use any operating system you like, but certain assignments will need to ultimately be run on a Linux server. Installing a virtual machine for this course is perfectly acceptable.