Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching. Scala code runs on a JVM and was designed to address some of the shortcomings of Java.
In this instructor-led, live training participants will learn how to use Scala's advanced features, including its type system, to write better code using an object-functional approach.
By the end of this training, participants will be able to:
Leverage Scala's type system to maximum benefit
Handle exceptions functionally
Create libraries and DSLs with Scala
Use Scala's advanced features for pattern matching
Format of the course
Part lecture, part discussion, exercises and heavy hands-on practice
[category_overview] =>
[outline] =>
Introduction
Scala as a JVM language
Objection-oriented programming vs functional programming
Overview of Object-Functional Programming
Tail recursion
Partial functions
Currying and partial function application
Closures
Lazy evaluation
Mastering the Scala Type System
About traits
Structural types
Path dependent types
Self types
Covariance and contravariance
Type bounds
Advanced Pattern Matching in Scala
Deep matching
Using extractors
Using Scala Implicit
Implicit conversion, classes and parameters
Type class pattern
Context and view bounds
Libraries and DSLs
Custom control structures with by-name parameters
Building well-designed libraries and internal DSLs
There are no specific requirements needed to attend this course.
[overview] =>
This training outline is intended to bring attendees from a beginner to an intermediate/advanced level in the understanding and knowledge of the Akka framework.
The entire course is hands on, mostly driven by the trainer in the beginning and progressively shifting towards the attendees producing code themselves (and downloading implementations/solutions written by the trainer).
Attendees are not expected to have prior knowledge of Scala, the trainer will take the necessary time to explain and clarify all the intricacies that relate to the Scala code used.
[category_overview] =>
[outline] =>
Introduction, environment Setup and a first application
The Akka framework
The Actor model (definition & origins)
Fault tolerance
Location transparency
Scaling
Actors In Akka
Setting up a Scala/Maven environment
A first application in Akka
Create the project
Defining message Classes
Defining actor Classes
Defining the execution Class
Architecture & configuration files
Actors & Typed Actors
Anatomy of an Actor
Creating Actors (default constructors, custom constructors, actor hierarchy)
Knowledge of Java/Scala programming language. Basic familiarity with statistics and linear algebra is recommended.
[overview] =>
The aim of this course is to provide a basic proficiency in applying Machine Learning methods in practice. Through the use of the Scala programming language and its various libraries, and based on a multitude of practical examples this course teaches how to use the most important building blocks of Machine Learning, how to make data modeling decisions, interpret the outputs of the algorithms and validate the results.
Our goal is to give you the skills to understand and use the most fundamental tools from the Machine Learning toolbox confidently and avoid the common pitfalls of Data Sciences applications.
[category_overview] =>
[outline] =>
Introduction to Applied Machine Learning
Statistical learning vs. Machine learning
Iteration and evaluation
Bias-Variance trade-off
Machine Learning with Scala
Choice of libraries
Add-on tools
Regression
Linear regression
Generalizations and Nonlinearity
Exercises
Classification
Bayesian refresher
Naive Bayes
Logistic regression
K-Nearest neighbors
Exercises
Cross-validation and Resampling
Cross-validation approaches
Bootstrap
Exercises
Unsupervised Learning
K-means clustering
Examples
Challenges of unsupervised learning and beyond K-means
Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching.
In this instructor-led, live training participants will learn how to use Scala's advanced features to develop well-constructed software that is easy to write, read, test, and change. The focus of this training is on functional programming, using real-world case studies and discussion as a reference for lab exercises and activities.
By the end of this training, participants will be able to:
Scala is a condensed version of Java for large scale functional and object-oriented programming. Apache Spark Streaming is an extended component of the Spark API for processing big data sets as real-time streams. Together, Spark Streaming and Scala enable the streaming of big data.
This instructor-led, live training (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
[outline] =>
Introduction
Scala Programming in Depth Review
Syntax and structure
Flow control and functions
Spark Internals
Resilient Distributed Datasets (RDD)
Spark script to graph to cluster
Overview of Spark Streaming
Streaming architecture
Intervals in streaming
Fault tolerance
Preparing the Development Environment
Installing and configuring Apache Spark
Installing and configuring the Scala IDE
Installing and configuring JDK
Spark Streaming Beginner to Advanced
Working with key/value RDD's
Filtering RDD's
Improving Spark scripts with regular expressions
Sharing data on a cluster
Working with network data sets
Implementing BFS algorithms
Creating Spark driver scripts
Tracking in real time with scripts
Writing continuous applications
Streaming linear regression
Using Spark Machine Learning Library
Spark and Clusters
Bundling dependencies and Spark scripts using the SBT tool
Using EMR for illustrating clusters
Optimizing by partitioning RDD's
Using Spark logs
Integration in Spark Streaming
Integrating Apache Kafka and working with Kafka topics
Integrating Apache Fume and working with pull-based/push-based Flume configurations
Writing a custom receiver class
Integrating Cassandra and exposing data as real-time services
In Production
Packaging an application and running it with Spark-Submit
Troubleshooting, tuning, and debugging Spark Jobs and clusters
The purpose of the training is to provide a basis for programming from the ground up to the general syntax of programming paradigms. The training is supported by examples based on programming languages such as C, Java, Python, Scala, C #, Closure and JavaScript. During the training, participants gain a general understanding of both the programming patterns, best practices, commonly used design and review of the implementation of these topics through various platforms. Each of the issues discussed during the course are illustrated with examples of both the most basic and more advanced and based on real problems.
[category_overview] =>
[outline] =>
Introduction
What is programming and why should devote his attention
History of programming
Opportunity to automate tasks using the software
The role of the programmer and the computer in the enterprise
Programming today the development of the current market trends
Declarative and imperative programming. How or What?
Turing machine
Consolidation, compilation and interpretation "on the fly".
Reminder issues of logic and Boolean algebra
predicates
logical sentences
tautologies
Boolean algebra
The first program
structurally
functionally
object
And how else?
Simple types
Representation of strings
Integers
Floating-point numbers
Boolean
Type Null
A blank or Uninitialized
Strong and weak typing
Data structures
Concepts FIFO and FILO
Stacks
Queues
Declaring arrays and lists
Indexing
Maps
Records
Trees
Operators
Assignment Operators.
Arithmetic operators.
comparison Operators
And a comparison of the values in different languages
Bitwise
Concatenation
Increment and decrement operators
The most common errors
Controlling the program
The if, if else instructions
Goto instructions, discuss the problems of application.
The switch
The for loop, for-in
The while loop, do-while
foreach loop
Stopping loop
Creating a reusable code
Functional Programming
Object-Oriented Programming
Functional programming paradigms
What is the function of
Function and procedure
Fundamentals of lambda calculus
Function Arguments
Returning values
Functions as arguments
Anonymous functions
Closures
Recursion
The paradigms of object-oriented programming
Representation of entities from the real world entities in philosophy, ontology
Deciding what you want to object, or other types of
Declaration of classes
Creating instances of classes
Fields, a state of the object
Methods, as the behavior of an object
abstraction
Encapsulation
Inheritance
polymorphism
Association and aggregation
Delegation and separation of relationships between objects
Modules, packages and libraries
Sharing API
The modeling of the system as classes and objects
Describing and programming relationships between classes
Program from a business perspective
Good programming practice
Pitfalls and common errors
High-level code in the interpretation of low-level
Code optimization
KISS principle
DRY principle
Principle Worse is Better
Separation abstraction of implementation
Methods of error detection logic programs
Conventions godowania
Commenting the code
Software Metrics
Overview of these technologies and languages
The area of application of these languages
The main features of language
Prospects for development
The future direction of development: algorithmic, optimization of code, implementing patterns, design patterns, architectural patterns, analytical standards
Reduction of the control structure - the use of artificial intelligence and automated decision-making
Which platform to choose? Individual consultations
There are no specific requirements needed to attend this course.
[overview] =>
Why do we need Clean Code? Programs evolve, therefore the code is continuously updated it can be very, very difficult to go back through unclean code to find and update the source code on average, the cost of writing the original code is only 40% of the total cost of a system; 60% of the cost, on average, is spent maintaining and updating code. Bad code dramatically increases that 40/60 ratio, bordering on 20/80 in the worst cases; the more unclean the code is, the more time we just spend updating it.
[category_overview] =>
[outline] =>
Day 1
Introduction
Good and standardized naming
-names of packages, files, classes, voids and functions as well as variables need to have meaningful names derived from their purpose
-should be readable
-should be searchable
-consider the namespace we're generating; does it make sense?
Classes, objects and data structures
-there's a difference between objects that do something and structures that simply contain data
-when to use data structures, and why
-when to use objects, and why
-OOD and abastraction
-getters/setters and why
-better to have many small classes, with many small voids and functions
Good comments
-there are good and bad comments;
-we need to know how to generate good comments and forget about the rest
Day 2
Functions
-one thing only
-small
-arguments (good and bad)
-unintended side effects
Error handling
-when to handle errors, when to let them bubble up
-if we handle an exception, what do we do with it and why
-custom error handling classes
Code Formatting: how can we better format the code
Test-Driven Design: Open discussion of Uncle Bob's idea that programs should be TDD
This course is addressed to junior software developers. After the course completion, the trainees will be able to understand the architecture of well-known web servers such as Apache or Nginx, and implement their own network programs.
The course is 67% lectures, 33% hands-on exercises.
[category_overview] =>
[outline] =>
Sockets
Creating datagram sockets
Receiving and sending data
Creating and accepting TCP connections
Closing sockets
Handling errors
Handling more than one client in a simple way
Prefork model, as found in Apache
Forking a new process per client
Cleaning up after finished processes
Threads
Inetd, systemd units
Waiting for data
Blocking sockets
Non-blocking sockets and select
Select as a way to wait for "any of these sockets"
Organizing reads and writes
Dealing with short reads and writes
Reading up to a delimiter
Pipelined requests
Application-level buffers
Event-driven architecture
Using select for multiplexing all client connections in one thread
State machines
Callback hell
Event libraries
"Green" threads
Problem of 10000 connections
Problems with prefork model and select-based loop
poll as an alternative to select
Realtime signals and why you shouldn't use them
Epoll (linux) and kqueue (BSD)
Why and when epoll and kqueue are faster than poll/select
Knowledge of the issues discussed in the Java Fundamentals course.
[overview] =>
During the training participant will know the specific use of selected issues, the basic problems encountered when using them, and the role of the application model. The training also includes a basic knowledge of the language standard library functions. Training requires knowledge of the development environment IDE used to build Java applications (e.g.. Eclipse, Netbeans). Training does not include a user interface issues.
[category_overview] =>
[outline] =>
Abstract class
Declaration principles and implementation of abstract classes
Typical problems encountered when working with abstract classes
The role of classes, abstract classes and interfaces in the application model
Grades Java object-oriented abstraction
The complete object model in Java
Program model oriented for interfaces, abstract classes and interfaces for application more flexibility and independence of each of its sub-systems from each other in their implementation
Applications of abstract classes in order to extract common functionality extended by the implementation of the flexibility that they offer interfaces
The role of dynamic and static objects in the application model
Static Java classes and dynamic properties of these classes
Making a distinction in the functionality of both types of entities within Java and typical uses, and their example of good practice in the design of solutions based on static and dynamic beings Java
Introduction to the design patterns
Introduction to the factory design pattern
Operations with simple types and wrapper classes
Very important facts and techniques to extend the use of simple types in the Java object model.
Discussion of the role of wrapper classes simple types and typical applications of this type in the application
Special Objects Java, the class String, StringBuilder and StringBuffer
Reminder basic properties of the String class and discuss the treatment of String objects by the virtual machine
The use of buffer classes and operate on chains
Formatting and parsing, regular expressions
Introduction to regular expressions in Java
Discussion of both basic techniques for handling regular expressions (String class) as well as advanced techniques based on dedicated classes for this type of construction
Tokenization, search and pattern matching for string types
I / O operations
A detailed discussion of the mechanisms I / O Java - class streaming, Writer and Reader class, class wrapper and buffering streams of Java.
Opening, closing and writing to files and sockets
Classes inside - detailed discussion
Discusses how to implement and use inner classes in Java and so-called anonymous classes
Topics - detailed discussion, applications and problems
Discussion subject topics ranging from abstraction mechanism of threads in Java and ending with the synchronization of threads connecting threads in a group to present and discuss topics pools of common problems related to the work of threads, such as deadlocks
Reflections Java - Introduction and application
Introduction to Java reflection mechanism
Lecture topics include discussion of the implementation of reflection in Java, load and run methods of classes, instantiation of classes and getting to know the structure of the classes
Java Serialization
Introduction to Java object serialization
What is serialization, how to serialize an object, objects dependent on each other and how to avoid common problems encountered with these types of issues
Typical uses the example of serialization and RMI CORBA
Continuous Integration (CI) is a development practice of automating the process of merging code changes into the central repository as often as possible to detect and locate errors quickly.
This instructor-led, live training (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
Learn and understand CI for a Java project.
Build a CI system for Java.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
To serve in the best way heterogeneous development groups that are using various platforms simultaneously during their everyday work, we have merged various topics into a combined course that presents diverse secure coding subjects in didactic manner on a single training event. This course combines C/C++ and Java platform security to provide an extensive, cross-platform secure coding expertise.
Concerning C/C++, common security vulnerabilities are discussed, backed by practical exercises about the attacking methods that exploit these vulnerabilities, with the focus on the mitigation techniques that can be applied to prevent the occurrences of these dangerous bugs, detect them before market launch or prevent their exploitation.
Security components and service of Java are discussed by presenting the different APIs and tools through a number of practical exercises where participants can gain hands-on experience in using them. The course also covers security issues of web services and the related Java services that can be applied to prevent the most aching threats of the Internet based services. Finally, web- and Java-related security vulnerabilities are demonstrated by easy-to-understand exercises, which not only show the root cause of the problems, but also demonstrate the attack methods along with the recommended mitigation and coding techniques in order to avoid the associated security problems.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Realize the severe consequences of unsecure buffer handling
Understand the architectural protection techniques and their weaknesses
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in various platforms, frameworks and libraries
Get sources and further readings on secure coding practices
Even experienced Java programmers are not mastering by all means the various security services offered by Java, and are likewise not aware of the different vulnerabilities that are relevant for web applications written in Java.
The course – besides introducing security components of Standard Java Edition – deals with security issues of Java Enterprise Edition (JEE) and web services. Discussion of specific services is preceded with the foundations of cryptography and secure communication. Various exercises deal with declarative and programmatic security techniques in JEE, while both transport-layer and end-to-end security of web services is discussed. The use of all components is presented through several practical exercises, where participants can try out the discussed APIs and tools for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform and web-related vulnerabilities. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Understand security concepts of Web services
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Understand security solutions of Java EE
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Even experienced programmers do not master by all means the various security services offered by their development platforms, and are likewise not aware of the different vulnerabilities that are relevant for their developments. This course targets developers using both Java and PHP, providing them essential skills necessary to make their applications resistant to contemporary attacks through the Internet.
Levels of Java security architecture are walked through by tackling access control, authentication and authorization, secure communication and various cryptographic functions. Various APIs are also introduced that can be used to secure your code in PHP, like OpenSSL for cryptography or HTML Purifier for input validation. On server side, the best practices are given for hardening and configuring the operating system, the web container, the file system, the SQL server and the PHP itself, while a special focus is given to client-side security through security issues of JavaScript, Ajax and HTML5.
General web vulnerabilities are discussed by examples aligned to the OWASP Top Ten, showing various injection attacks, script injections, attacks against session handling, insecure direct object references, issues with file uploads, and many others. The various Java- and PHP-specific language problems and issues stemming from the runtime environment are introduced grouped into the standard vulnerability types of missing or improper input validation, improper use of security features, incorrect error and exception handling, time- and state-related problems, code quality issues and mobile code-related vulnerabilities.
Participants can try out the discussed APIs, tools and the effects of configurations for themselves, while the introduction of vulnerabilities are all supported by a number of hands-on exercises demonstrating the consequences of successful attacks, showing how to correct the bugs and apply mitigation techniques, and introducing the use of various extensions and tools.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn to use various security features of PHP
Understand security concepts of Web services
Get practical knowledge in using security testing tools
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in Java and PHP frameworks and libraries
Get sources and further readings on secure coding practices
The Java language and the Runtime Environment (JRE) was designed to be free from the most problematic common security vulnerabilities experienced in other languages, like C/C++. Yet, software developers and architects should not only know how to use the various security features of the Java environment (positive security), but should also be aware of the numerous vulnerabilities that are still relevant for Java development (negative security).
The introduction of security services is preceded with a brief overview of the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of these components is presented through several practical exercises, where participants can try out the discussed APIs for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform, covering both the typical bugs committed by Java programmers and the language- and environment-specific issues. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get sources and further readings on secure coding practices
Beyond solid knowledge in using Java components, even for experienced Java programmers it is essential to have a deep knowledge in web-related vulnerabilities both on server and client side, the different vulnerabilities that are relevant for web applications written in Java, and the consequences of the various risks.
General web-based vulnerabilities are demonstrated through presenting the relevant attacks, while the recommended coding techniques and mitigation methods are explained in the context of Java with the most important aim to avoid the associated problems. In addition, a special focus is given to client-side security tackling security issues of JavaScript, Ajax and HTML5.
The course introduces security components of Standard Java Edition, which is preceded with the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of all components is presented through practical exercises, where participants can try out the discussed APIs and tools for themselves.
Finally, the course explains the most frequent and severe programming flaws of the Java language and platform. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching. Scala code runs on a JVM and was designed to address some of the shortcomings of Java.
In this instructor-led, live training participants will learn how to use Scala's advanced features, including its type system, to write better code using an object-functional approach.
By the end of this training, participants will be able to:
Leverage Scala's type system to maximum benefit
Handle exceptions functionally
Create libraries and DSLs with Scala
Use Scala's advanced features for pattern matching
Format of the course
Part lecture, part discussion, exercises and heavy hands-on practice
Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
Introduction
Scala as a JVM language
Objection-oriented programming vs functional programming
Overview of Object-Functional Programming
Tail recursion
Partial functions
Currying and partial function application
Closures
Lazy evaluation
Mastering the Scala Type System
About traits
Structural types
Path dependent types
Self types
Covariance and contravariance
Type bounds
Advanced Pattern Matching in Scala
Deep matching
Using extractors
Using Scala Implicit
Implicit conversion, classes and parameters
Type class pattern
Context and view bounds
Libraries and DSLs
Custom control structures with by-name parameters
Building well-designed libraries and internal DSLs
Working with Scala Collections
Working with Streams
Manifests and class tags
Builders
CanBuildFrom
Building custom collections
Functional Exception Handling
Traditional exception handling
Functional exception handling
Using Try with For comprehensions
Closing Remarks
Requirements
Hands on experience in Scala programming
Familiarity with pattern matching and traits
Audience
Scala programmers who wish to learn the more advanced and nuanced features of Scala
14 Hours
Scala: Advanced Object-Functional Programming Training Course - Booking
Scala: Advanced Object-Functional Programming Training Course - Enquiry
Pushing changes on an ongoing basis, when on the 3rd day I started to get more lost than before and it was harder to spot the error quickly, I was quickly able to check out the latest changes and stay up to date with the material
Paulina
Course - Advanced Java Security
Machine Translated
A large amount of practical knowledge shown in real-life examples.
Kamil - Streamsoft Kraków
Course - Java Advanced
Machine Translated
The teacher addressed many relevant topics for clean coding with practical examples.
This training outline is intended to bring attendees from a beginner to an intermediate/advanced level in the understanding and knowledge of the Akka framework.
The entire course is hands on, mostly driven by the trainer in the beginning and progressively shifting towards the attendees producing code themselves (and downloading implementations/solutions written by the trainer).
Attendees are not expected to have prior knowledge of Scala, the trainer will take the necessary time to explain and clarify all the intricacies that relate to the Scala code used.
The aim of this course is to provide a basic proficiency in applying Machine Learning methods in practice. Through the use of the Scala programming language and its various libraries, and based on a multitude of practical examples this course teaches how to use the most important building blocks of Machine Learning, how to make data modeling decisions, interpret the outputs of the algorithms and validate the results.
Our goal is to give you the skills to understand and use the most fundamental tools from the Machine Learning toolbox confidently and avoid the common pitfalls of Data Sciences applications.
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching.
In this instructor-led, live training participants will learn how to use Scala's advanced features to develop well-constructed software that is easy to write, read, test, and change. The focus of this training is on functional programming, using real-world case studies and discussion as a reference for lab exercises and activities.
By the end of this training, participants will be able to:
This instructor-led, live training in Venezuela (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
The purpose of the training is to provide a basis for programming from the ground up to the general syntax of programming paradigms. The training is supported by examples based on programming languages such as C, Java, Python, Scala, C #, Closure and JavaScript. During the training, participants gain a general understanding of both the programming patterns, best practices, commonly used design and review of the implementation of these topics through various platforms. Each of the issues discussed during the course are illustrated with examples of both the most basic and more advanced and based on real problems.
Why do we need Clean Code? Programs evolve, therefore the code is continuously updated it can be very, very difficult to go back through unclean code to find and update the source code on average, the cost of writing the original code is only 40% of the total cost of a system; 60% of the cost, on average, is spent maintaining and updating code. Bad code dramatically increases that 40/60 ratio, bordering on 20/80 in the worst cases; the more unclean the code is, the more time we just spend updating it.
This course is addressed to junior software developers. After the course completion, the trainees will be able to understand the architecture of well-known web servers such as Apache or Nginx, and implement their own network programs.
The course is 67% lectures, 33% hands-on exercises.
During the training participant will know the specific use of selected issues, the basic problems encountered when using them, and the role of the application model. The training also includes a basic knowledge of the language standard library functions. Training requires knowledge of the development environment IDE used to build Java applications (e.g.. Eclipse, Netbeans). Training does not include a user interface issues.
This instructor-led, live training in Venezuela (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
To serve in the best way heterogeneous development groups that are using various platforms simultaneously during their everyday work, we have merged various topics into a combined course that presents diverse secure coding subjects in didactic manner on a single training event. This course combines C/C++ and Java platform security to provide an extensive, cross-platform secure coding expertise.
Concerning C/C++, common security vulnerabilities are discussed, backed by practical exercises about the attacking methods that exploit these vulnerabilities, with the focus on the mitigation techniques that can be applied to prevent the occurrences of these dangerous bugs, detect them before market launch or prevent their exploitation.
Security components and service of Java are discussed by presenting the different APIs and tools through a number of practical exercises where participants can gain hands-on experience in using them. The course also covers security issues of web services and the related Java services that can be applied to prevent the most aching threats of the Internet based services. Finally, web- and Java-related security vulnerabilities are demonstrated by easy-to-understand exercises, which not only show the root cause of the problems, but also demonstrate the attack methods along with the recommended mitigation and coding techniques in order to avoid the associated security problems.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Realize the severe consequences of unsecure buffer handling
Understand the architectural protection techniques and their weaknesses
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in various platforms, frameworks and libraries
Get sources and further readings on secure coding practices
Even experienced Java programmers are not mastering by all means the various security services offered by Java, and are likewise not aware of the different vulnerabilities that are relevant for web applications written in Java.
The course – besides introducing security components of Standard Java Edition – deals with security issues of Java Enterprise Edition (JEE) and web services. Discussion of specific services is preceded with the foundations of cryptography and secure communication. Various exercises deal with declarative and programmatic security techniques in JEE, while both transport-layer and end-to-end security of web services is discussed. The use of all components is presented through several practical exercises, where participants can try out the discussed APIs and tools for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform and web-related vulnerabilities. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Understand security concepts of Web services
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Understand security solutions of Java EE
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Even experienced programmers do not master by all means the various security services offered by their development platforms, and are likewise not aware of the different vulnerabilities that are relevant for their developments. This course targets developers using both Java and PHP, providing them essential skills necessary to make their applications resistant to contemporary attacks through the Internet.
Levels of Java security architecture are walked through by tackling access control, authentication and authorization, secure communication and various cryptographic functions. Various APIs are also introduced that can be used to secure your code in PHP, like OpenSSL for cryptography or HTML Purifier for input validation. On server side, the best practices are given for hardening and configuring the operating system, the web container, the file system, the SQL server and the PHP itself, while a special focus is given to client-side security through security issues of JavaScript, Ajax and HTML5.
General web vulnerabilities are discussed by examples aligned to the OWASP Top Ten, showing various injection attacks, script injections, attacks against session handling, insecure direct object references, issues with file uploads, and many others. The various Java- and PHP-specific language problems and issues stemming from the runtime environment are introduced grouped into the standard vulnerability types of missing or improper input validation, improper use of security features, incorrect error and exception handling, time- and state-related problems, code quality issues and mobile code-related vulnerabilities.
Participants can try out the discussed APIs, tools and the effects of configurations for themselves, while the introduction of vulnerabilities are all supported by a number of hands-on exercises demonstrating the consequences of successful attacks, showing how to correct the bugs and apply mitigation techniques, and introducing the use of various extensions and tools.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn to use various security features of PHP
Understand security concepts of Web services
Get practical knowledge in using security testing tools
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in Java and PHP frameworks and libraries
Get sources and further readings on secure coding practices
The Java language and the Runtime Environment (JRE) was designed to be free from the most problematic common security vulnerabilities experienced in other languages, like C/C++. Yet, software developers and architects should not only know how to use the various security features of the Java environment (positive security), but should also be aware of the numerous vulnerabilities that are still relevant for Java development (negative security).
The introduction of security services is preceded with a brief overview of the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of these components is presented through several practical exercises, where participants can try out the discussed APIs for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform, covering both the typical bugs committed by Java programmers and the language- and environment-specific issues. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get sources and further readings on secure coding practices
Beyond solid knowledge in using Java components, even for experienced Java programmers it is essential to have a deep knowledge in web-related vulnerabilities both on server and client side, the different vulnerabilities that are relevant for web applications written in Java, and the consequences of the various risks.
General web-based vulnerabilities are demonstrated through presenting the relevant attacks, while the recommended coding techniques and mitigation methods are explained in the context of Java with the most important aim to avoid the associated problems. In addition, a special focus is given to client-side security tackling security issues of JavaScript, Ajax and HTML5.
The course introduces security components of Standard Java Edition, which is preceded with the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of all components is presented through practical exercises, where participants can try out the discussed APIs and tools for themselves.
Finally, the course explains the most frequent and severe programming flaws of the Java language and platform. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching. Scala code runs on a JVM and was designed to address some of the shortcomings of Java.
In this instructor-led, live training participants will learn how to use Scala's advanced features, including its type system, to write better code using an object-functional approach.
By the end of this training, participants will be able to:
Leverage Scala's type system to maximum benefit
Handle exceptions functionally
Create libraries and DSLs with Scala
Use Scala's advanced features for pattern matching
Format of the course
Part lecture, part discussion, exercises and heavy hands-on practice
[category_overview] =>
[outline] =>
Introduction
Scala as a JVM language
Objection-oriented programming vs functional programming
Overview of Object-Functional Programming
Tail recursion
Partial functions
Currying and partial function application
Closures
Lazy evaluation
Mastering the Scala Type System
About traits
Structural types
Path dependent types
Self types
Covariance and contravariance
Type bounds
Advanced Pattern Matching in Scala
Deep matching
Using extractors
Using Scala Implicit
Implicit conversion, classes and parameters
Type class pattern
Context and view bounds
Libraries and DSLs
Custom control structures with by-name parameters
Building well-designed libraries and internal DSLs
There are no specific requirements needed to attend this course.
[overview] =>
This training outline is intended to bring attendees from a beginner to an intermediate/advanced level in the understanding and knowledge of the Akka framework.
The entire course is hands on, mostly driven by the trainer in the beginning and progressively shifting towards the attendees producing code themselves (and downloading implementations/solutions written by the trainer).
Attendees are not expected to have prior knowledge of Scala, the trainer will take the necessary time to explain and clarify all the intricacies that relate to the Scala code used.
[category_overview] =>
[outline] =>
Introduction, environment Setup and a first application
The Akka framework
The Actor model (definition & origins)
Fault tolerance
Location transparency
Scaling
Actors In Akka
Setting up a Scala/Maven environment
A first application in Akka
Create the project
Defining message Classes
Defining actor Classes
Defining the execution Class
Architecture & configuration files
Actors & Typed Actors
Anatomy of an Actor
Creating Actors (default constructors, custom constructors, actor hierarchy)
Knowledge of Java/Scala programming language. Basic familiarity with statistics and linear algebra is recommended.
[overview] =>
The aim of this course is to provide a basic proficiency in applying Machine Learning methods in practice. Through the use of the Scala programming language and its various libraries, and based on a multitude of practical examples this course teaches how to use the most important building blocks of Machine Learning, how to make data modeling decisions, interpret the outputs of the algorithms and validate the results.
Our goal is to give you the skills to understand and use the most fundamental tools from the Machine Learning toolbox confidently and avoid the common pitfalls of Data Sciences applications.
[category_overview] =>
[outline] =>
Introduction to Applied Machine Learning
Statistical learning vs. Machine learning
Iteration and evaluation
Bias-Variance trade-off
Machine Learning with Scala
Choice of libraries
Add-on tools
Regression
Linear regression
Generalizations and Nonlinearity
Exercises
Classification
Bayesian refresher
Naive Bayes
Logistic regression
K-Nearest neighbors
Exercises
Cross-validation and Resampling
Cross-validation approaches
Bootstrap
Exercises
Unsupervised Learning
K-means clustering
Examples
Challenges of unsupervised learning and beyond K-means
Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching.
In this instructor-led, live training participants will learn how to use Scala's advanced features to develop well-constructed software that is easy to write, read, test, and change. The focus of this training is on functional programming, using real-world case studies and discussion as a reference for lab exercises and activities.
By the end of this training, participants will be able to:
Scala is a condensed version of Java for large scale functional and object-oriented programming. Apache Spark Streaming is an extended component of the Spark API for processing big data sets as real-time streams. Together, Spark Streaming and Scala enable the streaming of big data.
This instructor-led, live training (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
[outline] =>
Introduction
Scala Programming in Depth Review
Syntax and structure
Flow control and functions
Spark Internals
Resilient Distributed Datasets (RDD)
Spark script to graph to cluster
Overview of Spark Streaming
Streaming architecture
Intervals in streaming
Fault tolerance
Preparing the Development Environment
Installing and configuring Apache Spark
Installing and configuring the Scala IDE
Installing and configuring JDK
Spark Streaming Beginner to Advanced
Working with key/value RDD's
Filtering RDD's
Improving Spark scripts with regular expressions
Sharing data on a cluster
Working with network data sets
Implementing BFS algorithms
Creating Spark driver scripts
Tracking in real time with scripts
Writing continuous applications
Streaming linear regression
Using Spark Machine Learning Library
Spark and Clusters
Bundling dependencies and Spark scripts using the SBT tool
Using EMR for illustrating clusters
Optimizing by partitioning RDD's
Using Spark logs
Integration in Spark Streaming
Integrating Apache Kafka and working with Kafka topics
Integrating Apache Fume and working with pull-based/push-based Flume configurations
Writing a custom receiver class
Integrating Cassandra and exposing data as real-time services
In Production
Packaging an application and running it with Spark-Submit
Troubleshooting, tuning, and debugging Spark Jobs and clusters
The purpose of the training is to provide a basis for programming from the ground up to the general syntax of programming paradigms. The training is supported by examples based on programming languages such as C, Java, Python, Scala, C #, Closure and JavaScript. During the training, participants gain a general understanding of both the programming patterns, best practices, commonly used design and review of the implementation of these topics through various platforms. Each of the issues discussed during the course are illustrated with examples of both the most basic and more advanced and based on real problems.
[category_overview] =>
[outline] =>
Introduction
What is programming and why should devote his attention
History of programming
Opportunity to automate tasks using the software
The role of the programmer and the computer in the enterprise
Programming today the development of the current market trends
Declarative and imperative programming. How or What?
Turing machine
Consolidation, compilation and interpretation "on the fly".
Reminder issues of logic and Boolean algebra
predicates
logical sentences
tautologies
Boolean algebra
The first program
structurally
functionally
object
And how else?
Simple types
Representation of strings
Integers
Floating-point numbers
Boolean
Type Null
A blank or Uninitialized
Strong and weak typing
Data structures
Concepts FIFO and FILO
Stacks
Queues
Declaring arrays and lists
Indexing
Maps
Records
Trees
Operators
Assignment Operators.
Arithmetic operators.
comparison Operators
And a comparison of the values in different languages
Bitwise
Concatenation
Increment and decrement operators
The most common errors
Controlling the program
The if, if else instructions
Goto instructions, discuss the problems of application.
The switch
The for loop, for-in
The while loop, do-while
foreach loop
Stopping loop
Creating a reusable code
Functional Programming
Object-Oriented Programming
Functional programming paradigms
What is the function of
Function and procedure
Fundamentals of lambda calculus
Function Arguments
Returning values
Functions as arguments
Anonymous functions
Closures
Recursion
The paradigms of object-oriented programming
Representation of entities from the real world entities in philosophy, ontology
Deciding what you want to object, or other types of
Declaration of classes
Creating instances of classes
Fields, a state of the object
Methods, as the behavior of an object
abstraction
Encapsulation
Inheritance
polymorphism
Association and aggregation
Delegation and separation of relationships between objects
Modules, packages and libraries
Sharing API
The modeling of the system as classes and objects
Describing and programming relationships between classes
Program from a business perspective
Good programming practice
Pitfalls and common errors
High-level code in the interpretation of low-level
Code optimization
KISS principle
DRY principle
Principle Worse is Better
Separation abstraction of implementation
Methods of error detection logic programs
Conventions godowania
Commenting the code
Software Metrics
Overview of these technologies and languages
The area of application of these languages
The main features of language
Prospects for development
The future direction of development: algorithmic, optimization of code, implementing patterns, design patterns, architectural patterns, analytical standards
Reduction of the control structure - the use of artificial intelligence and automated decision-making
Which platform to choose? Individual consultations
There are no specific requirements needed to attend this course.
[overview] =>
Why do we need Clean Code? Programs evolve, therefore the code is continuously updated it can be very, very difficult to go back through unclean code to find and update the source code on average, the cost of writing the original code is only 40% of the total cost of a system; 60% of the cost, on average, is spent maintaining and updating code. Bad code dramatically increases that 40/60 ratio, bordering on 20/80 in the worst cases; the more unclean the code is, the more time we just spend updating it.
[category_overview] =>
[outline] =>
Day 1
Introduction
Good and standardized naming
-names of packages, files, classes, voids and functions as well as variables need to have meaningful names derived from their purpose
-should be readable
-should be searchable
-consider the namespace we're generating; does it make sense?
Classes, objects and data structures
-there's a difference between objects that do something and structures that simply contain data
-when to use data structures, and why
-when to use objects, and why
-OOD and abastraction
-getters/setters and why
-better to have many small classes, with many small voids and functions
Good comments
-there are good and bad comments;
-we need to know how to generate good comments and forget about the rest
Day 2
Functions
-one thing only
-small
-arguments (good and bad)
-unintended side effects
Error handling
-when to handle errors, when to let them bubble up
-if we handle an exception, what do we do with it and why
-custom error handling classes
Code Formatting: how can we better format the code
Test-Driven Design: Open discussion of Uncle Bob's idea that programs should be TDD
This course is addressed to junior software developers. After the course completion, the trainees will be able to understand the architecture of well-known web servers such as Apache or Nginx, and implement their own network programs.
The course is 67% lectures, 33% hands-on exercises.
[category_overview] =>
[outline] =>
Sockets
Creating datagram sockets
Receiving and sending data
Creating and accepting TCP connections
Closing sockets
Handling errors
Handling more than one client in a simple way
Prefork model, as found in Apache
Forking a new process per client
Cleaning up after finished processes
Threads
Inetd, systemd units
Waiting for data
Blocking sockets
Non-blocking sockets and select
Select as a way to wait for "any of these sockets"
Organizing reads and writes
Dealing with short reads and writes
Reading up to a delimiter
Pipelined requests
Application-level buffers
Event-driven architecture
Using select for multiplexing all client connections in one thread
State machines
Callback hell
Event libraries
"Green" threads
Problem of 10000 connections
Problems with prefork model and select-based loop
poll as an alternative to select
Realtime signals and why you shouldn't use them
Epoll (linux) and kqueue (BSD)
Why and when epoll and kqueue are faster than poll/select
Knowledge of the issues discussed in the Java Fundamentals course.
[overview] =>
During the training participant will know the specific use of selected issues, the basic problems encountered when using them, and the role of the application model. The training also includes a basic knowledge of the language standard library functions. Training requires knowledge of the development environment IDE used to build Java applications (e.g.. Eclipse, Netbeans). Training does not include a user interface issues.
[category_overview] =>
[outline] =>
Abstract class
Declaration principles and implementation of abstract classes
Typical problems encountered when working with abstract classes
The role of classes, abstract classes and interfaces in the application model
Grades Java object-oriented abstraction
The complete object model in Java
Program model oriented for interfaces, abstract classes and interfaces for application more flexibility and independence of each of its sub-systems from each other in their implementation
Applications of abstract classes in order to extract common functionality extended by the implementation of the flexibility that they offer interfaces
The role of dynamic and static objects in the application model
Static Java classes and dynamic properties of these classes
Making a distinction in the functionality of both types of entities within Java and typical uses, and their example of good practice in the design of solutions based on static and dynamic beings Java
Introduction to the design patterns
Introduction to the factory design pattern
Operations with simple types and wrapper classes
Very important facts and techniques to extend the use of simple types in the Java object model.
Discussion of the role of wrapper classes simple types and typical applications of this type in the application
Special Objects Java, the class String, StringBuilder and StringBuffer
Reminder basic properties of the String class and discuss the treatment of String objects by the virtual machine
The use of buffer classes and operate on chains
Formatting and parsing, regular expressions
Introduction to regular expressions in Java
Discussion of both basic techniques for handling regular expressions (String class) as well as advanced techniques based on dedicated classes for this type of construction
Tokenization, search and pattern matching for string types
I / O operations
A detailed discussion of the mechanisms I / O Java - class streaming, Writer and Reader class, class wrapper and buffering streams of Java.
Opening, closing and writing to files and sockets
Classes inside - detailed discussion
Discusses how to implement and use inner classes in Java and so-called anonymous classes
Topics - detailed discussion, applications and problems
Discussion subject topics ranging from abstraction mechanism of threads in Java and ending with the synchronization of threads connecting threads in a group to present and discuss topics pools of common problems related to the work of threads, such as deadlocks
Reflections Java - Introduction and application
Introduction to Java reflection mechanism
Lecture topics include discussion of the implementation of reflection in Java, load and run methods of classes, instantiation of classes and getting to know the structure of the classes
Java Serialization
Introduction to Java object serialization
What is serialization, how to serialize an object, objects dependent on each other and how to avoid common problems encountered with these types of issues
Typical uses the example of serialization and RMI CORBA
Continuous Integration (CI) is a development practice of automating the process of merging code changes into the central repository as often as possible to detect and locate errors quickly.
This instructor-led, live training (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
Learn and understand CI for a Java project.
Build a CI system for Java.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
To serve in the best way heterogeneous development groups that are using various platforms simultaneously during their everyday work, we have merged various topics into a combined course that presents diverse secure coding subjects in didactic manner on a single training event. This course combines C/C++ and Java platform security to provide an extensive, cross-platform secure coding expertise.
Concerning C/C++, common security vulnerabilities are discussed, backed by practical exercises about the attacking methods that exploit these vulnerabilities, with the focus on the mitigation techniques that can be applied to prevent the occurrences of these dangerous bugs, detect them before market launch or prevent their exploitation.
Security components and service of Java are discussed by presenting the different APIs and tools through a number of practical exercises where participants can gain hands-on experience in using them. The course also covers security issues of web services and the related Java services that can be applied to prevent the most aching threats of the Internet based services. Finally, web- and Java-related security vulnerabilities are demonstrated by easy-to-understand exercises, which not only show the root cause of the problems, but also demonstrate the attack methods along with the recommended mitigation and coding techniques in order to avoid the associated security problems.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Realize the severe consequences of unsecure buffer handling
Understand the architectural protection techniques and their weaknesses
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in various platforms, frameworks and libraries
Get sources and further readings on secure coding practices
Even experienced Java programmers are not mastering by all means the various security services offered by Java, and are likewise not aware of the different vulnerabilities that are relevant for web applications written in Java.
The course – besides introducing security components of Standard Java Edition – deals with security issues of Java Enterprise Edition (JEE) and web services. Discussion of specific services is preceded with the foundations of cryptography and secure communication. Various exercises deal with declarative and programmatic security techniques in JEE, while both transport-layer and end-to-end security of web services is discussed. The use of all components is presented through several practical exercises, where participants can try out the discussed APIs and tools for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform and web-related vulnerabilities. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Understand security concepts of Web services
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Understand security solutions of Java EE
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Even experienced programmers do not master by all means the various security services offered by their development platforms, and are likewise not aware of the different vulnerabilities that are relevant for their developments. This course targets developers using both Java and PHP, providing them essential skills necessary to make their applications resistant to contemporary attacks through the Internet.
Levels of Java security architecture are walked through by tackling access control, authentication and authorization, secure communication and various cryptographic functions. Various APIs are also introduced that can be used to secure your code in PHP, like OpenSSL for cryptography or HTML Purifier for input validation. On server side, the best practices are given for hardening and configuring the operating system, the web container, the file system, the SQL server and the PHP itself, while a special focus is given to client-side security through security issues of JavaScript, Ajax and HTML5.
General web vulnerabilities are discussed by examples aligned to the OWASP Top Ten, showing various injection attacks, script injections, attacks against session handling, insecure direct object references, issues with file uploads, and many others. The various Java- and PHP-specific language problems and issues stemming from the runtime environment are introduced grouped into the standard vulnerability types of missing or improper input validation, improper use of security features, incorrect error and exception handling, time- and state-related problems, code quality issues and mobile code-related vulnerabilities.
Participants can try out the discussed APIs, tools and the effects of configurations for themselves, while the introduction of vulnerabilities are all supported by a number of hands-on exercises demonstrating the consequences of successful attacks, showing how to correct the bugs and apply mitigation techniques, and introducing the use of various extensions and tools.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn to use various security features of PHP
Understand security concepts of Web services
Get practical knowledge in using security testing tools
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in Java and PHP frameworks and libraries
Get sources and further readings on secure coding practices
The Java language and the Runtime Environment (JRE) was designed to be free from the most problematic common security vulnerabilities experienced in other languages, like C/C++. Yet, software developers and architects should not only know how to use the various security features of the Java environment (positive security), but should also be aware of the numerous vulnerabilities that are still relevant for Java development (negative security).
The introduction of security services is preceded with a brief overview of the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of these components is presented through several practical exercises, where participants can try out the discussed APIs for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform, covering both the typical bugs committed by Java programmers and the language- and environment-specific issues. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get sources and further readings on secure coding practices
Beyond solid knowledge in using Java components, even for experienced Java programmers it is essential to have a deep knowledge in web-related vulnerabilities both on server and client side, the different vulnerabilities that are relevant for web applications written in Java, and the consequences of the various risks.
General web-based vulnerabilities are demonstrated through presenting the relevant attacks, while the recommended coding techniques and mitigation methods are explained in the context of Java with the most important aim to avoid the associated problems. In addition, a special focus is given to client-side security tackling security issues of JavaScript, Ajax and HTML5.
The course introduces security components of Standard Java Edition, which is preceded with the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of all components is presented through practical exercises, where participants can try out the discussed APIs and tools for themselves.
Finally, the course explains the most frequent and severe programming flaws of the Java language and platform. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching. Scala code runs on a JVM and was designed to address some of the shortcomings of Java.
In this instructor-led, live training participants will learn how to use Scala's advanced features, including its type system, to write better code using an object-functional approach.
By the end of this training, participants will be able to:
Leverage Scala's type system to maximum benefit
Handle exceptions functionally
Create libraries and DSLs with Scala
Use Scala's advanced features for pattern matching
Format of the course
Part lecture, part discussion, exercises and heavy hands-on practice
[category_overview] =>
[outline] =>
Introduction
Scala as a JVM language
Objection-oriented programming vs functional programming
Overview of Object-Functional Programming
Tail recursion
Partial functions
Currying and partial function application
Closures
Lazy evaluation
Mastering the Scala Type System
About traits
Structural types
Path dependent types
Self types
Covariance and contravariance
Type bounds
Advanced Pattern Matching in Scala
Deep matching
Using extractors
Using Scala Implicit
Implicit conversion, classes and parameters
Type class pattern
Context and view bounds
Libraries and DSLs
Custom control structures with by-name parameters
Building well-designed libraries and internal DSLs
There are no specific requirements needed to attend this course.
[overview] =>
This training outline is intended to bring attendees from a beginner to an intermediate/advanced level in the understanding and knowledge of the Akka framework.
The entire course is hands on, mostly driven by the trainer in the beginning and progressively shifting towards the attendees producing code themselves (and downloading implementations/solutions written by the trainer).
Attendees are not expected to have prior knowledge of Scala, the trainer will take the necessary time to explain and clarify all the intricacies that relate to the Scala code used.
[category_overview] =>
[outline] =>
Introduction, environment Setup and a first application
The Akka framework
The Actor model (definition & origins)
Fault tolerance
Location transparency
Scaling
Actors In Akka
Setting up a Scala/Maven environment
A first application in Akka
Create the project
Defining message Classes
Defining actor Classes
Defining the execution Class
Architecture & configuration files
Actors & Typed Actors
Anatomy of an Actor
Creating Actors (default constructors, custom constructors, actor hierarchy)
Knowledge of Java/Scala programming language. Basic familiarity with statistics and linear algebra is recommended.
[overview] =>
The aim of this course is to provide a basic proficiency in applying Machine Learning methods in practice. Through the use of the Scala programming language and its various libraries, and based on a multitude of practical examples this course teaches how to use the most important building blocks of Machine Learning, how to make data modeling decisions, interpret the outputs of the algorithms and validate the results.
Our goal is to give you the skills to understand and use the most fundamental tools from the Machine Learning toolbox confidently and avoid the common pitfalls of Data Sciences applications.
[category_overview] =>
[outline] =>
Introduction to Applied Machine Learning
Statistical learning vs. Machine learning
Iteration and evaluation
Bias-Variance trade-off
Machine Learning with Scala
Choice of libraries
Add-on tools
Regression
Linear regression
Generalizations and Nonlinearity
Exercises
Classification
Bayesian refresher
Naive Bayes
Logistic regression
K-Nearest neighbors
Exercises
Cross-validation and Resampling
Cross-validation approaches
Bootstrap
Exercises
Unsupervised Learning
K-means clustering
Examples
Challenges of unsupervised learning and beyond K-means
Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching.
In this instructor-led, live training participants will learn how to use Scala's advanced features to develop well-constructed software that is easy to write, read, test, and change. The focus of this training is on functional programming, using real-world case studies and discussion as a reference for lab exercises and activities.
By the end of this training, participants will be able to:
Scala is a condensed version of Java for large scale functional and object-oriented programming. Apache Spark Streaming is an extended component of the Spark API for processing big data sets as real-time streams. Together, Spark Streaming and Scala enable the streaming of big data.
This instructor-led, live training (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
[outline] =>
Introduction
Scala Programming in Depth Review
Syntax and structure
Flow control and functions
Spark Internals
Resilient Distributed Datasets (RDD)
Spark script to graph to cluster
Overview of Spark Streaming
Streaming architecture
Intervals in streaming
Fault tolerance
Preparing the Development Environment
Installing and configuring Apache Spark
Installing and configuring the Scala IDE
Installing and configuring JDK
Spark Streaming Beginner to Advanced
Working with key/value RDD's
Filtering RDD's
Improving Spark scripts with regular expressions
Sharing data on a cluster
Working with network data sets
Implementing BFS algorithms
Creating Spark driver scripts
Tracking in real time with scripts
Writing continuous applications
Streaming linear regression
Using Spark Machine Learning Library
Spark and Clusters
Bundling dependencies and Spark scripts using the SBT tool
Using EMR for illustrating clusters
Optimizing by partitioning RDD's
Using Spark logs
Integration in Spark Streaming
Integrating Apache Kafka and working with Kafka topics
Integrating Apache Fume and working with pull-based/push-based Flume configurations
Writing a custom receiver class
Integrating Cassandra and exposing data as real-time services
In Production
Packaging an application and running it with Spark-Submit
Troubleshooting, tuning, and debugging Spark Jobs and clusters
The purpose of the training is to provide a basis for programming from the ground up to the general syntax of programming paradigms. The training is supported by examples based on programming languages such as C, Java, Python, Scala, C #, Closure and JavaScript. During the training, participants gain a general understanding of both the programming patterns, best practices, commonly used design and review of the implementation of these topics through various platforms. Each of the issues discussed during the course are illustrated with examples of both the most basic and more advanced and based on real problems.
[category_overview] =>
[outline] =>
Introduction
What is programming and why should devote his attention
History of programming
Opportunity to automate tasks using the software
The role of the programmer and the computer in the enterprise
Programming today the development of the current market trends
Declarative and imperative programming. How or What?
Turing machine
Consolidation, compilation and interpretation "on the fly".
Reminder issues of logic and Boolean algebra
predicates
logical sentences
tautologies
Boolean algebra
The first program
structurally
functionally
object
And how else?
Simple types
Representation of strings
Integers
Floating-point numbers
Boolean
Type Null
A blank or Uninitialized
Strong and weak typing
Data structures
Concepts FIFO and FILO
Stacks
Queues
Declaring arrays and lists
Indexing
Maps
Records
Trees
Operators
Assignment Operators.
Arithmetic operators.
comparison Operators
And a comparison of the values in different languages
Bitwise
Concatenation
Increment and decrement operators
The most common errors
Controlling the program
The if, if else instructions
Goto instructions, discuss the problems of application.
The switch
The for loop, for-in
The while loop, do-while
foreach loop
Stopping loop
Creating a reusable code
Functional Programming
Object-Oriented Programming
Functional programming paradigms
What is the function of
Function and procedure
Fundamentals of lambda calculus
Function Arguments
Returning values
Functions as arguments
Anonymous functions
Closures
Recursion
The paradigms of object-oriented programming
Representation of entities from the real world entities in philosophy, ontology
Deciding what you want to object, or other types of
Declaration of classes
Creating instances of classes
Fields, a state of the object
Methods, as the behavior of an object
abstraction
Encapsulation
Inheritance
polymorphism
Association and aggregation
Delegation and separation of relationships between objects
Modules, packages and libraries
Sharing API
The modeling of the system as classes and objects
Describing and programming relationships between classes
Program from a business perspective
Good programming practice
Pitfalls and common errors
High-level code in the interpretation of low-level
Code optimization
KISS principle
DRY principle
Principle Worse is Better
Separation abstraction of implementation
Methods of error detection logic programs
Conventions godowania
Commenting the code
Software Metrics
Overview of these technologies and languages
The area of application of these languages
The main features of language
Prospects for development
The future direction of development: algorithmic, optimization of code, implementing patterns, design patterns, architectural patterns, analytical standards
Reduction of the control structure - the use of artificial intelligence and automated decision-making
Which platform to choose? Individual consultations
There are no specific requirements needed to attend this course.
[overview] =>
Why do we need Clean Code? Programs evolve, therefore the code is continuously updated it can be very, very difficult to go back through unclean code to find and update the source code on average, the cost of writing the original code is only 40% of the total cost of a system; 60% of the cost, on average, is spent maintaining and updating code. Bad code dramatically increases that 40/60 ratio, bordering on 20/80 in the worst cases; the more unclean the code is, the more time we just spend updating it.
[category_overview] =>
[outline] =>
Day 1
Introduction
Good and standardized naming
-names of packages, files, classes, voids and functions as well as variables need to have meaningful names derived from their purpose
-should be readable
-should be searchable
-consider the namespace we're generating; does it make sense?
Classes, objects and data structures
-there's a difference between objects that do something and structures that simply contain data
-when to use data structures, and why
-when to use objects, and why
-OOD and abastraction
-getters/setters and why
-better to have many small classes, with many small voids and functions
Good comments
-there are good and bad comments;
-we need to know how to generate good comments and forget about the rest
Day 2
Functions
-one thing only
-small
-arguments (good and bad)
-unintended side effects
Error handling
-when to handle errors, when to let them bubble up
-if we handle an exception, what do we do with it and why
-custom error handling classes
Code Formatting: how can we better format the code
Test-Driven Design: Open discussion of Uncle Bob's idea that programs should be TDD
This course is addressed to junior software developers. After the course completion, the trainees will be able to understand the architecture of well-known web servers such as Apache or Nginx, and implement their own network programs.
The course is 67% lectures, 33% hands-on exercises.
[category_overview] =>
[outline] =>
Sockets
Creating datagram sockets
Receiving and sending data
Creating and accepting TCP connections
Closing sockets
Handling errors
Handling more than one client in a simple way
Prefork model, as found in Apache
Forking a new process per client
Cleaning up after finished processes
Threads
Inetd, systemd units
Waiting for data
Blocking sockets
Non-blocking sockets and select
Select as a way to wait for "any of these sockets"
Organizing reads and writes
Dealing with short reads and writes
Reading up to a delimiter
Pipelined requests
Application-level buffers
Event-driven architecture
Using select for multiplexing all client connections in one thread
State machines
Callback hell
Event libraries
"Green" threads
Problem of 10000 connections
Problems with prefork model and select-based loop
poll as an alternative to select
Realtime signals and why you shouldn't use them
Epoll (linux) and kqueue (BSD)
Why and when epoll and kqueue are faster than poll/select
Knowledge of the issues discussed in the Java Fundamentals course.
[overview] =>
During the training participant will know the specific use of selected issues, the basic problems encountered when using them, and the role of the application model. The training also includes a basic knowledge of the language standard library functions. Training requires knowledge of the development environment IDE used to build Java applications (e.g.. Eclipse, Netbeans). Training does not include a user interface issues.
[category_overview] =>
[outline] =>
Abstract class
Declaration principles and implementation of abstract classes
Typical problems encountered when working with abstract classes
The role of classes, abstract classes and interfaces in the application model
Grades Java object-oriented abstraction
The complete object model in Java
Program model oriented for interfaces, abstract classes and interfaces for application more flexibility and independence of each of its sub-systems from each other in their implementation
Applications of abstract classes in order to extract common functionality extended by the implementation of the flexibility that they offer interfaces
The role of dynamic and static objects in the application model
Static Java classes and dynamic properties of these classes
Making a distinction in the functionality of both types of entities within Java and typical uses, and their example of good practice in the design of solutions based on static and dynamic beings Java
Introduction to the design patterns
Introduction to the factory design pattern
Operations with simple types and wrapper classes
Very important facts and techniques to extend the use of simple types in the Java object model.
Discussion of the role of wrapper classes simple types and typical applications of this type in the application
Special Objects Java, the class String, StringBuilder and StringBuffer
Reminder basic properties of the String class and discuss the treatment of String objects by the virtual machine
The use of buffer classes and operate on chains
Formatting and parsing, regular expressions
Introduction to regular expressions in Java
Discussion of both basic techniques for handling regular expressions (String class) as well as advanced techniques based on dedicated classes for this type of construction
Tokenization, search and pattern matching for string types
I / O operations
A detailed discussion of the mechanisms I / O Java - class streaming, Writer and Reader class, class wrapper and buffering streams of Java.
Opening, closing and writing to files and sockets
Classes inside - detailed discussion
Discusses how to implement and use inner classes in Java and so-called anonymous classes
Topics - detailed discussion, applications and problems
Discussion subject topics ranging from abstraction mechanism of threads in Java and ending with the synchronization of threads connecting threads in a group to present and discuss topics pools of common problems related to the work of threads, such as deadlocks
Reflections Java - Introduction and application
Introduction to Java reflection mechanism
Lecture topics include discussion of the implementation of reflection in Java, load and run methods of classes, instantiation of classes and getting to know the structure of the classes
Java Serialization
Introduction to Java object serialization
What is serialization, how to serialize an object, objects dependent on each other and how to avoid common problems encountered with these types of issues
Typical uses the example of serialization and RMI CORBA
Continuous Integration (CI) is a development practice of automating the process of merging code changes into the central repository as often as possible to detect and locate errors quickly.
This instructor-led, live training (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
Learn and understand CI for a Java project.
Build a CI system for Java.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
To serve in the best way heterogeneous development groups that are using various platforms simultaneously during their everyday work, we have merged various topics into a combined course that presents diverse secure coding subjects in didactic manner on a single training event. This course combines C/C++ and Java platform security to provide an extensive, cross-platform secure coding expertise.
Concerning C/C++, common security vulnerabilities are discussed, backed by practical exercises about the attacking methods that exploit these vulnerabilities, with the focus on the mitigation techniques that can be applied to prevent the occurrences of these dangerous bugs, detect them before market launch or prevent their exploitation.
Security components and service of Java are discussed by presenting the different APIs and tools through a number of practical exercises where participants can gain hands-on experience in using them. The course also covers security issues of web services and the related Java services that can be applied to prevent the most aching threats of the Internet based services. Finally, web- and Java-related security vulnerabilities are demonstrated by easy-to-understand exercises, which not only show the root cause of the problems, but also demonstrate the attack methods along with the recommended mitigation and coding techniques in order to avoid the associated security problems.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Realize the severe consequences of unsecure buffer handling
Understand the architectural protection techniques and their weaknesses
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in various platforms, frameworks and libraries
Get sources and further readings on secure coding practices
Even experienced Java programmers are not mastering by all means the various security services offered by Java, and are likewise not aware of the different vulnerabilities that are relevant for web applications written in Java.
The course – besides introducing security components of Standard Java Edition – deals with security issues of Java Enterprise Edition (JEE) and web services. Discussion of specific services is preceded with the foundations of cryptography and secure communication. Various exercises deal with declarative and programmatic security techniques in JEE, while both transport-layer and end-to-end security of web services is discussed. The use of all components is presented through several practical exercises, where participants can try out the discussed APIs and tools for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform and web-related vulnerabilities. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Understand security concepts of Web services
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Understand security solutions of Java EE
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Even experienced programmers do not master by all means the various security services offered by their development platforms, and are likewise not aware of the different vulnerabilities that are relevant for their developments. This course targets developers using both Java and PHP, providing them essential skills necessary to make their applications resistant to contemporary attacks through the Internet.
Levels of Java security architecture are walked through by tackling access control, authentication and authorization, secure communication and various cryptographic functions. Various APIs are also introduced that can be used to secure your code in PHP, like OpenSSL for cryptography or HTML Purifier for input validation. On server side, the best practices are given for hardening and configuring the operating system, the web container, the file system, the SQL server and the PHP itself, while a special focus is given to client-side security through security issues of JavaScript, Ajax and HTML5.
General web vulnerabilities are discussed by examples aligned to the OWASP Top Ten, showing various injection attacks, script injections, attacks against session handling, insecure direct object references, issues with file uploads, and many others. The various Java- and PHP-specific language problems and issues stemming from the runtime environment are introduced grouped into the standard vulnerability types of missing or improper input validation, improper use of security features, incorrect error and exception handling, time- and state-related problems, code quality issues and mobile code-related vulnerabilities.
Participants can try out the discussed APIs, tools and the effects of configurations for themselves, while the introduction of vulnerabilities are all supported by a number of hands-on exercises demonstrating the consequences of successful attacks, showing how to correct the bugs and apply mitigation techniques, and introducing the use of various extensions and tools.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn to use various security features of PHP
Understand security concepts of Web services
Get practical knowledge in using security testing tools
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in Java and PHP frameworks and libraries
Get sources and further readings on secure coding practices
The Java language and the Runtime Environment (JRE) was designed to be free from the most problematic common security vulnerabilities experienced in other languages, like C/C++. Yet, software developers and architects should not only know how to use the various security features of the Java environment (positive security), but should also be aware of the numerous vulnerabilities that are still relevant for Java development (negative security).
The introduction of security services is preceded with a brief overview of the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of these components is presented through several practical exercises, where participants can try out the discussed APIs for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform, covering both the typical bugs committed by Java programmers and the language- and environment-specific issues. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get sources and further readings on secure coding practices
Beyond solid knowledge in using Java components, even for experienced Java programmers it is essential to have a deep knowledge in web-related vulnerabilities both on server and client side, the different vulnerabilities that are relevant for web applications written in Java, and the consequences of the various risks.
General web-based vulnerabilities are demonstrated through presenting the relevant attacks, while the recommended coding techniques and mitigation methods are explained in the context of Java with the most important aim to avoid the associated problems. In addition, a special focus is given to client-side security tackling security issues of JavaScript, Ajax and HTML5.
The course introduces security components of Standard Java Edition, which is preceded with the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of all components is presented through practical exercises, where participants can try out the discussed APIs and tools for themselves.
Finally, the course explains the most frequent and severe programming flaws of the Java language and platform. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching. Scala code runs on a JVM and was designed to address some of the shortcomings of Java.
In this instructor-led, live training participants will learn how to use Scala's advanced features, including its type system, to write better code using an object-functional approach.
By the end of this training, participants will be able to:
Leverage Scala's type system to maximum benefit
Handle exceptions functionally
Create libraries and DSLs with Scala
Use Scala's advanced features for pattern matching
Format of the course
Part lecture, part discussion, exercises and heavy hands-on practice
[category_overview] =>
[outline] =>
Introduction
Scala as a JVM language
Objection-oriented programming vs functional programming
Overview of Object-Functional Programming
Tail recursion
Partial functions
Currying and partial function application
Closures
Lazy evaluation
Mastering the Scala Type System
About traits
Structural types
Path dependent types
Self types
Covariance and contravariance
Type bounds
Advanced Pattern Matching in Scala
Deep matching
Using extractors
Using Scala Implicit
Implicit conversion, classes and parameters
Type class pattern
Context and view bounds
Libraries and DSLs
Custom control structures with by-name parameters
Building well-designed libraries and internal DSLs
There are no specific requirements needed to attend this course.
[overview] =>
This training outline is intended to bring attendees from a beginner to an intermediate/advanced level in the understanding and knowledge of the Akka framework.
The entire course is hands on, mostly driven by the trainer in the beginning and progressively shifting towards the attendees producing code themselves (and downloading implementations/solutions written by the trainer).
Attendees are not expected to have prior knowledge of Scala, the trainer will take the necessary time to explain and clarify all the intricacies that relate to the Scala code used.
[category_overview] =>
[outline] =>
Introduction, environment Setup and a first application
The Akka framework
The Actor model (definition & origins)
Fault tolerance
Location transparency
Scaling
Actors In Akka
Setting up a Scala/Maven environment
A first application in Akka
Create the project
Defining message Classes
Defining actor Classes
Defining the execution Class
Architecture & configuration files
Actors & Typed Actors
Anatomy of an Actor
Creating Actors (default constructors, custom constructors, actor hierarchy)
Knowledge of Java/Scala programming language. Basic familiarity with statistics and linear algebra is recommended.
[overview] =>
The aim of this course is to provide a basic proficiency in applying Machine Learning methods in practice. Through the use of the Scala programming language and its various libraries, and based on a multitude of practical examples this course teaches how to use the most important building blocks of Machine Learning, how to make data modeling decisions, interpret the outputs of the algorithms and validate the results.
Our goal is to give you the skills to understand and use the most fundamental tools from the Machine Learning toolbox confidently and avoid the common pitfalls of Data Sciences applications.
[category_overview] =>
[outline] =>
Introduction to Applied Machine Learning
Statistical learning vs. Machine learning
Iteration and evaluation
Bias-Variance trade-off
Machine Learning with Scala
Choice of libraries
Add-on tools
Regression
Linear regression
Generalizations and Nonlinearity
Exercises
Classification
Bayesian refresher
Naive Bayes
Logistic regression
K-Nearest neighbors
Exercises
Cross-validation and Resampling
Cross-validation approaches
Bootstrap
Exercises
Unsupervised Learning
K-means clustering
Examples
Challenges of unsupervised learning and beyond K-means
Scala programmers who wish to learn the more advanced and nuanced features of Scala
[overview] =>
Scala is a concise, object-oriented language with functional programming features, including currying, type inference, immutability, lazy evaluation, and pattern matching.
In this instructor-led, live training participants will learn how to use Scala's advanced features to develop well-constructed software that is easy to write, read, test, and change. The focus of this training is on functional programming, using real-world case studies and discussion as a reference for lab exercises and activities.
By the end of this training, participants will be able to:
Scala is a condensed version of Java for large scale functional and object-oriented programming. Apache Spark Streaming is an extended component of the Spark API for processing big data sets as real-time streams. Together, Spark Streaming and Scala enable the streaming of big data.
This instructor-led, live training (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at software engineers who wish to stream big data with Spark Streaming and Scala.
By the end of this training, participants will be able to:
Create Spark applications with the Scala programming language.
Use Spark Streaming to process continuous streams of data.
Process streams of real-time data with Spark Streaming.
[outline] =>
Introduction
Scala Programming in Depth Review
Syntax and structure
Flow control and functions
Spark Internals
Resilient Distributed Datasets (RDD)
Spark script to graph to cluster
Overview of Spark Streaming
Streaming architecture
Intervals in streaming
Fault tolerance
Preparing the Development Environment
Installing and configuring Apache Spark
Installing and configuring the Scala IDE
Installing and configuring JDK
Spark Streaming Beginner to Advanced
Working with key/value RDD's
Filtering RDD's
Improving Spark scripts with regular expressions
Sharing data on a cluster
Working with network data sets
Implementing BFS algorithms
Creating Spark driver scripts
Tracking in real time with scripts
Writing continuous applications
Streaming linear regression
Using Spark Machine Learning Library
Spark and Clusters
Bundling dependencies and Spark scripts using the SBT tool
Using EMR for illustrating clusters
Optimizing by partitioning RDD's
Using Spark logs
Integration in Spark Streaming
Integrating Apache Kafka and working with Kafka topics
Integrating Apache Fume and working with pull-based/push-based Flume configurations
Writing a custom receiver class
Integrating Cassandra and exposing data as real-time services
In Production
Packaging an application and running it with Spark-Submit
Troubleshooting, tuning, and debugging Spark Jobs and clusters
The purpose of the training is to provide a basis for programming from the ground up to the general syntax of programming paradigms. The training is supported by examples based on programming languages such as C, Java, Python, Scala, C #, Closure and JavaScript. During the training, participants gain a general understanding of both the programming patterns, best practices, commonly used design and review of the implementation of these topics through various platforms. Each of the issues discussed during the course are illustrated with examples of both the most basic and more advanced and based on real problems.
[category_overview] =>
[outline] =>
Introduction
What is programming and why should devote his attention
History of programming
Opportunity to automate tasks using the software
The role of the programmer and the computer in the enterprise
Programming today the development of the current market trends
Declarative and imperative programming. How or What?
Turing machine
Consolidation, compilation and interpretation "on the fly".
Reminder issues of logic and Boolean algebra
predicates
logical sentences
tautologies
Boolean algebra
The first program
structurally
functionally
object
And how else?
Simple types
Representation of strings
Integers
Floating-point numbers
Boolean
Type Null
A blank or Uninitialized
Strong and weak typing
Data structures
Concepts FIFO and FILO
Stacks
Queues
Declaring arrays and lists
Indexing
Maps
Records
Trees
Operators
Assignment Operators.
Arithmetic operators.
comparison Operators
And a comparison of the values in different languages
Bitwise
Concatenation
Increment and decrement operators
The most common errors
Controlling the program
The if, if else instructions
Goto instructions, discuss the problems of application.
The switch
The for loop, for-in
The while loop, do-while
foreach loop
Stopping loop
Creating a reusable code
Functional Programming
Object-Oriented Programming
Functional programming paradigms
What is the function of
Function and procedure
Fundamentals of lambda calculus
Function Arguments
Returning values
Functions as arguments
Anonymous functions
Closures
Recursion
The paradigms of object-oriented programming
Representation of entities from the real world entities in philosophy, ontology
Deciding what you want to object, or other types of
Declaration of classes
Creating instances of classes
Fields, a state of the object
Methods, as the behavior of an object
abstraction
Encapsulation
Inheritance
polymorphism
Association and aggregation
Delegation and separation of relationships between objects
Modules, packages and libraries
Sharing API
The modeling of the system as classes and objects
Describing and programming relationships between classes
Program from a business perspective
Good programming practice
Pitfalls and common errors
High-level code in the interpretation of low-level
Code optimization
KISS principle
DRY principle
Principle Worse is Better
Separation abstraction of implementation
Methods of error detection logic programs
Conventions godowania
Commenting the code
Software Metrics
Overview of these technologies and languages
The area of application of these languages
The main features of language
Prospects for development
The future direction of development: algorithmic, optimization of code, implementing patterns, design patterns, architectural patterns, analytical standards
Reduction of the control structure - the use of artificial intelligence and automated decision-making
Which platform to choose? Individual consultations
There are no specific requirements needed to attend this course.
[overview] =>
Why do we need Clean Code? Programs evolve, therefore the code is continuously updated it can be very, very difficult to go back through unclean code to find and update the source code on average, the cost of writing the original code is only 40% of the total cost of a system; 60% of the cost, on average, is spent maintaining and updating code. Bad code dramatically increases that 40/60 ratio, bordering on 20/80 in the worst cases; the more unclean the code is, the more time we just spend updating it.
[category_overview] =>
[outline] =>
Day 1
Introduction
Good and standardized naming
-names of packages, files, classes, voids and functions as well as variables need to have meaningful names derived from their purpose
-should be readable
-should be searchable
-consider the namespace we're generating; does it make sense?
Classes, objects and data structures
-there's a difference between objects that do something and structures that simply contain data
-when to use data structures, and why
-when to use objects, and why
-OOD and abastraction
-getters/setters and why
-better to have many small classes, with many small voids and functions
Good comments
-there are good and bad comments;
-we need to know how to generate good comments and forget about the rest
Day 2
Functions
-one thing only
-small
-arguments (good and bad)
-unintended side effects
Error handling
-when to handle errors, when to let them bubble up
-if we handle an exception, what do we do with it and why
-custom error handling classes
Code Formatting: how can we better format the code
Test-Driven Design: Open discussion of Uncle Bob's idea that programs should be TDD
This course is addressed to junior software developers. After the course completion, the trainees will be able to understand the architecture of well-known web servers such as Apache or Nginx, and implement their own network programs.
The course is 67% lectures, 33% hands-on exercises.
[category_overview] =>
[outline] =>
Sockets
Creating datagram sockets
Receiving and sending data
Creating and accepting TCP connections
Closing sockets
Handling errors
Handling more than one client in a simple way
Prefork model, as found in Apache
Forking a new process per client
Cleaning up after finished processes
Threads
Inetd, systemd units
Waiting for data
Blocking sockets
Non-blocking sockets and select
Select as a way to wait for "any of these sockets"
Organizing reads and writes
Dealing with short reads and writes
Reading up to a delimiter
Pipelined requests
Application-level buffers
Event-driven architecture
Using select for multiplexing all client connections in one thread
State machines
Callback hell
Event libraries
"Green" threads
Problem of 10000 connections
Problems with prefork model and select-based loop
poll as an alternative to select
Realtime signals and why you shouldn't use them
Epoll (linux) and kqueue (BSD)
Why and when epoll and kqueue are faster than poll/select
Knowledge of the issues discussed in the Java Fundamentals course.
[overview] =>
During the training participant will know the specific use of selected issues, the basic problems encountered when using them, and the role of the application model. The training also includes a basic knowledge of the language standard library functions. Training requires knowledge of the development environment IDE used to build Java applications (e.g.. Eclipse, Netbeans). Training does not include a user interface issues.
[category_overview] =>
[outline] =>
Abstract class
Declaration principles and implementation of abstract classes
Typical problems encountered when working with abstract classes
The role of classes, abstract classes and interfaces in the application model
Grades Java object-oriented abstraction
The complete object model in Java
Program model oriented for interfaces, abstract classes and interfaces for application more flexibility and independence of each of its sub-systems from each other in their implementation
Applications of abstract classes in order to extract common functionality extended by the implementation of the flexibility that they offer interfaces
The role of dynamic and static objects in the application model
Static Java classes and dynamic properties of these classes
Making a distinction in the functionality of both types of entities within Java and typical uses, and their example of good practice in the design of solutions based on static and dynamic beings Java
Introduction to the design patterns
Introduction to the factory design pattern
Operations with simple types and wrapper classes
Very important facts and techniques to extend the use of simple types in the Java object model.
Discussion of the role of wrapper classes simple types and typical applications of this type in the application
Special Objects Java, the class String, StringBuilder and StringBuffer
Reminder basic properties of the String class and discuss the treatment of String objects by the virtual machine
The use of buffer classes and operate on chains
Formatting and parsing, regular expressions
Introduction to regular expressions in Java
Discussion of both basic techniques for handling regular expressions (String class) as well as advanced techniques based on dedicated classes for this type of construction
Tokenization, search and pattern matching for string types
I / O operations
A detailed discussion of the mechanisms I / O Java - class streaming, Writer and Reader class, class wrapper and buffering streams of Java.
Opening, closing and writing to files and sockets
Classes inside - detailed discussion
Discusses how to implement and use inner classes in Java and so-called anonymous classes
Topics - detailed discussion, applications and problems
Discussion subject topics ranging from abstraction mechanism of threads in Java and ending with the synchronization of threads connecting threads in a group to present and discuss topics pools of common problems related to the work of threads, such as deadlocks
Reflections Java - Introduction and application
Introduction to Java reflection mechanism
Lecture topics include discussion of the implementation of reflection in Java, load and run methods of classes, instantiation of classes and getting to know the structure of the classes
Java Serialization
Introduction to Java object serialization
What is serialization, how to serialize an object, objects dependent on each other and how to avoid common problems encountered with these types of issues
Typical uses the example of serialization and RMI CORBA
Continuous Integration (CI) is a development practice of automating the process of merging code changes into the central repository as often as possible to detect and locate errors quickly.
This instructor-led, live training (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
Learn and understand CI for a Java project.
Build a CI system for Java.
Format of the Course
Interactive lecture and discussion.
Lots of exercises and practice.
Hands-on implementation in a live-lab environment.
Course Customization Options
To request a customized training for this course, please contact us to arrange.
[category_overview] =>
This instructor-led, live training in <loc> (online or onsite) is aimed at developers who wish to learn and apply the basics of Continuous Integration for Java.
By the end of this training, participants will be able to:
To serve in the best way heterogeneous development groups that are using various platforms simultaneously during their everyday work, we have merged various topics into a combined course that presents diverse secure coding subjects in didactic manner on a single training event. This course combines C/C++ and Java platform security to provide an extensive, cross-platform secure coding expertise.
Concerning C/C++, common security vulnerabilities are discussed, backed by practical exercises about the attacking methods that exploit these vulnerabilities, with the focus on the mitigation techniques that can be applied to prevent the occurrences of these dangerous bugs, detect them before market launch or prevent their exploitation.
Security components and service of Java are discussed by presenting the different APIs and tools through a number of practical exercises where participants can gain hands-on experience in using them. The course also covers security issues of web services and the related Java services that can be applied to prevent the most aching threats of the Internet based services. Finally, web- and Java-related security vulnerabilities are demonstrated by easy-to-understand exercises, which not only show the root cause of the problems, but also demonstrate the attack methods along with the recommended mitigation and coding techniques in order to avoid the associated security problems.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Realize the severe consequences of unsecure buffer handling
Understand the architectural protection techniques and their weaknesses
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in various platforms, frameworks and libraries
Get sources and further readings on secure coding practices
Even experienced Java programmers are not mastering by all means the various security services offered by Java, and are likewise not aware of the different vulnerabilities that are relevant for web applications written in Java.
The course – besides introducing security components of Standard Java Edition – deals with security issues of Java Enterprise Edition (JEE) and web services. Discussion of specific services is preceded with the foundations of cryptography and secure communication. Various exercises deal with declarative and programmatic security techniques in JEE, while both transport-layer and end-to-end security of web services is discussed. The use of all components is presented through several practical exercises, where participants can try out the discussed APIs and tools for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform and web-related vulnerabilities. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Understand security concepts of Web services
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Understand security solutions of Java EE
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices
Even experienced programmers do not master by all means the various security services offered by their development platforms, and are likewise not aware of the different vulnerabilities that are relevant for their developments. This course targets developers using both Java and PHP, providing them essential skills necessary to make their applications resistant to contemporary attacks through the Internet.
Levels of Java security architecture are walked through by tackling access control, authentication and authorization, secure communication and various cryptographic functions. Various APIs are also introduced that can be used to secure your code in PHP, like OpenSSL for cryptography or HTML Purifier for input validation. On server side, the best practices are given for hardening and configuring the operating system, the web container, the file system, the SQL server and the PHP itself, while a special focus is given to client-side security through security issues of JavaScript, Ajax and HTML5.
General web vulnerabilities are discussed by examples aligned to the OWASP Top Ten, showing various injection attacks, script injections, attacks against session handling, insecure direct object references, issues with file uploads, and many others. The various Java- and PHP-specific language problems and issues stemming from the runtime environment are introduced grouped into the standard vulnerability types of missing or improper input validation, improper use of security features, incorrect error and exception handling, time- and state-related problems, code quality issues and mobile code-related vulnerabilities.
Participants can try out the discussed APIs, tools and the effects of configurations for themselves, while the introduction of vulnerabilities are all supported by a number of hands-on exercises demonstrating the consequences of successful attacks, showing how to correct the bugs and apply mitigation techniques, and introducing the use of various extensions and tools.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn to use various security features of PHP
Understand security concepts of Web services
Get practical knowledge in using security testing tools
Learn about typical coding mistakes and how to avoid them
Be informed about recent vulnerabilities in Java and PHP frameworks and libraries
Get sources and further readings on secure coding practices
The Java language and the Runtime Environment (JRE) was designed to be free from the most problematic common security vulnerabilities experienced in other languages, like C/C++. Yet, software developers and architects should not only know how to use the various security features of the Java environment (positive security), but should also be aware of the numerous vulnerabilities that are still relevant for Java development (negative security).
The introduction of security services is preceded with a brief overview of the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of these components is presented through several practical exercises, where participants can try out the discussed APIs for themselves.
The course also goes through and explains the most frequent and severe programming flaws of the Java language and platform, covering both the typical bugs committed by Java programmers and the language- and environment-specific issues. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get sources and further readings on secure coding practices
Beyond solid knowledge in using Java components, even for experienced Java programmers it is essential to have a deep knowledge in web-related vulnerabilities both on server and client side, the different vulnerabilities that are relevant for web applications written in Java, and the consequences of the various risks.
General web-based vulnerabilities are demonstrated through presenting the relevant attacks, while the recommended coding techniques and mitigation methods are explained in the context of Java with the most important aim to avoid the associated problems. In addition, a special focus is given to client-side security tackling security issues of JavaScript, Ajax and HTML5.
The course introduces security components of Standard Java Edition, which is preceded with the foundations of cryptography, providing a common baseline for understanding the purpose and the operation of the applicable components. The use of all components is presented through practical exercises, where participants can try out the discussed APIs and tools for themselves.
Finally, the course explains the most frequent and severe programming flaws of the Java language and platform. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by the recommended coding guidelines and the possible mitigation techniques.
Participants attending this course will
Understand basic concepts of security, IT security and secure coding
Learn Web vulnerabilities beyond OWASP Top Ten and know how to avoid them
Learn client-side vulnerabilities and secure coding practices
Learn to use various security features of the Java development environment
Have a practical understanding of cryptography
Learn about typical coding mistakes and how to avoid them
Get information about some recent vulnerabilities in the Java framework
Get practical knowledge in using security testing tools
Get sources and further readings on secure coding practices