Computer science provides tools that help us understand and benefit from the world around us. The ability to take information, understand it, process it, extract value from it, visualise it, and communicate it is a hugely important skill.
Computational modelling provides us with a powerful toolkit to help us understand, explore, communicate and make sense of data, processes and systems. The applications are all around us: from understanding and predicting economic and political systems, to forecasting the weather and climate, or discovering physical, biological and chemical truths without expensive or impossible experiments.
Computational models can be used to shed light on systems that are very complex, but creating such complex models from scratch, and sharing data and results with others, could be an almost impossible task. Fortunately, there are many tools that bring the power of modeling and simulation to anyone.
This course is a study of the basic tools required to examine processes that occur in the real world and write code to simulate that occurrence. We will be using the processing programming environment to create visual models that provide us with a ‘laboratory’ where we can conduct experiments which would be impossible or too expensive to do in real life. We also learn how the basis of data analytics, and how to share data using standard popular notations and produce effective visualisations of data.
The foundation of the course is the concept of simulation of dynamic systems. We will cover some of the mathematical foundations, and discuss the use of Differential Equations, Partial Differential Equations, and Stochastic Methods to capture different kinds of systems. The Computer Science foundation is the concept of a Multi-Agent System (or MAS) which provides a structure in which examples from diverse fields such as biology, economics, and games can be expressed.
Practical experience will be provided with the introduction of libraries and programming environments that are accessible without previous experience of programming. Students will be guided through example applications and encouraged to apply the methodologies to new domains.
Processing is a user-friendly, freely available software package that is used to build simple models with very little previous programming experience, but powerful enough that quite complex case studies can be implemented to produce insights into a variety of domains. It can be seen as a portal into learning how to program, and comes in two flavours: Java and Python.
Upon completion of this course, students should be able to:
- Understand and demonstrate the core skills required to effectively visualize information and systems
- Demonstrate an understanding of visualisations and their usage in a wide variety of applications
- Understand an introduction to agent-based modelling and simulation of physical systems
- Understand the use of common data interchange formats
- Develop an appreciation of what is involved in learning from data
The course will be assessed with three programming tasks, due at the end of each week.
- Data visualisation: an introduction to Processing, concentrating on the creation of graphics and displays.
- Simulation: using the Processing environment which provides powerful facilities for running simulation loops on a three-dimensional space.
- Data capture and analysis: using Python libraries and introducing the SML/JSON standard formats for data sharing.
There will be a choice of coursework domains to suit different interests, such as from physics, biology, economics or art.
Course Reading list
- Reas, C. and Fry, B.; “ A Programming Handbook for Visual Designers (Second Edition)”; (2014); MIT Press.
- Fry, B. ; “Visualizing Data: Exploring and Explaining Data with the Processing Environment”; (2007); O'Reilly.
- Shiffman, D; “The Nature of Code”; (2012).
- Adamatzky, A and Martinez, G; “Designing Beauty: The Art of Cellular Automata (Emergence, Complexity and Computation)”; (2016); Springer.
- Deutsch, A and Dormann, S; “Cellular Automaton Modeling of Biological Pattern Formation: Characterization, Examples, and Analysis”; (2018); Birkhauser.
- Reza Zadeh, Bharath Ramsundar; “TensorFlow for Deep Learning: From Linear Regression to Reinforcement Learning”; (2018); O'Reilly.
There are no prerequisites for this course. This course is open to anyone who is curious and wants to learn more visualising, simulating and capturing data. We welcome individuals from all backgrounds, including students who are currently studying another subject but who want to broaden their knowledge in another discipline. Students should also meet our standard entry requirements and must be aged 18 or over by the time the Summer School commences and have a good understanding of the English language.
Please note changes to the syllabus and the teaching team may be made over the coming months before exact set of topics are finalised.