Training

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

Concurrent Lock-Free Programming (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 the standard approaches.

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. 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.

Next public Lock-Free programming course can be booked online here...

Understanding Modern Hardware

Memory Models

Performance Testing - Modelling & Profiling

Advanced Concurrent Data Structures in Java

Applying Mechanical Sympathy

The Wider Context - Putting it into Practice

Pragmatic Performance Engineering (3 Days)

On this course you will learn how to develop software in Java with performance as a first class quality attribute. The quality of software performance is measured in terms of throughput, response time, and scalability in the context of resource utilisation. The major resources are networking, storage, memory, and CPU - including the abstractions we access them including operating systems, virtual machines, and core libraries.

Good performance is the result of software that utilises the computing resources in an efficient and sympathetic manner. The course will cover some fundamental theory and then apply it in the context of each of the computing resources. We will write tests to exercise each resource so we can measure performance for usage patterns and guide the development by profiling to understand costs.

The computing resources do not exist in isolation. Systems theory comes into play when they interact based on the demands of the software. We will introduce a methodology to identify bottlenecks and then change code to balance utilisation so that the throughput, response time, and scalability can be improved for a whole system.

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.

Next public Performance Testing & Tuning course can be booked online here...

Understanding Modern Hardware

Computing Resource Fundamentals

Linux Operating System Fundamentals

Java Virtual Machine Fundamentals

Performance Testing Theory

Profiling

Development Practices

Examples of recent feedback