https://www.clipcode.net

Winter 2021/Spring 2022 Curriculum

A series of one-day intensive on-site and remote training courses for senior knowledge professionals

“The mind is not a vessel to be filled, but a fire to be kindled” - Plutarch

Copyright (c) 2021 Clipcode Limited - All rights reserved. Clipcode is a trademark of Clipcode Limited - All rights reserved. https://www.clipcode.net Clipcode Academy, 6 Cabinteely Green, Cabinteely, Dublin 18, Ireland E-: [email protected]

Clipcode Academy is pleased to announce its latest set of intensive one-day training courses aimed at senior knowledge professionals, in areas such as mathematics, software engineering and DevOps.

These courses are available for on-site presentation throughout Europe. Your team may request them “as is” or as part of a custom course, combined and extended to suit your specific requirements (e.g. you may design your own course by selecting modules of interest from different courses, or requesting new modules).

Our courses are based on the most up to date versions of the mathematical theories, programming languages, operating systems, runtimes, development tools, database engines and international standards that they cover.

To arrange on-site training, please phone us or e-mail [email protected] with a description of the type/location/duration of training you require and the number of attendees and their experience levels, together with your full contact details. One Day Intensive Training Course For Senior Knowledge Professionals 3

This is our most popular course! If you need on-site training for your team, and our modules & choose as needed from each. Also you can existing courses match your specific needs – excellent! identify new topics. Using existing specialist material However, perhaps they partially but not completely we have, and where necessary creating new material match your requirements, or perhaps your team needs specifically for you and combining this with appropriate something more custom. In either case, then go ahead selections from our standard courses, we can come up and design a training course to your own specifications. with the exact course you need. We work on the basis We would be willing to write and present it in your that if one client requires a course for a specialist area offices to your development team. To design your own now, it is quite likely that others will require it in future. course you identify the target audience & their existing skill sets, decide what new competencies they need and We consider the new material we create as part of our then select a coherent set of topics to be covered. You ongoing curriculum development initiative and there is can treat each of our current courses as a menu of no additional charge for you beyond our normal fees. Contents of One-Day Training Course

Target Audience

Prerequisites One Day Intensive Training Course For Senior Knowledge Professionals

Mathematics Faculty

Mathematics / Foundations ● Fundamentals Of Mathematical Foundations ● Proof Theory ● Type Theory ● Category Theory ● Mathematical Logic ● Linear Logic, Adjoint Logic And Session Types ● Description Logic ● Computation Theory Mathematics / Structure ● Abstract Algebra ● Linear And Multilinear Algebra ● Graph Theory One Day Intensive Training Course For Senior Knowledge Professionals 5

Fundamentals Of Mathematical Foundations Terminology, Tour, Induction, Set Theory, Lambda Calculus, Complexity, Monad, Number Theory Like ships passing nearby on a foggy night, each so this course builds on that. It should be considered a oblivious to the presence of the other, up to recently refresher, with an emphasis on practical application, to most mathematicians and software engineers ignore the bring everyone up to speed with the basics and be ready work of the other. This course is about removing the to explore more advanced topics. fog, and letting developers see what can be achieved in production environments using really good ideas from We pay particular attention to how mathematical ideas modern mathematics. More and more ideas from are presented. For example, saying “a monad is just a mathematics are beginning to seep into the world of monoid in the category of endofunctors” utterly programming. Many software innovations – from deep confuses developers, whereas we prefer “monads are learning to 3D graphics to modern programming type programmable semicolons” (just used to insert custom systems - are based on modern mathematics. All code between each statement) is much clearer, yet developers have studied some mathematics at college, equally accurate.

Contents of One-Day Training Course Review Of Fundamentals Set Theory The language of mathematics In the past, set theory was considered the (it is really not all Greek!) most suitable approach to the foundations A mathematical object has certain of all of mathematics properties and can be used in operations More recent approaches (e.g. type Target Audience Mathematical structures are mathematical theory, category theory) are better This course is aimed at objects themselves that contains some However, set theory is still an important modern developers who arrangement of mathematical objects area and worth studying need a better grasp of how (often a set or similar, + something extra) Deductive system based on first order logic areas of mathematics can Terminology Law of the excluded middle (LEM) be practically applied to Mathematical object (much broader use of Axiom of choice, ... programming. ‘object’ term compared to programming) Complexity Theory Symbols and (mathematical) variables Can a computational problem be solved? Mathematical statement If so, how long will it take? Proposition, expression, formula Worst case scenario “a proposition is a statement susceptible to Big O notation Prerequisites proof, whereas a theorem is such a Monads It is expected attendees statement that has been proven.” (HoTT) Isolating change in a non-changing world will have completed some Branches of Mathematics .. (think of carefully managed assembly lines mathematics training as ..and their uses in software development - some steps make changes, others do not) part of their college Quantity/Arithmetic; Change/Calculus; Lambda Calculus education. Structure/Algebra; Space/Geometry The three terms (and how they work) Need to describe mathematical universes .. – variables, abstraction and application Mathematical Whirlwind Tour Untyped vs. simply-typed Quick tour of all of mathematics Extensions (exceptions, recursion, ..) So many aspects to it – where do we start? Currying (higher order functions) We like “The Map Of Mathematics” How Lambda Calculus is used in modern Which new/unfamiliar parts we should use programming languages/type systems Mathematical Induction Number Theory Definition by induction, in steps Kinds of numbers (naturals, integers, Base step (e.g. 0) is the starting point reals, complex numbers) Induction step: builds on base (n) Broadening the scope (e.g. algebra) Example of deductive reasoning Specialist topics – e.g. Dedekind cut One Day Intensive Training Course For Senior Knowledge Professionals

Proof Theory Natural Deduction, Props as Types, Sequent Calculus, Ordinal Analysis, Automated Prover, Verification There are a number of fascinating sub-fields in proof We are also curious as to what impact treating a proof theory and in this course we explore the best of them, as a mathematical object has, and using mathematics starting with structural proof theory (e.g. natural itself to explore a proof. Automated provers and proof deduction & sequent calculus), which has some very assistants are improving in quality all the time and we powerful features. We are particular interested in the see what the latest techniques offer. We also look at junction of proof theory with programming. Many other branches of proof theory, such as proof believe the future of programming will be significantly complexity, ordinal analysis and provability logic. influenced by automated verification of correctness of code - but what does that mean and how can it be Modern proof theory has huge potential to achieved? There are already open source projects revolutionize our approaches to the rigor with which we pointing the way to much more extensive use of formal judge statements made in mathematics and verification. programming.

Contents of One-Day Training Course Overview of Proof Theory Sequent Calculus What is proof theory? A sequent consists of propositions to the Many branches – structural proof theory, left (ANDed), a turnstile and propositions provability logic, proof mining, to the right (OR) automated theorem proving, ... Cut elimination Structural proof theory includes natural Importance for linear logic deduction/sequent calculus/hilbert Supports multiple premises AND multiple Target Audience A proof as a mathematical object- can be conclusions (unlike natural deduction) This course is aimed at manipulated and reasoned about like Automated Proving mathematicians and any other mathematical object Proof assistants modern developers who Formal Verification Automated theorem provers need a better grasp of Mathematically proving that code works in Proof Verification proof theory all circumstances will always be more Deciding if a proof is correct desirable than unit testing it for known Comparing proofs scenarios Proof Complexity Prerequisites Natural Deduction Intro Determining complexity critical for Good foundational Judgment, evidence and witnesses practical automation mathematical education Depending on what kind of logic that Identifying the number of steps needed for along with some interests us, differing judgments needed a valid proof programming experience. Introduction rule As problems get larger, proof size explodes Elimination rule Ordinal Analysis Attendees can select Multiple premises and a single conclusion Created by Gerhard Gentzen, ordinal which programming Advanced Natural Deduction analysis helps with consistency of proofs language they wish to use, Alternative representation styles An infinitary proof calculus as all concepts will be Assumptions / context / use of turnstile: ⊢ Upper bounds & lower bounds developed from first Real world ND usage: defining a language Provability Logic principles. such as WebAssembly ‘it is proved that ..’ Proposition As Types Relationship to modal logic Relationship to Lambda Calculus The Gödel-Löb logic of provability Propositions as types Project: Using Proof Theory Proofs as programs We conclude this course by exploring how Normalization as evaluation of programs proof theory can help us create a modern Nirvana: code is (provable) logic is code programming language One Day Intensive Training Course For Senior Knowledge Professionals 7

Cubical Computational Type Theory Theory of Truth, Types, Equality, Identity, Universes, Univalence, HITs, Kan Filling, Cubical Type Theory The related trinity of type theory, mathematical to evaluation, but will find types being so to be new and logic/proof theory and category theory forms a modern significantly more expressive. Type theory supports the foundation for all of mathematics and computation. idea of indexed families of types-the index being a value (also known as dependent types). This will also A type is a precise mathematical specification of be a new idea to most developers. By introducing these behavior. An element of a type satisfies its specification. ideas and lots more, modern type theory goes far Both a type and its elements are programs, subject to beyond what we see as type systems for regular evaluation. Elements evaluate down to values and types programming languages. This course focuses on the evaluate down to canonical types [Martin-Löf] or type most promising of the latest type theories, known as values [Harper] (same idea). Application developers cubical type theory- a computation-friendly approach to experienced with mainstream programming languages new ideas such as univalence & higher inductive types. will already understand elements (objects) are subject The Redtt p roject is an interesting implementation. Contents of One-Day Training Course A New Foundation Additional Concepts Type theory The meaning explanation Category theory Functionality (in a type theory sense) Mathematical logic/proof theory The hypothetical judgment How they relate to each other (Shulman) Recursion Target Audience Constructivism Equality and Identity This course is aimed at Type Theory Overview Introduction to equality in type theory modern developers who Think of modern type theory as a highly Variations of equality type (exact, ..) are specifically interested expressive programming language useful Identifications in modern type theory and for mathematics (+everything based on it) Univalence how it can be practically A theory of truth – based on Martin-Löf’s Initially considered in terms of Homotopy used in computation ground-breaking paper: “Constructive Type Theory (HoTT) mathematics and computer programming” That uses an axiom – not desirable from a Basic Concepts computational viewpoint – why? Type So other approaches explored ... Prerequisites Element Cubical Type Theory - Intro Good foundational Evaluation This is the cutting edge (2019) type theory mathematical education Judgment Simple intro along with some Witness Uses points, lines, planes, cube, n-cube programming experience, Intuitionistic Type Theory The idea of paths as we include exploring Simple Types Transporting type theory from a Defining a type Cubical Type Theory - Details computational viewpoint. Defining an element Kan filling, hcom, coe Attendees can select which Look at bool and nat(ural number) Higher dimensionality programming language Common Types Cartesian variant they wish to use, as all Type Higher Inductive Types (HITs) concepts will be developed Function HITs as generalization of inductive types from first principles. Sum Uses in various forms of construction Product Diagonals Top / Bottom Redtt Proof Assistant Dependent Types Redtt is an open source implementation of The idea behind dependent types cubical type theory – let’s explore how it Creating an indexed families of types works One Day Intensive Training Course For Senior Knowledge Professionals

Category Theory Category, Category Object, Maps And Composition, Functor, Natural Transformation, Adjoint Category theory is a foundational area of mathematics It is best to think of the goal of category theory is to that examines in a uniform manner mathematical describe an abstract multiverse, containing one or more structures and their mappings. In category theory, a universes, with mappings within each universe, and category is a mathematical universe. A category is between them. From this surprisingly simple core of populated by category objects and there are mappings constructs, a rich description of much of modern (also called morphisms) between these objects. mathematics can accurately be built.

A category is itself a mathematical object. There can be This course helps mathematicians and software mappings between categories, known as functors, and developers gain an appreciation of what is category even mappings between such functors, known as natural theory, both basic concepts and more advanced transformations. Categories are abstract representations capabilities, and to see see how it can be practically of concepts from other areas of mathematics. applied in real-world situations. Contents of One-Day Training Course Category Theory Overview Exploring Sample Categories Why the interest? Set, Ring, Monoidal, Group, What is a category? 2-category, custom categories Practical applications Advanced Category Theory Examining structure-preserving mappings Natural transformations Target Audience between objects A deeper look at a variety of morphisms This course is aimed at Basic Ideas Limits and colimits mathematicians and Introduction to the basic constructs Universal property software engineers A category object is a mathematical object Initial and terminal object interested in learning about (to begin with, think of it as a set of Presheaf category theory elements) - so is not the same as an ∞-groupoid object in typical OO programming “Sets in the next dimension are groupoids” Think of a mapping (morphism) between Groupoid builds on group in group theory category objects as a relation A groupoid is a category where each Maps can be composed – so if we have morphism is an isomorphism map f and map h, we compose them as ∞-groupoid generalizes groupoids Prerequisites h o f (read as “h follows g”) k-morphisms and equivalences Good foundational Such compositions form paths Cartesian Closed Categories mathematical education Mathematical Definition Corresponds to lambda calculus along with some A category is defined as a collection of Mapping to and from the lambda calculus programming experience, category objects, with maps (with “A CCC is a category that has an exponent as we include exploring domain and codomain) between them and a product, and is closed over both. The category theory from a Each object has an identity map product is an abstract version of cartesian computational viewpoint. Two important laws: set product; the exponent is an abstraction Attendees can select which * Identity Law governs identity map use of the idea of a function, with an “eval” programming language * Associative Law: (h o g) o f = h o (g o f) arrow that does function evaluation.” [link] they wish to use, as all Functors Triumvirate concepts will be developed Functors are mappings between categories Role of category theory as one member of from first principles. Structure-preserving the triumvirate that includes type theory Endofunctors are mappings from a and mathematical logic category object to itself -”endo” (as in “Roughly speaking, a category may be “endoscope”) means look inside oneself thought of as a type theory shorn of its Left/right adjoint functors (as in adjoining) syntax” [link] One Day Intensive Training Course For Senior Knowledge Professionals 9

Mathematical Logic Logic as Foundation, Propositional, First Order, Higher Order, Models, Temporal, Modal, Kripke Mathematical logic permeates all of mathematics and Logic can be qualified by time, by modality or other programming. techniques. More advanced logics are based on this common foundation. It is useful to consider these logics Building on simple propositional logic, a host of richer as a set of building blocks which can be rearranged to logics can be constructed to target different needs. For suit specific needs. We are interested in building our example, First Order Logic is the deductive system used own logics. We also want to use mathematical logic in by set theory and is also the basis for Description Logic. real projects and explore how best to do this. Higher Order Logics have richer predicates though come with added complexity. By the end of this course it will be clear that a good understanding of mathematical logic underpins a good We need to look at what we can represent in logic and understanding of all of mathematics and programming. what valid claims we can make about such. Contents of One-Day Training Course Logic Fundamentals Structural Rules Defining and using a formal logic * Weakening Review of logic as branch of mathematics * Contraction Part of foundations * Exchange List of logics * Associativity Good understanding of logic helps with Being selective - substructural understanding everything above it Modal Logic Target Audience Propositional Logic Modality This course is aimed at Conjunction Modal terms and their impact mathematicians and Disjunction In some way we wish to qualify or restrict modern developers who Negation a logic statement need a better grasp of how Conditional Modal operators mathematical logic can be Truth tables Kripke Semantics used in practice Predicate (First Order) Logic Usefulness Builds on propositional logic The Kripke model ∀ means “for all” Soundness of a modal logic Prerequisites ∃ means “there exists” Kripe Frame Good foundational Quantifiers Temporal Logic mathematical education More advanced symbols Logic that is in some way time-based along with some How first order logic is used in set theory Now, future, past, until, while, always, … programming experience, Higher Order Logic Temporal operators as we include exploring Extra quantifiers More fine-grained representation of things: logic from a computational Predicates themselves having parameters how they are in the real world (beyond viewpoint. Attendees can What variables range over (sets of sets) being simply always true) select which programming Quantifying over sets Custom Logic language they wish to use, Additional semantics Why would we want to define our own as all concepts will be Model Theory logic? developed from first Mathematical models Steps involved principles. An interpretation gives meaning to How to create and use symbols in a formal language Project When is an interpretation a model? Practical use of a variety of mathematical Interpretation function logic in a production setting Domain Considerations and observations One Day Intensive Training Course For Senior Knowledge Professionals

Linear Logic, Adjoint Logic And Session Types Cut Elimination, Substructural Rules, Linear Logic, Adjoint Logic, Message Passing, Sessions, Scribble [Sample: link hub] Data types have played a pivotal role logic. Multiple logics can be combined using modal in software engineering for the last 50 years and many operators based on adjoint logic. These can be used believe session types will have an equally profound where we need to mathematically represent and effect for the next 50. Software platforms are getting accurately reason about processes/threads and their more complicated, larger, have more moving parts and concurrency and message passing constructs and use- errors are more costly to remedy. It is clear that the once or other richer semantics. software engineering community needs more robust tooling and modern mathematics can certainly help. Due to its many practical usage scenarios, the juxtaposition of mathematics, concurrency and A number of potentially very useful mathematical logics communication is a very active research area. We are have already been defined, the most interesting from a beginning to see these ideas have an impact on new communications and concurrency perspective is linear specialist tooling and extensions to existing frameworks.

Contents of One-Day Training Course High Level Goals Adjoint Logic: Details Deadlock freedom during communication Relationship to weakening and contraction Distributed garbage collector Combining a variety of logics, such as Shared memory at scale LNL, linear, s4, lax, ... Mathematically sound concurrency Modes: Target Audience Preliminaries * linear, Mathematicians and Cut elimination * affine, software engineers Sequent calculus * strict, interested in taking a What is a sequent? * unrestricted rigorous mathematical The idea of a process calculus Message Passing approach to concurrency (e.g. π-calculus) Interesting: message passing interpretation and communication Evolution of Propositions As Types Using adjoint logic to structure messaging “propositions as session types, Session types proofs as processes, and Practical uses of session types in modern cut elimination as communication” [link] programming - intro type discipline to code Substructural Logic Managing multiple communicating and Substructural logic – tweaking with the concurrent sessions Prerequisites structural rules, what effect that brings? Binary and multi-party Good knowledge of the Linear Logic Scribble fundamentals of What does it describe? “Scribble is a language to describe mathematical logic. Mathematically describe a process (a application-level protocols among thread of activity) as a series of steps communicating systems. ” [link] Mathematical duals How Scribble works In contrast to normal mathematical logic, Generating Finite State Machines (FSMs) which focuses on truth (constant), linear on both sides logic focuses on resources (e.g. use once) Usage Highly useful for writing deadlock-free Some of these ideas are being to be used in code and communication specifications real products and development tooling Adjoint Logic: Intro Survey of what is available and how to use Fundamentals of adjoint logic Project Practical uses Expanding on practice topics explored Review of modal operators earlier with a project looking at practical Adjoint pairs of modal operators deployment of these ideas in production One Day Intensive Training Course For Senior Knowledge Professionals 11

Description Logic Representation, Reasoning, Tableau Algorithm, Subsumption, DL Extensions, Querying, Ontologies Description Logic is the mathematics of the knowledge There are a variety of Description Logics (DLs), and we graph. compare and contrast a number of these. More advanced DLs feature richer expressivity, but also come Description Logic is the discipline of mathematics with increased complexity in reasoning (especially for concerned with knowledge representation and large knowledge bases), so it is important to understand reasoning. There are many ways to represent knowledge the tradeoff. as data but where Description Logic excels is doing this in such a way that greatly facilitates reasoning. A good understanding of Description Logic is essential when working with graph stores, reasoners and semantic DL builds on a number of areas of mathematics such as query languages. DL provides the mathematical the decidable fragment of First Order Logic and model formalism that underpins the semantic web, the W3C theory, and pays attention to complexity theory. OWL Language and the reasoners that process it. Contents of One-Day Training Course Description Logic Overview Family of Logics Relationship to first order logic SHOIN (OWL DL) Target Audience Description based on concept, role and SROIQ (full OWL2) This course will be of individual plus operators SHIF (OWL-Lite) keen interest to TBox and ABox … lots more mathematicians and Importance of inferencing Resources software developers who Constructing a mathematical model Tooling wish to understand DL Basics Frameworks Description Logic - the Defining a simple DL Servers mathematical foundations How to represent knowledge using it Reasoners behind the Semantic Web What services could we layer on top of it? Advanced Topics and W3C specifications Model Theory Automata as a specialist alternative to the such as OWL, RDF and An interpretation is a mapping for tableau algorithm SPARQL. concepts, roles etc. and is a model if Study of complexity on relation to DLs certain conditions hold Scalability (very large knowledge bases) Relationship between DL & Model theory Fixpoints Prerequisites Knowledge Services Use of DL in OWL Good foundational Subsumption / Consistency The W3C semantic web defines the Web mathematical education Inferencing Ontology language (OWL) which is based along with some Satisfiability on description logic programming experience, Querying The DL terms (individual, concept, role) as we include exploring Tableau Algorithm map to OWL terms (individual, class, prop) Description Logic from a More expressive DL needs richer reasoner Ontologies vs. SQL databases computational viewpoint. Outline of tableau algorithm There are similarities & differences Variants (TBox = schema, ABox = data) Attendees can select DeMorgan’s theorem Open vs. closed world assumption which programming DL Extensions (extra letters) Incomplete information language they wish to use Nominals Role that reasoning plays in the labs, as all concepts Cardinality restrictions Unique name assumption will be developed from Inverses Query Answering first principles. Temporal How it works (query processing) Extra role constructors Covers given and inferred knowledge Concrete domains Re-writability One Day Intensive Training Course For Senior Knowledge Professionals

Theory Of Computation Automata: FSM, Inputs, Outputs, DFA, NFA, Computability: Turing Machines, Complexity: BigO An automaton (plural: automata) is a logical model of a Computability theory shows how an abstract machine machine that, based on input events, transitions from can be subjected to mathematical reasoning and certain state to state. To describe an automaton we need to important characteristics can be reliably proven. We identify its states, the set of acceptable inputs and the explore the best known of these – a Turing Machine. expected outputs, and describe how transitions work. Complexity theory helps classify the degree of There are a number of optional additional features to difficulty (from trivial to impossible) there is in solving constructing automata and these can add a range of a given computational problem. extra capabilities. A clear understanding of the theory of computation Automata theory is used throughout mathematics and helps everyone on a team have a richer appreciation of programming (e.g. compilers, protocols). It’s sometimes how automata, computability theory and complexity so natural that users are often unaware of its presence. theory can be beneficial to a product’s architecture. Contents of One-Day Training Course Overview Of Automata Theory Specialist Automata Topics Practical uses of automata Acceptance conditions Overview of automata theory Automata with an infinite number of states Deterministic vs. non-deterministic Cooperation between multiple automata How different automata vary Relationship to computational theory Target Audience Types of Automata Asynchronicity This course is aimed In increasing order of complexity: Computability Theory mathematicians and * Finite state machine What is computability & recursion theory? software developers who * Pushdown automata Model of computation - mathematically wish to become familiar * Linear bounded automata describing computation with important aspects of * Turing machine Examining the properties of computation how mathematics plays a What more complex automata brings Reverse mathematics foundational role in What is Needed to Build Deep Dive: Turing Machine computation. States What is a Turing Machine? Inputs – what drives transitions How does it work? Outputs – result of transitions What does its operation demonstrate? Transitions Understanding this abstract machine brings States And Transitions many benefits Identifying states Intro to Complexity Theory Optionally - identifying initial / final states Computation with large numbers of steps May be more than one and states can have performance issues Prerequisites Transition function Specifically for these, need to consider Attendees need a good Deterministic Automaton variation of approaches and how to understanding of A given sequence of inputs will result in a measure complexity mathematics and software given set of state transitions Advanced Complexity Theory programming. A set of states Trying to estimate amount of resources A set of inputs needed for particular compute workload the next state function Exploring the limits of computation the final predicate Can a problem be solved at all? Non-Deterministic Automaton Project Impact of non-determinism Use of theory of computation in a Transition relation non-trivial project to show its benefits Converting a NFA to a DFA in a practical setting One Day Intensive Training Course For Senior Knowledge Professionals 13

Abstract Algebra Groups, Rings, Fields, Lattices, Modules, Algebras Role of Algebraic Structures, Applications With algebraic structures we try to model characteristics The main families of algebraic structures that we of certain mathematical arrangements of elements and explore in this specialist course are groups, rings, fields, operations upon them. We often find the same structures lattices, modules and algebras. We say “families” since appearing in different areas of mathematics and by these structures have multiple variations and depending more deeply understanding properties of such structures on what we are trying to describe and reason about, we in the abstract we can share insight we discover in one choose differing representations. area across different application areas. We see the varied algebraic structures can be used to represent Some more specialist representations explore significant amounts of modern mathematics. For combining different structures (such as Galois Theory, example, what has been discovered about common which combines fields and groups). Sample number arrangements (natural numbers, integers, real) applications include the study of quaternions. actually can be applied more widely. Contents of One-Day Training Course Fundamentals of Field Algebraic Structure A field is a set with operations for: Overview of algebraic structures addition, subtraction, Group, ring, field and more multiplication and division Order and partial ordering A commutative ring Sequence and maps Finite Fields (Galois Fields) Usage scenarios for algebraic A finite number of elements structures Impact on fields Target Audience Group Uses in areas such as cryptography Those interested in A (mathematical) group is a set with a p-adic Fields algebraic structures and binary operation and certain properties “For p any prime number, the p-adic their practical applications (related to identity, inverses and numbers .. are a field that completes the in a number of areas. associativity) field of rational numbers. As such they are Abelian group (adding commutativity) analogous to real numbers. ” [link] Semi-groups Lattice Monoid Adding the ∧ and ∨ operations and ⊤ / ⊥ A group with an identity element but As a kind of poset (perhaps) without inverses Bounded lattices e.g. natural numbers (with 0) as a monoid Module Prerequisites under multiplication, under addition Module over a ring Attendees need a good Groupoid As an abelian group foundation in mathematics A category where every map is invertible Representation of a group with some previous Similar to group but with binary operation Module over a monad algebra experience. replaced by partial function Algebra Groupoid compared to equivalent relation Distinct terminology from algebra theory Partial equivalent relation (PER) Algebra over a field Ring Associative and non-associative algebras A (mathematical) ring is a set with two Quaternions as an algebra binary operations (similar to addition Practical Applications and multiplication) Where might algebraic structures be Representing a ring as a triple applied for practical benefits? Properties of rings Exploring sample applications Ring theory One Day Intensive Training Course For Senior Knowledge Professionals

Linear And Multilinear Algebra Concepts, Vector Spaces, Matrices, Determinants, Eigenvectors, Tensors, Applications “Linear algebra is the study of linear sets of equations We cover matrices and their many characteristics in and their transformation properties” [link]. We see depth, as they have been widely studied over the years linear algebra having widespread practical uses in fields and many useful theorems have come to light. This such as AI, computer vision, 3D graphics and course also investigates multilinear algebra including animation, along with many areas of engineering, the use of tensors, which we see having growing science and the financial markets. importance. Hence the use of the term “tensor” in product names (e.g. Google’s TensorFlow, and TPUs; In this course we explore many aspects of modern linear and NVIDIA's Tensor Cores). What are tensors and algebra, starting with fundamental ideas building up to what are they considered so useful in various fields? how they can be practically used. We begin with vector This course concludes by exploring in depth how linear spaces which provide an excellent representational algebra can be implemented in programming structure for what we need to investigate. frameworks. Contents of One-Day Training Course Overview of Linear Algebra Eigenvectors & Eigenvalues Theoretical and practical applications of Reasoning about transformations linear algebra Uses for stability analysis etc. Role of linear algebra in AI, 3D, elsewhere Matrix diagonalization Number of ways of representing linear Left and right eigenvectors Target Audience algebra – why we prefer vector spaces “eigen” means “proper” in German This course is aimed Vector Spaces Calculations with eigenvectors mathematicians and A vector space over a field whose An eigenvalue as a scale factor of an software engineers who elements are scalar, with a set containing eigenvector wish to become familiar elements which are vectors Multilinear Algebra with all aspects of linear Vector addition Linear algebra constructions for tensor algebra. Vector multiplication products of vector spaces Vector spaces as a way of working with p-vectors sequences, functions, polynominals Multivectors and matrices Practical uses of multilinear algebra Linear transformation Tensors Axioms for Vector Spaces A linear mapping from one set (e.g. of Prerequisites Axioms for vector spaces: scalars, vectors, tensors) of algebraic General understanding of * associativity constructs to a different one the fundamentals of * identity Role in TensorFlow mathematics and some * inverse Tensor calculations lend themselves to programming experience. * distributivity, .. hardware implementations for massively Matrices improved performance Representing and working with matrices Linear Algebra Programming Matrix multiplication Dense and sparse matrices – and their Matrix inverse differing charasteristics under Square matrix different kinds of loads Basis Gaussian elimination Determinants Applying linear algrebra to datasets Determinant of a square matrix Project Invertibility Exploring the implementation of linear Cramer’s rule algebra concepts in a programming Determinant computations framework and its use in a practical project One Day Intensive Training Course For Senior Knowledge Professionals 15

Graph Theory Representation, Storage Alternatives, Traversing, Searching, Operations, Graph Drawing, Project A graph is one of the most versatile structures in This course covers all aspects of graph theory, from mathematics with widespread research & practical uses. simple representation, to traversal and search, to We see use of graph concepts in areas ranging from the transformations, to display. Starting with simple edges knowledge graph, the social graph and in organization- and vertices (with storage as either a matrix or a linked specific graphs (e.g. Microsoft Graph). Devs are used to list [preferred for sparsely populated graphs]), we graph terms such as the “object graph” or the “call investigate how to build, transform and present graphs. graph”. Graph databases are becoming very popular. Anywhere you see the work “network” in industry there We explore how to efficiently handle large graphs with is a mathematical graph lurking underneath. Because of a keen interest in high performance. This course also its popularity, we even see use of the “graph” term covers graph drawing (a surprising complex topic in its where it shouldn’t be – e.g. GraphQL (which is neither own right). We conclude with a project to build a graph graph-based, nor indeed, a query language). engine. Contents of One-Day Training Course Overview of Graph Theory Graph Properties Part of discrete mathematics Shortest path No “top” or root Minimum spanning trees Overview of graph concepts Traveling salesman Target Audience Vertices and edges A Tree As A Kind Of Graph This course is aimed Introduction to Graphs Every tree is a graph, but not reverse mathematicians and G = (V, E) Binary search trees developers who wish to where V is a node set and E is an edge set Subtrees become familiar with the Simple graph Graph As Network Flow theoretical and practical Multi-graph Networks appear throughout engineering, usage of graphs in a Common operations on graphs science, business and daily life – how to variety of scenarios. Basic terminology best represent as graphs Directed (digraphs) vs. undirected graphs Max flow / min cut theorem Traversing A Graph Interacting with networks as graphs The visitor pattern Graph Data Structures Prerequisites Ensuring each node is visited Adjacency matrix vs. adjacency list Attendees need a good Weighted graph (e.g. assign a “cost” to How to optimize for large graphs foundation in mathematics each edge, to influence selected path) Indexing and programming, as this Searching A Graph Improving storage on hard disk course will be covering Breath-first search Graph Databases graph-related ideas from Depth-first search Review of how graphs are handled by a both disciplines. Dealing with cycles graph database Graph Operations Querying possibilities Attendees need to be Graph composition: merge points to be Sample usage familiar with one based on identity of edges Graph Drawing programming language. Subsumption How to automate placing graph constructs Any will do, as in the Node selection on a planar surface hands-on labs they will be Edge contraction The crossing number developing a graph library Types of Graphs How to improve automated layout in that language from first Connected graph Project principles. Bipartite graph Creating a custom graph engine to store Complete graph and interact with large-scale graphs Regular graph efficiently One Day Intensive Training Course For Senior Knowledge Professionals

Technology / Code School Modelset ● Domain Driven Design ● Semantic Models ● UML ● Design Patterns ● Advanced Data Structures Assembly ● x86-64 Assembly ● ARM Assembly ● WebAssembly And WASI IR ● .NET IL Compiler ● C 18 ● C++ 20 ● C# 9 ● TypeScript ● The Java 16 Language ● Python ● The Go Language ● OCaml Functional Programming Proof Assistant ● Coq Proof Assistant Shell ● PowerShell 7 ● Bash One Day Intensive Training Course For Senior Knowledge Professionals 17

Domain Driven Design Ubiquitous Language, Entities, Aggregates, Events, Services, Repositories, Contexts, Strategic Design Every enterprise application has a domain – the actual central pillar of their project development strategy. Its area where the application delivers business value to substantial benefits become very clear on larger projects real users. The database, user interface framework, and on projects that evolve over many iterations. This messaging infrastructure, etc. are just tangential to what course explores all the patterns that underlie domain the application is really about. In the past, engineering driven design with the goal that at the end of it, teams concentrated so much on SQL database tables attendees will be fluent in DDD and can move from and GUI form layout that the handling of the domain being participants in, to contributors to future projects was swamped and lost in the mix. that incorporate an important domain model. What’s above (e.g. the UI) the domain model and what is below In contrast, modern software engineering teams rightly (e.g. database, messaging) may well change frequently place much greater focus on the domain layer of the over iterations, but the domain layer itself will have project and incorporate domain driven design as a longevity, so it is extremely important to get it right.

Contents of One-Day Training Course Overview Repositories What is domain driven design? Connecting to a database (e.g. ORM) What is its role in the larger software with an aggregate access service development ecosystem Creating and calling queries Layering Role of testing Target Audience Interaction (or UI) layer Bounded Context Object-oriented Application (or command) layer What is is inside and outside the scope of developers, architects and Domain layer a domain model product managers who Infrastructure layer Importance of boundaries & multiple wish to build robust Think of the domain as the middle of a models (good fences make good neighbors) domain models as the sandwich rather than a slice of a pyramid Supple Design central core of their Ubiquitous Language Intention revealing interfaces applications. “All singing from same hymn sheet” Side-effect free functions Identifying a common terminology and set Assertions of meanings that all stakeholders can use Conceptual contours Language of the domain (so non-techies On-going model evolution can easily understand it) Strategic Design Entities and Value Objects Core domain Prerequisites Important role of identity Segregated core Good all-round experience What do we need to identify (and how) Abstract core of software engineering How do we attach values to identities Dependencies – managing relationships and product development Aggregates between large project subsystems Boundaries and associations between Large-Scale Projects groupings of entities and value objects Review of layering Controlled access Published language and internals Domain Events Extensibility State changes Flexible architecture for longer lifecycles What is happening inside the domain Handling large systems model and exposing this to outside Project Factories & Services The combined use of many domain driven Constructing and supplying entities design ideas inside a larger project – Segregating specific responsibilities including creating the domain model Integration with dependency injection and its use from other layers One Day Intensive Training Course For Senior Knowledge Professionals

Semantic Models Domain / UI / Entity Data / Security / REST / Learning / Extensibility / Admin / Deployment Model [Detailed Intro] Imagine a dev team has mastered core security, admin, deployment, etc.) and these are technologies and building on that solid foundation, now grounded in a “single truth” of the source code which needs to design a next generation solution – how do ensure all models work together. they go about it? If you team is in this situation, this advanced course is what you need. Looking beyond the For a new solution, we need to examine what is technologies, this course examines how to develop required to design and build each of these models so cutting-edge solutions that are of production quality, that the integrated end result delivers upon the commercially competitive and feature all the “-abilities” expectations. Modern developer technologies allow us your customers demand (scaleability, testability, to be highly creative and more productive in how we go manageability, usability, reliability, ...). The central idea about designing web solutions. However, using them all is that software development revolves around a series of together is somewhat of a challenge and this course semantic models (domain, entity data, user interaction, carefully explores how to proceed. Contents of One-Day Training Course Model Driven Development Deployment Model Q: Assuming we know the very latest Get the bits deployed is important (on technologies and , how do we go average, 50% of support calls relate to this) about designing next generation solutions? Treating deployment as first class feature A: Using a series of semantic models Administration Model Target Audience Domain Model Different levels of users Advanced software Domain Driven Design Administrative features architects and senior Handling complexity Support Model software engineers who Central role of the Domain Model What happens when a user has a problem wish to design cutting- Evans' patterns for Domain Driven Design How can software help with support edge solutions using the – Ubiquitous Language, Entities, Instrumentation for support latest design ideas. ValueObjs, Intention-Revealing Interfaces, Education Model Services, Repositories, Layered Arch, ... Often an afterthought, the education model Entity Data Model is how users/admins learn to use the app How we bind objects and relational data It is crucial to on-ramping of new users and Creating data models & abstractions the amount of (costly) support they need Using entities in other parts of app Test Model Prerequisites User Interaction Model Unit tests, load tests, security tests, ... It is essential that Thinking past the widgets and visual Dependency injections and mocking attendees have a good all- layouts, we concentrate on what the user is Managing the testing process round experience of the really trying to achieve Intelligence Model technologies they wish to Task-focused design Extracting actionable results from various use. Making available functionality as needed information stores and making it Fluid interaction; paradigm selection promptly/easily available Security Model Extensibility Model Deciding what needs to be protected and Exposing an API to enable third parties how; verifying security of solution extend your solution – approaches How to explain your solution's security Reference Architecture model to others (e.g. security auditors) Exploring a reference architecture built on REST Model ideas covered in this course. Representational state transfer can be used Project to selectively expose the Domain Model Attendees will work in teams to develop and Entity Data Model to remote clients slice of a suitable project (they choose) One Day Intensive Training Course For Senior Knowledge Professionals 19

Unified Modeling Language UML Views of a Project, Diagramming Notation, Use Cases, Classes, Relationships, Behaviors, States, OCL UML is used by object-oriented designers to relate to each other, how they behave dynamically (both unambiguously specify an OO design, to discuss it with intra- and inter-object) and how they are delivered to other designers and to communicate it to all end-users. Software systems are becoming increasingly stakeholders - developers, end-users and management. complex and at the same time there is persistent pressure to decrease development costs and time scales, We can think of UML as a graphical design language and improve quality. for object oriented software. It has become the graphical lingua franca of object design, supported by most UML is the key to succinctly describing correct design/development tools and understood by most software architecture, and this in turn is the cornerstone software professionals. To discuss modern software of successful projects. A very important point is such among a team of stakeholders, we need to describe design needs to be sufficient without being excessive. objects – their internal static information, how they Contents of One-Day Training Course UML Introduction Finite state machine within an object “The UML is a language for visualizing, (statechart diagrams) specifying, constructing and General system activity (activity diagrams) documenting UML For Database Design the artifacts of a software-intensive The Persistent tagged value Target Audience system” (Booch et al) Storing objects in a relational database Experienced object- UML Views Generating database schemas from UML oriented architects and There are five ways of looking at systems: Object Constraint Language developers who need a User, Design, Process, Implementation OCL enables tighter specification by detailed understanding of and Deployment views adding detailed constraints to elements all aspects of UML. UML diagramming notation within object models Class name, operation and attribute, Round-Trip Engineering interface, component, package, note, Converting between UML and languages state, state transition, event, action, etc. such as C++, Java, C# UML Diagram Types UML and … Use cases, class, object (instance), Multithreading Prerequisites sequence, collaboration, statechart, Networking A good understanding of activity, component, deployment User Interface object-oriented principles Classes and Relationships Frameworks and previous OO design & The structural (static) aspects of a project UML and Agile Development programming experience. Completely defining operations/attributes Requirements, Analysis, Generalization Design, Implementation, Advanced Classes and Test, Delivery Relationships – all progressing in parallel The four ways classes relate to others Design: sufficient, not excessive Aggregation / composition How much/little design does an agile Interfaces/Components/ actually project need? Deployment How to go about creating it? Functionality as components UML as a form of sketching for devs Collaborations Complete Example Dynamic Behavior Walk through of creating a set of UML The dynamic aspects of a project diagrams for the lifecycle design of a Interaction among a set of object instances modern multithreaded HTTP web (sequence and collaboration diagrams) One Day Intensive Training Course For Senior Knowledge Professionals

Design Patterns Pattern Template, GoF Patterns, Applying Patterns, Advanced Patterns, Anti-Patterns, Pattern Extraction [Detailed examples] Design patterns capture successful compete by working more effectively to build the design experience for later reuse by the original/other software. Such advanced teams will be trained in design designers. They capture solutions that have evolved patterns and hence can aggressively leverage them to over time, in a concise and easily applied fashion. retain a productivity and quality advantage over lesser Typically they are not the “first attempt” at solving a skilled competition. As software projects increase in problem – but rather the result of an iterative design scale, cost and complexity, and involve more inter- and process by experienced designers (who have benefited intra-company relationships, there is a need to adopt from hard-learned lessons of previous projects). Teams techniques such as design patterns, to ensure use of best are under tremendous pressure to produce higher quality practices in design issues. The goals of this course are software at lower cost. One option is to ship the work to to look at a range of design patterns, to examine how to cheap offshore development partners. A better option is apply them in your own projects and explore how to to use smaller, but much higher skilled teams - who will create your own pattern catalog.

Contents of One-Day Training Course Overview of Design Patterns Pooling, tuning, managing, sharing, Simple and elegant solutions distributing, extending, scheduling Applying the concept of generics from Concurrency/Network Patterns programming to software architecture Wrapper, Component configurator, Catalog of design patterns Interceptor, Extension interface, Reactor, Target Audience Defining a Design Pattern Proactor, Async completion token, This course targets senior Documentation template Acceptor-connector, *-locking, Active software engineers and Important GoF fields (intent, motivation, object, Monitor object, architects who need to applicability, structure, participants, Half-sync/halfasync, leader-follower leverage design patterns collaborations, consequences) Enterprise Integration Patterns correctly in their own Additional fields by others Gregorgrams projects. GoF Creational Patterns Message exchange, channels, headers Abstract Factory, Builder, Factory Security Patterns Method, Prototype, Singleton How to correctly design security features GoF Structural Patterns into your software systems Adapter, Bridge, Composite, Decorator, Secure channel, Session, Role, Façade, Flyweight, Proxy Checkpoint, Prerequisites GoF Behavioral Patterns Single access point, Full/limited views Attendees require good Chain Of Responsibility, Command, Anti-Patterns OO knowledge and plenty Interpreter, Iterator, Mediator, Memento, Anti-patterns “let you zero in on the of development Observer, State, Strategy, Template development detonators, architectural experience. Method, Visitor tripwires and personality booby-traps that Applying Patterns can spell doom for your project” (Brown) Applying patterns in your projects Pattern Extraction Implementing patterns in code Finding patterns in your own projects Evolution of project over time Effort involved in extraction Design Patterns and … Optimizing and generalizing patterns eXtreme Programming Custom Pattern Catalog Aspect Oriented Programming (AOP) How development teams can build up a Agile Development catalog of patterns for their own needs Documentation Project Using Patterns Server Platform Patterns An advanced project whose architecture Patterns to satisfy competing demands uses an assortment of design patterns One Day Intensive Training Course For Senior Knowledge Professionals 21

Advanced Data Structures B-Tree, Splay, Priority Queue, Complexity, Searching, Sorting, Hashing, Algorithms, Implementation In this specialist course we examine modern data We are particularly interested in where data structures structures from a mathematical viewpoint. and mathematics meet. For example, this course explores order theory and complexity theory and brings We explore how to correctly design modern data the richness of certain mathematical structures to structures, how to implement the algorithms that common programming libraries (e.g. mathematical set interact with them, memory management, traversal, has extra useful features that are not present in common item searching and sorting, merging and splitting, and implementations of sets in various runtimes). We also lots more. We use both imperative and functional pay attention to correct usage of terminology to avoid programming styles. We also cover the wide range of misnaming – e.g. we see in C++ STL use of the term proven data structure layouts already used in industry - “vector” for something that is not a mathematical vector each with its own capabilities, challenges and (an STL vector is a mathematical sequence [dynamic recommended usage domains. array]) - it is now too late to correct that misnaming. Contents of One-Day Training Course Goals of Data Structures Priority Queue Designing data structure the right way Priority for an item Important considerations (future evolution, Sorting on that performance, compression, ..) Hashing Accessibility (random vs. sequential) Hashing plays a particular importance in Target Audience Visibility (public vs. internal functionality) many searching and sorting algorithms This course is aimed Complexity and Big O notation Examine from first principles how efficient mathematicians and Common Data Structures hashing works developers who wish to Review of common data structures from a Common Operations gain a richer understanding mathematical viewpoint Searching of modern approaches to Mathematical sequence = array Sorting data structures. Mathematical set = set Merging Mathematical morphism = map Splitting (sometimes called dictionary) Parallel access How best to implement Data Structures For Additional Data Structures Functional Programming Linked list (how to get same performance There are particular considerations to Prerequisites from singly vs. doubly linked list) designing data structures for use with Attendees need a good FIFO queue (stack) functional programming languages background in LIFO queue Immutability and versioning mathematics and Does each data structure need to be Algorithms programming. independently created, or can it be Structure independent algorithms layered on top of another (adaptors)? Applying algorithms in a uniform way B-Tree Use of iterators to traverse structures B-Tree is the most important data structure Memory for storage architectures For data structures that grow and contract Performance characteristics of B-Trees over time, need good memory management Variations of B-Tree layout Memory management and allocators Splay Tree Slab allocators Introduction to binary search tree Project A splay tree is a binary search tree Creating a custom graph engine to store Recently used items quick to re-access and interact with large-scale graphs The splaying operation efficiently One Day Intensive Training Course For Senior Knowledge Professionals

ARM Assembly Instruction Set, Dev Env, Memory, Registers, Context Switch, Control Flow, SIMD, Project ARM is a high-performance/low-power consumption It makes considerable sense for senior software microprocessor architecture from ARM Holdings developers creating system code and application code (owned by Softbank). It powers almost all of the for ARM devices to know ARM assembly. Practical world’s mobile devices (Apple, Samsung, Google), benefits include gaining maximum performance, many IoT devices and edge devices and is beginning to debugging down to instruction set level, mitigating see deployment elsewhere, such as the data center. security threats, etc. and in general just knowing what is going on with code as it executes. Learning ARM assembly is more straightforward than its main x86 rival. ARM’s simple yet powerful RISC If you wish to rapidly get up to speed on ARM software instruction set has a more modern coherent overall programming at the foundational level, then this course design, compared to the CISC x86 instruction set which is for you. It covers everything from setting up a dev has evolved in a haphazard manner over decades. environment to the instruction set to app design. Contents of One-Day Training Course Assembly Features Conditionals Issues in modern processor design Flow control opcodes, condition codes Assembly as a programming language Labels, jumps, branches (e.g. blt, beq) CPU Instruction Set Architecture (ISA) Functions Machine code, microcode & micro-ops Calling functions (with parameters) Target Audience ARM CPU Architecture Creating functions (prologue, epilogue) System software High-level processor architecture family The OS and System Calls developers seeking to get The ARM CPU’s role as part of a modern How system calls are exposed to assembly the most out of their computer system (bus, devices, I/O) Calling the OS API / error handling applications running on Memory addressing SIMD Programming ARM-based devices. ARM has a high register count SIMD features / vectorizing designs ARM mode vs. Thumb mode SIMD programming using C intrinsics and The ARM Instruction Set assembler instructions Tour of the ARM instruction set Threading And ARM Registers, cache, SIMD, float-point, etc. Reviewing of multithreading concepts Prerequisites Traps and interrupts Run to completion Good all-round low-level Tools Synchronization programming experience. Assembler, disassembler, profiler, Context switching debugger, dumper, other Security on ARM Knowledge of a low-level GNU toolset (e.g. binutils, gdb) How to mitigate exploits programming language Actual ARM system vs. QEMU Security-relevant instructions such as C, C++ or Go. Typical ARM developer workflow Countering buffer overflow Memory Management Other Microprocessor Families Previous knowledge of Memory and the ARM CPU Contrast ARM with competitors assembly programming Detailed examination of registers (e.g. PowerPC, x86-64, RISC-V) useful but not essential. Load and store (adr, ldr, stm) Interesting futuristic architectures DMA, main memory, stack pointer Project Addressing To wrap up, the attendees will be asked to Strings, Integers, Floats complete a detailed project that brings Representing numeric data types together what they have learned in the Basic mathematical calculations course. The objectives will be to optimize Strings and their operations processing performance, data throughput Storing, loading and manipulating and developer productivity One Day Intensive Training Course For Senior Knowledge Professionals 23

x86-64 Assembly Architecture, Opcodes, Primitives, Functions, Flow Control, OS Calls, C interop, Virt, SIMD, Project “What Andy giveth, Bill taketh away”. As the processor There are three real benefits to learning x86-64 folks manage to speed up the computer, the software assembly. Firstly, you can program the performance- folks invariably manage to slow it down with layer critical sections of your app directly in it, and exploit upon layer of software inserted between the application rich features such as SIMD. Secondly, you can optimize and the CPU. It is a major problem that many of today’s code written in high-level languages (HLL). With more application developers have little or no appreciation of knowledge, you can make more informed decisions what is happening “under the hood” as their code about structuring your HLL code. Thirdly, you can mysteriously interacts through all these opaque layers debug complex problems at the instruction set level. with the CPU. The solution is for developers to learn The x86 opcodes are what gets passed to the CPU to assembly for the CPU their applications use. This execute. In tough debugging scenarios the more you intensive course provides a whirlwind tour of major understand what is transpiring, the quicker you catch features of 64-bit x86 assembly. bugs. Contents of One-Day Training Course Assembly Features The OS and System Calls Common aspects of assembly How system calls are exposed to assembly Assembly as a language Calling the OS API Opcodes Error handling CPU Instruction Set Architecture (ISA) C and Assembly Target Audience Microprocessor Architecture Passing data from one to the other This course target Machine code, microcode & micro-ops How C code is accessible from assembly experienced software The CPU’s role in a computer system How assembly is accessible from C developers who wish to The bus, devices, I/O, addressing Inline assembly learn about x86-64 The x86 Instruction Set Optimization assembly, so that they can What makes up the instruction set? Understanding the cost of each instruction code in it directly and so Registers, cache, SIMD, float-point, etc. Reducing the number of instructions that they understand how Traps and interrupts Using more appropriate instructions their high-level languages Application structure Stream Computing actually execute, to help Tools Vector programming with debugging and Assembler, disassembler, profiler, Single instruction, multiple data (SIMD) optimization. debugger, dumper, other Opcodes for SIMD Integers And Floats Highly efficient for certain workloads Representing scalar and floating numbers Virtualization Basic mathematical calculations Hypervisor Strings Doing virtualization in software String operations Modern on-chip virtualization Prerequisites Storing, loading and manipulating Working with virtualization in assembly Good experience of Conditionals Impact of 64-bit software programming. Flow control opcodes Lengthening the registers Labels, jumps, branches Address space changes No previous assembly Functions Other Microprocessor Families programming experience Calling functions Contrast x86-86 with competitors required. Creating functions (e.g. PowerPC, ARM, RISC-V) Parameters Interesting futuristic architectures Executable Formats Project ELF (Linux) and PE/COFF (Windows) Developing a high-performance custom How assembly is placed inside executable solution in x86-64 assembly One Day Intensive Training Course For Senior Knowledge Professionals

WebAssembly And WASI Embedders, Modules, WABT, Primitives, Functions, Linear Memory, Tables, Control Flow, JS API, WASI All the major browser vendors - Google, Mozilla, specialist embedders include the OCaml based spec Microsoft and Apple - have cooperated to define an interpreter and the C++ based WABT interpreter and agreed standard called WebAssembly that specifies how Fastly’s Lucet. WebAssembly modules are binary, low- an executable looks like for embedders to execute. level (e.g. support 64-bit integers, unlike JavaScript), WebAssembly allows you to run code written directly and are very fast both to load and run. Support for in assembly or in a high-level language (e.g. C/C++) calling WebIDL- defined APIs (e.g. the DOM) will be compiled into assembly in a browser without plug-ins. added in future. WASI provides a system interface.

WebAssembly is a virtual Instruction Set Architecture Web developers with requirements for very high that runs in an embedder. Currently the most popular performing applications will benefit from exploring embedder is the modern standard and on WebAssembly as it the basis for considerable industry the server the latest Node.js 16 supports it. Other more innovation and has wide cross-browser support. Contents of One-Day Training Course WebAssembly Overview Linear Memory Part of the modern Handling strings in linear memory Designed for the web (security, etc.) Memory imports and exports Tour of WebAssembly concepts Data section WebAssembly Modules Structured Control Flow Target Audience Binary files with .wasm suffix Hierarchical targets Developers wishing to get Can be written by hand (assembly Don’t jump to specific address, rather the very best performance programming) or compiled from C/C++ move up levels in hierarchy out of their web browser Overview of assembly syntax block/loop/if/else/br_table opcode and web server code S-Expressions Tables Embedder Indirect function calls and security Role of embedders Tables and the call_indirect opcode Embedding in web browsers Table imports and exports Embedding on server (e.g. Node.js 16) JavaScript API Prerequisites Spec and WABT interpreters Think of a WebAssembly module as a Knowledge of C/C++ Custom embedders in your applications low-level representation that is passed to /JavaScript/TypeScript WABT – WebAssembly web browser for internal/local compilation with some background Binary Toolkit Calling from JS to wasm / wasm to JS experience of working Low-level CLI tools to work with Module Binary Format with assembly wasm modules Binary format with well-defined layout Assembler, disassembler, interpreter, Sections are either named or indexed linker, extractor etc. Extensible – can add custom sections Primitive Types LEB128, opcodes, .. Just four!! WebAssembly Threads - i32 / i64 / f32 / f64 How threads and webAssembly interact Working with primitives Shared state via shared array buffer Primitive operations Future Enhancements Functions Future enhancements coming in areas such Defining and calling functions as SIMD, exceptions, garbage collection Function parameters and return value and synchronization The call opcode WASI The start function The new WebAssembly System Interface Importing/exporting functions carefully defines a portable system API One Day Intensive Training Course For Senior Knowledge Professionals 25

.NET Intermediate Language (IL) Stack Engine, IL Fundamentals, Metadata, IL Syntax, Opcode Injection, Building Compilers, Reflection Intermediate Language (IL) is .NET’s low-level This course covers all aspects of IL, including the platform-independent representation of an executable. opcodes, metadata, assembly syntax, compilation/de- Many .NET developers are content to write high-level compilation tools, binary file format and .NET’s code in an IDE and then compile/run it, oblivious to IL. reflection (which provides classes to browse existing More advanced developers and those with specialist assemblies and to emit assemblies directly). We also needs are more ambitious – they wish to program examine usage scenarios, such as building your own directly in IL, to browse and edit the IL generated for compiler and code generation tools. them by high-level language compilers, to auto-generate source code from other logical representations, to create Attending this course will allow you get a jumpstart on compilers, and to really know “under the hood” how understanding all aspects of .NET IL, to produce a code runs when using high level languages (to help variety of code manipulation functionality and gain a optimize performance, aid more precise debugging,etc.) much better appreciation of how .NET code executes. Contents of One-Day Training Course Review of CLR Issues Other IL Features Assemblies & modules, how code Unmanaged code executes, security issues, type loader Exception handling/events/delegates CLR architecture from IL viewpoint Programming with IL Stack-based execution engine Writing more complex programs in IL Target Audience IL Fundamentals Coding issues to be aware of This course will interest Overall IL Model Object interactions in IL advanced .NET developers Verbose/compact IL Profiler API who wish to code directly JIT compiler The unmanaged Profiler API allows you to in IL, or who need a richer Hello world in IL add custom code that will be called when understanding of how their IL Tools the CLR is about to JIT IL code higher-level code executes, Ilasm.exe, Ildasm.exe You can change the IL on-the-fly or who need to create code Ngen.exe, PEVerify.exe Code Interactions generators and specialist Introduction to Structure of IL Coverage of why and how one might wish developer tools. PE/COFF headers and sections to programmatically interact with code Metadata tables Overview of required code services Manifest Reflection Managed code representations System.Reflection namespace Metadata Fundamentals Dynamically loading & invoking types Set of tables with very detailed data about Browsing contents of assemblies Prerequisites contained code; Table types and uses Emitting In-depth knowledge of Advanced Metadata System.Reflection.Emit.*-Builder classes C# 9 and all round Important tables (ModuleDef, TypeDef, Emitting persistent & transient assemblies experience using the MethodDef, FieldDef, AssemblyRef, .NET Native and IL .NET CLR ModuleRef, ClassLayout, NestedClass .NET Native – concepts and toolchain Types, Fields and Methods Converting from IL to native code Experience of language The IL instruction set Building Custom IL Tools design, compiler creation Use of IL language constructs Coverage of why and how to and low-level code How code from high-level .NET programmatically interact with IL code manipulation useful languages appears in IL Overview of required code services Advanced Types Project Signatures, visibility, inheritance, ctors How to integrate IL modules in your own Primitive/native/managed types custom project One Day Intensive Training Course For Senior Knowledge Professionals

Coq Proof Assistant Overview, Setup, Inductive Types, Standard Lib, Tactics, Automation, Extraction, Project Among future-thinking software engineers worldwide proof assistant with a thriving open-source project with there is considerable interest in creating verified a vibrant ecosystem and excellent documentation software based on rigorous mathematical specifications. (e.g. Pierce et al. and Chlipala). Among modern mathematicians having to deal with increasingly complex constructive mathematics, the idea Coq is based on the Calculus of Inductive Constructions of using computers for verified proofs is gaining and has attracted many innovative ideas as to how best traction. Recent proof assistants (e.g. Coq) provide the represent proofs and their “execution” by computer. necessary tooling for both, as they are variations on the same theme (propositions as types/proofs as programs). The idea of proof assistants will play a central role in mathematics and software development in the 2020s. Initially created by France’s leading research institute, This intensive course brings mathematicians and Inria, Coq is now the world’s leading in-production developers up to speed on what they need to know. Contents of One-Day Training Course Coq Overview Tactics What is a proof assistant and what does “The tactics implement backward it actually do? reasoning. When applied to a goal, a tactic How does a proof assistant work? replaces this goal with the subgoals it Intro to Coq and other proof assistants generates. We say that a tactic reduces a Target Audience Tour of Coq features goal to its subgoal(s).” [link] Future-focused Coq Dev Setup Automation mathematicians and Tooling needed to work with Coq auto tactic for proof search – tries to solve software developers who CoqIDE the current goal wish to explore coqdoc The Ltac tactic language mathematical proofs and make system eapply – apply with existential variables verified programming as if Documentation resources eauto – a general auto tactic they are the same Intro to Coq Programming Coq Standard Library The Gallina specification language Coq has a comprehensive standard library Simple types (enumerations, booleans, with functionality related to logic, algebraic natural numbers, ..) structures, bools, number types, relations, General layout of a Coq program sets, strings, Unicode and lots more Control flow Extraction Prerequisites Functions To execute code, do not need entire Coq Knowledge of functional Require Import command specification, use simpler representation programming in any Induction Hence extraction is the process of creating functional language (as Creating a simple inductive type code in a functional language to run Coq can be considered an Using enumerations The Extraction command advanced form of a Pattern matching Multiple target languages (OCaml, Haskell) functional language). Proving properties Internals Logic Coq source written in OCaml Easy to represent mathematical logic in How does Coq work under the hood Coq – implication, conjunction, Exploring how extraction works in detail disjunction, negation Project Working with Combinations This course concludes with a two-part Lists, sets and maps project requiring: Finite variations of these * using Coq to provide mathematics proofs Relations * using Coq to write functional software One Day Intensive Training Course For Senior Knowledge Professionals 27

Fundamentals Of Object Programming Modern OOD, Design By Contract, Reusability, AOP, MDA, Design Patterns, Software Failure, Generics Object oriented techniques has now been applied to a and polymorphism?” The goal of any OO project is to large number of projects with a varying degree of produce the best software for as few resources (time success. With a better understanding of where the real /money/devs) as possible. The software should evolve benefits lie, object technology is being continuously well in the future and adapt to changing needs. Parts of refined and improved accordingly. This training course the software should be reusable on other projects. It brings software developers - who already have a should behave robustly when it encounters errors. working knowledge of the basics of OO - up to speed with modern object-oriented design and the evolving You will benefit from attending this course by gaining a OO programming techniques and enables them to clear understanding of the very latest object technology discover how to use objects successfully. It answers the concepts, understanding its vocabulary and identifying question: “What is happening in the OO world, beyond how it fits into the broader picture of s/w engineering the fundamentals such as inheritance, encapsulation when describing how to approach software tasks. Contents of One-Day Training Course Object Modeling Design Patterns Why do we need to model? The essence of a good project is not in its What benefits does it produce? codebase but in its design Object technology involves a series of A good design is far more reusable than a simple concepts – why is it so difficult to good piece of source code Target Audience really get right? Design patterns are a technique of Software engineers Design By Contract capturing design experience for later wishing to learn about the Design By Contract concepts reuse by the original and other designers latest advances in object- Preconditions/postconditions/invariants Software Failure oriented concepts Object Discovery Identifying failure points How do I find the appropriate objects Catching, reporting and reacting to failure Object discovery techniques Importance of handling failure within OO Is this one object, two objects, or none? Generics Modern OOD Type-independent programming Getting the class and instance structure Generics in various languages Prerequisites right. The importance of typing and ADT. Agile Modeling Some previous OO Meyer’s Software Construction Principles: Problems with “heavy-weight” processes software development and Linguistic Modular Units AM is a family of light-weight processes, general application design Self-documentation suitable for demands of fluid projects experience. Uniform Access Modeling the AM way Open-Closed eXtreme Programming (XP) Single Choice XP Principles: pair programming, integrate Reusability & test every day, continuous feedback, How to reuse objects get to running code ASAP, evolutionary Design for reuse design, managing communication Managing reuse Latest OO Ideas Aspect Oriented Programming Orderly vs. Experimental Engineering What are aspects AntiPatterns Reuse through the callstack time Setting up the call environment with AOP Designing for continuous change MDA Case Study Concept of Model Driven Architecture Detailed case study showing how to apply How to apply MDA advanced OO concepts to a project One Day Intensive Training Course For Senior Knowledge Professionals

C 18 Data Types, Functions, Conditionals, Pointers, Functions, I/O, Structures, Pre-processor, DLLs C is available on virtually every form of computing In this course all the main C programming concepts are hardware and for every OS. C libraries are callable from covered. This includes flow control constructs, pointers, almost every high-level programming language (this is functions, the pre-processor and typedefs along with the needed because the API to most OSes is in C). importance of data-types, type safety and custom Applications seeking close-to-the-metal performance structures. Compiling, linking and debugging multi-file need to be written in C. Most kernel and device driver applications are covered with demo code that evolves development is in C. The syntax of custom languages from simple ten-line utilities to large-scale projects for GPUs (shader languages) and FPGAs are C-like. involving multiple developers (e.g. libraries & header files). As well as covering the syntax of the C language, Hence every developer should know C and know it we also cover how to use the important C standard well. What you learn on this intensive training course library (e.g. I/O) and explain how to use C effectively in will be applicable on all these target platforms. app development. Contents of One-Day Training Course Overview of C Functions in Detail C evolution – K&R, ANSI, C99, C11, C18 Function prototypes Whirlwind tour of features of C Variable arguments lists Hardware issues (e.g. volatile) Functions in separate files (.c and .h files) A Simple Program Pointers and Arrays Target Audience Freeform language Handling arrays and array arithmetic This training course is Data types and variables Pointers to standard data & custom structs aimed at software Constants, functions, comments, layout Function pointers (defining/setting/calling) engineers who need to Variables and Data Types void vs. void *, use of restricted modifier quickly get up to speed Simple data types, naming and size Pre-processor developing in C. Strings - char and wchar #include, #define, #ifdef and #endif Security and buffer overflow issues Concatenation/stringizing/varidic macros Enumerators Dynamic Memory User defined structures and unions malloc, free, realloc; costs of memory ops Static and global variables Examples of dynamic memory usage Visibility of global variables C Standard Library Prerequisites Intro to C Functions Standard I/O, file I/O Attendees must have a Splitting features into functions Assert, math, conversions, time programming background Small and self-contained chunks of code Compiling, Linking, Debugging but no experience of C A multi-function C program Role of modules and compilation units required. Operators Constructing apps and libraries from code Arithmetic & relational operators in multiple files ‘=’ and ‘= =’ Building, linking and debugging Increment and decrement operators C11 [major]/C18 [minor] Bitwise operators Tour of new features of latest standard Flow of control Anonymous structs if / if else / for loop New C threads and stdatomics header files switch/case Project while Object-based C - let’s build OO in C with break and continue inheritance (tree of anonymous structs), Non-Local Jumps encapsulation (redefining structs), Practical uses of non-local jumps exceptions (using setjmp/longjmp), setjmp and longjmp namespaces, RTTI, generics, etc. One Day Intensive Training Course For Senior Knowledge Professionals 29

C++ 20 Classes, Inheritance, Visibility, Templates, RTTI, Exceptions, Namespaces, Class Hierarchy Design This course provides developers with an intensive object programming techniques that are evolving, such introduction to programming in C++, together with an as genericity and refactoring. Also explored is the overview of its powerful standard library. C++ is a optimum architecture for modern C++ class hierarchies, general purpose programming language, highly suited the latest C++ standards (C++14, C++17, C++ 20) and for objected oriented and generic application, interaction with C code. We specifically explore the component and systems development. It is used for interesting new C++ 20 features. advanced, complex, full functionality projects. It is fast – and often selected where high performance coupled A core competency of all software engineers is to be with a rich object-oriented language is needed. having completely mastery of the programming language they use. If you are currently a programmer Above and beyond the new syntax aspects of C++, this moving to a new C++ project, then you will greatly course also examines how to profit from a range of new benefit from attending this course. Contents of One-Day Training Course Tour of C++ Features Exceptions Primitives Benefits, costs and recommendations Flow control associated with C++ exception handling Enumerations Families of exceptions Preprocessor Throw-try-catch syntax Target Audience Compilation Declaring exceptions in header files This training course is Classes Namespaces aimed at who need Class members and this ptr Avoiding naming conflicts to quickly get up to speed Visibility – public, protected, private The std and other namespaces developing in C++. Constructors and destructors Creating & using your own namespace static RTTI Inheritance Run Time Type Information Superclass and sub-classes Exploring objects + their types at runtime Constructors and the inheritance hierarchy Refactoring Impact of the virtual keyword Software grows and changes Prerequisites Multiple Inheritance Sub-optimal solutions evolve Attendees should be Benefits and problems Refactoring is a set of coding best experienced software Which function is executed practices which aim to fix & improve developers with a good The diamond and vtbl issues C Code Interaction knowledge of any high- Templates How C++ code can call C code level programming Function templates How C code can call C++ code language. Class templates extern C Function specialization Design of C++ Class Libraries No previous experience of How to write code once and then use it Classes are seldom needed on their own C++ programming with a variety of data types How groups of classes can cooperate required, as this course Debugging template code Designing hierarchies covers the language from Designing with genericity in mind Optimally placing data and functionality the fundamentals up. Lambda Expressions Advanced Language Features What problem are these trying to solve Temporaries/ Header file changes Unnamed functions New keywords: mutable, typename, etc. Expression syntax Smart pointers:rationale & how to use Writing code that accepts lambda Potential problems to avoid expressions C++20: What’s coming soon One Day Intensive Training Course For Senior Knowledge Professionals

The Java 16 Language OO, Classes, Inheritance, Interfaces, Generics, Annotations, Exceptions, Events, Modules, JNI With a much improved standards update cadence there Some of the largest enterprise projects in the world are is re-invigorated interest in advancing the Java language written in Java. These are multi-year projects that are and ecosystem, by Oracle and external teams using and vital corporate assets and need to continuously evolve contributing to Java’s evolution. well into the future. Java is an important language for many university courses. Many high throughput cloud The Java 16 Language is a powerful object-oriented platforms are written in Java. The main language for language with modern features such as the Java Android is Java. Plenty of cutting-edge open source Platform Module System, lambdas, generics and projects are written in Java. In addition to existing annotations and a comprehensive set of OO features projects, Java is also being regularly selacted as the such as classes, inheritance, interfaces and exceptions. main language for all kinds of new projects. Hence now is an ideal time to learn Java well – starting with the language itself. Contents of One-Day Training Course Java - Language & Ecosystem Interfaces & Mixins Review of the ecosystem surrounding the Defining behaviors via interfaces Java language and how it is evolving Implementing multiple interfaces Features - language, VM, bytecode, Uses for interfaces runtime services, framework, tooling Default methods Target Audience What’s new in Java 16 How to provision mixins using interfaces Software developers A Java Project Walkthrough Exceptions wishing to become Java Simple hello world project Basic exception handling developers, starting with Main and command line args Creating an exception learning the language Primitive data types Throwing and re-throwing itself. Code layout & basic syntax Catching an exception Classpath / JAR files Event Handling This is an ideal first course Classes And Constructors java.lang.EventObject in Java. Simple class definitions Observer and Observable Static vs. instance members Creating event listeners Access modifiers Lambdas Variety of constructor layouts Lambda expressions Nested classes Quick and easy way to define a method Prerequisites Inheritance Arguments and body Programming experience Inheritance trees Designing code using lambdas with an OO language such Extending classes Java Platform Module System as C++, TypeScript or C#, Overriding / hiding A named set of packages along with good exposure Generics Module keyword to object-oriented design. Generic functions Organizing modules Different invocations JNI - Calling C Code No previous experience of Generic types (type variables) JNI – Java Native Interface Java is needed, as this Shadowing Calling out to C code from Java course covers the language Constraints Passing parameters and accepting returning from the fundamentals up. Annotations results between different languages We often wish to attach additional data to Java Project a class -without impacting the inheritance Developing a Java project using a selection hierarchy of language features showing how they Java annotations allow use of metadata can sensibly be used together One Day Intensive Training Course For Senior Knowledge Professionals 31

C# 9 C# Fundamentals, .NET Fx Intro, Types, Classes, Attributes, Properties (init-only), Generics, Streams C# 9 is the premier development language for the .NET C# can be used to develop stand-alone apps, local and platform. C# was designed from scratch with .NET in distributed components, web services and mobile code. mind. Most of the internals of .NET 5 and Visual Studio It produces code that can target desktop PCs, mobile are written in it. It has been selected by the majority of devices, servers and IoT devices. C# 9 can be used for application teams creating commercial .NET 5 projects. DB [EF 5], UWP, ASP.NET, WebAssembly (Blazor) & C# builds on the rich common heritage of languages security projects. Hence it is an excellent all-round such as C++ and Java - but avoids their pitfalls and adds development language for all .NET applications. This certain interesting new concepts, such as LINQ. There intensive course aims to take experienced software are aspects of C# that developers already know, there engineers rapidly through all the major aspects of C# 9 - are some they have experienced similar but slightly using plenty of demo source code and hands-on labs to different syntax in other languages, and some that are show it in action. This is an ideal first course for those innovative. moving to the C# 9 language and .NET 5. Contents of One-Day Training Course C# 9 and .NET 5 Delegates And Events What is .NET? Equivalent of function pointers The Base Class Library Defining and exposing delegates The CLR Registering an interest in a delegate How C# is used with .NET Async info with events Target Audience Delivery of C# functionality in assemblies Design pattern for event handling Experienced software A C# Project Walk through Interfaces engineers wishing to Solutions, projects and files When to use interfaces rapidly get up to speed Parts of a C# project Multiple inheritance & hierarchies with C#. Structure of code Abstract classes vs. interfaces Setting up a solution with a C# app and Exception Handling class library Try .. catch … finally Base Types Detecting and responding to exceptions Built-in data types Strategies for exception handling Prerequisites .NET value types and reference types Generics & Constraints Programming experience How C# and .NET data types compare Generics (for methods and classes) with an OO language such Building code in C# that is callable from Constraints / Partial types as C++, TypeScript or other languages Anonymous methods Type inferencing Java, along with good Language Fundamentals Expression Bodied Members exposure to object-oriented Main starting point Succinct member definitions design. Flow control, operators Methods, constructors, properties, indexers Variables, methods Specialist Features No previous experience of Enumerators, bit flags, arrays, indexers Null conditional operator C# or .NET is needed. This Namespaces Auto-property initializer / nameof is an ideal first course for Class Fundamentals Calling C Code those wishing to start in Members, constructors, visibility, ref and Calling out to C code from C# the modern .NET out, constant fields, structs Passing parameters / accepting return val ecosystem. Fields & properties, methods, nested types Records Inheritance A record is structured immutable data This course covers C# 9 Single inheritance only (for classes) New data keyword using Visual Studio 2019. Virtual functions / override / new C# 9 - What’s new with-expressions [C# 9] Review of the latest additions to the C# Designing libraries using inheritance language and what benefits they deliver One Day Intensive Training Course For Senior Knowledge Professionals

TypeScript 4 Object Foundations, Classes, Mixins, Generics, Specialist Types, Iterators, Ambients, Lib.d.ts For modern larger-scale applications that target the generics, decorators, interfaces, mixins, additional tools, JavaScript VM, either in browsers (e.g. Angular 12) or ambient type declarations and lots more. This is on the server and command-line tools (Node), or mobile convincing more and more project teams to adopt it as apps (Ionic) or desktop apps (Electron), many senior their core programming language. We see it use developers have a desire for a more robust and internally with Angular, Zone.js, RxJS, NgRx and many comprehensive programming language compared to commercial applications (including very large ones). JavaScript; and TypeScript is the answer. The aim of this course is to quickly bring you up to TypeScript is a JavaScript-like language that transpiles speed with programming in TypeScript. We explore the to JavaScript so can run anywhere JavaScript runs. In language syntax, its access to libraries, how to build addition to everything the JavaScript language offers, applications and see why it is more and more being TypeScript also offers a much richer type system, selected instead of JavaScript by senior web developers. Contents of One-Day Training Course TypeScript Introduction Namespace & Modules Relationship to ECMAScript standards Modules as a unit of delivery and unit of Language tour code management What we should be familiar with and Importing and exporting what Sub-dividing module types in namespaces may be new to us (any, never, tuple) Use in conjunction with module naming tsconfig.json and transpiling Iterators & Generators Object Foundations Symbol.iterator and for..of Type system hierarchy Generator function Type inferencing Specialist Types Visibility and immutability Intersection type Target Audience Object Types Union type Developers wishing to Duck typing Nullable create modern apps using Type system Alias TypeScript ObjectType definition Reflection/Decorators/Metadata Properties and accessors Attaching metadata to a class Call signatures Using decorators Tuples The reflect-metadata package Prerequisites Classes, Interfaces & Mixins Ambient Declarations Software developers with Defining a class Interacting with non-TypeScript libraries an object-oriented Constructors and use of @types with npm background and some Inheritance Writing and publishing .d.ts files browser programming Specifying an interface Ambient syntax experience. What happens to interfaces after lib.d.ts Standard Library transpilation (they disappear!) A modular collection of ambient Partial or full implementation of interface declarations for various targets Additional construct which can be very New for TypeScript 4 useful in certain circumstances Exploring the new features of TypeScript 4 Generics and Constraints – including variadic tuple types, labelled Type-independent code tuple elements, class property inf and more Separating algorithm from types Project Constraining permissible type parameters Using TypeScript in a project Relationship to transpiled code to build a modern flexible framework One Day Intensive Training Course For Senior Knowledge Professionals 33

The Go Language Goals, Workspaces, Go Type System, CGo, Packaging, Concurrency, Remote Repositories The Go Language (GoLang) is a next-generation We cover creating Go commands and libraries, package system programming language that is rapidly growing management, interaction with repositories, structural in popularity. Many wildly successful commercial and typing. We look at Go’s rich range of system packages. open-source projects such as Docker and Kubernetes We see how lack of classes and inheritance is not a are written in Go. It is appreciated for a range of problem. We explore the use of Go in a range of popular innovations, such as built-in concurrency including its projects and see what real-world benefits it brings to channel architecture, simplified tooling, sensible system-level programming. conventions, and lots more. This course is aimed at experienced developers and brings them quickly up to Go is the language of choice for modern low-level speed programming Go and being able to understand work and it is increasingly being selected by cutting- and enhance existing Go source trees and being able to edge system developers for their most challenging build their own. projects. This course helps each attendee become one. Contents of One-Day Training Course Go Introduction Constructs What problem set is Go trying to solve? if and if-else statements Target Audience A sensible evolution of C for loop / defer statement Developers wishing to Excellent for system programming switch (how break is different) create modern system- Setting up Go on your dev machine ("C's while is spelled for in Go" !!) level applications using the Tour Of Language Features Grouping of Data Items Go language. Goroutines Arrays and maps Packaging Slices Building Structs and pointers Functions as first class citizens Types and Their Interfaces Prerequisites Interfaces and structural typing Methods – functions with a receiver arg Software developers with Lack of classes; no inheritance Interfaces define sets of methods an object-oriented and Workspace Management Concurrency system programming The Go workspace is how code is Concurrency primitives built into Go itself (e.g. concurrency) managed goroutines and channels background. Naming and file placement conventions Synchronization Handling packages Testing Knowledge of C or other Building & using commands and libraries Go has a built in testing system system-level language is a Role of $GOPATH Test preparation plus. go build vs. go install The testing package Creating / importing packages / exports Executing tests with go test Go Type System CGo – Calling C Code Notes bools, strings, ints, runes (codepoints), Most OS APIs are written in C All samples and labs in floats, complex Need to call them and other C libraries this course use Go 1.15 - Zero (default) values How the pseudo-package C works the very latest production Conversions How Go and C code can interact release. Type inferencing Remote Packages Variables with var, :=, constants How to access remote repositories Our instructor will use the Go Functions Use of GoLand IDE; attendees go get Defining function signatures Incorporating remote repositories into app may use any suitable editor Returning more than one result they wish to select Project Named returns Review of Go usage in a larger project. Advanced function usage One Day Intensive Training Course For Senior Knowledge Professionals

Python 3.8 Language Features, OO Constructs, Framework, Pip Installers, IPython, Jupyter Notebooks, Testing Python is the world’s most versatile language. Unlike This fast-paced course covers all important aspects of other languages that tend to be really good at one area Python programming., It is aimed at multi-disciplinary but not so good at other areas, Python is really good at software engineers already experienced with object many areas. We see Python being successfully used for oriented programming using other languages. They will AI and machine learning, general application find much of their hard-earned knowledge easily development, rich shell scripting, configuration, transfers to Python programming – albeit delivered via build systems, interactive notebooks, and lots more. a significantly simpler and more compact syntax. Some of the largest technology companies in the world Invariably a given algorithm written in a different (e.g. Google) heavily use Python for their engineering language when re-written in Python will result in and production systems. Some of the latest hot smaller amounts of code, which is an excellent result technologies (e.g. Keras and TensorFlow 2) use it (after all, the best developer writes the least amount of extensively; so now is time for your team to use Python. code). Contents of One-Day Training Course Python Tour Pip What Python offers Standard installer Feature tour Pip usage What make Python different from Python Packaging Index competing languages Virtual environments Emphasis on clean syntax Python modules Language Constructs (Interactive) IPython Target Audience Common data types Interactive shell that supports a wide range Developers wishing to Control flow of Python features, from visualization to create modern apps using Loops threading to data access the very latest version of Functions Also useful for and other languages Python. RegEx Jupyter Notebook OO Programming in Python Jupyter Notebook mixes code, execution Classes: layout, methods and attributes results, visualizations and markdown The __init__() method content in a single deliverable Prerequisites Inheritance Embedding Python Software developers with Typing Many apps could benefit from a built-in practical programming Runtime Features macro language and Python is optimum experience of an object- Memory management We explore how to easily embed Python oriented languages such as Generators runtime in your custom application C++, C#, or Java. Modules Testing Multithreading & locks (threading.py) Exploring Python’s testing infrastructure No prior Python Error Handling Unit testing – what’s similar & different experience needed. Raising and catching exceptions Mocking (try, raise, except, ..) Debugging Designing with error handling in mind Interacting with C Framework Most OS APIs are written in C The Python S tand ard L ibrary offers: How Python and C code can interact – * Collections threading, memory, lifecycles, exceptions * File I/O Handling common data types & constructs * Data access Project * Network programming Using Python in a larger project to * User interface highlight its real-world capabilities One Day Intensive Training Course For Senior Knowledge Professionals 35

OCaml Functional Programming FP Concepts, OCaml Language, OCaml Tools, OCaml Library, Dune, Opam, Projects Using OCaml “ OCaml is an industrial strength programming Coq proof assistants, samples in the important TAPL language supporting functional, imperative and object- book, the WebAssembly s pec interpreter , the mirageOS oriented styles ” [ https:// oc aml.org ]. OCaml is best unikernel and Jane Street. known as a functional programming language and that is what we focus on in this intensive course. OCaml Functional programming is different from regular competes with Haskell to be the leading functional object-oriented programming. So we start by looking at language. For a number of reasons, we prefer OCaml. It FP for non-FP programmers. Then we explore all has a number of advanced features, a richer type system aspects of programming with OCaml – the language, and a more extensive system library. It is also used on tooling and system library. We also explore add-on many cutting edge projects that interest us. Examples of libraries. Our goal is to ensure all attendees are up to practical uses of OCaml include: the experimental redtt speed with OCaml programming and immediately after (based on cubical type theory) and the well established this course can be productive as OCaml developers. Contents of One-Day Training Course FP For non FP Programmers OCaml Library What is functional programming? Structure of standard library Mathematics is important for modern code Tour of main functionality areas What is a variable (immutability) Common collections Pattern matching Text handling Target Audience Handling change Threads library (modules: thread, mutex, Experienced software Pure functions condition, event, ..) developers who wish to Building more reliable code Async and deferred computation start functional Many FP ideas are seeping into other types Tooling programming using the of programming – why and how? Debugging OCaml language. OCaml Tour Testing Language basics (control flow, etc.) Lint Structure source trees and individual units Pre-processor main function-conventional/not necessary Compilation tools – (parsing, etc.) Creating functions Abstract syntax tree Prerequisites Events and callbacks Dune Attendees need prior Type inferencing Dune is OCaml’s composable build system programming experience OCaml Language Defining steps needed for build in one of the mainstream Modules (submodules) Configuration object-oriented .mli interface definition files S-Expression syntax programming languages. More detailed look at functions Compilation flags Visibility Opam Important: This course Objects and object types Opam is the OCaml package manager assumes attendees have no Classes / polymorphism / class types Package repository prior functional Type mismatch and other errors Extensive collection of pre-built packages programming experience, OCaml Runtime Managing locally installed packages so in addition to teaching OCaml runtime architecture Packaging definition file – creating and OCaml, we also cover How code executes (e.g. as native code) populating for a custom project general aspects of Dynamic linking -what’s involved in Projects functional programming. dynamically loading a library Exploring usage of OCaml in a variety of The GC open source projects that have shipped, to Foreign function interface - interacting see how everything fits together in a larger with C code (and other languages) production setting One Day Intensive Training Course For Senior Knowledge Professionals

The Bash Shell Tour, Variables, Control Flow, Functions, Builtins, History, Error Handling, Aliases, Best Practices Bash is a powerful shell environment that provides Professionals skilled in the art of Bash scripting are excellent interactive and scripting control of the significantly more productive. Knowledge of Bash is a underlying OS, installed software platforms and can be “must-have” tool in the skillset of every heterogeneous used to build and manage your own custom tools too. system administrator or developer. Though initially Bash is good for repetitive chores, setting up an popular on Unix and Linux platforms, Bash is now very environment, automating non-trivial workflows, widely available, including on macOS and Microsoft software builds and product installations. itself has added it to modern Windows (10 & Server 2019, as an optional install). With a little effort you can The goal of well-written shell scripts is to allow even get Bash to work on mobile OSes. This wide repeatable / configurable / reliable task execution. The availability is important because it means the effort you overall aim of this course is to equip attendees with a invest to learn Bash well now will pay repeated clear understanding of how to achieve that using Bash. dividends in future regardless of which OS you use. Contents of One-Day Training Course Overview Scripts What is Bash good for? Creating/calling/debugging Bash scripts Compliance with POSIX Shell Standard Sourcing – external library of functions Feature tour Job control Setting up Bash – for Linux/macOS, History Target Audience Windows Subsystem For Linux and Arranging larger blocks of script Administrators, developers Git Bash (limited) Builtin Functions and power users who wish How Bash compares to PowerShell Wide range of builtins to use the command line to Control Flow Regular expressions interact with the system if readline and to create shell scripts select / case Alias to automate such activities for Listing aliases break / continue Role of aliases Variables alias and unalias functions set and unset for local variables Error handling env Error handling in scripts Prerequisites Export to child processes Signal handling Some previous experience Processes and Command Line trap of shell usage required. Command pipeline File Handling Command line arguments How files are represented in Bash General knowledge of the Exit code and results general file I/O operating system Process architecture of executing Bash umask command layout is useful. exec command read $$ - process id of process executing shell Scripting Best Practices Functions Small chunks of script Parameters to functions Pay attention to debugging Viewing declared functions Resilience to error situations Nested functions Similar to/different from regular Job control programming Configuring the Environment Project .bashrc Explores the scripting needed for Start up scripts - profiles automated workflow for a non-trivial Login shell enterprise scenario One Day Intensive Training Course For Senior Knowledge Professionals 37

PowerShell 7 Setup, Syntax, CLI, CmdLets, Control Flow, DSC, Modules, Security, Remoting, .NET Integration PowerShell 7 is Microsoft’s latest innovative scripting PowerShell commands are best created via the and automation engine. The older versions of PowerShell extension to Visual Studio Code; they can PowerShell were based on the .NET Framework and also be created via any text editor. only ran on Windows. In contrast, the new PowerShell is based on .NET and and so can run on Windows, PowerShell has a few key concepts that separate it from Linux and macOS. Both PowerShell and .NET are open previous shell languages. It is based on .NET and its source. PowerShell is the basis for Azure Cloud Shell. syntax borrows from C#, so moving between both is PowerShell commands have a very flexible syntax and quite easy. Like all shells, PowerShell works on the can be executed immediately or stored in a script, and basis of a pipeline. Unlike other shells, what flows along later executed on the local machine or (after appropriate the PowerShell pipeline are .NET objects. PowerShell security steps) on remote machines. offers the idea of consistently named cmdlets (-: e.g. Get-Process lists processes). Contents of One-Day Training Course Tour of PowerShell Server Automation Core Ecosystem PowerShell works with many kinds Overview of all parts of PowerShell of server automation packages Installing and configuring DSC Core and DSC Resource Kit Choosing an editor Chef, Ansi b le , Puppet Target Audience Getting started with your first script Scripting in Azure Cloud Shell System administrators and Exploring main language features Security software developers CmdLets Use of SSH as protocol for PSRP wishing to benefit from the CmdLets (Command lets, as in, small Signing, execution policy, authenticode modern approach to commands) are individual pieces of PowerShell And OpenAPI scripting on Windows, functionality that can be used standalone Review of use of OpenAPI as a very Linux and macOS. or more usually combined to form larger popular definition syntax for precisely scripts – we explore how they work describing REST API Best practices for creating CmdLets Using AutoRest to generate CmdLet client Variables Remoting Think of PowerShell as a simple program WSMan -ming language, so variables needed Windows management Framework Prerequisites Scope. naming, usage PowerShell Remoting Protocol: PSRP Good knowledge of More Language Constructs .NET Extensions scripting with any similar Control flow Using PowerShell to call a environment (e.g. Bash). Functions standard .NET assembly and also Exception handling with try / catch calling into third party .NET assemblies Error info within exceptions using $_ Designing and building our own Shell Constructs custom .NET assemblies that can be used Formatting output from within script from PowerShell Accepting command line arguments Architectural guidance for how to structure Environment larger integration OS interaction Project Providers Many larger commercial server products To extend the range of data stores are now being delivered with a PowerShell exposed to PowerShell scripts, you can interface (e.g. Vmware’s PowerCLI). We create and load custom providers explore how to design something similar Architecture of a provider+sample impl for our own sample server product One Day Intensive Training Course For Senior Knowledge Professionals

Technology / Compute School OS ● Windows System Programming Using C/C++ ● Windows Multithreading Using C/C++ ● Designing Server Platforms for Windows Server 2019 Using C/C++ ● POSIX And Linux 5 System Programming Using C/C++ ● pthreads – POSIX and Linux 5 Multithreading using C/C++ ● Designing Server Platforms for POSIX And Linux 5 Using C/C++ ● Microservices and Containers Runtime ● Node.js 16 Runtime Programming Using TypeScript ● Browser Runtime Programming Using TypeScript ● Async, Parallel And Reactive (RxJS) Programming Using TypeScript ● .NET 5 CLR Programming ● .NET 5 Multithreaded And Parallel Programming ● .NET Managed Extensibility Framework (MEF) ● ML.NET ● Java 16 Runtime Programming ● Java 16 Multithreading One Day Intensive Training Course For Senior Knowledge Professionals 39

Windows System Programming Using C/C++ Using low-level Windows OS API for maximum performance, security, extensibility, flexibility This course examines how to use the Windows C API to Important features in the areas of the registry, file design and develop advanced systems-level software. systems, security and auditing are discussed. We cover The Windows C API has matured and gained a rock- the many techniques available for inter-process solid quality reputation with modern features such as communication (e.g. pipes, mailslots, RPC and threads, symmetric multi-processing, system-wide WinSock). Applications may be made run-time object model, powerful networking, asynchronous I/O extensible by the configurable loading of DLLs. and Unicode. The Windows C API is the common programmatic interface shared by all implementations Developers seeking extra performance and more of the Windows OS family. There are some differences flexible low-level control over OS system calls will in how it behaves on each OS, but it’s possible to create benefit from writing their system-level application code a single EXE/DLL to run on all OSes. The focus of this in C/C++ and this course tells them what they need to course is the API of Windows [10 | Server 2019]. know to quickly become productive. Contents of One-Day Training Course The Windows Platform Registry Windows Architecture Complete coverage of the Registry APIs Windows SDK Handling configuration data Issues of interest to app system developers SEH Overview of Windows C API Structured exception handling Target Audience Applicability of Windows C API Exception handlers System architects and Important OS functionality Termination handlers experienced developers Hardware issues DLLs who need to create Win32/Win64 on various OSes Comparison of DLLs & EXEs advanced systems using How to determine the underlying OS DLL functions / variables / memory the Windows C API. “Write to the API, not the OS” Explicit loading of DLLs using: General Architecture LoadLibrary Major OS components and subsystems FreeLibrary Layout of OS and apps on GetProcAddress Common Windows C datatypes & headers C Run-Time Library (CRT) An application developer’s view of the OS Using the CRT with Win32/Win64 Prerequisites Memory Management How the CRT is layered above the OS API Attendees must have some Flat memory structure Inter-Process Communication previous experience of Various types of alloc APIs Anonymous vs. Named pipes system-level programming Sharing memory / private heaps IPC using pipes & mailslots File System Distributing functionality using RPC File APIs Windows Networking APIs Directory handling How to programmatically talk to the net Memory mapped files Available APIs and when to use which Security & Auditing Managing network connections with WNet How to programmatically interact with: WinSock & WinInet Security descriptors A protocol-independent API Security attributes Relationship to Berkeley sockets SIDs and tokens WSA functions ACLs and ACEs Coding client and server applications Privileges Blocking and non-blocking comms WinStations Advanced WinSock Desktops Socket options /out-of-band data One Day Intensive Training Course For Senior Knowledge Professionals

Windows Multithreading Using C/C++ Threading Concepts, Kernel Obj, Processes/Threads, Synchronization, Async I/O, Debugging, DLLs [Sample: lab exercises] This course explores how to use Various higher-level design patterns may be used to the Windows C API to build sophisticated multithreaded route workitems in multithreaded servers. The optimal architectures. When designed correctly, multithreading server architecture is one active application thread per can substantially increase application performance and processor logical core. Tools may be developed to responsiveness to distributed clients and end-users. The determine which thread is blocked waiting on which Windows kernel object is the opaque foundation for resource, and the state/owner of each resource. A server multithreading – based on this are the process, thread, must efficiently multiplex many I/O requests over a few job & various synchronization objects - mutex, event, threads - which is the goal of I/O completion ports. semaphore and waitable timer – each of which targets different needs. Thread activity, lifetimes and inter- This course supplies attendees with an understanding of thread communication must be co-ordinated. Threads the concepts underlying threading, together with impact how to develop DLLs, memory and debug. experience of multithreaded development. Contents of One-Day Training Course Thread definition Thread Pools Scheduling vs. synchronization OS-managed pools of threads for Parallelism and concurrency processing timers, work-items and I/O Compute-bound and I/O bound apps DLLs and Threads Race conditions, deadlock, starvation, How threads interact with DLLs Target Audience priority inversion Serialized DllMain, shared sections System architects and Kernel Objects Robust DLL design for threads experienced developers Windows kernel objects Debugging with Threads who need to gain an in- Usage counting Querying information about running depth understanding of Kernel object handles processes/threads and their attributes Windows multithreading. Sharing handles among processes The serialized OutputDebugString API Processes Resource Management CreateProcess API & child processes Creating a custom resource browser, to Prerequisites Retrieving the exit code of a process display which thread is waiting on which Attendees must have good Job objects synchronization resource experience of system-level Threads Threads with C++ programming, on either CreateThread API & Threadproc Threads & exceptions; threads & classes Windows or Linux. The C runtime library Accessing resources using smart pointers Thread priority & processor affinity Design Issues Thread management & lifetime Single Writer/Multiple Readers, Monitor, Synchronization Once-Off Initialization,Dining Philosopher Critical Sections, Mutexes, Events, Calling legacy code from multiple threads Semaphores, Waitable Timers, Converting legacy code to multithreading WaitForSingle/MultipleObject Multithreaded Architectures The “Protect data, not code” principle Pipeline, Producer-Consumer, Memory and Threads Work-Crew Dynamic & static Thread Local Storage Master-Slave Models Heap storage vs. stack storage Create threads on demand vs. elastic pool Asynchronous I/O Multithreaded Project Overlapped, APC & Scatter/Gather Development of a complete multithreaded I/O Completion Ports, Asynchronous I/O, embedded HTTP web server that uses Overlapped, APC & Scatter/Gather I/O completion ports to efficiently I/O Completion Ports manage large numbers of requests One Day Intensive Training Course For Senior Knowledge Professionals 41

Designing Server Platforms for Windows Server 2019 Using C/C++ Installer, Service Process, Pipelines, Networking, Config, PerfMon, WMI, EIF, Patterns, HA/HT, Project Server platforms consist of a mixture of multiple If your team consists of senior developers experienced processes and threads, working in a co-ordinated with Windows and C/C++ and your team is assigned the manner, to provide some service to numerous clients on task of developing a high-quality server platform on remote machines. These platforms must be flexible, Windows Server 2019, then this is the ideal course to extensible, configurable, scaleable and controllable. A get all team members up to speed on what is needed. pipeline architecture allows extensible processing of messages. Many techniques are available for flexible It covers design concepts, important Windows C APIs, inter-process communication. Service processes are the plenty of code samples and a chance to have best way to deliver long-lived non-GUI functionality. architectural questions answered. It explores extra features (such as ETW, clean installer, PerfMon) that Building server platforms for Windows Server 2019 is will distinguish your team’s platform from the the logical choice for future-oriented projects. competition. Contents of One-Day Training Course Designing Server Platforms Multiple Processes/Threads Detecting bottlenecks Central Service (Manager) / Worker Tuning performance Processes / GUI+CLI Admin Processes Developing for Performance Counter Variety of threading architectures WMI Target Audience Service Process Windows Management Instrumentation System architects and SCM-service code interaction Management classes senior software engineers Install+config of service Exposing your server through WMI who need to create “Log on as a service” security right Management by GUI and CLI advanced server platforms Controlling worker processes Event Tracing For Windows for Windows Server 2019 Platform Installation (ETW) using C/C++. How best to install server apps Tracing architecture Installer formats and server extensions Event tracing APIs Prerequisites Platform Configuration Designing Platform Security General Windows system Rich config choices Leveraging Windows’ security features programming and Web garden/web-farm layout Defense in depth platform security especially multithreading Config changes without restarting Secure communication with remote clients experience. Pipelines Design Patterns for Server Processing paths for messages Platforms Sequential and non-sequential steps Patterns to satisfy competing demands Structure of pipeline (handlers&modules) Pooling, tuning, managing Pipeline context Sharing, distributing Dynamically loading DLLs Extending, scheduling Dynamically loading DLLs High Availability / Updating a server’s DLLs without having High Throughput to restart it Hardware for high-availability/throughput Networking ccNUMA, Interconnects High performance sockets design SAN, DAS, NAS Eliminating buffer copying Clustering concepts Async I/O & Scatter/Gather I/O Design for high availability/throughput Use of Http Server API Project Same http.sys kernel service as used Overview of development of a sample by IIS itself; Advanced HTTP protocol server platform for Windows Server 2019 support One Day Intensive Training Course For Senior Knowledge Professionals

POSIX And Linux 5 System Programming Using C/C++ Using low-level C API for maximum performance, security, extensibility, flexibility, portability This course examines how to use POSIX standard APIs Developers seeking extra performance and flexible and Linux libc-specific APIs to create system-level low-level control over OS system calls will benefit from software. POSIX defines specifications (documents) writing their system-level application code in C/C++ and operating systems (such as Linux with its libc (rather than a language that comes with a heavy library) or layered libraries (such as musl) implement runtime, such as Java or C#). This course tells them these specifications (code). POSIX is supported on a what they need to know to become quickly productive. variety of modern operating systems and so system- level application code should strive to use it as much as We explore the entire path from application code to libc possible. Implementations can (and almost always do) calls, through system calls right to the kernel where the add extra functions to the API list defined by POSIX actual functionality is delivered. We look closely at the and these extra functions provide very useful additional architecture of how the OS programming interface is capabilities, though they limit portability. exposed to applications. Contents of One-Day Training Course Big Picture Inter-Process Communication How everything fits together - POSIX, IPC overview the standard C library, libc, Linux Message passing System Calls, the Linux Kernel semaphores Alternative implementations: musl, newlib Shared memory Target Audience Portability & POSIX on non-linux OSes What libc Adds To POSIX System architects and Role of the Linux Standard Base (LSB) What’s in libc above and beyond POSIX experienced developers What’s needed for development e.g. cgroups (underpins containers) who need to create Overview of POSIX Specs Multimedia advanced system software POSIX.1-2017 : latest spec with sections Newer libc system APIs not in POSIX using POSIX and Linux on base definitions, system interfaces Security concepts libc APIs. (APIs), shell & utilities, rationale Linux Binaries “Write to the API, not the OS” File structure Relation between POSIX and C (“POSIX Programmatic interaction is a superset of the standard C library” Creating binaries and libc API is a superset of POSIX) Dynamic loading of .so Prerequisites What is specifically outside POSIX scope Scheduling Attendees must have some Linux General Architecture Overview of Linux scheduling previous experience of Structure of Linux kernel and userspace How apps use APIs to influence scheduling system-level Role APIs and system calls play Priority programming. Major OS components and subsystems Sockets Layout of OS and apps on file system How to programmatically talk to the net Linux libc Available APIs and when to use which Common datatypes & headers A protocol-independent API Please note: This course An application developer’s view of the OS Coding client and server applications does not cover pthreads Let’s trace a system call from app to API Blocking and non-blocking comms (multithreading with to System Call Interface to kernel Socket options / out-of-band data POSIX) – we offer a Trap 0x80 for x86 Addressing, queuing signaling, errors, separate detailed course for Major POSIX Functional Areas Advanced sockets pthreads development. STREAMS, I/O, signals Large Codebases Regular expressions Large codebases need more than POSIX File descriptors & advanced file handling Retain portability via Process creation (fork/exec) & status e,g. Apache Portable Runtime or ACE One Day Intensive Training Course For Senior Knowledge Professionals 43

pthreads: POSIX And Linux 5 Multithreading using C/C++ Threading Concepts, Creating/Managing Threads, Synchronization, pthreads & .so, NPTL Internals [Sample: concept map] This course explores how to use focus for this course, but it is noted that pthreads is also the pthreads C API to build sophisticated multithreaded implemented on a wide variety of other popular and architectures for modern POSIX-compatible OSes such specialist OSes. This course supplies attendees with an as Linux 5 (e.g. Ubuntu 20.04 LTS). When designed understanding of the concepts underlying correctly, multithreading can substantially increase app multithreading, together with hands-on experience of performance and responsiveness to distributed clients multithreaded development on Linux. Topics covered and end-users. POSIX defines a multithreading include a comprehensive tour of thread creation and specification commonly known as pthreads. This is a C lifetime management, the various synchronization API that strictly specifies the expected behavior of approaches, how threads interact with share libraries, threading and synchronization primitives. Code written memory access and debugging, intra-thread comms and to work against pthreads can run on any OS that various higher-level design patterns to work with large implements this spec. Linux is one such OS and the multithreaded servers. Contents of One-Day Training Course Thread definition Shared Libraries and Threads Scheduling vs. synchronization How threads interact with shared libraries Parallelism and concurrency Serialized methods Compute-bound and I/O bound apps Robust .so design for threads Race conditions, deadlock, starvation, Debugging with Threads Target Audience priority inversion Querying information about running System architects and Threads processes/threads and their attributes experienced developers Tour of pthreads.h Serialized calls who need to gain an in- Overview of main APIs and C structures Resource Management depth understanding of Creating a thread with pthread_create() Creating a custom resource browser, to POSIX and Linux The threadproc display which thread is waiting on which multithreading. Thread priority synchronization resource Thread management & lifetime Threads with C++ pthread_exit() and joining a thread to Threads & exceptions; threads & classes Prerequisites catch exit and to access exit code Accessing resources using smart pointers Attendees must have good pthread_[detach|attr_setdetachstate]() Design Issues experience of system-level Thread cancelation Single Writer/Multiple Readers, Monitor, programming on Linux. C11/18 threads vs. pthreads (quite similar) Once-Off Initialization,Dining Philosopher Synchronization Calling legacy code from multiple threads Conditionals, mutexes, rwlock, spin, Converting legacy code to multithreading barrier – compare & contrast Multithreaded Architectures The “protect data, not code” principle Pipeline, Producer-Consumer, pthread_cond_[init|destroy|attr_init]() Work-Crew and Master-Slave Models pthread_mutex_[lock|trylock|unlock] Create threads on demand vs. elastic pool Blocking vs. non-blocking NPTL Internals pthread_[rwlock|spin|barrier]_init() Native POSIX Thread Library (NPTL) Thread Pools implements pthreads on Linux Managing pools of threads for Threads and Linux scheduling processing timers, work-items and I/O Multithreaded Project Memory and Threads Development of a complete multithreaded Thread local storage : pthread_key_create embedded HTTP web server that Heap storage vs. stack storage efficiently manage large numbers of pthread_attr_[set|get]stack[size|addr]() requests One Day Intensive Training Course For Senior Knowledge Professionals

Designing Server Platforms for POSIX And Linux 5 Using C/C++ Installer, Daemons/Worker Process, Pipelines, Networking, Config, Performance, Syslog, Systemd, Patterns, HA/HT, Project Server platforms consist of a mixture of multiple If your team consists of senior developers experienced processes and threads, working in a co-ordinated with Linux and C/C++ and you are tasked with manner, to provide some service to numerous clients on developing a high-quality server platform on Linux, remote machines. These platforms must be flexible, then this is the ideal course to get all team members up extensible, configurable, scaleable and controllable. A to speed on what is needed. We recommend developing pipeline architecture allows extensible processing of as much as possible using POSIX APIs (for portability), messages. Many techniques are available for flexible with careful use of additional APIs where it makes inter-process communication. Service processes are the sense. This course covers design concepts, important best way to deliver long-lived non-GUI functionality. POSIX APIs, plenty of code samples and a chance to have architectural questions answered. It explores extra Building server platforms for Linux is the logical choice features (such as Systemd and syslog) that will for future-oriented projects. distinguish your team’s platform from the competition. Contents of One-Day Training Course Designing Server Platforms Performance Multiple Processes/Threads Detecting bottlenecks Central Service (Manager) / Worker Tuning performance Processes / GUI+CLI Admin Processes Developing with performance in mind Variety of threading architectures Monitoring Target Audience Daemon Process Building server platform with sysadmins in System architects and Overview of systemd mind – what capabilites do they need? senior software engineers Install+config of daemon How to adding monitoring to your platform who need to create Security right Syslog advanced server platforms Controlling worker processes Logging architecture for Linux using C/C++. Platform Installation Event tracing APIs How best to install server apps Designing Platform Security Prerequisites Installer formats and server extensions Leveraging Linux security features General Linux system Platform Configuration Defense in depth platform security programming and Rich config choices (role of /etc) Secure communication with remote clients especially multithreading Web garden/web-farm layout Design Patterns for Server experience. Config changes without restarting Platforms Pipelines Patterns to satisfy competing demands Processing paths for messages Pooling, tuning, managing Sequential and non-sequential steps Sharing, distributing Structure of pipeline (handlers&modules) Extending, scheduling Pipeline context High Availability / Dynamically loading .so High Throughput Dynamically loading shared libraries Hardware for high-availability/throughput Updating a server’s shared libraries ccNUMA, Interconnects without having to restart it SAN, DAS, NAS Networking Clustering concepts High performance sockets design Design for high availability/throughput Eliminating buffer copying Project Async I/O Overview of development of part of a Use of Apache Server API sample large server platform for Linux Building custom Apache HTTP Sever Focus as much as possible on POSIX APIs module to link it to your daemon process Portability and use of OS-specific APIs One Day Intensive Training Course For Senior Knowledge Professionals 45

Containers And Microservices Concepts, OCI, runC, CNCF, Containerd, Docker, Microservices, App Architecture, Networking, Project Microservices have revolutionized server-side The world of containers is undergoing rapid application development. Most modern engineering transformation (Docker and its components - e.g. runc - teams have evolved to running as much code as possible are important but they certainly are not the whole in containers and benefit from the range of story). Developers really need to understand how all the enhancements they offer. moving parts fit together in the modern container world. They also need to be aware of how similar and As an application developer, you can think of a contrasting containers are with traditional “process in container as an efficient sandbox within which your OS” approach. This course focuses on individual process runs (multiple processes can run in the one containers and how attendees can build microservices container, but usually it is one process per container). (slice of their application) to run inside-a recommended Containers offer a sandbox based on unique namespaces follow-on course on Kubernetes explores how to and c(ontrol) groups (e.g. resource limits/accounting). orchestrate clusters of containers in innovative ways. Contents of One-Day Training Course Container Landscape services it offers and how to use them What containers offers over VM approach Available for Linux, macOS and Windows Intro to microservice development Kata Containers Target Audience Big picture review of the sometimes OCI-compliant open-source project to run Server application confusing container landscape: its containers via a light-weight hypervisor developers wishing to standard bodies, specs, commercial (combine containers and VM approaches) compose applications from businesses, cloud offerings, tooling Building Microservices many microservices OCI -Open Container Initiative Sub-dividing a large app into microservices running in containers. https://www.opencontainers.org and As an application developer, what steps https://github.com/opencontainers you need to take to prepare your code to “An open governance structure for .. run inside a container creating open industry standards around Application Architecture Prerequisites container formats and runtime” What steps are needed to build a Developers experienced in Three specs: microservice and how to optimize? server-side software. * Image is for file system layout Handling data, IPC, config, lifecycle, etc. * Runtime is how to run a container Microservices And Security Knowledge of the Go * Distribution (new) is how images travel Under what security context does your language is useful. Open source projects – runc (includes microservice code run? libcontainer), image-tools, runtime-tools Importance of isolation (runc is the runtime used by Docker and Microservices And Networking Note by most Kubernetes installations) * CNI (container networking) - Please note this course CNCF - Cloud-Native https://github.com/containernetworking does not cover Kubernetes Computing Foundation * Envoy (distributed proxy) - (apart from a brief https://www.cncf.io https://www.envoyproxy.io introduction). We have a “builds sustainable ecosystems .. around a Tour of Source Trees separate course dedicated constellation of high-quality projects that Understanding internals is good: exploring to Kubernetes, which we orchestrate containers as part of a runc CLI and libcontainer (written in Go), recommend attendees microservices architecture.” containerd (written in Go), Docker (written takes after this course. Review of CNCF projects, including ... in Go), Kata (yup, also written in Go) * Containerd - https://containerd.io/ Project Docker How best to partition a large server app to The Docker toolsuite is the market-leading run as microservices in many containers container platform – let’s explore what Practical architectural guidance One Day Intensive Training Course For Senior Knowledge Professionals

Node.js 16 Runtime Programming Using TypeScript Feature Tour, Event Loop, Non-Blocking IO, VM, Crypto, Utilities, Streaming, N-API, Project Node.js is a cross-platform easy-to-use runtime based This course cover the latest edition – Node.js 16 – from on Google’s high performance V8 JavaScript execution the ground up for developers with little or no previous engine (as found in Chrome). Node also comes with a Node experience but a strong desire to rapidly become well crafted and substantial framework which covers proficient in Node. We compare Node to other popular many application areas. runtimes that they might know and see there are many similarities (language VM, package management, Node has a number of desirable core characteristics – framework layout, tools, etc.) but also some differences. simplicity (it is very easy to get started using Node); modularity (everything is based on modules, which can Note this course does not cover the Node.js HTTP[|S|/2] grow over time); extensible (both by JavaScript / modules – we have a separate detailed course covering TypeScript code and by C/C++ code [using N-API]) these along with Express and PUG, which is an ideal and asynchronous / event-driven (non-blocking IO). follow-on course to this one.

Contents of One-Day Training Course Feature Tour of Node.js 16 OS Module Node.js 16 is the latest edition of this very Portable access to capabilities/services of popular server-side runtime for web, CLI the operating system on which Node runs and other workloads – let’s see what Node VM has to offer The VM module can be used to compile Target Audience Node And TypeScript and execute code in a language VM Experienced web Most Node apps up to now have used Utilities developers who wish to get JavaScript – we will use TypeScript Utilities module up to speed developing for Benefits of TypeScript for server coding TTY the Node.js runtime using Using Node from TypeScript (.d.ts files) Console TypeScript. Launching Node Timers Command line options for Node itself StringDecoder Environment settings Crypto Keeping a node app running Cipher Event Loop Decipher Review of how the event loop works Handling certificates Prerequisites The important role events play in Node Hashing No previous experience of The Events module Streams Node.js required. EventEmitter Stream types – readable, writable, duplex Preference for asynchronous and transform General experience with Role of listeners The readline module web programming is Non-Blocking IO process.stdout required. Accessing the file system N-API Accessing networks Building portable C/C++ modules that All demos and lab Network Programming work with Node using the new N-API exercises will be in DNS Advanced Node TypeScript, so attendees UDP/Datagram Process and child processes need to know TypeScript. TCP using the Net module The cluster module IPC servers using the Net module Shared server ports and child processes V8 CLI Project Google’s V8 engine provides the core Building a command-line app showing how execution environment for node to use many parts of the Node framework Using the V8 module together in a realistic app One Day Intensive Training Course For Senior Knowledge Professionals 47

Browser Runtime Programming Using TypeScript File API, IndexedDB, GeoLocation, Beacon, HTTP/x, Events, CORS, Fetch, Formats and Device Info The programming environment inside the modern web many natural advantages over mobile apps (here’s four: browser has significantly matured and now offers a rich the power of the URI, works everywhere, cloud- and diverse range of capabilities, some at the UI level friendly, immediate app updates). In areas such as and some at the underlying runtime level. Many of the sandboxed file access, networking, data formats and newer features are currently not being fully exploited by device info, a modern browser offers the web web developers, who focus exclusively on the UI. This application developer a comprehensive selection of course aims to change that by exploring in depth the functionality that, when used correctly, can easily non-UI aspects of browser programming, using the compete with what is available for native mobile apps. TypeScript language for all demos and lab exercises. IMPORTANT: This course does not cover parallel (web The runtime programming APIs in a modern browser worker) & asynchronous programming – we offer a now rival what modern OSes offer. A web app has separate full course that covers these topics in detail. Contents of One-Day Training Course Modern Web Platform HTTP/2 & HTTP/3 Tour of the modern web platform (what Latest generation of HTTP protocol we already know / what is less familiar) Binary, multiplexed, full duplex, priority Major features and which browsers Server push implement them (caniuse.com and New app architectural possibilities Target Audience iwanttouse.com websites) Server Sent Events Web developers wishing to Dynamically detecting in code available How it works fully leverage the runtime browser capabilities and optimizing app EventSource API (non-UI) capabilities of File API Event streams modern web browsers. File Sandboxing Event handlers Accessing and updating files CORS File metadata and raw blob content Cross-Origin Resource Sharing Prerequisites File[Reader|Writer|system] API Role of origin in HTTP protocol Good experience of web Indexed DB cross-origin access development, including A B-tree like persistence mechanism with CORS preflight request and CORS request modern HTML. powerful indexing that can serve as basis Fetch for in-browser client database A significantly improved replacement for Knowledge of the Comparison with other storage options XmlHttpRequest TypeScript programming Text Handling And JSON “The Fetch standard defines requests, language. Handling various text encodings responses, and the process that binds TextEncoder and TextDecoder them: fetching.” (WHATWG) JSON parsing and generation Data Formats Use of JSON in the browser Brotli Compressed Data Format GeoLocation Data URIs using base64 encoding “This specification defines an API that data-* attributes provides scripted access to geographical Device Info location information associated with the Accessing device details hosting device.” Vibration API Beacon Battery status Sending data asynchronously to server Project (e.g after page close) Bringing together the ideas covered in this navigator.sendBeacon course to design and build a specialist Setting priority runtime engine to execute in a browser One Day Intensive Training Course For Senior Knowledge Professionals

Asynchronous, Parallel & Reactive (RxJS) Programming Using TypeScript Managing time, multiple workers and data streams [Sample: internals] Coordinating multiple activities is This course is ideal for TypeScript developers who one of the most difficult areas of advanced application wish to more tightly manage how their code and data development. In this course we explore all the different are processed - where, when and in what order. options open to developers and see how they can be integrated into modern TypeScript applications. All samples and labs in this course use TypeScript as we think it is best for larger applications – much of All modern hardware (even low-end mobile devices) what is covered is useful to JavaScript developers too. support multiple CPU cores and allow parallel code execution. All have timers that allow asynchronous We explore code both running on the server (e.g. as part workloads to be queued for execution in the future. It is of a Node.js server application) and in the modern up to app developers to exploit the varying capabilities browser (as standalone TypeScript code, or as part of a of hardware available to them to deliver optimum apps. larger Angular application). Contents of One-Day Training Course Options for Async & Parallel Shared Array Buffer & Atomics Review of all the possibilities available to Shared memory within a browser TypeScript developers to manage time, Atomics provide synchronization to protect distribute code across contexts to be shared array buffers executed and handle data streaming Zone.js Target Audience JavaScript VM Event Loop Architecture of Zone.js TypeScript developers Need to fully understand the event loop Multiple zones can live within the same who wish to have more and event ordering to optimize our code or main browser context control within their apps Adding events and consuming events Creating and using zones over time, multiple Promises & Timers Zone.js is heavily used in Angular - how? workers and observable How a promise works: in real life / code RxJS Overview data streams Programming with a promise Observerable / Observer / Subject Error handling Hot & cold Using VM timers next/error/complete What setTimer(0, ) means Testing RxJS code using jasmine-marbles Promises/A+ (https://promisesaplus.com) RxJS Streams TypeScript async/await An observable as a dual of an enumerable Prerequisites Making asynchronous source more Subscriptions Understanding of readable while maintaining capabilities App architecture and stream processing asynchronous and multi- Use of async and await keywords RxJS Operators threaded programming Designing an asynchronous framework Processing individual elements via a large from other environments, Web Workers collections of operators together with knowledge A web worker is a thread What’s new with pipeable operators of TypeScript. Threads cooperate via message passing Custom operators Creating and managing web workers Advanced RxJS Types of web workers Notifications Worker lifetime control Schedulers (incl. new TestScheduler) [Dedicated|Shared]WorkerGlobalScope Connectables HTML5.3 WindowOrWorkerGlobalScope Project Messaging Between Workers Having explored the fundamental constructs Message ports / Message parameters for managing time, code execution and PostMessage / onMessage data streams, we conclude with a project Organizing message flows that demonstrates all these ideas together One Day Intensive Training Course For Senior Knowledge Professionals 49

.NET 5 CLR Programming Using C# Architecture, Assemblies, Type/instance, Attributes, Reflection, Security, Nuget, RegEx, Unmanaged The .NET 5 Common Language Runtime (CLR) is the Regardless of which .NET application type you are foundation for all aspects of the modern .NET initiative. building – rich client UI, web UI, , class It offers leading edge services for applications on library, , console - you must Windows, macOS, Linux and more. The .NET provides understand how it works with the CLR and how it can a “managed” runtime environment in the sense that an programmatically interact with the capabilities of the in-process runtime engine, separate from your code, to CLR..NET 5 works with the CLR to provide a rich assist with its execution. Its modern feature-set includes .NET Standard-based class library. a system-wide object model, full control of memory management, granular security, innovative metadata, .NET 5 is becoming the platform of choice for new sophisticated type loading, and virtualized contracts projects. It is highly regarded and is gaining a between types (so that their physical layouts may be reputation as a solid foundation for innovative defined / optimized at runtime). solutions. Contents of One-Day Training Course Overview Compiler Options Multiple implementations of .NET Native compiler vs. JIT - contrast .NET Standard is a specification that Using .NET Native mandates how all should work .NET on macOS and Linux .NET Framework: stable, mature (20yrs) Nuget Target Audience .NET Core (3.1): Windows/macOS/Linux Using .NET’s package manager System architects and .NET 5: New merged approach Creating your own packages senior software engineers Modern – e.g. WebAssembly integration .NET 5 API who need to rapidly get up For new codebases, choose .NET 5 Extensive quality class library to speed with .NET CLR CLR Architecture Solves problems with .NET Framework programming. Feature-rich runtime for many languages Portable; small; new features (e.g. SIMD & What capabilities does it provide? AssemblyDependencyResolver ) Assemblies Nullable Annotations An assembly is a (DLL-like) delivery & Config Prerequisites management unit for CLR types Externalized Configuration General understanding of Strong names / versioning Handling configuration data high level .NET concepts. Modules and assemblies Format of config files & custom settings Locating assemblies Application and machine configuration Attendance at our C# 9 Types Custom Attributes Language course or Importance of type / CLS & CTS Advantages of using attributes in IL equivalent experience is Types and different languages Pseudo-custom attributes needed. System.Object & identity Creating & detecting attributes Nullable Annotations Metadata & Reflection This course covers Advanced Types What data is stored along with code .NET 5 using C# 9 and Methods – virtual, abstract, overloaded Manifest & metadata tables Visual Studio 2019. Type hierarchy / relationships / generics Peaking inside an assembly Properties, enumerations, constants, fields Discovering types Instances Security Types & instances Identity features of .NET security Reference type and value type Certificates & permissions Finalisation / IDisposable Command-line and UI security tools Garbage collection / stack and heap The Unmanaged World Calling methods/anonymous methods P/Invoke & how to call C libraries One Day Intensive Training Course For Senior Knowledge Professionals

.NET 5 Multithreaded & Parallel Programming Concepts, Kernel Objects, Threads, Synchronization, Tasks, TPL, PLINQ, Parallel Collections, TPL Dataflow [Sample: presentation] This course examines how to use A server must efficiently multiplex many I/O requests .NET 5 to build sophisticated architectures using over a few threads – which is precisely the goal of multithreaded and parallel programming. When threadpools in .NET 5. We see major benefits from the designed correctly, these can substantially increase addition of parallel programming to .NET, especially application performance and responsiveness to with TPL, PLINQ, concurrent collections and TPL distributed clients and end-users. The kernel object is Dataflow. We explore the critical role of Task in this the opaque foundation for Windows multithreading – new approach.We see scope for custom enhancements to based on this are .NET constructs for the process, thread TPL in a variety of scenarios. & various synchronization objects - mutex, event, semaphore, waitable timer and more – each of which This course supplies attendees with a clear targets different needs. Thread activity, lifetimes and understanding of .NET multithreaded and parallel inter-thread communication must be co-ordinated. programming, together with experience of their use. Contents of One-Day Training Course Multithreading Concepts Parallel Programming in .NET Thread definition Takes a higher level view of concurrency Scheduling vs. synchronization Parallel querying Parallelism and concurrency Parallel algorithms and supporting types Compute-bound and I/O bound apps Task Target Audience Race conditions, deadlock, starvation, What is in System.Threading.Task System architects and priority inversion Detailed look at Task class and how to use experienced developers OS Foundation Parallel / TaskFactory / TaskExtensions who need to gain an in- (e.g. kernel objects) PLINQ - Parallel Linq depth understanding Win32 kernel objects Applying the ideas of Linq to Objects of .NET 5 multithreaded Usage counting / Kernel object handles across multiple threads and parallel programming. Sharing handles among processes Query operartors and threading Managed Threads Additional capabilities of PLINQ OS threads and managed threads Concurrent Collections Creating a new managed thread Original .NET collections are not thread- The ThreadStart delegate safe, and why this can be good/bad Thread priority and processor affinity New concurrent collections offer similar Prerequisites Thread management & lifetime API surface to original, but now threadsafe Attendees must have Synchronization Deep dive: System.Collection.Concurrent experience of systems- Monitor (C# lock), Mutex, Event, Timer Advanced Tasks & PLINQ level programming. Waiting (once, many), SpinWait Schedulers The “Protect data, not code” principle Lambda expressions Attendance at our .NET 5 The Interlocked class / Semaphore Custom operators CLR Programming Using Memory, Threads and SIMD Partitioners C# 9 course or equivalent Thread data slots TPL Dataflow experience needed. VolatileRead/Write Library of dataflow constructs SIMD - Single instruction, multiple data Message passing Intrinsics Based around composition of blocks Managed Thread Pool Very useful for certain kinds of workloads The thread pool is a runtime-managed Multithreaded Project pools of threads for processing I/O, A complete multithreaded embedded HTTP work-items and timer handlers web server that uses a thread pool to Architecture of large multithreaded app efficiently manage very many requests One Day Intensive Training Course For Senior Knowledge Professionals 51

.NET Managed Extensibility Framework (MEF) Overview, Concepts, Export & Imports, Metadata, Catalogs, Providers, Contract Adapters, Project The Managed Extensibility Framework – MEF – is a MEF allows you to create parts (i.e. components) using powerful composition framework from Microsoft for the managed code that identifies imports (what the part creation of extensible applications composed from parts needs from other parts) and exports (what the part offers supplied at runtime. MEF is an open-source project and to others). Parts come from catalogs and the in its latest iteration is supplied via nuget and is composition process is managed by various export documented as part of the .NET Platform Extensions. providers and composition services.

MEF is suitable for use with large-scale modular apps This course is your first step in getting up to speed with (the Visual Studio editor itself combines its components the MEF way of dynamically composing apps from using MEF). Application architects are being asked to components. Attendees will learn about the extensibility provide designs exhibiting high levels of extensibility concepts in MEF and get practical guidance on how to and flexibility and MEF is a key building block. use MEF when designing custom own apps. Contents of One-Day Training Course Overview Export Providers How best to tackle extensibility? Role: to provide exports Relationship to IoC CompositionContainer manages a topology What composition delivers of export providers Developer setup Flexibility in supplying parts Target Audience Concepts Defaults/features in product line/multi SKU Senior software engineers Composition Contract Adapters wishing to author Parts Concept of contract adapters composable parts using Imports Why & how to adapt between contracts MEF. Exports Contract name and metadata constants Contracts and metadata Writing an adapter Adapters Primitives Export providers Definitions – Part, Import/Export Prerequisites Imports & Exports ContractBasedImportDefinition Attendees are expected to Attributes ComposablePart be experienced C#/.NET Single and multiple exports ComposablePartCatalog developers having Describing exports / ImportMany Error Handling familiarity with modern Eager and lazy export loading ICompositionElement object-oriented design Metadata Custom exceptions concepts. Dictionary of name/value pairs Composition errors Strongly typed metadata Debugger proxies CreationPolicy Debugging Session Catalogs Debugging app through the MEF source to Role of catalogs is to supply see where errors are raised and handled parts and definitions Designing MEF Applications TypeCatalog Think about the MEF cascade AssemblyCatalog Batch of top-level parts DirectoryCatalog App-internal parts from AssemblyCatalog AggregateCatalog Extensions from DirectoryCatalog Composition Project CompositionContainer We examine a project that explores PartNotDiscoverable attribute extensibility models and implements Initial parts important concepts covered in this course One Day Intensive Training Course For Senior Knowledge Professionals

ML.NET Overview, Architecture, Estimators, Training, Predictions, TensorFlow, Performance, Data, Project It may come as a surprise to many but 80% of the ML.NET is an open source project with a GitHub repo, codebase of a typical machine learning application has that is undergoing rapidly enhancement, as shown by nothing to do with machine learning. A typical ML the very frequent commit cadence. application needs code for multithreading, database access, lots of mathematics, network connections, This course helps C#/.NET developers use their existing configuration files, containers etc. and all this is skillset and managed codebases to create modern ML common to any kind of application. This is important to applications. Machine learning is often seen as complex keep in mind when selecting a ML framework – as it is from the outside by developers not familiar with the one (of two) key reasons many C#/.NET developers area, but when approached in small incremental steps pick Microsoft’s ML.NET as their ML framework of (as we do in this course), it becomes a gradual learning choice. The other reason being that ML.NET is simply experience. The key as we see is to get to running code an excellently designed ML framework. quickly and then gradually expand capabilities. Contents of One-Day Training Course ML.NET Overview Training And Predictions “ML.NET enables machine learning tasks What is involved in training a model like classification ... regression ... and Using trained model many other ML tasks such as anomaly Constructing prediction engine detection, time-series-forecast, clustering, Making predictions Target Audience ranking, etc.” [link] Calibrators C#/.NET developers ML.NET Architecture Using calibrators for binary classification wishing to create machine High performance meets ML meets .NET ICalibrator learning applications for Tour of major components Calibrator implementations (native, managed code. DNN isotonic, platt) Transforms Integration with TensorFlow Learning algorithms TensorFlow is an excellent ML framework ML.NET Tooling One can call it from ML.NET-enabled apps Installing ML.NET: What extra functionality does it provide? Prerequisites dotnet add package Microsoft.ML Other integrations Knowledge of C# 9 ML.NET Model builder / ML.NET CLI Testing ML Code and .NET 5. Use with Visual Studio 2019 Often ignored, how to test ML code is Context and Data crucially important item for production- Though ML.NET provides MLContext is the connection between quality delivery excellent implementations your app’s code and the ML.NET engine Performance issues of what we need, it is still Creating and using a context ML.NET App Design useful to have a high-level Context configuration Going beyond the APIs, exploring what is understanding of what is ML involves lots of data – so need to needed to design an ML enabled .NET app going on. Hence some examine how to supply data (bulk, ML.NET role as part of larger app design foundational knowledge of streamed, other) to the ML engine Certain important design considerations mathematics is required, as Estimators ML.NET Internals machine learning is so Role of estimator-“untrained transformer” ML.NET is written in C# and it is quite heavily mathematics- IEstimator and its implementations informative to read and understand the based. (MLNET does Idea of fit source tree implement the Transforms Project mathematics we need). Image Exploring steps need to add machine Onnx learning capabilities to an existing TimeSeries C#/.NET application using ML.NET One Day Intensive Training Course For Senior Knowledge Professionals 53

Java 16 Runtime Programming IO, Processes, Serialization, Asynchronous, Security, Networking, Web Access After developers learn the Java 16 language they next Beneath Java on every implementation is an OS, whose must learn about the Java 16 runtime environment and capabilities are exposed to Java applications via an API. the APIs it provides. Java and its add-on packages offer The Java runtime itself, known as the JVM, adds a vast range of APIs and often it can be daunting for additional capabilities. Base class libraries and layered developers new to Java to figure out what goes where. libraries offer even more functionality. Taken together, a Initially, to simply get work done for their specific rich multi-layer of readily available functionality is assignments can be a challenge. This course aims to provided for application developers to exploit in their overcome this and takes developers already proficient in own applications. the Java 16 language on a walkthrough of common scenarios – we look at relevant APIs and the runtime The aim of this rapid-paced course is to cover as much ideas underlying them and help attendees write code as possible of the fundamental APIs that devs need and efficiently and become productive as Java devs. provide them a good grounding in practical API usage. Contents of One-Day Training Course Overview of Java Runtime Utilities Documentation and tooling Text handling & regex How everything works together Internationalization (e.g. new Unicode 11) Overview of module layout Time / mathematics / etc. Interaction with the JVM Java And Security Target Audience Tour of all major runtime features A comprehensive security framework Developers wishing to Garbage Collector authentication, authorization, auditing create libraries and Interacting with the GC Java and PKI applications using Java Impact of various approaches Use of cryptographic algorithms 16’s runtime capabilities. Z Garbage Collector Advanced Security Features java.io SecurityManager File handling Keystore File and string readers and writers Code security – code signing, bytecode Buffering verification, avoiding common threats Prerequisites java.util.zip Java Networking Attendees must already Serializable Socket programming with Java have attended our Java 16 Serializing and deserializing an object specifying network addresses Language course or have NotSerializableException Socket options similar Java language Object stream APIs Creating UDP and TCP connections programming experience. Managing Processes Web Access Process class represents a process HTTP 1.1, HTTP/2 (JEP110) and HTTP/3 Creating a process with ProcessBuilder URI Note: This course does not Launch mechanisms – e.g. VFORK and SSL/TLS cover Java multithreading. POSIX_SPAWN Reflection We offer a separate Redirect via ProcessBuilder.Redirect java.lang.Object.getClass() complete course on this Asynchronous I/O How to use java.lang.Class topic. Java async I/O design pattern Reflection namespace – java.lang.reflect Streams Constructor, Field, Method, Parameter Asynchronous channel APIs Additional Libraries JMS – Java Message Service java.instrument and logging Rich message exchange framework Transactions Reliable / asynchronous Java Management Extensions (JMX) Point to point vs. pubsub Java Naming & Directory Interface (JNDI) One Day Intensive Training Course For Senior Knowledge Professionals

Java 16 Multithreading Concepts, Kernel, Threads, Synchronization, Concurrent Collections, Debug, Akka, Server Design [Sample: snippets] This course examines how to use Various higher-level design patterns may be used to Java 16 to build sophisticated multithreaded route workitems in multithreaded servers. Tools may be architectures. When designed correctly, multithreading developed to determine which thread is blocked waiting can substantially increase application performance and on which resource, and the state/owner of each resource. responsiveness to distributed clients and end-users. The A delegate-based configurable pipeline + a cache are kernel provides a number of opaque objects that are the often appropriate. The optimal server architecture is one foundation for multithreading – based on this are active thread per processor core. A server must constructs for the process, thread & various efficiently multiplex many I/O requests over a few synchronization objects – reentrant locks, event, threads – which is precisely the goal of threadpools in semaphore, waitable timer and more – each of which Java 16. This course supplies attendees with a clear targets different needs. Thread activity, lifetimes, inter- understanding of the concepts underlying multi- thread comms and memory usage must be co-ordinated. threading, together with experience of their use in Java. Contents of One-Day Training Course Multithreading Concepts java.util.concurrent.atomic:* Scheduling vs. synchronization supports lock-free thread-safe Parallelism and concurrency programming on single variables Compute-bound and I/O bound apps Thread Pool Race conditions, deadlock, starvation, The thread pool is a runtime-managed Target Audience priority inversion pools of threads for processing I/O, System architects and OS Foundations work-items and timer handlers experienced developers Processes & threading in various kernel Debugging with Threads who need to gain an in- Usage counting Querying information about running depth understanding of Sharing handles among processes processes/threads and their attributes Java multithreading. Threads in Java Thread tracing/debugging in tooling Java’s threading architecture & lifecycle Resource Management The Runnable interface Creating a custom resource browser, to ThreadLocal – each thread has its own display which thread is waiting on which copy of the variable / ThreadGroup synchronization resource Creating Java Threads Design Issues Prerequisites OS threads and Java threads Single writer/multiple readers, once-off Attendees must have some Creating a new thread: java.lang.Thread initialization, Dining Philosopher experience of systems- Implementing a Runnable Converting legacy code to multithreading level programming. Extending the Thread class Multithreaded Architectures Thread priority and processor affinity Pipeline, Producer-Consumer, Work-Crew Attendance at our Java 16 Synchronization and Master-Slave Models Runtime Programming Locks, mutexes (reentrant locks), Create threads on demand vs. elastic pool course or equivalent semaphore, events and timers Akka – The Actor Model experience needed. Waiting (once, many), idea of spin wait Moving beyond foundational thread The “Protect data, not code” principle constructs, explore higher level frameworks Atomics with java.util.concurrent.atomic Akka is based on the actor model and is A synchronized block highly suited to large scale projects Java Collections And Threads Working without locks – how? When do we need to protect collections? Multithreaded Project Selecting and using thread-safe collections A complete multithreaded embedded HTTP java.util.concurrent.locks web server that uses a thread pool to java.util.concurrent for concurrency efficiently manage very many requests One Day Intensive Training Course For Senior Knowledge Professionals 55

Technology / Data School Query ● RDF-OWL-SPARQL ● SQL ● XML ● .NET LINQ, Expression Trees And Rx ● STL using C++ ORM ● .NET EF Core 5 Using C# Format ● PDF Programming Repository ● GIT and GitHub One Day Intensive Training Course For Senior Knowledge Professionals

Fundamentals Of Storage Disk Hardware, Connectors, OS Storage Subsystems, File Systems, RAID, Tx, Caching, Hashing, B-Trees This course provides a comprehensive tour of the performance demands impart on storage. We see how important storage fundamentals that all technologists modern OSes and their powerful storage stacks allow need to understand in order to build, provision and rich journaling file systems and databases to be built operate modern IT solutions that involve storage (which that deliver a wide variety of enhanced storage features. of course means all such solutions). There’s a lot more We also explore specific technical approaches to to storage than the hard disk on a PC or simple APIs transactioning, caching, hashing and B-Trees. such as fopen() / fwrite() that developers might use. In this course we explore storage end-to-end and see how A good understanding of storage fundamentals along it interacts with remote disks, hypervisors, the cloud with clear knowledge of the storage-related technical and various in-memory representations. We see how the options available to choose from helps all involved in distinction between storage, database and memory is engineering to make the optimum design decisions. being blurred. We see how system-wide reliability and Contents of One-Day Training Course Storage Concepts Modern File Systems Latency Journaling Throughput 128-bit sizes Reliability Virtual File Systems And Client File APIs “bit-rot” and other issues Detailed look at internals of a modern file Target Audience Modern Storage for ... system – ZFS Developers, devops, IT File RAID professionals, engineering Object Costs and benefits of various RAID types managers – all of whom XML Stripping need an understanding of SQL When errors occur in hardware and in the core building blocks of Graph software storage platforms. SCSI – Talking To Storage Transactioning Small Computer System Interface (SCSI) Transaction principles is a comprehensive protocol / command / Two phase commit interface between controller and disk Hierarchical transaction groups Prerequisites Disk hardware and connectors Savepoints Good all-round knowledge Traditional disk Resource manager of modern computing SATA / SAS Enlistment infrastructure at a technical SSD and Flash Caching level. NVMe and PCI Express Putting data close to where it is used RAM disk Cache lifetimes Tape, Optical Keeping data in cache fresh Managing larger amounts of data Caching architecture Tape and optical formats used for backup, Identity And Hashing transporting and long-term archiving How to identify storage objects DAS, NAS, SAN Role of hashing algorithms Directly Attached Storage Importance of hashing for de-duplication Network Attached Storage and other aspects of storage Storage Area Network B-Tree Storage Subsystem In An OS B-Tree is the most important data structure Storage and networking are the largest for storage architectures subsystems inside any OS Performance characteristics of B-Trees Exploring an OS storage architecture Variations of B-Tree layout One Day Intensive Training Course For Senior Knowledge Professionals 57

STL: The C++ Standard Template Library Algorithms, Containers, Iterators, Functors, Adaptors, Allocators, Performance, Internals STL is an amazing masterpiece of software Iterators are used to flexibly define sequences of engineering. In addition to learning about a rich object elements and manage the navigation among elements, collection system, developers will profit from studying without exposing the internal arrangement of elements. STL deeply as they will learn how to put together their Algorithms are the operations we wish to perform on own modern frameworks to comprehensively tackle sequence of elements (independently of how those their specific needs. elements are stored). Containers (both sequence and associative) are how storage of groups of elements is The goal of this course is to bring C++ developers up to managed. Adaptors provide more specialist access to speed with all aspects of STL programming. We start containers. Allocators are used for memory layout. We with a tour of what STL has to offer and how it builds also examine the very interesting STL architecture and on some of the latest ideas in modern C++. We explore discover how some of its design ideas used internally all the technical constructs defined by STL. may be applied in designing our own class libraries. Contents of One-Day Training Course STL Overview Allocators Tour of STL capabilities Use default allocators at first, expand later Generic programming Various strategies for managing blocks of Visiting with iterators memory using header Generic containers STL & Shared Libraries Target Audience Container-independent algorithms Issues when passing STL collections across C++ developers who wish Application programming using STL DLL/.so shared library boundaries to learn about the power of Highly efficient and flexible solutions Need for using same binary layout STL and see how to use it C++ Review Deploying STL aggressively in their own Review of aspects of modern C++ (e.g. Optimizing STL use in your own projects applications templates, memory) that STL leverages Container selection – different containers Iterators have differing performance capabilities A specialist pointer to an element and differing feature sets Category Algorithm selection – being aware of large Element type & distance type range of algorithms available is important Reverse/stream/insertion iterators Custom Prerequisites Algorithms Building custom: Good knowledge of the Operates on sequences - containers fundamentals of C++ Passing in sequences using begin-/end- - algorithms programming, especially Template-based functions to perform ops - iterators templates and memory Review of available algorithms - adaptors management. Functors as algorithm predicates - allocators Sequence Containers Design Ideas Containers are collections Review of architecture of STL Ordered collection of elements Incorporating ideas from STL into your deque, list, vector own framework designs Random access vs. sequential access Internals Associative Containers STL is delivered as a set of header files Elements and their associated keys Exploring how it is put together map, set, bitset More specialist functionality Adaptors Project Adapting a container to a specialist need Building a C++ project that uses STL e.g. look at stack/[priority|]queue interface extensively One Day Intensive Training Course For Senior Knowledge Professionals

.NET LINQ, Expression Trees And Rx Lambda/Query Expressions, LINQ-To-Objects, Trees, Providers, Rx Observ[able|er], Subjects, Operators .NET’s LINQ (Language INtegrated Query) is an Think of .NET expression trees as an AST of a query. innovative querying capability built into the .NET They are used in LINQ and many custom solutions. Framework and languages such as C#. Querying plays a When LINQ providers talk to remote data stores, major role in most applications. For .NET and C# to expression trees are at the heart. Expression trees can pay particular attention to how code can query a variety automatically be created by a .NET compiler and also of data sources (e.g. SQL databases with EF Core, XML directly interacted with by application code. documents, observable streams with Rx, collection classes, management objects, ..) can be most beneficial. Rx (Reactive extensions) is “an API for asynchronous programming with observable streams” [link]. It is Once .NET application developers learn the basics of based on the observable pattern (one of the GoF LINQ they can then explore how to extend it and how patterns). Rx is available for many languages (e.g. to expose custom data sources as LINQ targets. Angular uses it extensively), this course covers Rx+C#. Contents of One-Day Training Course Overview: LINQ, Expression Trees Expression Trees and Rx Introduction to expression trees Introduction to each, how they fit together Expression trees and IQueryable<> and how they might be used in applications Dynamically compiling expression trees Functional programming ideas Review of important expression types Target Audience Review of C# Features System.Linq.Expressions Software engineers Modern features of C# that are of interest The LambdaExpression type wishing to learn about the Lambda expressions, anonymous types, Factory methods foundation of LINQ, extension methods, var, flexible object Debugging Expression Trees and Rx. initialization, partial classes/methods How to debug LINQ code Func<> and Action<> Writing your own debug visualizer for LINQ Concepts expression trees Immediate & deferred execution ReactiveX for C# Query Syntax vs. Method Syntax Observable and Observer What are operators Enumerable vs. observable Prerequisites Use Query Expressions Rx operators Attendees are expected to Query Expression Syntax Subject be experienced C#/.NET SQL-like format Disposables developers with some Typing How to use Rx within application code awareness of data Standard Query Operators Advanced Rx querying, collections and Tour System.Linq namespace Rx and .. abstract syntax tree usage. Exploring provided operators Handling time / Exceptions Adding custom query operators Threading / Subscriptions Inputs and outputs Notification / Materialization Moving to saying what you want Cold vs. hot / Scheduling Lambda, delegates and expression trees Async Streams IEnumerable vs. I Q ueryable Important improvements to async/await Designing LINQ Providers allows precise control of async streams How is the network involved? with rich new features How does data flow? Custom Rx Where, and when, are expressions run? Building your own observers, observables Creating a custom LINQ Data Provider and operators Programmatically querying custom data Managing subscription lifetimes One Day Intensive Training Course For Senior Knowledge Professionals 59

RDF, OWL And SPARQL Ontologies, Standards, Triples, Datatypes, RDF, RDF Schema, OWL, Entities, SPARQL, Reasoning This course provides a guided tour of the world of Resources are identified with internationalized URIs knowledge representation and reasoning, from an (IRIs). We start with an agreed set of basic datatypes ontology perspective. We will see that a graph is the (number types, strings, URI, dates), then use them to most scalable, extensible and distributed form of define simple statements in the form of triples (subject- knowledge representation and facilitates knowledge predicate-object), then build groups of such statements reasoning to incorporate additional facts. into graphs, and then combine multiple graphs into datasets. W3C has defined a layered set of standards related to defining and querying ontologies. We will discover how We add a query engine in front of such datasets to make each standard builds on a foundation to add more them accessible to distributed clients. We can define ontology-related functionality and together they define rules to add more control over ontology interaction. We a comprehensive solution to ontology management. support knowledge reasoning via inferencing. Contents of One-Day Training Course Ontologies OWL Entities Representing knowledge Named Individual The knowledge graph Class Description Logics (DL) Datatype Reasoning about knowledge Object Property Target Audience Tour of the world of ontologies Data Property Software engineers and Ontology Standards Annotation Property knowledge engineers who W3C has been very active in defining a SPARQL Introduction wish to learn more about suite of standards related to ontologies SPARQL is to ontologies what SQL is to a creating and interrogating Review of W3C layered standards relational database – a flexible language to ontologies using the latest Protégé Tooling query and update knowledge graphs W3C standards Stanford University has created the Advanced SPARQL Protégé tool (https://protege.stanford.edu) - Result formats “A free, open-source ontology editor & Update framework for building intelligent systems” Federated queries XML Datatypes Existing Datasets The common primitives (int, string, date) Exploring available big datasets, e.g.: Prerequisites for ontologies and the knowledge graph - Dbpedia (http://wiki.dbpedia.org/) A software engineering Value space vs. lexical space - Wikidata (https://www.wikidata.org) background with some Facets for specialization Reasoning & Rules experience of creating Introduction to RDF Inferencing over ontologies semantic models Role of Resource Description Framework Discovering new relationships Statement: subject, predicate, object Defining rules using RIF Managing triples Ontologies & Machine Learning RDF Schema Some folks think of ontologies as Extending the RDF vocabulary competing with ML – we look at this Defining classes and their properties question and how to use them together Reification Ontology Design Introduction to OWL Review of how to create ontologies using (OWL) expands what we have learnt the vocabulary for representing knowledge Project Tour of OWL capabilities – axioms, etc. Designing a large software solution Literals/datatypes/dataranges/expressions incorporating ideas explored in this course r One Day Intensive Training Course For Senior Knowledge Professionals

Structured Query Language (SQL) Relations, SQL Overview, The Table, DML, Joins, DDL, Stored Procedures, Transactions, ORM Structured Query Language (SQL) is the very popular the basis for their data management needs. It offers a purpose-built query language for relational databases. wide gamut of capabilities and is massively supported A mathematical relation forms the logical underpinning across all computing platforms. for a relational table. A table consists of an unordered set of rows; each row consists of an unordered set of There are many SQL products in the marketplace. This columns. Columns are named and are associated with a course explores standard SQL. Each database vendor datatype. Some columns has specific characteristics adds its own nuances to this standard language, but all (e.g. primary/foreign keys). Indices can be attached to support a large core set of SQL functionality, and it is some constructs which greatly improve performance. this core that we cover in this course. After this foundational course developers will be ready to explore Whether building cloud, enterprise or mobile solutions, the product-specific documentation for their selected devs should at least consider and often select SQL as SQL engine & selected app programming language. Contents of One-Day Training Course SQL Overview DDL The mathematical relation CREATE and ALTER Representing knowledge via tables DROP Query language for relations TRUNCATE Parameterized queries Stored Procedures Target Audience Stored procedures Creating and calling stored procs Developers who wish to Role of SQL Parameters and local variables learn SQL by focusing on Tour of SQL in modern database engines, Additional programming constructs the large set of SQL both client/server & library-based, such as: (BEGIN/END, TRY-CATCH, etc.) features that is common to - Microsoft SQL Server ACID modern relational - Sqlite Atomicity databases. - MySQL Consistency - Oracle Isolation Defining a Table Durability Datatypes Transactions Primary key Unit of work Foreign key All or none Prerequisites Normalization Begin Tx and commit or rollback Experienced software Intro to DML SQL And Security engineers with some data SELECT SQL injection attack manipulation background. INSERT Dangers of dynamically building queries UPDATE GRANT and REVOKE No previous SQL DELETE ORM–Object Relational Mapper experience is required. Advanced DML Many object-oriented programming WHERE languages use an ORM to manage SQL ORDER BY queries - how do they work? DISTINCT SQL vs. NoSQL Aggregates (AVG, SUM, MIN, MAX) Contrast SQL and NoSQL approaches to Joins data storage and data management Combining statements in a join Suitability for different scenarios Inner join Project Left/right join Use of SQL as the basis for data in a Full join comprehensive enterprise solution One Day Intensive Training Course For Senior Knowledge Professionals 61

eXtensible Markup Language (XML) XML InfoSet, XML Serialization, Namespaces, DOM, XML Schemas (XSD), XPath, XSLT, XML in App Design XML is well supported on all technology platforms by Document file formats (such as ODF and Office Open many editors, tools and framework vendors. As it has XML) have standardized on XML. Many vertical proven its worth in the field, it has become a highly industries (e.g. http://startndc.iata.org/ or desirable feature to leverage in applications. Hence it is http://hropenstandards.org) have defined custom XML now a mandatory part of the skills set for modern schemas. Data exchange is exploiting it. Data delivery software developers. The W3C has defined a cohesive over the Internet is using it. series of XML standards, covering core information There are three reasons you will benefit from attending modeling, how data is to be serialized, a Document this training course. Firstly, you will learn what the Object Model defining a programmatic API, how data is XML data format is and its associated standards. transformed and many more standards. XML has Secondly, you will see how to integrate it with your becoming the foundation for whole swathes of own code. Thirdly, you will explore how XML can help functionality in various computing environments. you with app design. Contents of One-Day Training Course XML Overview W3C XML DOM XML is a metalanguage for describing A for XML other data languages Programmatic Navigation Representing data with markup Hierarchy of nodes Developer resources Fundamental & extended DOM interfaces Target Audience The W3C XML Standards Alternative: treating XML content as a This training course What are in the standards stream - push (SAX) and pull (.NET) targets component and web Layering XPath developers who need to Introduction to each standard Identifying sub-sections of the XML tree know what XML is, how The XML Information Set XSL pattern matching to program it and design Abstract description XSLT support for it into their Information items Extensible Style Language Transforms applications and web Strict rules of XML Transformations for display and into other services XML Serialization Standards data descriptions The fundamental XML structure is a tree Additional Standards Each node in tree has a name, attributes XML Base & can be a parent of other defined nodes XPointer / XLink Namespaces XML Query Avoiding tag ambiguity when using XML & Security Prerequisites multiple XML schemas XML-Based Markup Languages Understanding of Unique identifiers Every industry needs to describe different document and data storage Namespace aliases data and hence need a different schema needs, along with XML Structure It is not feasible to have a single complete experience of Internet Defining what is permissible in XML data description programming Logical structure of information XML in Application Design Valid & well-formed XML How to design for XML XML Schemas Creating a XML-based data format and Describing metadata using XML programmatically loading and saving it Defining schemas Project Type system – simple and complex Case study showing the creation of a Lexical space, value space and facets complex XML schema, it use within an Modularization app for data storage and exchange, Schema Usage and web delivery of data to a browser One Day Intensive Training Course For Senior Knowledge Professionals

.NET Entity Framework Core 5 Using C# Models, Annotations, Fluent API, Querying, Saving, Advanced, EF Core+Domain Model, Testing, Project Handling data is one of the most complex aspects of EF Core uses LINQ as its querying technology to great any enterprise application development project. (The effect. LINQ is a radically different approach to fact that Microsoft’s .NET has frequently significantly querying that integrates object development and data changed it data story proves this!). Previous approaches access in a cohesive language environment. have not been entirely satisfactory and many devs thought “There's got to be a better way”. Enter EF Core. This course covers the latest release of EF Core (v5 EF Core 5 is a modern ORM that has rapidly evolved including C# 9 support). The goal is to take C# / .NET out of code-first Entity Framework 6 for .NET application developers along a journey which will end Framework. The latest EF Core 5 (part of .NET 5) up where they can competently program against a provides C# 9 app developers with a rich data access database (SQL or NoSQL) or other kinds of data capability, in tune with modern development ideas sources from within their .NET applications. (domain models, testing, SQL&NoSQL, agile, ..). Contents of One-Day Training Course EF Core Overview LINQ And EF Core 5 Overview of modern data access Deeper look at query language A powerful ORM (Object-Relational Going beyond basics, how to really use Mapping) for .NET applications LINQ with EF Core Efficient, configurable, improving rapidly Complex queries (e.g. joins) How EF Core fits in with rest of .NET EF Core and .. Tour Of Features Migrations Use an initial sample app to practically Security demonstrate main feature set of EF Core Database views Role of DbContext, DbSet, DbQuery, .. Stored procedures Target Audience Data flows, config GIS C# 9 / .NET 5 application Error handling EF Core and Domain Model developers wishing to Tooling Place domain model and data model in create modern apps that Development / data environment separate assemblies need to access databases Connection string Data model references domain model using the best ORM Distinct SQL RBMS data providers (not the other way around) available for .NET, that is Non-SQL data providers Domain model does not reference EFCore EF Core 5. Specialist data providers Prefer use of Fluent API – why? Additional developer tooling DDD Bounded Context = DbContext Models Repositories as interface in domain model POCO – Plain Old C# Objects (no EF Core) and implementation in data Prerequisites From these, auto-gen database schema model (can be switched out for alternative) Practical experience of C#, Conventions / Annotations / Fluent API Testing some previous database OnModelCreating This arrangement greatly helps testing programming and SQL Ways to influence generated model Importance of dependency injection knowledge (any database). Querying Modern testing approach and EF Core Applying usual querying syntax: filtering, Testing database queries All demos and labs will be relationship following, ordering, aggregate Project using .NET 5, C# 9 and Query types Developing an end-to-end layered solution Visual Studio 2019. Saving consisting of Angular UI, ASP.NET SaveChanges / tracking / concurrency REST API, domain model and Transactions, cascades, keys EF Core 5 data model Disconnected entities Looking particularly at last of these One Day Intensive Training Course For Senior Knowledge Professionals 63

PDF Programming PDF for developers, Graphics, Imaging, Text, Fonts, Forms, Metadata, Security, Navigation, Project Portable Document Format (PDF) is a standard Pretty much every computing device that has an representation of pages in a document. It is used for attached display and/or printer can display/print PDF document interchange between document producers files. The vast majority of modern document editing (word processors, report generators, CAD programs, environments can output to PDF - hence is is an specialist editing apps) and document consumers (on- extremely poplar shared representation of a publication. screen viewers, printers, digital signature validators, This course is aimed at developers who wish to gain a forms engines, etc). low-level technical understanding of PDF and how they PDF became popular as the native file format for can use it programmatically from within their own Adobe Acrobat and has been standardized by ISO, applications. This course provides an excellent initially as ISO 32000-1:2008 (same as Adobe PDF 1.7) foundation for developers who wish to build their own & recently ISO published a major update - ISO/PRF PDF import/export libraries and those who wish to use 32000-2. one of the existing libraries available for this purpose. Contents of One-Day Training Course PDF Technical Overview Color and Transparency Describing page representations Precisely specific color requirements Applying ink to a page CIE Tour of functionality Masking Relationship between PDF and PostScript Clipping Target Audience PDF Concepts Forms Developers wishing to Coordinate system Forms options in PDF produce, transform and Painter’s algorithm Designing forms consume PDF files from Imaging model Accessing form fields after completion their own applications. Color management Changes in forms for ISO/PRF 32000-2 Transparency Metadata Document and Page Layout Attaching additional metadata to PDF Overall file structure Metadata formats How each page is represented Extensibility Prerequisites Contents of a page Digital Signatures Software developers with Common data Signing what uses can see experience of creating Text And Fonts Digitally signing a PDF file document editing apps, Typography in PDF Verifying a digital signature particularly their file Glyphs Cryptographic options (algorithms etc.) formats. Fonts Navigation Ways to represent text Allowing users to easily navigate to pre- Knowledge of graphics Text objects determined destinations within a document programming (e.g. Graphics (hierarchy & thumbnails) painter’s algorithm) is PDF supports many 2D diagramming Document outline required. constructs, from line to Bézier curves to Flexible inter-page navigation various graphical shapes Multimedia State information Embedding video, audio and 3D in a Use of 3D document Path construction Formats supported Images Enabling media playing Bitmaps and their use in PDF Project Supported imaging formats Write a project to programmatically create Rendering images on the page a PDF document One Day Intensive Training Course For Senior Knowledge Professionals

Git and GitHub Working Dir/Staging, Local/Remote, Clone, Push, Pull, Branch/Merge, Monorepo, GitHub Desktop Source code is by far the most important asset any Even if not using GitHub for their own source, app software company owns. It is more valuable than developers still need to get familiar with it as most of buildings, brand names, computer hardware, furniture today’s popular open source projects are using it and or anything else a software company has. Source code app developers will invariably need to use these. needs to be valued and treated like the very important company asset that it is. Hence the need for a robust This course covers both and helps developers gain source code management system. hands-on experience in how to incorporate both into their development workflow. Many Git-related terms Git is the most popular source code management have entered the developer lexicon – push, pull request, system; GitHub.com is the most popular Git cloud cloning, forking, promoting, repo – and this course hosting solution. Either Git alone or Git and GitHub can helps attendees understand each concept and mentally be used to comprehensively manage and protect source. tie everything together to see how they work in unison. Contents of One-Day Training Course Distributed Version Control Command Line Tooling Using what you might already know Porcelain vs. plumbing Adding distributed influence Beyond the basics - more complete look at Organizing teams via Git advanced command line tools for Git Strategies for managing source trees Managing as part of Toolchain Target Audience Terminology - push / pull, clone, fork, Git as part of toolchain Software engineers and fetch, branching and merging Use with other tools architects wishing to Lifecycle of a single line of code Call via scripting (automated test runs, correctly manage valuable Getting Started With Git linting, Continuous Integration/Continuous source trees Installing and configuration Delivery - CI/CD) Simple usage What to do with generated info We explore where source can be stored Monorepo (local and remote) Each project need not exist in separate repo Promoting from working dir to staging Multiple projects can be placed in a single and beyond repository – known as a monorepo What happens during a commit Practical ideas for using monorepos Prerequisites Working Locally GitHub Programming knowledge Init vs. clone Source repositories in the cloud and some previous File system layout Public (free hosting) & private (fee-paying) hands-on experience of The .gitignore file Organizations and teams any source control system. Creating, modifying and deleting locally Interacting with open source projects Cancel changes (revert) (issues, releases, changelog, pull requests) For the GitHub part of the Logging/history/status GitHub Desktop course, each attendee will Branching / Merging Enhanced (Electron-based) GUI to need their own (free) Creating and listing branches comprehensively manage Git repositories GitHub login to complete Merging a branch Easy to set up and use the lab work. Change tracking / diff / Rebase Git Internals Feature branches vs. trunk development The source code for Git itself is an Remote interesting read: https://github.com/git/git Remote protocols What can we learn from exploring it? Connecting to remote repo servers Project Push and pull commands Organizing a large source tree using Git Fetch command Deciding on project and repo layout One Day Intensive Training Course For Senior Knowledge Professionals 65

Technology / Networking School

Protocol ● Fundamentals of TCP/IP Networking ● QUIC And HTTP/3 Protocols Connection ● Protobuf and gRPC ● REST APIs – Designing, Specifying (OpenAPI) and Generating (OpenAPI Generator) ● ASP.NET Core 5 REST API Development Orchestrator ● Kubenetes One Day Intensive Training Course For Senior Knowledge Professionals

Fundamentals Of TCP/IP Networking Layering, Networking Architecture, Addressing, IPv4&IPv6, TCP, UDP, DNS, DHCP, HTTP, Security TCP/IP is the dominant networking protocol suite and We examine the entire set of protocols in the TCP/IP all involved in delivering modern technology solutions suite. Even though the suite name mentions just two need a clear understanding of how it fundamentally protocols, it is actually a much larger collection of works. Developers, DevOps and system admins, along protocols, with important protocols above and below with many specialists (such as those involved in the TCP and IPv4/IPv6 protocols. database and security) could all benefit from attending this course as it will clarify the fundamentals of In any modern OS, its networking stack is a large networking with the TCP/IP suite. segment of the codebase and exposed API. By investigating what is actually happening between one Networking touches on development, security, network app sending & another app receiving a message (by traffic, identity, messaging, data transfer, resilience, examining net traffic using appropriate monitoring middleware and lots more. tools), we can expand our understanding significantly. Contents of One-Day Training Course Layers, Protocols and Devices UDP Overview of networking participants Comparison with TCP Networking big picture “Best effort” datagram service Organization of the Internet Protocol exchanges Target Audience Protocol development process (RFCs) DNS and DHCP Everyone with a technical Use of Wireshark DNS architecture background who is Eavesdropping on the network DNS headers interested in how computer Extremely useful tool for low-level Record types (e.g. SRV records) networks actually work. monitoring of protocol traffic DHCP architecture TCP/IP Family Of Protocols Internet Building Blocks Layering of protocols Routing protocols Distribution of responsibilities Border Gateway Protocol (BGP) Packet structure (encapsulation etc.) QoS Data Link and Network Links AS Prerequisites How octets are physically communicated HTTP 1.x & 2 Experience of working on technologies used at data and network HTTP basic messaging patterns software projects, Ethernet Using Fiddler to examine HTTP traffic including development, Addressing Message chunking deployment and ongoing Approaches to network addressing Multiple concurrent channels in HTTP/2 service provision. Subnetting SMTP, POP and MIME ARP Email protocols family No previous network Addressing for IPv6 Message stores programming or IPv4 & IPv6 Representing emails infrastructure experience is Protocol exchanges Security And Networking required, though any such Packet structures Firewalls knowledge would be MTU NATs beneficial. Internet Control Message Protocol (ping) IPSec TCP SSL/TLS Enhanced services OS Networking Stacks Headers Windows Windowing Linux SYN packet and triple-handshake Exposed C APIs (sockets etc.) Protocol exchanges Networking APIs inside managed runtimes One Day Intensive Training Course For Senior Knowledge Professionals 67

QUIC And HTTP/3 Protocols Transport/App Protocol, Connection, Packet, Frame, TLS 1.3, Multiplexing, Flow-Control, Implementation QUIC and HTTP/3 are respectively the much “The QUIC transport protocol incorporates stream anticipated next-generation transport protocol and next multiplexing and per- stream flow control, similar to generation application protocol. HTTP/3 runs on top of that provided by the HTTP/2 framing layer. By QUIC. Both are currently undergoing standardization providing reliability at the stream level and congestion through the IETF. control across the entire connection, it has the capability to improve the performance of HTTP Both protocols are being designed in unison to work compared to a TCP mapping. QUIC also incorporates extremely well together to achieve an elevated level of TLS 1.3 at the transport layer, offering comparable performance and security. They offer a number of very security to running TLS over TCP, with the improved interesting new features and continue the work we first connection setup latency of TCP Fast Open [link]. see in HTTP/2 of adding multiplexing for HTTP At the end of this course, attendees will understand connections. how both protocols work and why they are important. latency. Contents of One-Day Training Course Next Gen Protocols Frames What are we trying to achieve? PADDING, RST_STREAM, [CONN|APP] _CLOSE, Can we not reach these goals with TCP MAX_DATA, MAX_STREAM_DATA, Target Audience and HTTP/1.1 or HTTP/2? MAX_STREAM_ID, PING, BLOCKED, STREAM_BLOCKED, STREAM_ID_BLOCKED, Networking professionals What do QUIC and HTTP/3 offer? NEW_CONN_ID, RETIRE_CONNECTION_ID, and senior software QUIC Overview STOP_SENDING, ACK, PATH_[CHALLENGE| engineers who require a General tour of how QUIC works RESPONSE], NEW_TOKEN, STREAM, CRYPTO deeper understanding of Based on UDP (a foundation that is HTTP/3 Overview these new protocols that already supported everywhere) Overall architecture will play a very significant QUIC plays role of TCP in protocol stack HTTP/3 endpoints role in the future of the Message flows Options for discovery web and the Internet Connection set up and tear down Types of streams (control, push, reserved) Intro to security Available HTTP/3 implementations Available QUIC implemenations HTTP Framing Extensions DATA, HEADER, PRIORITY Connections Settings Prerequisites Reasons for low-latency connection setup Framing architecture Programming experience What impact this has? HTTP Message Exchanges in any low-level language. Connection migration Message has one HEADERS frame and a Attendees will develop Error correction number of DATA frames and optionally a server and client-side Packet layout concluding HEADERS frame implementations of both QUIC Streams & Multiplexing Message flows protocols as part of the Unidirectional and bidirectional streams Connection Management labs. How multiple streams are multiplexed Cancellation, Compression, Prioritization onto a single connection Server Push Good all-round Flow Control Error management networking knowledge; Connection flow control Impact On Application Design attendance at our Stream flow control How these new protocols will influence Fundamentals Of TCP/IP QUIC And Security application design (esp. multiplexing) Networking course or Modern TLS 1.3 built into QUIC Project similar experience. Security is not an add-on option Create simple implementations of QUIC Review of security architecture and HTTP/3 and see how application code Responding to NAT rebinding could benefit One Day Intensive Training Course For Senior Knowledge Professionals

REST APIs – Designing, Specifying (OpenAPI) and Generating (OpenAPI-Generator) Design API, Write Spec, Autogen client/server code A REST API is the most practical way of connecting created by a consortium of forward-looking industry clients and servers in a distributed heterogeneous world. experts who recognize the immense value of standardizing on how REST APIs are described.” We start by discovering what is involved in creating high-quality REST APIs and how to best go about Once we have written our OpenAPI schema, the final designing them, in a contract-first manner. Later in the task is to generate code to produce and consume course we also explore advanced API design topics. messages that comply with that schema. For this, we use the OpenAPI Generator open source project. Then we need to specify the API. OpenAPI is “OpenAPI Generator allows generation of API client essentially a well-written standard for a messaging libraries (SDK generation), server stubs, documentation schema, describing the messages and their headers and and configuration automatically given an OpenAPI body contents. “The OpenAPI Initiative (OAI) was Spec”. It supports dozens of languages/frameworks. Contents of One-Day Training Course Need for REST APIs OpenAPI In Detail Representational state transfer Detailed look at important constructs in Principles of REST architecture spec file and how best to use them Reliably connecting distributed pieces of Boilerplate layout and sections functionality OpenAPI Generator Overview Target Audience Review of JSON and YAML A modern open source community API Software architects and How we represent information on the wire Generator toolset for building REST APIs senior developers tasked JavaScript Object Notation (advanced) Compliant with OpenAPI Spec v3 with efficiently creating “YAML Ain't Markup Language” (fork of Swagger Codegen) and/or consuming REST What enhancements YAML brings A set of useful tools for code generation APIs Tasks To Build REST APIs for client libraries and server stubs Need to consider design of API e.g.: OpenAPI Generator v4.x supports Need to specify API Angular code generation. Need to generate client library to call API OpenAPI Generator Features Need to integrate client library with UX Setup and tooling Need to generate server stubs to host API Integrate with build Prerequisites Need to integrate server stubs with DB, etc Useful command line arguments Sound understanding of at Need to comprehensively test everything List of options and their uses least one client Designing a REST API Exploring OpenAPI Generator source tree programming environment What to take into consideration Practical REST API Creation and one server Functionality discoverability Security (avoiding code injection) environment (from the Identifying resources and selecting verbs Testing OpenAPI Generator list of Integration with HTTP methods Working with CI/CD supported languages) OpenAPI Overview Error handling OpenAPI Initiative (Linux Foundation) Documentation generation Some previous experience The OpenAPI specification Style Guide of network programming (https://github.com/OAI/OpenAPI- How best to structure OpenAPI files would be useful. Specification/tree/master/versions) Naming conventions OpenAPI Usage Preparing for future API version evolution Contract Driven API (create contract first) Project Handling paths Building an end-to-end application Defining components involving all steps in REST API design, Creating API documentation specification, implementation and usage One Day Intensive Training Course For Senior Knowledge Professionals 69

ASP.NET Core 5 REST API Development Foundations, Creating REST APIs, Controllers, Domain, OpenAPI (Swagger), Testing, Architecture ASP.NET Core 5 is the modern approach to developing ASP.NET Core 5 comes with a range of features to web UI and REST API applications using .NET 5. This build REST APIs: both the HTTPS interface and exciting technology richly supports OpenAPI-based what is behind it (domain model, database access REST development, test-driven development, domain via EF Core 5) + enhanced OpenAPI support. models, custom URL routing schemes, flexible viewing and separation of concerns. Modern REST API developers use C# 9, .NET 5 This course covers in-depth the foundations of and ASP.NET to build server-side implementations, ASP.NET Core 5 and how to use it to create REST then use OpenAPI (formerly called Swagger) to APIs. Important: this course does not cover ASP.NET describe an API and tools such as OpenAPI- MVC user interface development (e.g. use of Razor) Generator to auto-generate client-side stubs (e.g. though much of what is covered here is needed for that. for Angular UI in the browser). Contents of One-Day Training Course Overview of ASP.NET Core 5 Controllers And Actions “ASP.NET is an open-source and Plays coordination role cross-platform framework for building ControllerBase modern cloud based internet connected ApiController applications, such as web apps, IoT apps Action results Target Audience and mobile backends. ” [link] Different results for different needs REST API developers Goals for ASP.NET Parameterizing actions wishing to learn about the Advantages and challenges Formatting results latest approach to creating Web UI and Web API unified Domain & Data Models REST APIs using .NET 5 Review Of REST API Pipeline Domain-driven design technologies. Dev setup required (Visual Studio 2019) Tour of DDD concepts (e.g. repository) What components are needed to deliver In ASP.NET context, model is a REST solution via ASP.NET domain model (not a data model) Quick Tour of all of ASP.NET Core 5 Domain model define repository, which Focus in on server-side implementation data model implements (e.g. EF Core 5) Prerequisites Detailed look at HTTP request pipeline Architecture Attendees are expected to First REST API App Designing ASP.NET solutions be experienced C# Walkthrough of a simple app introducing Common design problems developers with some all the major features OpenAPI (Swagger) understanding of the HTTP Solution layout Use of add-on OpenAPI capabilities protocol. Project template in Visual Studio 2019 with .NET 5 to create portable ASP.NET 5 runs on .NET 5 representation of API and documentation Attendance at our Important Concepts Security .NET 5 CLR Programming Attributes (Produces, Route, ..) security course or equivalent Use of async Using ASP.NET application services experience. HTTP methods (POST, GET, ..) Various threats Accessing parameter information Testing No previous experience of Conventions / Analyzers Approaches to testing web apps ASP.NET required, as this .NET Generic Host Unit testing and Mocking course explores it from the Useful for HTTP and non-HTTP traffic Debugging tools (e.g. Fiddler, Postman) foundations upwards. Structuring a host Project Integration with IIS and HTTP.sys A demonstration of how to use ASP.NET Core for more substantial workloads One Day Intensive Training Course For Senior Knowledge Professionals

ProtoBuf And gRPC Architecture, ProtoBuf, .proto file, Generated Code, Security, Performance, Messaging Design, Project gRPC (https://grpc.io/) is the world’s leading multi- to offer a REST API, now also lets them support gRPC language RPC framework and toolkit. Originally access. gRPC is being used in many industry-leading created by Google for their internal large distributed solutions (e.g. the critical etcd component that is at the systems, gRPC is now at the heart of a thriving open heart of Kubernetes talks gRPC to the other parts of the source community with robust implementations for all Kubernetes universe). major programming languages and runtimes. Software developers creating modern client / edge We see gRPC as one of a number of ways of performing applications and cloud-based microservices would be inter-app messaging. It is interesting to noted recently well advised to consider using gRPC to connect them. TensorFlow, which started with a gRPC interface, has This course aims to equip experienced developers with added REST API support, whereas ASP.NET, which what the y need to know in order to quickly implement started with only allowing apps written with it gRPC in production-quality code. Contents of One-Day Training Course How Processes Communicate Error Handling .. on same machine or distributed Instrumentation and tracing IPC (interprocess communication) options Dealing with errors at protocol level and Impact of corporate firewalls at application level gRPC vs. IPC vs. REST API vs. socket - Error scenarios and their responses (retry..) Target Audience why RPC is often[not always] best choice Testing gRPC Apps Experienced software gRPC Overview CI/CD and gRPC developers who need to Overview of gRPC architecture Unit testing gRPC components add fast networking Role of ProtoBuf Role of dependency injection capabilities to the .proto file Integration testing applications and Service definition gRPC And Performance microservices them are Dev Environment The key selling point of gRPC is its developing. What is needed on developer workstation efficiency – for high-volume messaging in order to program against gRPC between software components, it is the Library / tooling setup best approach in most cases Auto-generating ProtoBuf details Scaling to larger number of endpoints ProtoBuf Intro gRPC and Security What are protocol buffers (ProtoBufs)? Authentication Prerequisites Supported data types Encryption (https://grpc.io/docs/) Dealing with issues regarding differences Denial of service Good knowledge of one of between programming language data Designing Message Flows the programming types and ProtoBuf data types Take time to properly design message flow languages that support Producing and consuming ProtoBufs Often multiple messages within a flow gRPC – attendees may Serializing buffers gRPC Internals select one of these to Advanced ProtoBuf Let’s travel along with a packet exchange complete the lab exercises Binary serialization over RPC and project. Advice for buffer design and optimization Layering . Streams HTTP/2 transport gRPC Programming Project Constructing a service definition Using gRPC in a larger project – creating Generating client and server stubs ProtoBuf representations of packets that Programming details for gRPC needed to be exchanged and implementing Integration with threading and async messaging over gRPC One Day Intensive Training Course For Senior Knowledge Professionals 71

Kubernetes How Everything Works Together, etcd, API Server, Scheduler, Controller, Kubelet, CRI, CNI, CSI, Project Once you go beyond running a few containers on a However, after we first review the big picture for single machine, you need to think about how to manage Kubernetes, when we examine each of its components multiple nodes and make them work together at scale in turn, we see they each performs a focused task and that is where Kubernetes comes in. Kubernetes is (storage config, change data, schedule a container, start the leading orchestration system for container clusters. a container). Each component on its own is relatively simple, and so we gradually build up a deeper At first glance Kubernetes is confusing, because it understanding of how Kubernetes actually works. involves multiple components running demanding / varying workloads on different nodes in a network. It This intensive course brings engineering professionals needs to offer resilience in the face of all kinds of who already know about containers and microservices failure, very tight security, efficiency, timely delivery of up to speed with the world’s leading open source application updates and many more features. container orchestration platform. Contents of One-Day Training Course Big Picture Concepts Controllers What is a container cluster, a master node, Multiple controller types are supplied to a worker node, schedulers, controllers, manage node lifetimes, replication, Target Audience a container, a pod, kubelet, etc. endpoints and account details Developers, devops How everything works together Cloud controllers personnel and system Setting up a Container Cluster Kubelet administrators wishing to Set up Kubernetes so that master talks to Makes a worker node part of the cluster provision large clusters of kubelet on each node, which manages a Watches settings in etcd for this node containers using set of pods on that node, and each pod When change detected in etcd config, Kubernetes. contains one or more containers makes it so in what runs on worker node etcd Container Runtime Interface etcd is a highly reliable distributed CRI is an interface between kubelet and database engine that optimally stores and actual container runtime Prerequisites allows observing of config data Popular options: CRI-o or cri-containerd Attendees to this course Like what you have in /etc config files Containers are usually run via OCI’s runc must have already attended but managed by daemons (hence name) CNI our Microservices and RAFT Protocol Container Network Interface (CNI) is a Containers course or have API Server spec and implementation for networking similar experience. Offers a REST API to remote clients to functionality in the world of containers configure and monitor a cluster CSI Clients could be command-line interface Container Storage Interface (CSI) is a (CLI) tools or admin consoles or scripts plugin architecture for storage volumes Writes settings into etcd Labels and selectors Let’s examine APIs on offer Attaching key/value pairs to objects Kubectl Selecting many objects based on labels A CLI that talks to API Server Kubernetes Source Tree Main route for devops people to To build up deeper knowledge, we explore directly interact with API Server the source trees for Kubernetes and Scheduler related projects, such as etcd Watches etcd for changes to configuration (all written in Go) (e.g. via API Server) and makes Project scheduling decisions, writes these to etcd Deploying a real world application to a Scheduling algorithms and settings Kubernetes cluster One Day Intensive Training Course For Senior Knowledge Professionals

Technology / UX School Client UI ● User Interaction Design ● HTML5.3 And DOM5.3 Using TypeScript ● CSS ● Angular 12 Fundamentals ● Advanced Angular 12 ● Angular Material 12 ● PWA using Angular 12 Service-Worker ● Angular 12 Internationali[z|s]ation ● NgRx ● Web Components/Angular Elements/Microfrontends Server UI ● Node.js 16, Express And PUG UI Programming Using TypeScript Hybrid UI ● Ionic 6 RTC ● WebRTC Using Angular Graphics ● Web 2D Graphics Programming ● WebGPU And WGSL Media ● Web Media Programming Workspace ● Namespace Extensions One Day Intensive Training Course For Senior Knowledge Professionals 73

Fundamentals Of User Interaction User Centered Design, Usability Principles, Design Process, Identifying the User, Tools, Usability Tests Usability is an intangible software feature - more if not, it needs to be reconsidered. There is a need to noticeable by its absence than its presence in an collect as much information as possible from the user – application. This course helps you design it into your via product demonstrations, usability testing, and after products. User interaction design is a branch of software launch, analyzing the helpdesk queries. Just like engineering – and needs to be approached in an advertising, 50% of software features are never used – organized manner. We need to get to know the user, to you will need to find out which, and more importantly discover the user interaction requirements, to build the why – perhaps the unused features are too difficult, app, and then to test that we have done it correctly. This perhaps the user does not know they exist is both similar and different to how we would code up (inaccessible), or perhaps they are simply not needed. an algorithm or implement a database schema. Every Designers and developers will benefit from attending workitem on a software dev team’s project plan should this course by gaining an increasing awareness of the be examined to see if it enhances usability of the app - processes used to create incredible user-friendly apps.

Contents of One-Day Training Course User-Centric Design The look of the application Placing the user at the center of the Font, color, etc. software design process Use of certain controls Every developer needs to think of the user Layout of forms experience – not just those who directly Task-centric design Target Audience create the user interface Icons and cursors This course is aimed at Usability Design Principles Benefits of a “minimalist” interface software designers and Terminology and metaphors Types of GUI senior developers who Consistency OOUI need to create highly Task invocation and navigation MUI intuitive user interfaces Functionality discovery Handling complexity Continuous feedback Handling large data sets Controllability Usability for different apps Selection and activation Database (transactions, locking, tables) Validation of user input Graphics (dirty bit, perspective, selection) Concepts Components (object display, activation) Prerequisites User – application communication Networking (node selection, time delays) Experience of Norman’s Model User Assistance Tools programming graphical From CLI to GUI to CBI Help system/online mentoring wizard user interfaces is needed Command-Based Interface used from Context sensitive computer based training along with an appreciation multiple sources (GUI, wizards, macros, Error Avoidance of usability issues Automation, CBT/Help, undo/redo) Why errors happen Usability Design Process Engineering user errors out of applications Identifying the user Users never make errors-only designers do Task analysis Usability Testing Story-boarding The “five minute” user test Prototyping Collecting information from users Usability testing User interaction engineering An iterative cycle Making it part of the development project Direct Manipulation and what internal doc/models are needed. Direct interaction Usability Engineering Project In-place editing Complete walk through of how to design Drag and drop user interaction for a complex project One Day Intensive Training Course For Senior Knowledge Professionals

HTML5.3 and DOM5.3 Using TypeScript Text, sections, forms, tables, the DOM, events, the canvas and lots more inside modern browsers The web platform is undergoing a rapid pace of Among the many enhancements explored in this course innovation and its primary standards, HTML and its are the shadow DOM, the HTML canvas, better table DOM, are central to how modern browsers work. The functionality, improved event handling architecture, the HTML markup pre-populates the tree and then the idea of an HTML application with a manifest, better DOM can be used to dynamically edit the tree’s content. navigation and plenty more. After a quick review of the fundamentals of HTML and the DOM, this course explores many of the the new and In the past developers using higher level frameworks expanded capabilities offered by HTML5.3 & DOM5.3. were sometimes isolated from directly accessing HTML These latest specs are well supported across modern and the DOM, but there has been a trend in more recent web browsers from different vendors and offer an frameworks to re-introduce developers to direct low- increasing range of rich functionality that significantly level access to the full power of HTML and the DOM - improve over the simple markup apps of the past. we will investigate the real benefits of this approach. Contents of One-Day Training Course HTML5.3 overview Modern Tables WHATWG (.org) and W3C Evolution of HTML tables - table, caption, “Living standard” vs. numbered spec colgroup, col, tbody, thead, tfoot, tr, td, th Central role of HTML’s 1200-page spec Forms in standardizing the web platform Submitting to the server Target Audience Collection of specs form, label, input, button, select, datalist, Experienced developers Metadata, elements, attributes, encoding optgroup, option, textarea, output, progress, who already know the Tour Of Elements meter, fieldset, legend basics of HTML (HEAD, Exploring common elements, some we are HTML Templates BODY, P, DIV, etc.) and familiar with, some new to HTML5 Chunks of reusable markup now wish to get up to Page lifecycle / Uses for URIs Defining and instantiating speed with the latest The execution context(s) Event Handling standards for markup and Content models Event bubbling programmatically editing Resources, URI and IRI Defining and using events HTML content. Identifying resources Popular DOM events Internationalization with IRI Event listeners DOM Overview Shadow DOM Correspondence between HTML markup Isolating elements for web components Prerequisites elements and DOM tree elements (they attachshadow() and shadow root For the DOM5.3 part of are similar, but not exactly the same) Specialist HTML the course, all demos and How to interact with a tree of elements iframe, dialog, summary, ins/del lab exercises will be in Options for parsing / serializing DOM Session history TypeScript, so attendees Role of WebIDL in defining web APIs Location need to know that Sections & Grouping HTML Canvas language. Sections - body, article, section, aside, Drawing context h1..6, hgroup, header, footer, address 2D immediate mode graphics Grouping – p, hr, pre, blockquote, ol, ul, Other graphics and media handling menu, li, dl, dt, fig[ure|caption], main, div OffscreenCanvas Text HTML Applications a, em, strong, small, s, cite, q, dfn, Application Cache and manifest abbr, ruby, rt, rp, data, time, code, Offline web applications var, samp, sub/sup, kbd, i/b/u, mark, Linking and link types bdi,bdo,span,br, wbr The Markdown DSL One Day Intensive Training Course For Senior Knowledge Professionals 75

CSS – Cascading Style Sheets Handling Styling, Selectors, Descriptions, Specificity, Priority, Pseudo-, CSS for ..., SCSS CSS is not a markup language (unlike HTML5) used to be applied to elements. An important consideration is to represent content. CSS is not a programming language maintain the same “look & feel” across multiple pages, (unlike JavaScript/TypeScript), used to dynamically Thus a site-wide “house style” is often defined. Also change content at run time. Rather, CSS is a styling CSS allows the same content to be optimally rendered language used to concisely represent styling on output devices with differing capabilities (size, information for web content. resolution, interactivity) and suitably for people with differing interaction needs. CSS is used to declaratively describe the initial hierarchical set of styles that are to be applied to HTML This course looks at the role of CSS in the world of elements which later may be manipulated by modern web development, provides a detailed tour of TypeScript/JavaScript code. CSS offers considerable CSS features and explores how you can best deploy it flexibility in how styles are specified and how they can for styling your own web solutions. Contents of One-Day Training Course CSS Overview CSS for Layout Growing set of styling standards Defining where elements appear on page Defining CSS rules Replacement for HTML tables (sometimes) Style document layout Multi-columns and flexible layout Declaration block CSS for Color Target Audience Internal CSS using