Training Professional Training Programs

Explore our comprehensive training programs, enhance your team's development skills and help them stay abreast of technology.

Languages Deep Dive

Functional Programming Java

From the programming point of view, functional changes to Java has had the most impact on how applications are crafted. Lambdas and Streams fundamentally change how we create applications. While we continue to make use of both the imperative style of programming and the object-oriented paradigm, we need to carefully leverage the functional style of programming that's now possible in Java.

3 days
Learn more

Java 9 and beyond

With a faster and more frequent release cadence, Java is moving at a much rapid pace. This course will bring your team up to speed with the state of the art changes with the recent versions of Java.

3 days
Learn more

Programming Kotlin

Kotlin is a language that is gaining immense popularity for a few good reasons. It is a language that has been built from the strengths and powerful features of many different languages.

5 days
Learn more

Programming in Scala

Scala being a concise, functional, object-oriented language on the Java Virtual Machine has some remarkable features. It's expressive, fully OO, integrates well with Java and Java libraries, has good support for functional style.

3 days
Learn more

Programming in Groovy

The power of Groovy is in metaprogramming. Sure, it's a language that's fluent, concise, integrates well with Java, and provides the functional style of programming.

3 days
Learn more

Programming in Modern JavaScript

JavaScript is one of the most ubiquitous and powerful languages, yet it's one of the languages that's largely misunderstood and underutilized.

3 days
Learn more

Programming with Modern C++

C++ is one of the few languages that continues to evolve in pleasantly surprising ways.

3 days
Learn more

AI Assisted Software Development

Making Prudent Use of AI in Development

You can't get through a day without hearing the word 'AI'. Is it useful (asks the eternal optimist) or totally useless (asks the perpetual pessimist)? The reality is somewhere in between. Developers can gain from it a lot, but not in the way it is often hyped. In this course learn how to make use of AI, explore different opportunities to reap its benefits, and also get a strong understanding of the limitations and risks of using AI.

1 day + add on other AI related modules
Learn more

Finding and Fixing Issues with Legacy Code using AI

It's a big win when a tool can perform with ease a task humans suffer at. Programmers are awesome in many ways but are truly horrible in dealing with cognitive load, legacy code, and in finding issues that arise within large applications in production. This is one area where AI truly shines as a tool to assist with software development. In this course we will take an example driven approach in exploring the power of AI to identifying issues that most programmers introduce in code, but can rarely detect. We will also use AI to help to reason about highly complex and poorly written code (we all have our share of those). Learn to leverage AI to deal with one of the most difficult aspects of development and understand why AI is actually reliable for this purpose.

1 day + add on other AI related modules
Learn more

Power and Perils of Vibe Coding

Vibe Coding is receiving a lot of attention, but how pratical is it to create entire applications with fully AI generated code? What are the consequences? Where does it make sense to use vibe coding? To what degree? There are these and so many more questions that arise in the minds of everyone involved in software development in various roles. In this course, we will walk through multiple examples, practice along, and gain insights into how to effectively drive the development using AI, with the power of vibe coding tools and how to carefully manage the risks so that the journey does not end up with a huge pile of unmaintainable code.

1 day + add on other AI related modules
Learn more

Creating Architectures with the Aid of AI

An architect for any non-trivial application should focus on very many characteristics, analyze risk, identify potential issues, and assist the team to create the right application to meet the business needs. Often this feels like a Herculean task that is beyond the capability of one person or even a small team of architects. This is where AI comes in, not to replace the architects, but to augment their capabilities to create the appropriate architecture. In this course learn about the approach to creating the appropriate architecture, the essential steps, and how to make use of AI to throughly identify the characteristics and the concerns that are easy for us the humans to miss.

1 day + add on other AI related modules
Learn more

Creating AI Assisted Apps using LangChain4J

It's one thing to use AI to create applications, but true power of AI comes in when it can assist the users of our applications. The ability of AI to infer from vast amount of data and offer insights and recommendations to the users can bring significant value to the business and also enrich users experience. In this course learn how to build AI into your application, how to develop with LangChain4J so that you can switch between different language models and, at the same time, work with local data in order to protect privacy. Learn by implementing practical examples that provide insights into how you can incorporate the set of tools into your own applications.

1 day + add on other AI related modules
Learn more

Spring into AI

Spring is the defacto standard for developing enterprise applications on the JVM. When it comes to AI enabling applications, Spring AI is a perfect tool with synergy to the framework or the platform. In this course will start with some use cases for using AI within applications and then dive into Spring AI and explore the power of the capabilities and how to leverage them for your own applications.

1 day + add on other AI related modules
Learn more

AI Assisted Test Driven Development

We all know that agile development is feedback driven development, yet, it has been really hard for most organizations to create applications with a good set of automated tests. Irrespective of the roadblocks, would AI finally break those barriers and help us to create automated tests? What about those legacy code that have been hard to write tests on. In this course learn from real world examples of how AI can be used for creating automated tests, its effectiveness to do test driven development for new code, and how it is able to mock and stub dependencies. Learn to leverage AI for creating automated tests.

1 day + add on other AI related modules
Learn more

Specification Driven Development with AI

An emerging area in the field of software development, Specification Driven Development comes with both potential and challenges at the same time. Will AI be the compiler of the future? Once humans wrote very low level code and compilers evolved to remove that burden and allow programmers to focus on higher level abstraction and languages to express the ideas. Likewise, would AI becomes a tool that can take specifications and generate entire application and when specs are modified, they can reliably regen without human intervention? We are not there yet, but many different tools and techniques are emerging to show us the possibilities. Also, it does not have to be a all or noting proposition. We can benefit from these tools, as they evolve and get ahead of the curve by learning to use these tools and getting a good understanding of the techniques to attain better results.

1 day + add on other AI related modules
Learn more

Methods & Practices

Architecture & Design

Big Up-front Design is a bad idea, as an industry we've learned the consequence of this over the past few decades.

5 days
Learn more

Test Driven Design

Agile development is not really about being fast, but about sustainable speed.

5 days
Learn more

Test Driven JavaScript Application Development

JavaScript is one of the most powerful dynamically typed languages. A good disciplined development approach is necessary to avoid that power turning into a maintenance nightmare.

5 days
Learn more

Applying Design Patterns

Design Patterns are popular among developers. However, figuring out which pattern to use, and when, often turns out to be a challenge.

3 days
Learn more

Agile Software Development Practices

Agile development is all about succeeding in our efforts with the help of short, meaningful feedback loops. If we're not succeeding, then we ought to change our practices.

5 days
Learn more

Web Development

Using Angular

Angular is a total rewrite of the popular AngularJS framework, focused on improving both developer productivity and runtime performance.

4 days
Learn more

Using React

React is a powerful client side tool to create highly interactive web front-end.

4 days
Learn more

Web Development with Grails

Grails is a great example of what we can do with the powerful metaprogramming capability of a language like Groovy. Grails has been developed on top of some of the most solid and popular technologies on the JVM.

5 days
Learn more

Web Development with Ruby and Rails

Rails changed the world's view of web development. By making phenomenal use of the metaprogramming capabilities and fluency of Ruby, it lead the way to rapid application development.

5 days
Learn more

Technologies and Tools

Reactive Programming

Reactive programming is gaining a lot of attention. A combination of fundamental approaches—functional programming, event based programming, loose coupling, and error resilience.

2 days
Learn more

Concurrency without Pain

Programming Concurrency is one of the most difficult task for programmers. The traditional concurrency libraries are mired with accidental complexities.

4 days
Learn more