• 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

Programming and Molecular Modelling Courses

Here are some self-guided workshops. Subjects include programming (Python, Perl etc.) and molecular modelling.

Molecular Visualisation, Modelling and Dynamics

Beginning Perl

Beginning Python

QM/MM Monte Carlo

Intermediate Python

Python, Data Analysis, Version Control and Testing

Parallel Programming with Python

Beginning R

Intermediate R

Introduction to Data Analysis in R

Beginning C++

Parallel Programming with C++

Efficient Vectorisation with C++

Parallel Programming with OpenMP

Software Carpentry

Parallel Programming with MPI

Version Control with Git

Introduction to Monte Carlo

JupyterHub and Kubernetes

Calculating relative binding free energies using ligandswap

Home

Quick Links | Home | Courses | Software | Contact

Copyright Information | Report a problem I Privacy