Apply

Java + DevOps Course

Розклад:

Початок курсу
12 травня 2021
Тривалість навчання (пн, ср, пт):
3.5 місяця
Тривалість оплачуваного стажування (5 днів на тиждень, 8 годин на день):
2.5 місяця
Понеділок
17:00-20:00
Середа
17:00-20:00
П’ятниця
17:00-20:00
* Програма передбачає можливість додаткових занять у суботу, остаточний розклад буде надіслано заявникам, які потраплять до курсу.

Опис Курсу

Ми розробили програму для початківців, які хочуть навчитися писати код на Java з нуля. Студенти отримають навички розробки та написання програмного коду достатньої якості для подальшого використання в реальних продуктах та проєктах.

Творці курсів зосередили програму на практичних навичках з наступних тем:

- основні конструкції Java
- найбільш використовувані пакети Java
- робота з базами даних та Інтернетом
- фреймворки для побудови програмного забезпечення в хмарному середовищі

Як бонус ми додали до програми DevOps практики, орієнтовані на набір інструментів Java.

Проєкти

Під час курсу студенти розроблять 3 проєкти, на основі яких суддівська комісія визначає, яких випускників відбирають для подальшого навчання / стажування.

Проєкти охоплюють весь матеріал, який вивчений під час попередніх модулів, та дозволяють закріпити набуті знання на практиці.

Оцінювання

Під час навчального процесу студенти повинні виконувати домашні завдання та проєкти, на основі яких експерти курсу оцінять їх практичні навички й знання, а також рівень командної роботи.

ЕКСПЕРТИ КУРСУ

Artur Ashyrov
Artur Ashyrov
Head of Engineering
Andrii Ryzhenko
Andrii Ryzhenko
Senior Scala Developer
Mykola Ivaniuk
Mykola Ivaniuk
Java Dev Lead
Volodymyr Chyzhevskyi
Volodymyr Chyzhevskyi
Scala Tech Lead
Yevhen Hryshchenko
Yevhen Hryshchenko
Middle Java Developer
Oleg Beletskyi
Oleg Beletskyi
DevOps Team Lead

Програма курсу

1.
Intro. Toolkit setup. IDE/VCS

Intro. Toolkit setup. IDE/VCS

  • JDK, JRE, JVM, bytecode, compiling vs interpreting
    IDE: Idea
    VCS: Git, GitHub, GitLab, Bitbucket
  • Creating git repos.
    Cloning
    Basic git flow: commit/push/fetch/pull
    Branches: merging, pull requests, tags

Java 101: hello world

  • Java Basic Syntax, comments, classes, methods, entry point, HelloWorld App
    Data types, sizes, static vs dynamic typing, min and max, default values
    Java command line
  • Maven, dependencies
    Compiling, running, testing from command line
  • Conditionals, ternary operator, switch (+break), readability switch vs if
    Iterations: for / while / do while
    Enums. Limited set of values. impossibility to represent incorrect values
  • Arrays, declarations
    Finding a value, sorting, copying, slicing
    Passing as a parameter, returning as a result
  • Strings. Basic operations
    Immutability, StringPool

Java OOP

  • OOP intro - split declaration, instantiation (object creation) and behavior
    Java modifiers: private, public, protected, package private
    Encapsulation, polymorphism, interfaces, nested classes
  • Object Equality
    Equals, hashcode, relations between them, Lombok
    Custom equality, know your data! Write proper hashcode

Java Exceptions

  • Exceptions
    Errors, Checked, Unchecked, try / catch / finally syntax
    How to deal, where to catch. try / catch with resources

Java collections

  • Collections, basic types, basic operations
    List, Set
    Generics idea, primitive wrappers, boxing / unboxing, Power and Limitations, Type erasure
  • Linked List
    Stack, Queue
  • Set, Map, unique, absence of ordering, common behavior
    Common usecases
    Iteration over Set and Map
  • Comparator / Comparable
    Iterator / Iterable
    Sorting with custom comparator

Streams and Functions

  • Streams
    Combining, Splitterator
    Parallelism
  • lambda syntax, method reference, constructor reference
    Functional Interfaces, high-order functions
    Optional type

Streams and Functions

  • Streams
    Combining, Splitterator
    Parallelism
  • lambda syntax, method reference, constructor reference
    Functional Interfaces, high-order functions
    Optional type

Java misc: IO, working with date&time, annotations

  • Java reflection, annotations
    Custom annotation writing and processing
    Complexity & caveats
  • Input / Output Streams, Readers, Writers
    File operations. Reading/Writing files
    IOException
  • Java8 DataTIme API
    Instant, LocalDataTime
    Parsing, formatting

Java Multi-threading

  • Multithreading. Problem
    Threads model in Java
    Different abstraction levels: synchronization, volatile
  • Java memory Model, primitives vs referential, classes vs objects
    ClassLoader / stack / heap, null as a reference to nothing
    Static examples, patterns, antipatterns, Garbage Collection
  • Concurrent primitives: Barriers, Latches, Locks
    Concurrent Data Structures: Atomic*, ConcurrentCollections
    Future, CompletableFuture, Executors, ExecutorPools

Working with databases: SQL&NoSQL

  • SQL abstraction, syntax
    PostgreSQL: creating database in PGAdmin
    Select, insert, update, delete, where
  • Join: left, right, inner, outer, full
    Aggregation: count, min, max, avg, sum
    Nested queries, constraints, primary, foreign keys
  • NoSQL vs SQL dbs
    Elasticsearch

    Neo4J
  • JDBC connection, statement
    JDBC resultSet
    JDBC transactions

Working with HTTP

  • HTTP Server, URL, URI, Servlet, Request, Response, Lifecycle
    Mappings, GET, POST, Parameter passing. Redirects
    Tomcat app server
  • Serialization
    XML, JSON
    Jackson library
  • REST principles
    conventions: verb/noun, signular/plural
    API versioning

Design patterns: basics

  • Паттерны проектирования. Порождающие, структурные, поведенческие
    Порождающие паттерны: фабрика, билдер
    Структурные паттерны: фасад, прокси
  • Dependency Injection
    MVC
    DAO: InMemory / File / SQL Implementations

Spring Boot

  • Spring framework
    Spring Beans
    Spring Dependency Injection
  • Spring Boot
    Bootstrap file vs application yml
    Overriding parameters in boot app
  • View vs Data, Controller vs RestController
    Mappings
    Parameters/Entities passing
  • Exception Handling
    ControllerAdvice
    Application-wide error handling, custom 40X,500
  • SpringData. CrudRepo, PagingAndSortingRepo, JpaRepo
    DTO Pattern, findByExample, ModelMapper
    H2 for testing
  • Database migration. Necessity of metadata manage
    Basic Examples
    FlyWay
  • Spring Boot Test
    Writing integration tests
    Mocking beans

Algorithms. Recursion. Complexities

  • Algorithms. Complexity
    N vs LogN difference
  • Algorithms. Recursion
    Length, count, factorial, fibonacci
    Head recursion vs tail recursion
  • Algorithms. Linked Lists
    Merging two sorted lists
    Add/remove by index/value
  • Algorithms. Binary search
    Recursive / non-recursive
    Position to insert missing item

Java + DevOps: CI/CD

  • ci-cd: concept, problems, solutions
    ci-cd: .gitlabci.yaml, runners, services, building docker images
    ci-cd: gitlabci: stages
  • ci-cd: gitlabci: build\publish docker image

Java + DevOps: Docker

  • Linux process abstraction
    virtualization history. virtualization vs isolation. vm vs container, docker
    docker concepts: container, image, layers, network, volumes
  • docker install on Linux, macOS
    build docker image: Dockerfile, build command
    docker registry: pull, push
  • main docker commands: build, run exec
    docker compose: concept, network, volumes
    docker compose: multicontainer examples

Java + DevOps: K8S

  • k8s: concepts, problem, solution
    k8s: control plane, data plane, components, architecture
    k8s: resources: node, pod, service, deployment, ingress
  • k8s: katacoda
    k8s: minikube
    k8s: k3s

 

Java + DevOps: Monitoring

  • best practices: cloud-native apps
    k8s - startup, liveness,readiness probes, handling sigterm
  • telemetry - prometheus overview
    exposing metrics - jmx

    stafanprodan/podinfo overview

ЩО ОТРИМУЮТЬ СТУДЕНТИ

  • Знання основ Java
  • Навички IDE
  • Навички проєктування програмного забезпечення
  • Розуміння та практичні навички TDD
  • Розуміння сучасних підходів до розробки продукту в команді
  • Основні навички DevOps - здатність доставляти ваш код кінцевим користувачам
  • Розуміння архітектур мікросервісів та проблем, пов’язаних з ними
Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply Apply
Fill in the form
exit