Hacking sessions


One day four and seven of the Summer School, we'll be having 'hacking' sessions. Don't worry, we're not going to get you locked up for 200 lifetimes for breaking into the Pentagon -- it's not that kind of hacking. It's this kind, or this kind -- in short, we're going to roll up our sleeves and start building.

The idea is to start building something of use to you. If you don't have anything immediately to build, we can also suggest some stuff to look at, and we'll bring along some bits and pieces to play with.

Although there's no specific lecture / practical materials for these days, there are some materials to look at if you need a break from your own work. Specifically there's tutorials on:

  1. Using IDEs
  2. Using GitHub

which are practical skills useful for your own coding. Equally, if you don't have something you want to build, you might like to look over some of the introductory extra materials for inspiration, or look at these project ideas.


As well as programming, if you're building your own software, each day we'll get you to think through some key themes, taking on some of the ideas from the day's sessions.


Day four:

What it is you want to achieve:

  1. What do you want the software to do?
  2. Do you understand the whole problem, or do you need to prepare for change?
  3. What data will you work with?
  4. Who are going to be the users?
  5. What are the software's core functions, what are desirable, and what are unnecessary.
  6. Are you re-inventing the wheel, and/or is there code you can re-use?
  7. How do you make sure your code is useful and future-proof.

How is your code going to be structured?

  1. How will you get and hold your data?
  2. What processing do you need to do?
  3. What kind of user interface do you want?

Keeping code flexible and reusing as much as possible.

  1. How can you keep your code generic / flexible?
  2. What code is there to help you out?
  3. What problems could arise as your software is used?
  4. Documenting your code - what do you also need (tutorials etc.) for users?

Day Eight:

Building a user interface.

  1. What is it going to look like?
  2. What are core functions and how far can a user get with the defaults?
  3. What's for experts?

Planning for future development.

  1. Documenting where the code is going.
  2. Planning the time you have.
  3. Getting the code to users.
  4. Pragmatic vs. aspirational licensing.
  5. Other languages.