Skip to main content

Syllabus

Introduction to Web Development

  • Where we're going, what we could do after this
  • Version control
  • Rewire about network: Internet, Protocol, Browsers
  • Introduction to coding conventions and best practices
  • Introduction to SonarQ

Java Core

  • Java Basics: Life cycle of a Program, Data types, Variables and Scope, Operators, Array, Loops
  • Exception Handling
  • Lambda Expressions
  • Annotations
  • Modules
  • Optionals
  • Dependency Injection
  • I/O Operators, Working with files
  • Collections: Array vs ArrayList, Set, Map, Queue, Deque, Stack, Iterator, Generic Collections

Java OOP

Basic OOP

Encapsulation

  • Attributes and Methods
  • Access Specifiers
  • Object Life Cycle
  • Initializer Block
  • Static Keyword
  • Final Keyword
  • Value & Reference
  • Method Chaining
  • Packages

Abstraction

  • Abstract Classes and Methods
  • Interfaces
  • Enum, Record
  • Nested Classes

Inheritance

  • Superclass & Subclass relationship
  • Static vs Dynamic Binding
  • Object Class (implicitly involved)

Polymorphism

  • Method Overloading
  • Method Overriding
  • Static vs Dynamic Binding

Concurrency

  • Process vs Thread
  • Race Conditions
  • Thread Safety
  • Deadlocks
  • Locks and Semaphores
  • Thread Class
  • Runnable and Callable Interfaces
  • Future and FutureTask
  • Thread.sleep(), join(), interrupt()
  • synchronized keyword (method/block level)
  • Intrinsic Locks and Monitor
  • volatile keyword
  • ReentrantLock (java.util.concurrent.locks)
  • Thread Pools: ExecutorService, Executors
  • Task Submission: submit, invokeAll, invokeAny
  • Blocking Queues: LinkedBlockingQueue, ArrayBlockingQueue
  • Countdowns & Barriers: CountDownLatch, CyclicBarrier
  • Semaphore, Exchanger

Functional Programming & Others

  • Cryptography, Date Time, Networking, Regex
  • Higher Order Functions, Functional Interfaces, Functional Composition
  • Stream API

Environment

  • Configuration Utilities
  • System Utilities
  • PATH and CLASSPATH
  • Build with Maven

Introduction to Backend Development

  • Rewire about network
  • Databases: Relational (Postgres) and Non-relational

Spring & Spring Boot

Spring Core

  • Terminology & Architecture
  • Configuration
  • Dependency Injection
  • IOC
  • AOP
  • MVC
  • Annotations
  • Beans

Spring Security

  • Authentication
  • Authorization
  • OAuth, JWT

Spring Boot

  • Auto Configuration
  • Actuators
  • Embedded Server
  • Hibernate: Transactions, Relations, Entity Lifecycle

Manage Data

  • JPA, JDBC, MongoDB

Spring MVC

  • Architecture
  • Components

Deep Dive into Backend Development

APIs

  • REST (Must), JSON API, SOAP, GraphQL, gRPC

Authentication

  • JWT
  • OAuth (with Keycloak)
  • Basic Authentication vs Token Authentication
  • Cookie-Based Auth
  • OpenID, SAML (with Keycloak)

Caching

  • Server-side
  • CDN
  • Client-side

Web Security

  • Cryptography, Hashing: MD5, SHA, scrypt, bcrypt
  • HTTPS, CORS, CSP, Server Security, SSL/TLS
  • Rewire about coding conventions, secure development

Logging

  • Log4J

Working with Databases & Advanced Topics

  • ORM: JPA, JDBC
  • Transactions
  • N + 1 Problems
  • Database Design: Normalization
  • Failure Modes
  • Migrations
  • Tuning: Database Indexes, etc.
  • Scaling: Replication, Sharding

Software Design Introduction

  • Monolithic Applications
  • Microservices

Microservices

  • Introduction: Basics, Use Cases, Design Principles
  • API Gateway: Spring Cloud Gateway
  • Service Discovery: Eureka
  • Config Management: Spring Cloud Config
  • Logging: ELK
  • Circuit Breaker: Spring Cloud Resilience4j (JHipster Support) / Spring Cloud Circuit Breaker
  • Message Brokers & Service Communication: Kafka

Deployment

  • Introduction: Containerization vs Virtualization
  • Unix Basics
  • Docker

Advanced Topics

  • Search Engine: ELK
  • Web Servers: Nginx
  • Real-time Data: Server Sent Events, WebSocket, HTTP Long & Short Polling