Software Engineering Courses

Go Programming Course (GoLang) for Experienced Programmers

Cross Training for Experienced Programmers - 3 Days

Our instructor-led Go training course offers a practical, hands-on introduction to this widely used programming language. Delegates will leverage their previous experience developing software other languages to learn how to extend their skillset to include the Go programming language. After covering the core of the Go language in the first part of the course (with frequent comparisons to other languages) we will focus on various approaches for using Go to develop web servers, services, microservices, and more.
About the Instructor

The instructor has over 30 years of practical commercial software development experience using a wide variety of languages notably including C, C++, SQL, C#, Java and Python and has worked on many Go migration projects.

Introduction to C++ Programming

C++ Programming Course - C++ 11, C++14 & C++17 - 2 Days

Uncover the distinctive characteristics of C++ through ``Introduction to C++ Programming,`` laying down a robust groundwork of C++ expertise. This course offers a hands-on, practical initiation into low-level programming with C and C++.
The course commences by acquainting you with C++ syntax, delving into the semantics of variables and exploring their advantages and trade-offs. Through this course, you'll gain the ability to compile fully functional C++ programs and comprehend how variables, references, and pointers manipulate the program's state. Subsequently, you'll delve into functions and classes—core features of C++ utilized for program organization—and utilize them to tackle more intricate problems. You'll also grasp common pitfalls and modern best practices, particularly those that deviate from the C++98 guideline.

Progressing through the chapters, you'll uncover the benefits of generic programming and craft your own templates to facilitate generic algorithms applicable to any data type. This C++ course will guide you in effectively leveraging standard containers and selecting the suitable container for each problem. Additionally, you'll gain hands-on experience with various memory management tools in C++.

By the conclusion of the course, you'll possess the knowledge required to develop robust and high-performance infrastructure. Furthermore, you'll not only be proficient in writing efficient code but also equipped to enhance readability, performance, and maintainability of your programs through standard algorithms.

Object Oriented C++ For C Programmers

C++ Programming Course - 5 Days

Experienced C Language programmers will gain the expertise to develop object-oriented programs with the C++ programming language through this course. Participants will familiarise themselves with the language syntax and learn to code and execute object-oriented C++ programs.

Advanced C++ Programming

C++ Programming Course - 3 Days

Advanced C++ equips you with the confidence to effectively tackle any C++ project. Throughout this course, you'll gain insights into structuring your code for improved readability, optimizing code for enhanced speed and functionality, and seamlessly integrating and generating libraries.
C++ stands as one of the most prevalent programming languages utilized across a spectrum of domains, ranging from gaming to graphical user interface (GUI) programming and even operating systems. If you aspire to broaden your career prospects, mastering the advanced facets of C++ becomes imperative.

The course commences with an exploration of advanced C++ concepts, aiding you in deciphering the intricate C++ type system and comprehending the compilation process that transforms source code into object code. Subsequently, you'll delve into identifying the tools necessary to control execution flow, capture data, and manage data transmission. Through the creation of small-scale models, you'll uncover the utilization of advanced lambdas and captures, and proficiently articulate common API design patterns in C++.

As you progress through subsequent lessons, you'll delve into strategies to optimize your code, encompassing topics such as memory alignment, cache access, and program execution time. The culminating lesson equips you with insights into maximizing performance by delving into modern CPU branch prediction mechanisms and strategies for rendering your code cache-friendly.

Advanced C++ 17 STL

C++ Programming Course - C++ 17 - 3 Days

C++ has evolved significantly and is now utilized across various industries for its speed, efficiency, and flexibility in solving diverse problems. The upcoming version of C++ is poised to revolutionize programming practices. If you're eager to grasp the practical utility of the C++17 Standard Template Library (STL) to craft smarter, fully portable code, then this course is tailored for you.
Commencing with an exploration of the latest language features, this course demystifies the mechanics and library features of C++, providing valuable insights into their functionalities. Unlike other resources, our book adopts an implementation-specific, problem-solution approach, enabling you to swiftly overcome challenges. You'll delve into core STL concepts, including containers, algorithms, utility classes, lambda expressions, iterators, and more, through practical, real-world recipes. These recipes will empower you to leverage the full potential of the STL and elevate your programming proficiency.

By the conclusion of the course, you'll be well-versed in the latest C++17 features, enabling you to efficiently tackle tasks while optimising your workflow using the STL.

Advanced C++ 20 - Unlock the Power of Modern C++

Software Engineering 3 Days

Elevate your expertise with our intensive three-day Advanced C++20 Programming course, designed for experienced developers seeking to master modern C++ techniques. Ideal for professionals working in system software, game development, real-time systems, and AI, this course focuses on boosting code efficiency, robustness, and performance.
Guided by industry veterans, you’ll explore a deep and practical curriculum covering advanced concepts such as SOLID design principles, operator overloading, functional programming, and template metaprogramming. Through hands-on labs and real-world coding exercises, you’ll gain critical skills in multi-threading and asynchronous programming—essential for building scalable and high-performance systems in fields like fintech, gaming, and distributed computing.

By the end of the course, you’ll be ready to tackle complex software challenges, drive greater impact in collaborative projects, and develop cutting-edge applications that stand out in today’s competitive tech landscape. Strengthen your skill set and become a key contributor on any modern C++ development team.

A Concise Introduction to C# and .NET

Software Engineering - 5 Days

This five-day hands-on course is designed to bring experienced developers quickly up to speed with C# and the .NET platform, with a focus on .NET 6, C# 10, and Visual Studio 2022. You'll gain a strong foundation in modern C# programming and explore essential components of the .NET ecosystem, including its architecture, frameworks, and programming models.
Built on the cross-platform, open-source foundation of .NET Core, .NET 6 offers a unified environment for building applications across desktop, web, cloud, mobile, and IoT platforms. This course provides a comprehensive introduction to this powerful ecosystem and the modern C# language, blending theory with practical labs and real-world examples.

Programming in C# for Experienced Programmers

C# Programming Course - .NET 6 - 5 Days

This training course equips developers with the necessary programming skills to create applications using the C# language. Over the course of five days, participants delve into the fundamentals of C# program structure, language syntax, and implementation details. They then solidify their understanding by building an application throughout the week, incorporating various features of .NET 6.0.
The course is designed to align with the essence of the Microsoft Official Curriculum course 20483 while ensuring it remains current with the latest features of Visual Studio 2022 and the cross-platform capabilities of .NET 6.0.

C# Essentials with .NET 6 and Visual Studio 2022

Software Engineering - 3 Days

C# Essentials is a practical, fast-paced course designed to bring experienced programmers up to speed with modern C# development. Focused on .NET 6, C# 10, and Visual Studio 2022, this three-day course explores how Microsoft’s unified platform simplifies application development across desktop, web, cloud, mobile, and IoT environments.
Built on the cross-platform .NET Core foundation, .NET 6 completes the platform unification initiated in .NET 5—enabling development on Windows, macOS, and Linux with a consistent set of tools and libraries.

This course is ideal for developers with prior programming experience who want to quickly gain proficiency in C#. Learners will explore key language features, object-oriented programming concepts, event handling, GUI creation with Windows Forms, and newer features like nullable reference types, record types, asynchronous programming, and top-level statements.

The course includes hands-on labs, real-world examples, and a cumulative case study to reinforce key concepts. All students receive comprehensive course materials and source code for every example.

Java Fundamentals for Programmers

Java Programming Course

As an immersive hands-on course, Java Fundamentals systematically equips you with the essential skills for proficient Java programming. Starting with a brief introduction to Java principles, you'll progress through comprehensive learning on data types, data structures, and control mechanisms. Delving deeper, you'll explore object-oriented programming concepts with a focus on typecasting, abstract classes, and interfaces. You'll enhance code robustness by crafting your own generics and mastering exception handling.
With a structured flow of content complemented by practical exercises and activities, Java Fundamentals lays a sturdy groundwork that enables you to navigate the extensive realm of Java API with confidence later on.

From its inception, Java has revolutionized the programming landscape, offering developers robust tools for crafting cross-platform applications. Java Fundamentals serves as your gateway to mastering these tools and functionalities essential for Java programming. The course commences with an exploration of the language's foundation, its philosophy, and evolution up to the latest release. You'll gain insights into the workings of javac/java tools and the organization of Java packages. As you progress, you'll delve into advanced language concepts like control flow keywords, object-oriented programming principles, and their significance in shaping Java. In the final modules, you'll tackle classes, typecasting, interfaces, and delve into essential topics such as data structures, arrays, strings, exception handling, and generics.

Upon completion of this course, you'll possess the skills to write programs, automate tasks, and pave the way for further exploration into advanced topics such as algorithms, data structures, or more specialized Java courses.

Java Certification

Software Engineering

The Java Certification course offers a comprehensive and in-depth curriculum to help students master Java programming. It covers topics ranging from the basics of Java and object-oriented programming to more advanced topics such as inheritance, interfaces, and exceptions. Students will also dive into collections, inner classes, and streams, as well as explore advanced topics such as concurrency, JDBC, localization, security, and modules. This course is designed to equip students with the knowledge and skills required to excel in Java programming and achieve Java certification.
This course helps prepare students for the Oracle Certified Professional: Java SE 21 Developer (1Z0-830) certification exam, which is the only exam needed to become an
Oracle Certified Professional: Java SE 21 Developer.

Fast Track to Java 17 and Object-Oriented Development

Java Programming Course

Fast Track to Java 17 and Object-Oriented Development is an intensive, hands-on course designed for programmers with prior coding experience (no Java knowledge required). This course provides a deep dive into Java fundamentals, object-oriented principles, and modern development practices.
Covering Java’s latest features, including Java 9+ module structures and enhancements in Java 11-17, participants will gain a solid understanding of Java programming and best practices for creating efficient, well-structured applications.

Exploring Design Patterns with Java

Mastering Software Design - 3 Days

This course provides a deep dive into object-oriented design patterns—essential tools for developing high-quality, maintainable software systems that meet requirements and ship on time. Geared towards developers and architects, the course blends formal design principles with real-world application, giving you both the conceptual foundation and the practical skills needed to build robust, reusable systems.
Focusing primarily on the well-known Gang of Four (GoF) design patterns, the course explores the most important patterns across Creational, Structural, and Behavioral categories. You’ll also get exposure to additional patterns, including Dependency Injection (DI) and common Enterprise Architecture Patterns.

While course examples are presented in Java, coding is not required during the labs. Instead, labs are hands-on and conceptual, focused on design thinking and applying patterns in practice through structured design exercises and projects.

Note: Java experience is helpful, but the focus is on design—not language-specific syntax.

A Concise Introduction to GIT Training

Essential Programming Series

This Essential GIT training class focuses on teaching you the core aspects of GIT, emphasising only what you really need to know. Through a step-by-step approach, the course explains what GIT is, the purpose of each feature, and how to use it effectively, just like professional web developers.

The course starts from the basics, assuming no prior knowledge of GIT and gradually introduces the theory and commands in a clear and logical sequence.

Additionally, you will learn how to use the GitHub portal, enabling you to collaborate with other developers. You will also participate in a project that applies all the concepts and skills learned throughout the course.

Introduction to Programming for Android Using Android Studio

Essential Programming Series

This Android Programming course is designed for Java developers who want to learn how to create user-friendly interfaces for Android applications. Whether you are new to mobile development or seeking to enhance your skills, this course offers a solid foundation for building engaging Android apps using Android Studio.

Introduction to Programming with Python

Essential Programming Series

Despite its nearly thirty-year existence, Python® has emerged as one of the most sought-after languages for software development, particularly within domains such as data science, machine learning, artificial intelligence, and web development—areas where Python enjoys widespread adoption. Whether you're new to programming or bring experience from other programming languages, this course offers a comprehensive introduction to the Python programming language, serving as an excellent starting point for beginners or as a solid foundation for further exploration.

Throughout the course, you'll gain insights into various aspects of the Python 3 language and development methodologies. You'll accomplish this by constructing a fully-fledged program capable of executing diverse operations across a multitude of data types, structures, and objects. Additionally, you'll master techniques for implementing program logic using conditional statements and loops, structuring code for enhanced reusability through functions, classes, and modules, handling file input/output operations, and managing error conditions effectively.

Advanced Programming Techniques with Python

Essential Programming Series

Python® remains a favored programming language, likely due to its accessible learning curve, minimal code requirements, and adaptability for various purposes including business, web development, and scientific applications. Python proves invaluable for crafting tailored software tools, applications, web services, and cloud-based solutions. In this course, you'll expand upon your foundational Python proficiency, delving into more sophisticated subjects such as object-oriented programming patterns, graphical user interface development, data manipulation, crafting web service-integrated applications, executing data science operations, conducting unit testing, and constructing and deploying packages and executable applications.

Python API Development Fundamentals

Essential Programming Series - 3 Day Course

This course provides comprehensive instruction on building a complete web application from the ground up. You'll acquire proficiency in all the essential tools and modules needed throughout the development process. Starting with the fundamentals of RESTful API, you'll progress through the course to develop and deploy a sophisticated, industry-standard web application.
Python, renowned for its versatility, extends beyond mere script development, offering robust capabilities for various applications. Acquiring proficiency in Python RESTful APIs unlocks the potential to construct potent backends for both web and mobile applications.

In this course, you'll commence with constructing a rudimentary API, delving into the interaction between the frontend web interface and the backend. Additionally, you'll grasp the intricacies of object serialization and deserialization through the marshmallow library. Furthermore, you'll master user authentication and authorization utilizing Flask-JWT.

Moreover, the course encompasses enriching your APIs with additional functionalities such as email integration, image uploading, search capabilities, and pagination. Finally, you'll culminate the course by deploying the APIs to cloud platforms, ensuring accessibility and scalability.

Using Data Science Tools in Python

Essential Programming Series - 2 Day Course

An increasing number of enterprises are embracing data science as a pivotal driver for informed business strategies. Irrespective of the industry, the capacity to glean insights from data holds paramount importance in maintaining competitiveness in today's market. Python®, emerging as a frontrunner in data science, stands out with its extensive libraries, empowering data scientists to effortlessly load, analyze, manipulate, cleanse, and visualize data in user-friendly yet robust ways. This course is tailored to equip you with the essential skills to proficiently harness these pivotal libraries, enabling you to derive actionable insights from data, thereby delivering substantial value to the business.

Data Visualisation using Python Training

Essential Programming Series - 3 Day Course

In a landscape where an abundance of data is constantly being generated, developers proficient in data analytics and visualization remain highly sought after. Through ``Data Visualization with Python,`` you'll acquire the skills to harness Python alongside NumPy, Pandas, Matplotlib, and Seaborn to craft compelling data visualisations using real-world, publicly available data.
Data Visualization with Python adopts a practical, hands-on approach towards creating impactful data visuals using Python. Through numerous activities embedded within real-life business scenarios, you'll have ample opportunities to practice and implement your newfound skills in a highly relevant context.

Data Visualisation with Python caters to developers and scientists aiming to venture into data science or leverage data visualisations for enhancing their personal and professional projects. While prior experience in data analytics and visualisation is not necessary, a basic understanding of Python and familiarity with high school-level mathematics can be beneficial. Although this course is designed for beginners in data visualisation, seasoned developers can enhance their Python proficiency through hands-on engagement with real-world data.

Data Science Projects with Python Training

Essential Programming Series - 2 Day Course

The ``Data Science Projects with Python`` course aims to familiarize you with the Python environment tailored for data science tasks. It serves as a stepping stone in your quest to become proficient in various machine learning topics. These acquired skills will enable you to develop advanced predictive models, aligning with industry standards and delivering substantial value to businesses across diverse sectors.
``Data Science Projects with Python`` is meticulously crafted to provide practical guidance on utilizing industry-standard data analysis and machine learning tools in Python, utilizing real-world datasets. This course empowers you to grasp how to leverage pandas and Matplotlib to meticulously examine datasets through summary statistics and visualizations, extracting the desired insights effectively.

Continuing your learning journey, you will delve into data preparation techniques and the application of machine learning algorithms, such as regularized logistic regression and random forest, utilizing the scikit-learn package. You will explore techniques for fine-tuning these algorithms to yield optimal predictions on new and unseen data instances.

Advancing through subsequent chapters, you will gain a comprehensive understanding of the inner workings and outputs of these algorithms. This knowledge will not only enhance your predictive modeling capabilities but also enable you to comprehend the rationale behind these predictions.

Introduction to SQL

Essential Programming Series - 3 Day Course

Ratio's Introduction to SQL Course is designed to provide a foundational understanding of the SQL programming language, the standard for relational database management systems. The course covers SQL basics, including table creation, data manipulation, and database querying. Upon completion, students will be able to write SQL queries and work with Microsoft SQL Server or PostgreSQL.

This course is suitable for beginners with no prior SQL or database management experience, as well as professionals looking to refresh their skills. Overall, Ratio's Introduction to SQL Course is an excellent starting point for anyone aiming to learn SQL and gain proficiency in database management and data engineering.

Advanced SQL Training

Essential Programming Series - 3 Day Course

Structured Query Language (SQL) is fundamental to all relational database operations. In this hands-on Advanced SQL course, you will learn to maximize the potential of the SELECT statement by writing robust queries using the most effective methods for your application. You'll test your queries and learn to avoid common errors and pitfalls. The course also covers alternative solutions to various problems, allowing you to choose the most efficient solution for each situation.

Use Case Modeling - Document Real-World User Requirements

Mastering Software Design - 2 Day Course

This intensive, hands-on workshop equips participants with the practical skills and techniques needed to effectively capture and document real-world user requirements. Grounded in industry-standard Use Case modeling techniques—popularized by Ivar Jacobson and widely adopted in object-oriented practices—this course prepares you to confidently model functional requirements in complex systems.
Beginning with an overview of modern system development and its impact on requirements gathering, the course guides you through the role of use cases within an iterative, incremental, and use case–driven SDLC. You'll learn how to identify, structure, and refine use cases through interactive simulations, stakeholder interviews, and modeling exercises.

With a balanced mix of theory and practice, the course emphasizes working collaboratively with stakeholders, troubleshooting requirement ambiguities, and producing use case models that feed directly into system design, architecture, testing, and project management.

https://yourratio.co.uk/object-oriented-analysis-and-design-ooad-with-uml/

Mastering Software Design - 5 Day Course

This immersive, hands-on course teaches the core techniques and best practices of object-oriented analysis and design (OOAD), empowering participants to build high-quality software systems that meet requirements and are delivered on time. Through a practical, applied approach, you’ll learn how to model, design, and communicate effectively using proven OO principles and industry-standard notations like UML.
The course is built around three integrated pillars:

Concepts – Core OO principles and design thinking

Notation – Unified Modeling Language (UML) for clear documentation and communication

Process – Modern development methodologies (e.g., Agile, RUP) for iterative, efficient delivery

Each topic is introduced individually, then brought together through a team-based group project that simulates real-world development. You’ll gain experience using UML to create meaningful models, documenting requirements with use cases, applying design patterns, and understanding how OOAD supports modern software development lifecycles.

Introduction to Spring 6, Spring Boot 3, and Spring REST

Master Modern Spring Development - 5 Day Course

This comprehensive course provides an in-depth introduction to Spring 6, Spring Boot 3, and Spring REST, aligning with modern development standards such as Java 17+ and Jakarta EE 9. It covers essential Spring Core capabilities, Spring Boot’s auto-configuration and dependency management, and building RESTful services with Spring REST.
Through hands-on exercises, participants will learn to leverage Spring’s powerful features to build scalable, maintainable applications. The course emphasizes Spring Boot for simplified setup and configuration while also covering traditional Spring configuration for comparison.

Introduction to Spark 3 with Python

Master Distributed Data Processing with Spark - 3 Day Course

This course provides an in-depth introduction to Apache Spark 3 for distributed computing. Designed for developers, data analysts, and architects, it focuses on leveraging Spark’s powerful engine for big data processing using Python (PySpark). The course covers core Spark concepts, Resilient Distributed Datasets (RDDs), DataFrames, Spark SQL, and Structured Streaming for real-time data processing.
Through hands-on exercises, participants will learn how to interact with Spark efficiently, optimize queries, and integrate with Kafka for streaming data ingestion.

Introduction to Spark 3 with Scala

Master Distributed Data Processing with Spark - 3 Day Course

This hands-on course introduces Apache Spark 3.x, the powerful distributed computing engine, designed for developers, data analysts, architects, and technical managers looking to work with Spark in a practical, effective way.
You'll gain a strong technical foundation in Spark’s architecture and operations, starting with core concepts like RDDs and Spark’s compute engine. From there, you'll dive into higher-level APIs including DataFrames, DataSets, and Spark SQL—now the preferred tools for building robust and optimized data applications.

The course also covers key performance topics like query optimization, memory management, and caching, as well as advanced features such as Spark Structured Streaming and integration with Kafka for processing real-time data streams.

This course is highly interactive, featuring numerous hands-on labs. You’ll write code using the Spark Shell for quick, exploratory work and build full applications using the Spark API in Scala.

Note: Labs and exercises are in Scala. If you're using Python, check out our companion course for PySpark.