Welcome to Code Medium
Empowering Everyone to Learn Coding
At Code Medium, we believe that coding is an essential skill for the modern world. Our mission is to make coding accessible to everyone, regardless of their background or experience level. Join us and start your journey to become a proficient coder today!
Java Beginner to Advanced
Your plan to become a
Modern & Advanced Java
Developer
Live classes start from 21st July
Enroll for the full program at only ₹2999 ₹1999!
3 days a week (3-4 months depending upon batch)
Saturday (9am-11am) | Sunday (9am-11am)
Wednesday (7pm-9pm)
Upgrade your skills with Code Medium
In-Depth Course Structure
Comprehensive and detailed course content designed to provide thorough understanding and mastery of topics.
Live Classes
Engaging live classes with real-time interaction, allowing for immediate feedback and discussion.
Projects
Hands-on projects that mimic real-world challenges to enhance learning and application of skills.
Live Doubt Solving
Interactive sessions for resolving doubts and clarifying concepts in real-time with expert instructors.
Competitions & Contests
Regular competitions and contests at checkpoints to test knowledge and reward top performers.
Tests at Checkpoints
Periodic tests to assess progress and understanding, ensuring students stay on track with their learning goals.
Course Structure
- Java Roadmap discussion
- Installation
- Getting started with programming
- Some basic calculations
- Use of datatypes
- Printing outputs
- JDK, JRE & JVM
- Stack and Heap
- Platform Independence
- Getting started with programming
- Some basic calculations
- Use of datatypes
- Printing outputs
- Data Types
- Variables
- Operators
- Methods
- Arrays
- Basic Input and Output
- Importing Packages
- Basic OOP Concepts: Classes and Objects
- Different programming paradigm
- Objects & Classes
- Understanding with real life examples
- Printing outputs
- Pillaras of Object oriented programming
- Data Types 2
- Object and Classes
- Attributes and Methods
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
- Constructors and Destructors
- Static and Final Keywords
- Basic Principles of OOP
- Benefits of Using OOP
- Real-world Modeling
- If- else
- Take use inputs in java
- Switch Statements
- Ternary operators
- for Loop
- while Loop
- do-while Loop
- Enhanced for Loop (for-each)
- Nested Loops
- Loop Control Statements: break, continue
- Infinite Loops
- Using Loops with Arrays
- Using Loops with Collections
- Strings
- StringBuilder and StringBuffer
- Immutable Strings
- String Pool
- Reference Types in Java
- Strong, Soft, Weak, and Phantom References
- Garbage Collection
- Memory Management for Reference Types
- Comparing Objects and References
- Pass-by-Value and Reference Variables
- Cloning of Objects
- Handling Null References
- See how objects are stored in heap
- Inheritance
- Polymorphism
- Abstract Classes
- Interfaces
- Composition over Inheritance
- super keyword
- Dynamic polymerphism
- Inheritance Types
- Abstraction
- Deep dive into how classes and objects work in real world
- Storing data
- Need for collections
- ArrayList vs Linkedlist
- Different kinds of collections
- Collection in Depth(Comparable, Sorting and performing operations in Collections)
- Collection Interface
- List Interface
- Set Interface
- Map Interface
- Queue Interface
- Deque Interface
- Iterator Interface
- Comparable and Comparator Interfaces
- Algorithms
- Synchronized Wrappers
- Immutable Collections
- Concurrent Collection Classes
- Need of serialisation
- Derialisation and Deserialisation
- Serializable Interface
- transient Keyword
- ObjectOutputStream and ObjectInputStream
- Versioning and serialVersionUID
- Externalizable Interface
- Performance Considerations
- Security Concerns
- Use of Serialization in Frameworks
- Lambda Expressions
- Functional Interfaces
- Streams API
- Method References
- Optional Class
- Collectors
- Map, Filter, and Reduce Functions
- Immutable Data Structures
- New Date and Time API
- Parallel Streams
- Patterns and Best Practices
- Try and Catch Blocks
- Finally Block
- Throwing Exceptions
- The Throwable Class Hierarchy
- Checked vs Unchecked Exceptions
- Creating Custom Exceptions
- Using Multiple Catch Blocks
- The Try-With-Resources Statement
- Best Practices for Exception Handling
- Error Handling and Logging
- Thread Basics: Creating and Running Threads
- Thread Lifecycle: New, Runnable, Blocked, Waiting, Timed Waiting, and Terminated
- Synchronization: synchronized Keyword and Locks
- Inter-Thread Communication: wait(), notify(), and notifyAll()
- Thread Pools
- Thread Safety
- Java Concurrency Utilities: java.util.concurrent Package
- Atomic Variables
- Deadlock, Livelock, and Starvation
- ThreadLocal Variables
- Daemon Threads
- Some Advanced Thread concepts
- File Class
- Files Class
- Reading and Writing Files
- BufferedReader and BufferedWriter
- FileInputStream and FileOutputStream
- Directories and Paths
- Creating, Deleting, and Checking Files
- File Permissions
- Walking File Trees
- File Attributes
- Watching a Directory for Changes
- Overview of Garbage Collection
- Generational Garbage Collection
- Garbage Collection Algorithms: Mark-Sweep, Mark-Compact, Copying
- Garbage Collectors: Serial, Parallel, CMS, G1, ZGC, Shenandoah
- Garbage Collection Optimization
- Monitoring Garbage Collection with JVM Tools
- Finalization and its Pitfalls
- Weak References and Soft References
- Best Practices for Reducing Garbage Collection Overhead
- Java Compilation Process
- Java Compiler (javac)
- Bytecode in Java
- Just-In-Time (JIT) Compilation
- Stages of JIT Compilation: Interpretation, Compilation, Optimization
- HotSpot JVM Compiler
- Adaptive Optimization
- Benefits of JIT Compilation
- Comparison Between JIT and AOT (Ahead-Of-Time) Compilation
- Java Memory Model
- Heap Memory: Space where objects are allocated.
- Stack Memory: Stores method calls and local variables.
- Program Counter (PC) Register
- Method Area: Stores class structure and metadata.
- Runtime Constant Pool: Part of the method area which stores per-class runtime constants.
- Garbage Collection: Automatic memory management and cleanup.
- Memory Allocation: new Operator
- Memory Leaks and How to Avoid Them
- Set Up Development Environment: Install Java JDK, Maven/Gradle, and an IDE (e.g., IntelliJ IDEA or Eclipse).
- Create a New Spring Boot Project: Use Spring Initializr (start.spring.io) to generate a project with dependencies like Spring Web, Spring Data JPA.
- Project Structure Overview: Understand the standard Maven/Gradle project layout used by Spring Boot.
- Create a Domain Model: Define entity classes with JPA annotations.
- Create Repository Interfaces: Extend JpaRepository for database operations.
- Create Service Layer: Implement business logic in service classes.
- Create REST Controllers: Write controller classes to handle HTTP requests.
Live classes start from 21st July
Enroll for the full program at only ₹2999 ₹1999!
3 days a week (3-4 months depending upon batch)
Saturday (9am-11am) | Sunday (9am-11am)
Wednesday (7pm-9pm)