• 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

Useful Links

Coding Links

  • My GitHub profile
  • Main Sire GitHub Repository
  • Main ProtoMS BitBucket Repository
  • Legacy Sire Google Code Repository - 2775 commits!
  • Legacy ProtoMS Google Code Repository

Great training resources

  • Learn Python the Hard Way
  • w3schools, HTML, CSS, Javascript, PHP, SQL

Useful toolkits

  • Qt 5 Documentation
  • Py++ Downloads
  • Boost C++ Libraries

Groups

  • Advanced Computing Research Centre, Bristol
  • School of Chemistry, Bristol
  • BrisSynBio: A BBSRC/EPSRC Synthetic Biology Research Centre
  • UK Research Software Engineers
  • Software Carpentry
  • Software Sustainability Institute
  • Research Software Engineer Network

Home

Quick Links | Home | Courses | Software | Contact

Copyright Information | Report a problem I Privacy