Java Tutorial

Assessment Rubric

Assessment Rubric

This course is not graded by memorizing Java syntax. Assess whether learners can read, reason about, and safely modify Java code.

Lesson 1: Advanced OOP

SkillDevelopingProficientStrong
Records and invariantsCan identify record fields.Can explain constructor validation and immutable data use.Can choose between record, class, and enum for a new domain concept.
Interfaces and sealed typesCan call interface methods.Can explain permitted implementations and polymorphic dispatch.Can add behavior while preserving a sealed hierarchy's design intent.
Generics and collectionsCan read List<T>.Can explain bounded generic types in Order<T extends LineItem>.Can justify when generic flexibility is useful or unnecessary.
Exercise functionsCan make code compile.Implements totals, optionals, shipping, tax, sorting, and grouping correctly.Explains validation boundaries, rounding, deterministic ordering, and duplicate aggregation.

Lesson 2: Decorators

SkillDevelopingProficientStrong
Wrapper flowCan identify the wrapped object.Can trace call order through multiple decorators.Can predict how changing wrapper order changes output.
Object vs function decoratorsRecognizes both styles.Can implement both object and lambda wrappers.Can explain when a pipeline is clearer than nested decorators.
Java I/O decoratorsCan instantiate a BufferedReader.Can explain stream-to-reader layering.Can design a small resource-safe wrapper using try-with-resources.
Exercise functionsAdds simple prefix behavior.Implements transforms, audit, blocklist, truncation, counting, and composition.Predicts how wrapper placement changes side effects and short-circuit behavior.

Lesson 3: Multi-Threading

SkillDevelopingProficientStrong
Executors and futuresCan submit a task.Can collect results and close an executor.Can choose a pool style based on workload shape.
Shared stateRecognizes a race condition.Uses immutable results or atomics safely.Can redesign a shared-state solution into result aggregation.
Async pipelinesCan run a CompletableFuture.Can explain supplyAsync and thenApply.Can identify where error handling or cancellation is missing.
Exercise functionsProduces correct word counts.Uses parallel tasks, deterministic merge behavior, top-N ranking, stop-word filtering, and ordered results.Discusses overhead, exact token semantics, failure handling, and when sequential code is better.

Lesson 4: Toy Edge Library

SkillDevelopingProficientStrong
Image representationUnderstands pixels as numbers.Can map BufferedImage to a grayscale matrix.Can explain boundary handling and value clamping.
ConvolutionCan read a kernel.Can trace a 3x3 kernel over an image.Can add a new filter and reason about output scale.
Sobel edgesRecognizes horizontal and vertical gradients.Can explain magnitude calculation.Can discuss preprocessing tradeoffs such as blur before edge detection.
Exercise functionsImplements simple clamp.Implements pixel conversion, normalization, blending, Sobel magnitude, and boundary sampling correctly.Handles validation, numerical rounding, packed color values, and edge sampling tradeoffs clearly.

Lesson 5: Java @ Annotations

SkillDevelopingProficientStrong
Built-in annotationsCan identify @Override and @Deprecated.Can explain compiler-checked versus runtime-visible annotations.Can choose narrow annotation scope and explain tool/runtime effects.
Custom annotationsCan read @interface.Can explain annotation elements, defaults, @Retention, and @Target.Designs annotation metadata that is simpler than equivalent boilerplate.
ReflectionCan call getAnnotation.Reads class, method, repeatable, package, record, and type-use annotations correctly.Explains why retention and target determine what reflection can see.
Framework-style metadataRecognizes decorator and getter/setter annotations.Explains that metadata needs a framework or annotation processor to create behavior.Can distinguish metadata-driven design from explicit method calls.

Lesson 6: Spring Boot Hello World

SkillDevelopingProficientStrong
Boot startupCan run the app.Explains SpringApplication.run, the application context, and the embedded server.Can separate Boot startup concerns from application behavior.
Web routingCan identify @GetMapping.Traces query parameters and JSON request bodies into controller methods.Designs a new route while preserving service reuse and HTTP semantics.
Service rulesImplements the happy path.Handles defaults, whitespace, punctuation validation, and configured length limits.Explains why validation belongs in reusable service logic for this lesson.
TestingCan run Maven tests.Reads unit and controller tests as executable requirements.Adds a failing test first for a new route or edge case, then implements it.

Course Completion Evidence

Learners are ready to continue independently when they can: