Emerge is a comprehensive training program that covers a multitude of technologies, techniques and approaches for different types of attendees (whether individual, corporate or acedemic). Listed below are the standard Emerge modules. To avail of a training, contact us.

EM108 Introduction to game development using Java

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM201 Java programming 1

This course introduces the core Java technologies, including the Java programming language, the Java framework APIs, the Java virtual machine (JVM), as well as the necessary development tools. The class is directed by a professional industry trainor, facilitating the learning through hands-on activities and practical Java lessons that prepare participants for actual real life work. Learning Java programming in this way can be both fun and productive.

EM202 Java programming 2

Building on top of the "Java Programming 1" module, this module provides more depth to the concepts of Java development, introducing common design patterns, data access techniques, web service development approaches and threading concepts. The objective is to provide the attendees with relevant skills and knowledge so that they will be able to develop bigger, more complex, and more advanced applications using Java-based technologies.

EM203 Java Enterprise Edition

The Java Enterprise Edition (JEE or, as previously known, J2EE) training course provides more depth to the concept of Java programming, introducing common Java design patterns, data access through Java framework technologies such as SQL and JDBC, Java server technologies such as web services, servlets, JSP as well as multithreading and thread synchronization. This will enable the participants to learn Java on a deeper level, and will allow the participants to develop bigger, more complex and more advanced applications using Java Enterprise Edition technologies.

EM204 Android application development in Java

This course focuses on the development of mobile applications for mobile devices based on the Android operating system. The subjects are learned together with the help of a professional industry trainor. We introduce the specific methods, technologies and skills required for mobile app development using the Android platform, utilizing tools and mechanisms that are introduced both on the command line as well as within the Android Studio IDE in order to facilitate deeper understanding and to turn the participants into capable mobile app developers. By the end of the module, the participants will have the knowledge and experience to develop Android apps, and will be intimately familiar with the overall discipline of mobile app development.

EM301 Developing REST APIs and web services in Java

A common requirement in many, if not most, applications of today, is to expose some data of an application in a controlled manner either to outside parties, or other parts of internal applications. This is commonly done with web-based API designs, made available over the HTTP protocol, increasingly designed following the REST principles. In this module, we discuss the industry standard methods, practices and considerations for the design and implementation of such API designs using the Java programming language and other Java-based technologies.

EM102 Programming languages and development platforms

In today's industry, several prominent hardware platforms, programming languages and software platforms are used in the regular course of business. For a professional developer, it is important to be familiar with the different platforms and approaches, and to understand their characteristics and differences. This module introduces and compares several of the popular platforms, both hardware and software, and gives the participants a solid technical understanding of the features, opportunities, limitations and capabilities of each, in comparison with one another, from a developer's perspective. The participants are given the chance to try out the different programming languages and development platforms in action through developing short programs.

EM103 Programming fundamentals

All computer programs, regardless of the programming language or technology used to develop them, are essentially sets of instructions that are executed by processors. In this module, we look at those instructions and processors in more detail, and see how they connect to different devices, operating systems and programming languages. At the same time, we will learn how to develop small programs using C, Java and JavaScript and in the process, we will also note how those languages are both similar and different. We will get familiar with the common logic and the distinct features of these languages while developing small programs through hands-on exercises. Overall, this module aims to establish a firm foundation that will afterwards enable the attendees to more effectively attain additional learning in the field of software development.

EM104 Object oriented programming structures

Object oriented programming as a development paradigm is currently the norm and the industry standard. Almost all professionally developed software programs would usually employ object-oriented programming structures and methodologies. This module is designed to ensure that the level of knowledge, competence and skillset of the participants will be on the level of the current cutting-edge industry practices.

EM105 Fundamentals of computing

Computers, computer software, hardware and peripherals; files and directories, filesystems, storage devices; Computer parts and components: Motherboard, RAM, storage, keyboard, mouse, monitor, display adapter, sound card, network adapters, etc.; Terms, definitions and concepts; number systems, number encodings, memory storage formats, etc.

EM106 Core fundamentals for programming using C#

All programs, regardless of the programming language or technology used to develop them, are essentially sets of instructions that are executed by processors. In this module, we look at those instructions and processors in more detail, and see how they connect to different devices, operating systems and programming languages. At the same time, we will learn how to develop small programs using C, Java and JavaScript and in the process, we will also note how those languages are both similar and different. We will get familiar with the common logic and the distinct features of these languages while developing small programs through hands-on exercises. Overall, this module aims to establish a firm foundation that will afterwards enable the attendees to more effectively attain additional learning in the field of software development.

EM107 Introduction to database programming

Databases are frequently at the very core of the functionality of many kinds of applications. Multiple distinct ways exist to implement a database solution, and each of those ways comes with its unique pros and cons. Some database engines are more suitable for one task, and others for some other task. Different ways to design a database provide ways to optimize an application to particular use cases and requirements. In this module, we cover several of the popular options for database implementations and go through practical exercises in which the attendees get to use, develop and design for different kinds of databases. Technologies covered include relational databases (MySQL, PostgreSQL, MS SQL), NoSQL databases (MongoDB, DynamoDB, Google Cloud Datastore) and memory-based databases (Redis).

EM108 Introduction to game development using Java

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM109 Mathematics and programming logic

All programming and software engineering tasks and concepts at their core are based on mathematics. Consequently, a solid understanding of mathematics and mathematical concepts are imperative for establishing a good foundation for a career in software development. In this module, we will review several common mathematical techniques and concepts, and will apply them particularly in the context of developing software applications. The objective is to strengthen the core mathematical skills of the attendees, as well as to provide them with a vision of how a solid grasp of mathematics can effectively contribute to a more efficient and effective software development discipline.

EM110 Command line usage and scripting

The command line (Unix/Posix) shell is a powerful environment for developers and power-users, allowing for quick execution of tasks and commands, and provides easy ways to automate tasks and to perform common development-related activities. This module aims to provide the participants enough knowledge and expertise for them to be able to productively work and develop software in a command line environment.

EM201 Java programming 1

This course introduces the core Java technologies, including the Java programming language, the Java framework APIs, the Java virtual machine (JVM), as well as the necessary development tools. The class is directed by a professional industry trainor, facilitating the learning through hands-on activities and practical Java lessons that prepare participants for actual real life work. Learning Java programming in this way can be both fun and productive.

EM208 C programming

The C language is a foundational programming language that serves as the underlying development platform that enables many or most other higher level technologies and programming languages. As such, solid understanding of C provides a stable foundation for any software developer and allows him/her to more fully understand and utilize higher level concepts and technologies. This module provides a detailed exploration of the C programming language, including its syntax, usage, functionality, compiling methodology and common operations.

EM209 C++ programming

The C++ language is a mature, powerful object oriented language that combines the performance of the C language with the object oriented features expected from modern development platforms. C++ continues to be popular especially in applications where power, speed and efficiency are considered critical. This training module aims to introduce the language and its various concepts so that the participants will be able to efficiently use the language to develop different kinds of applications.

EM210 HTML5 application development

HTML5 serves as an umbrella term for several technologies that enable the development of dynamic applications delivered to various operating systems, desktop and mobile alike, via a web browser environment. This module introduces those technologies and their respective strengths and weaknesses through hands-on activities and enables the participants to effectively develop applications for this environment.

EM211 C# programming with .NET Framework

The participants will learn how to develop software application using the Microsoft .NET framework, using the C# programming language. This module starts by introducing the .NET framework, together with the syntax of C#. Various aspects of the .NET framework are then explored through practical examples and assignments, including GUI programming and web development. A considerable emphasis is given to ASP.NET development, specifically utilizing the MVC framework. NOTE: This module deals with the older .NET Framework. For the module that deals with the latest .NET technologies, see EM211.

EM212 C# programming with .NET Core

The participants will learn how to develop software application using the Microsoft .NET Core platform, using the C# programming language. This module starts by introducing the .NET Core platform, together with the syntax of C#. Various aspects of the .NET Core platform are then explored through practical examples and assignments, including GUI programming and web development. A considerable emphasis is given to ASP.NET Core development, specifically utilizing the MVC framework.

EM214 PHP programming

PHP is one of the popular programming languages / platforms for the development of applications for the web. Used by a very large number of websites all around the world, PHP is instrumental in enabling the world wide web to exist. In this module, we introduce the PHP programming platform from a practical perspective of developing web sites and applications. We look at the syntax of PHP, followed by language features, library features, and offer several kinds of practical tips and tricks on how to make the best possible PHP programs.

EM215 Node.js development 1

Learn how to develop modern JavaScript applications with Node.js. Discover and maximize the latest JavaScript features and how they can be used to enhance your development. Get comfortable with NPM, the Node.js Package Manager, to be even more productive by connecting with the global developer ecosystem and by accessing a large collection of ready-made libraries and tools. Discover how to design and build REST APIs using Node.js, and how to use your APIs to power and connect both web and mobile applications, while maximizing performance and connecting with different databases. After this training, the attendees should be able to start developing modern web applications and mobile backend software using JavaScript and Node.js.

EM217 React.js development

React.js has proven to be a very popular and versatile framework for the development of web-based software applications. In this module, we will introduce the React.js framework from an application development perspective. We will review the overall structure, philosophy and architecture of the React framework and React-based applications and will proceed straight into practical hands-on development activities. We will proceed from the creation of new React-based projects, through general syntax and usage, to developing graphical user interface components and combining them together to make a complete application. At the end of this module, the attendees are expected to be able to work with and develop applications in a React-based development environment.

EM217 Python programming

Being a general-purpose programming language, Python is frequently used to develop many kinds of different applications. The popularity of Python is consistently rising, placing Python as the language of choice for the development needs of many organizations. In this module we will introduce the Python language and development environment for prospective Python programmers. We will consider how the language itself works, how Python applications are written and executed, and how the code is written. We will develop actual Python programs and libraries, also utilizing and combining existing standard frameworks and third-party libraries. At the end of this module, the attendees should be comfortable in working with Python, and able to continue to develop their skills in an actual development setting.

EM218 Sling programming

Sling is a general-purpose programming language, intended to be used on multiple platforms and to integrate seamlessly with programs written in other programming languages. Sling programs can be translated to run natively on any supported platform, and are often used in mobile applications, web development and server/backend programming. In this module, we introduce the Sling programming language, its capabilities, how it works, and how it can be used. We introduce the syntax and the development tools, development process and how to utilize libraries written by others. At the end of this module, the attendees should be able to comfortably develop Sling-based programs and be capable to continue learning further through practical work.

EM308 Developing mobile applications for multiple platforms

Software development in the mobile world follows a specific paradigm, and many of the technologies involved are different from before. The co-existence of several competing operating systems and software platforms in the market makes it mandatory for software developers to be able to address different devices, different platforms and different operating systems. This requires developers to become familiar and comfortable using the different technologies from various vendors. This training module introduces several of the most popular platforms currently in the market, their technology approaches and methodologies, along with hands-on development tasks on each, enabling the participants to have a complete picture, along with practical experience, of software development in the current mobile industry targeting several different platforms, including Apple iOS, Google Android, Microsoft Windows Phone and HTML5.

EM309 Game development for Android, iOS and web using Sling

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM310 Web development using Sling

The Sling programming language has been developed particularly also with web development in mind. The language itself, along with the standard framework and libraries (Jkop), contains various features for making web development easier and more effective. In this module, we will cover those features and approaches in particular, and will guide the attendees through the development of practical web-based applications in a hands-on manner. At the end of the module, the attendees should have a good understanding about the development of web-based applications in a Sling environment.

EM318 Developing infrastructure for AWS

It is common for new applications to be developed with the cloud in mind and with cloud-based environments as the intended deployment environment. Amazon Web Services (AWS) is a very popular option for the deployment of scalable software solutions that can be used globally and that can be scaled to very large numbers of users as necessary. But cloud environments can be very different from traditional software development and deployment approaches, and many things in the cloud are done differently or should be done differently in order to maximize the cloud environment and its approach. In this module, we will consider the nature and structure of the Amazon cloud and the AWS deployment infrastructure. We will design, develop and deploy actual programs to an AWS account in order to understand the functionality. We will write CloudFormation scripts and consider common AWS products (EC2, S3, ECS, Fargate, Lambda) to have a practical view on how the cloud environment works. At the end of this module, attendees should be able to practically work in the AWS cloud environment and have a good foundation for continued learning in this field.

EM218 Sling programming

Sling is a general-purpose programming language, intended to be used on multiple platforms and to integrate seamlessly with programs written in other programming languages. Sling programs can be translated to run natively on any supported platform, and are often used in mobile applications, web development and server/backend programming. In this module, we introduce the Sling programming language, its capabilities, how it works, and how it can be used. We introduce the syntax and the development tools, development process and how to utilize libraries written by others. At the end of this module, the attendees should be able to comfortably develop Sling-based programs and be capable to continue learning further through practical work.

EM308 Developing mobile applications for multiple platforms

Software development in the mobile world follows a specific paradigm, and many of the technologies involved are different from before. The co-existence of several competing operating systems and software platforms in the market makes it mandatory for software developers to be able to address different devices, different platforms and different operating systems. This requires developers to become familiar and comfortable using the different technologies from various vendors. This training module introduces several of the most popular platforms currently in the market, their technology approaches and methodologies, along with hands-on development tasks on each, enabling the participants to have a complete picture, along with practical experience, of software development in the current mobile industry targeting several different platforms, including Apple iOS, Google Android, Microsoft Windows Phone and HTML5.

EM309 Game development for Android, iOS and web using Sling

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM310 Web development using Sling

The Sling programming language has been developed particularly also with web development in mind. The language itself, along with the standard framework and libraries (Jkop), contains various features for making web development easier and more effective. In this module, we will cover those features and approaches in particular, and will guide the attendees through the development of practical web-based applications in a hands-on manner. At the end of the module, the attendees should have a good understanding about the development of web-based applications in a Sling environment.

EM304 Vulnerability assessment and penetration testing

The active presence and threat of hackers on the Internet is very real, and systems may be hacked by various means at any time. To test your own systems and to know if your are vulnerable, and how vulnerable, conducting a vulnerability assessment through penetration testing can prove to be an invaluable tool to identify security holes and patch them prior to being exposed to outside hackers. In this module, we learn specific ways and techniques to test systems against commonly known vulnerabilities, along with ways on how to fix and remove the vulnerabilities from your systems. At the end of this module, attendees should be much stronger and more confident in testing and protecting their own systems.

EM305 Reverse engineering

The nature of many software platforms leaves the functionality, and even source code, of programs exposed, even if the programs have been properly compiled. In this module, we will look at common techniques and approaches that are used in the industry to analyze compiled programs, and to reverse engineer them to either source code or some other meaningful format that will help to find out their inner functionality. Likewise, we will look at possible ways to counter such reverse engineering and will make an attempt to protect our programs as much as possible.

EM306 Intrusion detection

While preventing unauthorized access to any system if preferable and ideal, the fact remains that sometimes there are vulnerabilities that are successfully exploited by malicious individuals. It becomes, therefore, increasingly important to not only prevent attacks, but to also identify when an attack has taken place, so that the condition can be remedied immediately and proactively. In this module, we look at the relevant techniques related to detecting unauthorized intruders and properly reporting any suspicious activities. At the end of this module, the attendees should be equipped to better detect intrusions, and more effectively protect their systems against attackers.

EM307 Cryptography

Many aspects of data security today rely on some forms of cryptographic algorithms, making it very important to understand the concepts and details behind the specific cryptographic algorithms that are being used. In this module, we will look at the foundations of cryptography, the different algorithms and approaches, and will attempt to achieve deeper understanding on how the algorithms work and how they can be used to perform specific tasks. At the end of this module, the attendees are expected to know not only what algorithms to use and where, but to also be able to understand why, and with what kinds of risks, if any.

EM101 Effective communication for professionals

This practical communication and interpersonal communication skills course will provide the participants with skills and techniques for handling any communication situation with greater flexibility, confidence, empathy and impact. The course will help them assess their communication strengths and weaknesses, as well as enhance their ability to listen to and understand others. At the end of the course, participants will be able to easily define communication and effective listening skills, identify and avoid communication barriers, and motivate and influence others toward their own goals.

EM208 C programming

The C language is a foundational programming language that serves as the underlying development platform that enables many or most other higher level technologies and programming languages. As such, solid understanding of C provides a stable foundation for any software developer and allows him/her to more fully understand and utilize higher level concepts and technologies. This module provides a detailed exploration of the C programming language, including its syntax, usage, functionality, compiling methodology and common operations.

EM209 C++ programming

The C++ language is a mature, powerful object oriented language that combines the performance of the C language with the object oriented features expected from modern development platforms. C++ continues to be popular especially in applications where power, speed and efficiency are considered critical. This training module aims to introduce the language and its various concepts so that the participants will be able to efficiently use the language to develop different kinds of applications.

EM213 MFC development

The Microsoft Foundation Class library (MFC) is a software development library that enables object oriented development of applications for Microsoft Windows using the C++ language. The library provides ready-made classes to handle various application development requirements, and to access various Windows APIs, including (but not limited to) graphical user interfaces, network programming and data access components. This module aims to provide the participants with a good working knowledge of the class library, its features, and how to develop applications using it.

EM204 Android application development in Java

This course focuses on the development of mobile applications for mobile devices based on the Android operating system. The subjects are learned together with the help of a professional industry trainor. We introduce the specific methods, technologies and skills required for mobile app development using the Android platform, utilizing tools and mechanisms that are introduced both on the command line as well as within the Android Studio IDE in order to facilitate deeper understanding and to turn the participants into capable mobile app developers. By the end of the module, the participants will have the knowledge and experience to develop Android apps, and will be intimately familiar with the overall discipline of mobile app development.

EM205 Android application development in Kotlin

This course focuses on the development of mobile applications for mobile devices based on the Android operating system. The subjects are learned together with the help of a professional industry trainor. We introduce the specific methods, technologies and skills required for mobile app development using the Android platform, utilizing tools and mechanisms that are introduced both on the command line as well as within the Android Studio IDE in order to facilitate deeper understanding and to turn the participants into capable mobile app developers. By the end of the module, the participants will have the knowledge and experience to develop Android apps, and will be intimately familiar with the overall discipline of mobile app development.

EM308 Developing mobile applications for multiple platforms

Software development in the mobile world follows a specific paradigm, and many of the technologies involved are different from before. The co-existence of several competing operating systems and software platforms in the market makes it mandatory for software developers to be able to address different devices, different platforms and different operating systems. This requires developers to become familiar and comfortable using the different technologies from various vendors. This training module introduces several of the most popular platforms currently in the market, their technology approaches and methodologies, along with hands-on development tasks on each, enabling the participants to have a complete picture, along with practical experience, of software development in the current mobile industry targeting several different platforms, including Apple iOS, Google Android, Microsoft Windows Phone and HTML5.

EM309 Game development for Android, iOS and web using Sling

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM312 Automated quality assurance (QA) testing for mobile applications

This module covers technical topics intended for engineers that are tasked to perform quality assurance activities for mobile platforms, with particular focus on Android, iOS and the mobile web platform. The intention is to familiarize the attendees in the various technologies and approaches used on the mobile platforms running the applications in order to enable them to perform a deeper level of quality testing.

EM107 Introduction to database programming

Databases are frequently at the very core of the functionality of many kinds of applications. Multiple distinct ways exist to implement a database solution, and each of those ways comes with its unique pros and cons. Some database engines are more suitable for one task, and others for some other task. Different ways to design a database provide ways to optimize an application to particular use cases and requirements. In this module, we cover several of the popular options for database implementations and go through practical exercises in which the attendees get to use, develop and design for different kinds of databases. Technologies covered include relational databases (MySQL, PostgreSQL, MS SQL), NoSQL databases (MongoDB, DynamoDB, Google Cloud Datastore) and memory-based databases (Redis).

EM314 Data management and Advanced Reporting Using Microsoft SQL Server, SSIS and SSRS

The Microsoft SQL Server provides a rich platform for data storage, data management, report generation, analytics and business intelligence. In this course, we introduce the various elements of MS SQL server and how to install, configure and utilize them. Particularly we focus on the SSIS and SSRS components that are used to provide integration services, data loading and transformations (SSIS) and various advanced reporting features (SSRS). After this training, the participants should be able to understand how to load data into MS SQL from various data sources, and how to create attractive and useful reports based on that data.

EM315 Data access using C# and .NET framework

This module introduces the use of ADO.NET, programmed in C#, to be used for accessing SQL databases from within C# applications. Together with a sufficient background knowledge in SQL (or, specifically, Transact-SQL), this module will provide the participants with the necessary knowledge for developing database-driven applications in C# using the .NET framework.

EM316 Using Transact-SQL with Microsoft SQL Server

This module introduces the usage of Transact-SQL, the SQL flavor used in the Microsoft SQL Server. The attendees will go through various features of Transact-SQL, along with practical exercises in designing and creating databases, inserting, updating and querying data, as well as in creating and executing stored procedures, triggers and indexes. As an end-result, the attendees are expected to be able to have all the necessary knowledge to work with databases in a Transact-SQL (Microsoft SQL Server) environment.

EM206 iOS application development in Objective-C

Apple iOS, one of the most popular mobile application platforms today, offers the ability for developers to create different kinds of applications on the platform. In this module, we introduce the necessary skills and technologies required to develop for iOS-based devices (which includes the Apple iPhone, iPad and iPod Touch). The module covers the development environment and tools (XCode), the programming language (Objective-C), platform-specific APIs of iOS, as well as other things to consider with regards to iOS development (application signing, the Apple developer program, App Store distribution). At the end of the module, the participants are expected to have an understanding of how iOS applications are developed, as well as the ability to create applications using the tools and technologies involved.

EM207 iOS application development in Swift

Apple iOS, one of the most popular mobile application platforms today, offers the ability for developers to create different kinds of applications on the platform. In this module, we introduce the necessary skills and technologies required to develop for iOS-based devices (which includes the Apple iPhone, iPad and iPod Touch). The module covers the development environment and tools (XCode), the programming language (Objective-C), platform-specific APIs of iOS, as well as other things to consider with regards to iOS development (application signing, the Apple developer program, App Store distribution). At the end of the module, the participants are expected to have an understanding of how iOS applications are developed, as well as the ability to create applications using the tools and technologies involved.

EM208 C programming

The C language is a foundational programming language that serves as the underlying development platform that enables many or most other higher level technologies and programming languages. As such, solid understanding of C provides a stable foundation for any software developer and allows him/her to more fully understand and utilize higher level concepts and technologies. This module provides a detailed exploration of the C programming language, including its syntax, usage, functionality, compiling methodology and common operations.

EM308 Developing mobile applications for multiple platforms

Software development in the mobile world follows a specific paradigm, and many of the technologies involved are different from before. The co-existence of several competing operating systems and software platforms in the market makes it mandatory for software developers to be able to address different devices, different platforms and different operating systems. This requires developers to become familiar and comfortable using the different technologies from various vendors. This training module introduces several of the most popular platforms currently in the market, their technology approaches and methodologies, along with hands-on development tasks on each, enabling the participants to have a complete picture, along with practical experience, of software development in the current mobile industry targeting several different platforms, including Apple iOS, Google Android, Microsoft Windows Phone and HTML5.

EM309 Game development for Android, iOS and web using Sling

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM312 Automated quality assurance (QA) testing for mobile applications

This module covers technical topics intended for engineers that are tasked to perform quality assurance activities for mobile platforms, with particular focus on Android, iOS and the mobile web platform. The intention is to familiarize the attendees in the various technologies and approaches used on the mobile platforms running the applications in order to enable them to perform a deeper level of quality testing.

EM210 HTML5 application development

HTML5 serves as an umbrella term for several technologies that enable the development of dynamic applications delivered to various operating systems, desktop and mobile alike, via a web browser environment. This module introduces those technologies and their respective strengths and weaknesses through hands-on activities and enables the participants to effectively develop applications for this environment.

EM214 PHP programming

PHP is one of the popular programming languages / platforms for the development of applications for the web. Used by a very large number of websites all around the world, PHP is instrumental in enabling the world wide web to exist. In this module, we introduce the PHP programming platform from a practical perspective of developing web sites and applications. We look at the syntax of PHP, followed by language features, library features, and offer several kinds of practical tips and tricks on how to make the best possible PHP programs.

EM215 Node.js development 1

Learn how to develop modern JavaScript applications with Node.js. Discover and maximize the latest JavaScript features and how they can be used to enhance your development. Get comfortable with NPM, the Node.js Package Manager, to be even more productive by connecting with the global developer ecosystem and by accessing a large collection of ready-made libraries and tools. Discover how to design and build REST APIs using Node.js, and how to use your APIs to power and connect both web and mobile applications, while maximizing performance and connecting with different databases. After this training, the attendees should be able to start developing modern web applications and mobile backend software using JavaScript and Node.js.

EM216 Node.js development 2

This module aims to help the attendees learn, understand and become productive in developing server platform applications in JavaScript using the Node.js platform. Various aspects of web development and features of the Node.js platform are discussed in detail, including integration with databases and external web APIs, as well as development of custom RESTful web APIs on the Node.js platform itself. At the end of the module, the attendees are expected to be well versed and comfortable in server side development using Node.js.

EM217 React.js development

React.js has proven to be a very popular and versatile framework for the development of web-based software applications. In this module, we will introduce the React.js framework from an application development perspective. We will review the overall structure, philosophy and architecture of the React framework and React-based applications and will proceed straight into practical hands-on development activities. We will proceed from the creation of new React-based projects, through general syntax and usage, to developing graphical user interface components and combining them together to make a complete application. At the end of this module, the attendees are expected to be able to work with and develop applications in a React-based development environment.

EM301 Developing REST APIs and web services in Java

A common requirement in many, if not most, applications of today, is to expose some data of an application in a controlled manner either to outside parties, or other parts of internal applications. This is commonly done with web-based API designs, made available over the HTTP protocol, increasingly designed following the REST principles. In this module, we discuss the industry standard methods, practices and considerations for the design and implementation of such API designs using the Java programming language and other Java-based technologies.

EM302 Full stack development using the MEAN stack

Full stack web development is a common requirement and a common desire of developers these days. Being able to simultaneously work on all layers of an application stack provides for an efficient development experience and allows developers to work faster and in a more agile manner, with a solid overall perspective of the entire application. In this module, we introduce the MEAN (MongoDB, Express.js, Angular and Node.js) stack, what it is composed of, and how it can be harnessed and utilized for full stack development. At the end of this module, the attendees should have a good understanding of full stack development with the chosen technologies.

EM303 Full stack web development with Node.js and React.js

Full stack web development is a common requirement and a common desire of developers these days. Being able to simultaneously work on all layers of an application stack provides for an efficient development experience and allows developers to work faster and in a more agile manner, with a solid overall perspective of the entire application. In this module, we will cover particularly the Node.js and React.js technology frameworks, and how they can be harnessed and utilized together particularly for full stack development. At the end of this module, the attendees should have a good understanding of full stack development with the chosen technologies.

EM308 Developing mobile applications for multiple platforms

Software development in the mobile world follows a specific paradigm, and many of the technologies involved are different from before. The co-existence of several competing operating systems and software platforms in the market makes it mandatory for software developers to be able to address different devices, different platforms and different operating systems. This requires developers to become familiar and comfortable using the different technologies from various vendors. This training module introduces several of the most popular platforms currently in the market, their technology approaches and methodologies, along with hands-on development tasks on each, enabling the participants to have a complete picture, along with practical experience, of software development in the current mobile industry targeting several different platforms, including Apple iOS, Google Android, Microsoft Windows Phone and HTML5.

EM309 Game development for Android, iOS and web using Sling

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM310 Web development using Sling

The Sling programming language has been developed particularly also with web development in mind. The language itself, along with the standard framework and libraries (Jkop), contains various features for making web development easier and more effective. In this module, we will cover those features and approaches in particular, and will guide the attendees through the development of practical web-based applications in a hands-on manner. At the end of the module, the attendees should have a good understanding about the development of web-based applications in a Sling environment.

EM312 Automated quality assurance (QA) testing for mobile applications

This module covers technical topics intended for engineers that are tasked to perform quality assurance activities for mobile platforms, with particular focus on Android, iOS and the mobile web platform. The intention is to familiarize the attendees in the various technologies and approaches used on the mobile platforms running the applications in order to enable them to perform a deeper level of quality testing.

EM313 Implementing web services using WCF

In this module, the topic of web services will be discussed and introduced to the participants. The concepts, technologies, mechanisms and commonly used protocols are explained from a generic standpoint, followed by the introduction of the Windows Communication Foundation (WCF) to introduce the usage of this specific .NET method of implementing web services. Emphasis is given to understanding the overall mechanisms and functionality of web services, as well as in being able to effectively implement web services using WCF.

EM317 High performance web service development in Python

In addition to all its other uses, Python is a very capable and popular language for web development and the development of web services as well. There are many different approaches for the development of web services in Python, and sometimes it is difficult to decide what is the best way to proceed, and how to correctly structure and design your applications. In this module, we will look at both synchronous and asynchronous approaches to Python web service development and consider the pros and cons of each. We will look at popular development frameworks for the development of each (Flask for synchronous and Tornado for asynchronous), and see how they can be used, and how they are different. At the end of this module, attendees should understand the different approaches and be able to utilize the technologies and approaches in real-life backend software.

EM104 Object oriented programming structures

Object oriented programming as a development paradigm is currently the norm and the industry standard. Almost all professionally developed software programs would usually employ object-oriented programming structures and methodologies. This module is designed to ensure that the level of knowledge, competence and skillset of the participants will be on the level of the current cutting-edge industry practices.

EM204 Android application development in Java

This course focuses on the development of mobile applications for mobile devices based on the Android operating system. The subjects are learned together with the help of a professional industry trainor. We introduce the specific methods, technologies and skills required for mobile app development using the Android platform, utilizing tools and mechanisms that are introduced both on the command line as well as within the Android Studio IDE in order to facilitate deeper understanding and to turn the participants into capable mobile app developers. By the end of the module, the participants will have the knowledge and experience to develop Android apps, and will be intimately familiar with the overall discipline of mobile app development.

EM205 Android application development in Kotlin

This course focuses on the development of mobile applications for mobile devices based on the Android operating system. The subjects are learned together with the help of a professional industry trainor. We introduce the specific methods, technologies and skills required for mobile app development using the Android platform, utilizing tools and mechanisms that are introduced both on the command line as well as within the Android Studio IDE in order to facilitate deeper understanding and to turn the participants into capable mobile app developers. By the end of the module, the participants will have the knowledge and experience to develop Android apps, and will be intimately familiar with the overall discipline of mobile app development.

EM206 iOS application development in Objective-C

Apple iOS, one of the most popular mobile application platforms today, offers the ability for developers to create different kinds of applications on the platform. In this module, we introduce the necessary skills and technologies required to develop for iOS-based devices (which includes the Apple iPhone, iPad and iPod Touch). The module covers the development environment and tools (XCode), the programming language (Objective-C), platform-specific APIs of iOS, as well as other things to consider with regards to iOS development (application signing, the Apple developer program, App Store distribution). At the end of the module, the participants are expected to have an understanding of how iOS applications are developed, as well as the ability to create applications using the tools and technologies involved.

EM207 iOS application development in Swift

Apple iOS, one of the most popular mobile application platforms today, offers the ability for developers to create different kinds of applications on the platform. In this module, we introduce the necessary skills and technologies required to develop for iOS-based devices (which includes the Apple iPhone, iPad and iPod Touch). The module covers the development environment and tools (XCode), the programming language (Objective-C), platform-specific APIs of iOS, as well as other things to consider with regards to iOS development (application signing, the Apple developer program, App Store distribution). At the end of the module, the participants are expected to have an understanding of how iOS applications are developed, as well as the ability to create applications using the tools and technologies involved.

EM308 Developing mobile applications for multiple platforms

Software development in the mobile world follows a specific paradigm, and many of the technologies involved are different from before. The co-existence of several competing operating systems and software platforms in the market makes it mandatory for software developers to be able to address different devices, different platforms and different operating systems. This requires developers to become familiar and comfortable using the different technologies from various vendors. This training module introduces several of the most popular platforms currently in the market, their technology approaches and methodologies, along with hands-on development tasks on each, enabling the participants to have a complete picture, along with practical experience, of software development in the current mobile industry targeting several different platforms, including Apple iOS, Google Android, Microsoft Windows Phone and HTML5.

EM309 Game development for Android, iOS and web using Sling

Game development is currently, without question, one of the hottest topics in the software industry. Gaming among end-users has become extremely common and widespread, largely due to the proliferation of mobile devices, providing game developers significant new revenue streams. At the same time, game development continues to be an interesting and engaging field in terms of software engineering, and allows software engineers to continuously challenge and push themselves in different and fulfilling ways. In this module, we will learn numerous common techniques, technologies, tools and other ways in which aspiring game developers can create new games while learning to understand the principles of how games work and how they can be developed.

EM311 Continuous integration for mobile applications

Integrating version control systems, build systems, unit tests, issue tracking, API testing, UI automation and actual development, especially in larger projects, can at times feel very challenging and complicated. In this module, we look at the fundamentals of how these different components of a development project work, and how they can be integrated and managed effectively by automating the entire process as much as possible. The attendees will become familiar with the concept and practice of Continuous Integration (CI) in software project execution through actually setting up and using a CI environment with all its components.

EM312 Automated quality assurance (QA) testing for mobile applications

This module covers technical topics intended for engineers that are tasked to perform quality assurance activities for mobile platforms, with particular focus on Android, iOS and the mobile web platform. The intention is to familiarize the attendees in the various technologies and approaches used on the mobile platforms running the applications in order to enable them to perform a deeper level of quality testing.

EM106 Core fundamentals for programming using C#

All programs, regardless of the programming language or technology used to develop them, are essentially sets of instructions that are executed by processors. In this module, we look at those instructions and processors in more detail, and see how they connect to different devices, operating systems and programming languages. At the same time, we will learn how to develop small programs using C, Java and JavaScript and in the process, we will also note how those languages are both similar and different. We will get familiar with the common logic and the distinct features of these languages while developing small programs through hands-on exercises. Overall, this module aims to establish a firm foundation that will afterwards enable the attendees to more effectively attain additional learning in the field of software development.

EM211 C# programming with .NET Framework

The participants will learn how to develop software application using the Microsoft .NET framework, using the C# programming language. This module starts by introducing the .NET framework, together with the syntax of C#. Various aspects of the .NET framework are then explored through practical examples and assignments, including GUI programming and web development. A considerable emphasis is given to ASP.NET development, specifically utilizing the MVC framework. NOTE: This module deals with the older .NET Framework. For the module that deals with the latest .NET technologies, see EM211.

EM212 C# programming with .NET Core

The participants will learn how to develop software application using the Microsoft .NET Core platform, using the C# programming language. This module starts by introducing the .NET Core platform, together with the syntax of C#. Various aspects of the .NET Core platform are then explored through practical examples and assignments, including GUI programming and web development. A considerable emphasis is given to ASP.NET Core development, specifically utilizing the MVC framework.

EM313 Implementing web services using WCF

In this module, the topic of web services will be discussed and introduced to the participants. The concepts, technologies, mechanisms and commonly used protocols are explained from a generic standpoint, followed by the introduction of the Windows Communication Foundation (WCF) to introduce the usage of this specific .NET method of implementing web services. Emphasis is given to understanding the overall mechanisms and functionality of web services, as well as in being able to effectively implement web services using WCF.

EM315 Data access using C# and .NET framework

This module introduces the use of ADO.NET, programmed in C#, to be used for accessing SQL databases from within C# applications. Together with a sufficient background knowledge in SQL (or, specifically, Transact-SQL), this module will provide the participants with the necessary knowledge for developing database-driven applications in C# using the .NET framework.

EM311 Continuous integration for mobile applications

Integrating version control systems, build systems, unit tests, issue tracking, API testing, UI automation and actual development, especially in larger projects, can at times feel very challenging and complicated. In this module, we look at the fundamentals of how these different components of a development project work, and how they can be integrated and managed effectively by automating the entire process as much as possible. The attendees will become familiar with the concept and practice of Continuous Integration (CI) in software project execution through actually setting up and using a CI environment with all its components.

EM318 Developing infrastructure for AWS

It is common for new applications to be developed with the cloud in mind and with cloud-based environments as the intended deployment environment. Amazon Web Services (AWS) is a very popular option for the deployment of scalable software solutions that can be used globally and that can be scaled to very large numbers of users as necessary. But cloud environments can be very different from traditional software development and deployment approaches, and many things in the cloud are done differently or should be done differently in order to maximize the cloud environment and its approach. In this module, we will consider the nature and structure of the Amazon cloud and the AWS deployment infrastructure. We will design, develop and deploy actual programs to an AWS account in order to understand the functionality. We will write CloudFormation scripts and consider common AWS products (EC2, S3, ECS, Fargate, Lambda) to have a practical view on how the cloud environment works. At the end of this module, attendees should be able to practically work in the AWS cloud environment and have a good foundation for continued learning in this field.

EM319 Developing software for containers

Modern software is frequently deployed using containers, allowing software developers to carefully manage the environments in which their applications run. Whether the application is deployed in AWS, Google Cloud, Azure, OpenShift, Kubernetes or some other such platform, the underlying container format is normally the same and follows the same principles. Same code can run with minor modifications or with no modifications at all in different deployment environments. In this module, we will look at this fundamental concept in detail, and will learn how to create containers and how to manage them. We will utilize Docker tools to create and publish containers and choose how they can be deployed and where. We will consider the structure of the application code that goes inside containers and how security aspects can be considered. After this module, it is expected that the attendees will be able to contribute to the development of container-based applications.

EM210 HTML5 application development

HTML5 serves as an umbrella term for several technologies that enable the development of dynamic applications delivered to various operating systems, desktop and mobile alike, via a web browser environment. This module introduces those technologies and their respective strengths and weaknesses through hands-on activities and enables the participants to effectively develop applications for this environment.

EM215 Node.js development 1

Learn how to develop modern JavaScript applications with Node.js. Discover and maximize the latest JavaScript features and how they can be used to enhance your development. Get comfortable with NPM, the Node.js Package Manager, to be even more productive by connecting with the global developer ecosystem and by accessing a large collection of ready-made libraries and tools. Discover how to design and build REST APIs using Node.js, and how to use your APIs to power and connect both web and mobile applications, while maximizing performance and connecting with different databases. After this training, the attendees should be able to start developing modern web applications and mobile backend software using JavaScript and Node.js.

EM216 Node.js development 2

This module aims to help the attendees learn, understand and become productive in developing server platform applications in JavaScript using the Node.js platform. Various aspects of web development and features of the Node.js platform are discussed in detail, including integration with databases and external web APIs, as well as development of custom RESTful web APIs on the Node.js platform itself. At the end of the module, the attendees are expected to be well versed and comfortable in server side development using Node.js.

EM217 React.js development

React.js has proven to be a very popular and versatile framework for the development of web-based software applications. In this module, we will introduce the React.js framework from an application development perspective. We will review the overall structure, philosophy and architecture of the React framework and React-based applications and will proceed straight into practical hands-on development activities. We will proceed from the creation of new React-based projects, through general syntax and usage, to developing graphical user interface components and combining them together to make a complete application. At the end of this module, the attendees are expected to be able to work with and develop applications in a React-based development environment.

EM302 Full stack development using the MEAN stack

Full stack web development is a common requirement and a common desire of developers these days. Being able to simultaneously work on all layers of an application stack provides for an efficient development experience and allows developers to work faster and in a more agile manner, with a solid overall perspective of the entire application. In this module, we introduce the MEAN (MongoDB, Express.js, Angular and Node.js) stack, what it is composed of, and how it can be harnessed and utilized for full stack development. At the end of this module, the attendees should have a good understanding of full stack development with the chosen technologies.

EM303 Full stack web development with Node.js and React.js

Full stack web development is a common requirement and a common desire of developers these days. Being able to simultaneously work on all layers of an application stack provides for an efficient development experience and allows developers to work faster and in a more agile manner, with a solid overall perspective of the entire application. In this module, we will cover particularly the Node.js and React.js technology frameworks, and how they can be harnessed and utilized together particularly for full stack development. At the end of this module, the attendees should have a good understanding of full stack development with the chosen technologies.