No dates yet
Tell us the schedule that would work
We plan batches around demand. Weekend, morning and intensive formats open when enough people ask for them.
Register your interestThe Java a working engineer actually needs — from your first class to collections, streams, concurrency and tests
Designed for
Learning outcomes
Course curriculum
Duration: 80 guided hours
FoundationSessions 1–2
What you will build
The Placement Desk exists from day one — a runnable banner-and-menu skeleton compiled and run from the command line, plus a deliberately broken build you diagnose and repair from javac output alone.
Module 1
FoundationSessions 1–2
What you will build
The Placement Desk exists from day one — a runnable banner-and-menu skeleton compiled and run from the command line, plus a deliberately broken build you diagnose and repair from javac output alone.
Module 1
Batches
No dates yet
We plan batches around demand. Weekend, morning and intensive formats open when enough people ask for them.
Register your interestCourse trainers
Founder & Principal Trainer
Vishal has spent more than twenty years as a hands-on engineer and architect across commerce, banking and fintech platforms, and still writes code daily. He teaches the production concerns most courses skip, because he has spent two decades being paged about them.
Practice
Build one product for eight weeks. The Campus Placement Desk is created in session one and grows in every module — each session opens with a scenario the current version cannot handle, and closes with the increment that handles it. By the final sessions it is a layered console application with a domain model, an interface-backed repository, stream-based reporting, CSV persistence, exception boundaries and a JUnit 5 test suite, built and packaged with Maven — and every line of it was written, refactored and re-reviewed by the learner.
Career support
Supplementary revision material reviews the questions Java candidates are actually asked — pass by value, String immutability and the pool, the equals and hashCode contract, HashMap internals, ArrayList compared with LinkedList, checked compared with unchecked exceptions, abstract classes compared with interfaces, static and final semantics, generics and type erasure, lambdas and functional interfaces, stream pipelines and laziness, Optional usage, the java.time API, synchronized and volatile, thread pools, and reading stack traces.
Detailed course information
Most graduates arrive able to write Java that compiles and unable to say why it behaves the way
it does. They can produce a class, but not explain why their object vanished from a HashMap,
why the API returned the wrong total under load, or why the file handle stayed open. The syntax
was taught; the model underneath it was not.
This course teaches that model. Eighty guided hours, forty sessions, building from a first compiled class to a layered, tested, Maven-built application. Every topic is taught against code that runs, and most are taught twice — once in the version that fails, once in the version that does not.
No prior Java knowledge and no prior Deesha course is required, though learners who have already completed DTA-01 Professional Developer Foundations will be more comfortable with the command line, Git and the debugging discipline used from session one. Learners need regular access to a 64-bit Windows, Linux or macOS computer with at least 8 GB of memory, basic file-and-folder skills, and permission to install the course toolchain.
Plan approximately 45–60 minutes of practice after most sessions, and up to two hours between final-project sessions. This practice is recommended for fluency and is not counted in the 80 guided hours.
This course is not intended for experienced Java developers who already work confidently with generics, streams and concurrent code. It does not teach Spring or Spring Boot, JPA or Hibernate, web frameworks, Android, build pipelines, cloud deployment, microservice architecture, JVM performance tuning or garbage-collector engineering. Those belong in follow-on programmes once the language foundation is secure.
Learners who complete this course and want backend depth continue to DTA-07 Spring Boot Backend Engineering, which assumes everything taught here.
If you have never programmed at all and want the smallest possible language surface first, DTA-16 C Programming covers control flow, functions and memory with no objects and no standard library. It is not a prerequisite; it is an alternative route into the same fundamentals.
The course is taught on a current Long-Term Support JDK (Java 17 or Java 21), because that is what employers run and what learners should install on their own machines. All required exercises and all assessed material are written to the Java 8 language surface, so that everything a learner is examined on is also valid certification material.
Modern conveniences — var, records, enhanced switch, text blocks, pattern matching for
instanceof — are demonstrated as clearly-labelled awareness so learners can read a modern
codebase, and are never required in an assessed exercise. Where a modern feature replaces an
older idiom, both are shown and the reason for the change is explained.
Learners use Maven for builds and JUnit 5 for tests from the module in which each is
introduced, not only in the final project. Early sessions invoke javac and java directly so
that compilation, the classpath and bytecode remain visible before any tool hides them.
Eclipse is supported for learners whose college or employer standardises on it, but session demonstrations are recorded against IntelliJ IDEA.
Each two-hour session follows a consistent rhythm:
The balance changes during final-project sessions, when most of the time is used for implementation, review and correction.
The syllabus covers the full Java SE 8 Programmer I objective domain: Java basics, working
with Java data types, using operators and decision constructs, creating and using arrays, using
loop constructs, working with methods and encapsulation, working with inheritance, handling
exceptions, and working with selected classes from the Java API including String,
StringBuilder, Arrays, ArrayList, the java.time classes and basic lambda expressions
with Predicate.
Two things learners should understand before planning an examination:
ArrayList,
generics, the full Streams API, files, concurrency, Maven and JUnit are taught because
professional work requires them, not because the Programmer I examination tests them. Several
of these appear in the Programmer II examination instead.Certification preparation material — objective mapping, topic-wise practice questions and two timed mock examinations — is supplied to enrolled learners. Deesha does not administer the examination, and enrolment does not include the examination fee or guarantee a pass.
The course is organised around one product, not a series of disconnected labs. In session one, learners compile and run the first version of the Campus Placement Desk — a console application for a college placement cell: student records, visiting companies, applications, interview rounds and outcomes. Every module then grows it. The domain is deliberately neutral — no specialist knowledge is needed — and the brief provides acceptance criteria and sample data without providing the completed implementation.
Each session is scenario-driven: it opens with a request the current version of the desk cannot handle — a new batch of students, a report the coordinator wants, a duplicate registration, a crash on registration day — and the day's topic arrives as the tool that handles it. Learners therefore practise the thing courses usually skip: extending and refactoring code that already works, which is what professional Java actually is. Earlier decisions are deliberately revisited — arrays give way to collections, hand-written stores collapse into a generic repository, loops become streams — so refactoring is taught as normal work rather than as failure. Session-level trainer and participant guides drive each increment; the module table above shows the state of the product at the end of every module.
The final two sessions integrate and harden rather than start: by then the product exists, and the work is finishing it against the published acceptance criteria, reviewing it and demonstrating it.
By completion the project requires learners to:
equals, hashCode and at least one Comparatorjava.time API rather than stringsassertThrowsClasses, interfaces, inheritance and enums are taught deeply enough for learners to design a type with a clear responsibility and defend it in review. Design patterns are introduced only where the project genuinely uses them — strategy through interfaces, factory through static creation methods. A full patterns catalogue is out of scope.
Learners must be able to choose a collection for a stated access pattern and justify it, and to read and write generic signatures including bounded types and wildcards. Writing a generic library, implementing a custom collection, and the finer points of type inference are reserved for follow-on work.
Lambdas, method references, the standard functional interfaces, stream pipelines, collectors,
Optional and the java.time API are required and assessed. Custom collectors, Spliterator,
reactive streams and functional-programming theory are not.
Threads, shared-state hazards, synchronized, volatile, atomics, thread pools and
CompletableFuture are taught as essentials, because concurrency bugs surface in ordinary
application code. The Java Memory Model is explained operationally rather than formally, and
lock-free algorithms, ForkJoinPool tuning and virtual threads are demonstrated as awareness
only.
Learners develop cost intuition — why concatenating in a loop is expensive, why an ArrayList
lookup differs from a LinkedList traversal, why a HashMap degrades with a poor hashCode.
Profiling, benchmarking methodology, garbage-collector selection and JVM flag tuning are not
covered.
Each session includes a formative learning check. The required final quiz is delivered in Moodle; session checks may also be assembled there after platform import review. Course completion requires:
For the pilot batch, attendance and the final quiz are recorded and verified manually by the trainer. Automated tracking arrives with the learning platform; the completion criteria above are the same either way.
The final project is reviewed and demonstrated as applied learning evidence, but it is not an additional completion gate for this pilot. The completion record confirms the attendance and knowledge-check criteria above; project evidence is recorded separately and does not claim an independently certified level of professional capability. Deesha course completion is separate from any Oracle certification, which is awarded only by Oracle on passing its examination.
Active enrolled learners receive session study guides, starter projects, exercises, the course quick reference, certification preparation material and interview-preparation material. Approved session recordings may be provided when a batch records them with the required notice, consent, review and access controls. Learner material is shared through restricted access. Study material is view-only where the platform supports it; starter code and exercise data are downloadable so learners can compile, run and edit a personal working copy. Trainer plans, source presentations, solutions and question rationales remain private.
Learners receive supplementary material covering the Java questions most commonly asked of freshers and early-career developers, together with code-reading exercises and "what does this print" drills of the kind used in written screening rounds. It will be exported to an accessible participant format before release. This material supports revision; the course does not promise interview or employment outcomes.
Get batch details
Tell us the schedule that would suit you and we will let you know when a batch opens.
Where this leads
Step 6 of 9
Full-Stack Engineer — Java
Java Full-Stack Developer · 9–11 months · In preparation
Continue with
Spring Boot Backend Engineering
Core · 8 weeks · In preparation
Need help deciding?