Course homepage

This course provides a basic introduction to the C++ programming language (in particular the C++11 standard) and tools and techniques for software development. It is designed for those with little to no programming experience, and is delivered as a series of six full-day hands-on workshops using a UNIX development environment.

If you are attending the course, you should have experience with the UNIX command line and tools, and be comfortable with using a syntax highlighting text editor such as vim, emacs, kate or genie (or any others). Resources for familiarising yourself (or refreshing your skills) can be found at the bottom of the page. In particular, all of the content of the first set and much of the second set of slides will be assumed knowledge. You will also require a free account on the github hosting service, though experience in using git is not required.

The course is taught by Mark Slater and Laurence Hurst from Birmingham, using materials developed by Tom Latham from Warwick and Mark Slater from Birmingham

The workshop sessions will take place in room 125 in the Physics West building of the University of Birmingham.

The sessions start at 10am and, with an hour break for lunch, will likely finish between 4 and 5pm.

For the duration of the course you can use the VM at bham-cpp.hopto.org, which will automatically load the required software when you login. The VM will be deleted shortly after the course, so make sure you push your work to GitHub. The VM is only accessible on campus or via the Unviersity's remote access service.

Course Content

The links to the material for each workshop will appear here as the course progresses:

Name Description
Day 1 We begin an overview of the course topics, aims and resources. The first half of the day covers using git to keep track of changes you make to code as it develops. The second half introduces the core C++ syntax and procedural programming.
Day 2 In the first part of the day, we look at using functions to improve our control of program flow and reuse code, and references to make passing arguments to functions more efficient. In the second part of the day we begin to automate the build of our program using CMake and how to factor its functionality into a program and library. The third part of the day covers reading from and writing to files and the implementation of our first cipher: the Caesar cipher.

Additional Resources

Each day provides a list of resources relevant to its content, with a full overview presented on Day 1. If you are unfamiliar with UNIX, the command line and tools or simply wish to refresh your skills, the following resources may be useful:

Intro to Unix Intro to Unix 2 Intro to Unix 3