Training

We offer a range of courses in either public or private settings. In a private setting, courses can be tailored to your exact needs. Our training courses are aimed at top developers who want to raise their game.

Concurrent Lock-Free Programming in Java (3 Days)

By the end of this course candidates will have acquired an in-depth knowledge of concurrent programming that allows them to develop data structures such as queues, executors, and shared memory IPC transports that significantly out perform any products currently available.

In addition to learning the basic techniques of building high-performance data structures, a performance testing and profiling methodology will be introduced that is fundamental to working at the extremes of systems performance.

The course is a blend of lectures, coding exercises, and workshops. Solutions will be provided to the exercises that are of sufficient quality for deployment to production systems. Candidates should bring along a laptop capable of running at least 4 threads concurrently, i.e. dual core with Hyperthreading enabled. Though not a requirement, systems with Linux installed can participate in deeper profiling exercises.

Understanding Modern Hardware

Memory Models

Performance Testing Theory & Profiling

Advanced Concurrent Data Structures

Applying Mechanical Sympathy

The Wider Context

Performance Testing & Profiling Java Applications (3 Days)

This course is aimed at senior developers who want to learn how to make performance testing and profiling an integral part of their approach CI or Continuous Delivery. Candidates will learn how to micro benchmark components, then assemble them into performance tested services. The pattern repeats until eventually the system as a whole is performance tested.

In parallel with performance testing the candidates will learn how to profile an application at all levels of the stack right down to the hardware level using a combination of tools.

The course is a blend of lectures, coding exercises, and workshops. Candidates should bring a laptop capable of running at least 4 threads concurrently, i.e. dual core with Hyperthreading enabled, with Linux operating system installed.

Understanding Modern Hardware

Fundamentals of the Linux Operating System

Performance Testing Theory

Profiling

Application Level Profiling

Baseline Tooling

Tuning and Optimisation Techniques

Development Practices

Examples of recent feedback