Home
Research
What is good research software engineering?
How can the RSE group work with you?
RSE Group news
Jobs
Training Resources
Courses
Python and Data
Beginning Perl
Perl Basics
Loops
Arguments!
Conditions
Files
Writing Files
Splitting Lines
Searching Files
Search and Replace
Running Programs
Job Scripts
What Next?
Beginning Python
Python Basics
Loops
Arguments!
Conditions
Files
Writing Files
Splitting Lines
Searching Files
Search and Replace
Running Programs
Job Scripts
What Next?
Intermediate Python
Lists
Dictionaries
Functions
Modules
Documenting Code
Objects and Classes
Testing
Regular Expressions in Python
What next?
Parallel Programming with Python
Part 1: Functional Programming
Functions as Objects
Mapping Functions
Reduction
Anonymous Functions (lambda)
Part 2: Multicore (local) Parallel Programming
Multiprocessing
Pool
Parallel map/reduce
Asynchronous Functions and Futures
Asynchronous Mapping
Part 3: Multinode (distributed/cluster) Parallel Programming
Scoop
Distributed map/reduce
Running Scoop on a Cluster
What Next?
Epilogue
Changes from Python 2 to 3
Global Interpreter Lock (GIL)
Beginning R
Intermediate R
Introduction to Data Analysis in R
Beginning C++
Why C++?
C++ Basics
Syntax Compared to Python
Types, Scopes and Auto
Lists and Dictionaries
Objects and Classes
Concepts, Default Arguments and Operators
What next?
Parallel Programming with C++
Part 1: Functional Programming
Functions as Objects
Mapping Functions
Reduction
Anonymous Functions (lambda)
Map/Reduce
Part 2: Parallel Programming Using Intel Threading Building Blocks
tbb::parallel_for
tbb::parallel_reduce
Writing a parallel map/reduce
What Next?
Efficient Vectorisation with C++
Part 1: Introduction to Vectorisation
What is Vectorisation?
How to Vectorise (omp simd)
omp simd features
Memory Layout
omp simd limitations
Part 2: Vectorisation using Intrinsics
SSE Intrinsics
AVX Intrinsics
Portable Vectorisation
What Next?
Parallel Programming with OpenMP
Basics
Compiler Directives / Pragmas
Sections
Loops
Critical Code
Reduction
Map / Reduce
Maximising Performance
Case Study
What Next?
Parallel Programming with MPI
Basics
MPI Functions
Sections
Loops
Messages
Reduction
Map / Reduce
Maximising Performance
What Next?
Version Control with Git
Git Basics
Adding Files
Committing Changes
Diffing (seeing what has changed)
Changing Versions
Branching
Renaming and Removing Files
Subdirectories and Ignoring Files
Git in the Cloud
Pushing to the Cloud
Markdown
Cloning a Repository
Merging
Pull Requests
Continuous Integration
What next?
JupyterHub and Kubernetes
Creating the workshop
Finding all your dependencies
Building the docker image
JupyterHub
Uploading to the cloud
Kubernetes
Helm
Configuring JupyterHub
What next?
Introduction to Monte Carlo
Part 1
Introduction to Monte Carlo
Software
Metropolis Monte Carlo
Running metropolis.py
Control Variables
Phase Changes
Phase Space and Ensembles
Volume Moves
NPT Simulations
Summary
Part 2
Introduction and Software
Sampling the Solvent - Rigid Body Moves
Sampling the Ligand - Intramolecular Moves
Sampling the Protein - Backbone Moves
Sampling it all - Weighting Moves
Summary
Molecular Visualisation, Modelling and Dynamics
Part 1: Molecular Visualisation
1a: Opening Files
1b: Manipulating the View
1c: Graphical Representations
1d: Selecting Atoms
1e: Complex Selections
1f: Rendering
1g: Movies
1h: Picking Atoms
1i: Comparing Trajectories
1j: What Next?
Part 2: Molecular Dynamics
2a: Getting Started
2b: Theory of MD
2c: Changing Time
2d: Shake (Rattle and Roll)
2e: Periodic Boundary Conditions
2f: Under Pressure
2g: Running the Simulation
2h: What Next?
Part 3: Mutation Studies
3a: Getting Started
3b: Mutating the Protein
3c: Solvating the Protein
3d: Minimising the System
3e: Heating the System
3f: Equilibrating the System
3g: Running the Simulation
3h: Comparing Trajectories
3i: What Next?
QM/MM Monte Carlo
Software Carpentry
Bath (July 2013) Workshop
Bristol (September 2013) Workshop
Exeter (November 2013) Workshop
Software
Sire Molecular Simulation Framework
ProtoMS Monte Carlo Package
Publications
Talks
Useful Links
Books that are Worth Reading
Contact Information
About this Website
chryswoods.com
Software Carpentry
I have been an instructor for Software Carpentry. This is an extremely useful organisation that provides free programming workshops for researchers around the world.
Workshop in Bath I instructed at in July 2013
Workshop in Bristol on which I was the lead instructor, in September 2013
Workshop in Execter I instructed at in November 2013
Software Carpentry Main Website
Home
Quick Links |
Home
|
Courses
|
Software
|
Contact
Copyright Information
|
Report a problem
I
Privacy