Skip to content

Object Oriented Programming in Java syllabus

ITM 1529 units · 113 topicsAcademic year 2083/84
Browse the units

Object Oriented Programming in Java

9 units

1. Introduction to Java (5 LHs)

  1. The Creation of Java
    1. The Creation of Java
  2. Java's lineage and its influence on modern programming
    1. Java's lineage and its influence on modern programming
  3. Java's impact on the Internet
    1. Java's impact on the Internet
  4. Java Buzzwords
    1. Java Buzzwords (Simple, Object-Oriented, Robust, Multithreaded, Architecture Neutral, Interpreted, High Performance, Distributed, Dynamic)
  5. Java Virtual Machine
    1. Java Virtual Machine (JVM), Java Runtime Environment (JRE), and Java Development Kit (JDK) architecture and roles
    2. The Bytecode
  6. Compilation model vs. interpretation model
    1. compilation model vs. interpretation model
  7. Platform independence
    1. Platform independence
  8. Writing, Compiling, and Running Simple Java Programs using Command Line and IDE
    1. Writing, Compiling, and Running Simple Java Programs using Command Line and IDE
  9. Object-Oriented Programming Paradigm
    1. Object-Oriented Programming Paradigm: Overview of OOP principles (Encapsulation, Inheritance, Polymorphism, Abstraction)
  10. Using Command Line Arguments
    1. Using Command Line Arguments
  11. Reading Input with Scanner
    1. Reading Input with Scanner
  12. Writing Output with System.out
    1. Writing Output with System.out

2. Fundamental Programming Structures (6 LHs)

  1. Writing Comments
    1. Writing Comments
  2. Primitive Data Types (byte, short, int, long, float, double, char, boolean)
    1. Primitive Data Types (byte, short, int, long, float, double, char, boolean)
  3. Variables and Constants
    1. Variables and Constants
  4. Type Conversion and Casting
    1. Type Conversion and Casting
  5. Automatic Type Promotion Rules
    1. Automatic Type Promotion Rules
  6. Operators
    1. Operators: Arithmetic, Bitwise, Relational, Logical (short-circuit), Assignment, Conditional (?:), sizeof equivalent
  7. Operator Precedence and Associativity
    1. Operator Precedence and Associativity
    2. Using Parentheses
  8. Control Statements
    1. Control Statements: if, if else, nested if else, else if ladder, switch
  9. Iteration Statements
    1. Iteration Statements: while, do while, for, enhanced for each loop, nested loops
  10. Jump Statements
    1. Jump Statements: break, continue, return
  11. Working with Big Numbers (BigInteger, BigDecimal overview)
    1. Working with Big Numbers (BigInteger, BigDecimal overview)
  12. Declaration, Initialization, and Processing of One Dimensional and Multidimensional Arrya
    1. Declaration, Initialization, and Processing of One Dimensional and Multidimensional Arrya
  13. Passing Arrays to Methods
    1. Passing Arrays to Methods.

3. Classes and Objects (8 LHs)

  1. Object Oriented Principles
    1. Object Oriented Principles: Encapsulation, Abstraction, Inheritance, Polymorphism
  2. Defining Classes
    1. Defining Classes: fields, methods, and the general form of a class
  3. Creating Objects and Accessing Class Members
    1. Creating Objects and Accessing Class Members
  4. Assigning Object Reference Variables
    1. Assigning Object Reference Variables
  5. Methods
    1. Methods: Adding Methods, Returning Values, Method Parameters and Return Types
    2. Method Overloading
  6. Constructors
    1. Constructors: Default and Parameterized
  7. Constructor Overloading
    1. Constructor Overloading
    2. the this Keyword
  8. Variable Length Arguments
    1. Variable Length Arguments
  9. Access Control
    1. Access Control: public, private, protected, default
  10. JavaBeans convention
    1. JavaBeans convention
  11. Static Fields and Methods
    1. static Fields and Methods
  12. Final Variables, Methods, and Classes
    1. final Variables, Methods, and Classes
    2. The Object Class
  13. Nested and Inner Classes
    1. Nested and Inner Classes: static nested, inner, local, and anonymous classes
  14. Garbage Collection and Finalization
    1. Garbage Collection and Finalization
    2. Object Lifecycle
  15. Creating and Using Packages
    1. Creating and Using Packages
    2. import statements
    3. CLASSPATH.

4. Inheritance and Interfaces (7 LHs)

  1. Inheritance Basics
    1. Inheritance Basics: extends keyword, member access, IS-A relationship
  2. Using super
    1. Using super: calling superclass constructors and overridden methods
  3. Method Overriding
    1. Method Overriding: rules, @Override annotation, covariant return types
  4. Dynamic Method Dispatch
    1. Dynamic Method Dispatch: runtime polymorphism
  5. Why overridden methods matter
    1. why overridden methods matter
  6. Abstract Classes
    1. Abstract Classes: abstract methods and the template method concept
    2. inheritance types
  7. Using final with Inheritance(preventing overriding and subclassing)
    1. Using final with Inheritance(preventing overriding and subclassing)
  8. Interfaces
    1. Interfaces: defining, implementing, and extending interfaces
  9. Default and Static Methods in Interfaces (Java 8+)
    1. Default and Static Methods in Interfaces (Java 8+)
  10. Multiple interface inheritance
    1. multiple interface inheritance
  11. Functional Interfaces and the @FunctionalInterface annotation
    1. Functional Interfaces and the @FunctionalInterface annotation
  12. Sealed Classes overview
    1. Sealed Classes overview
  13. Liskov Substitution Principle
    1. Liskov Substitution Principle.

5. Exception Handling (4 LHs)

  1. Exception Handling Fundamentals
    1. Exception Handling Fundamentals
  2. Exception Hierarchy
    1. Exception Hierarchy: Throwable, Error, Exception, Runtime Exception
  3. Checked vs. Unchecked Exceptions
    1. Checked vs. Unchecked Exceptions
  4. Understanding uncaught exceptions and stack traces
    1. understanding uncaught exceptions and stack traces
  5. Using try, catch, and finally blocks
    1. Using try, catch, and finally blocks
  6. Multiple catch clauses
    1. multiple catch clauses
  7. Nested try statements
    1. nested try statements
  8. Multi catch (Java 7+)
    1. Multi catch (Java 7+)
  9. Try with resources for automatic resource management
    1. try with resources for automatic resource management
  10. Throw and throws keywords
    1. throw and throws keywords
  11. Exception chaining (initCause, getCause)
    1. exception chaining (initCause, getCause)
  12. Java's Built in Exceptions overview
    1. Java's Built in Exceptions overview
  13. Creating Custom Exception Subclasses
    1. Creating Custom Exception Subclasses
  14. Best practices for exception design
    1. best practices for exception design

6. Generics and Collections (5 LHs)

  1. Importance of Generic Programming
    1. Importance of Generic Programming
  2. Defining Generic Classes and Methods
    1. defining Generic Classes and Methods
    2. type parameters
  3. Bounded Wildcards (extends/super)
    1. Bounded Wildcards (extends/super)
  4. Type erasure and heap pollution
    1. type erasure and heap pollution
  5. Restrictions and Limitations of Generics
    1. Restrictions and Limitations of Generics
  6. Inheritance Rules with Generics
    1. Inheritance Rules with Generics
  7. The Java Collections Framework
    1. The Java Collections Framework: List, Set, Map, Queue, and Deque interfaces
  8. Iterators and the Iterable interface
    1. Iterators and the Iterable interface
  9. Enhanced for loop with collections
    1. enhanced for loop with collections
  10. Type Wrappers
    1. Type Wrappers: Character, Boolean, numeric wrappers
  11. Autoboxing and Unboxing
    1. Autoboxing and Unboxing
  12. Autoboxing in expressions
    1. Autoboxing in expressions
  13. Autoboxing with Boolean and Character
    1. autoboxing with Boolean and Character
    2. preventing errors.

7. Multithreaded Programming (5 LHs)

  1. The Java Thread Model
    1. The Java Thread Model: threads vs. processes
  2. Benefits of multithreading
    1. benefits of multithreading
    2. Thread Priorities
    3. synchronization
  3. Messaging between threads
    1. messaging between threads
  4. The Thread Class and the Runnable Interface
    1. The Thread Class and the Runnable Interface
    2. the main thread
  5. Creating Threads
    1. Creating Threads: implementing Runnable
  6. Extending Thread class
    1. extending Thread class
  7. Creating Multiple Threads
    1. Creating Multiple Threads
  8. Using isAlive() and join()
    1. using isAlive() and join()
  9. Thread Priorities and scheduling
    1. Thread Priorities and scheduling
  10. Synchronization
    1. Synchronization: synchronized methods and synchronized statements.

8. Essential Java Classes (3 LHs)

  1. String Class
    1. String Class: constructors, length, special operators (concatenation, conversion, toString())
  2. Character extraction
    1. Character extraction: charAt() and getChars()
  3. String comparison methods
    1. String comparison methods
  4. Modifying Strings
    1. Modifying Strings: substring(), concat(), replace(), trim()
  5. StringBuffer and StringBuilder
    1. StringBuffer and StringBuilder: mutable strings, performance considerations
  6. String Handling Library Functions overview
    1. String Handling Library Functions overview
  7. Math Class
    1. Math Class: commonly used mathematical methods
  8. Primitive Type Wrappers
    1. Primitive Type Wrappers: Character, Boolean, Integer, Double methods and conversions
  9. Introduction to Lambda Expressions and Stream API (overview for modern Java awareness)
    1. Introduction to Lambda Expressions and Stream API (overview for modern Java awareness).

9. File Handling (5 LHs)

  1. Introduction to Files
    1. Introduction to Files
  2. File class
    1. File class: creating, deleting, listing files and directories
  3. File Modes and I/O Exceptions
    1. File Modes and I/O Exceptions
  4. AutoCloseable, Closeable, and Flushable Interfaces
    1. AutoCloseable, Closeable, and Flushable Interfaces
  5. Byte Streams
    1. Byte Streams: InputStream, OutputStream, FileInputStream, FileOutputStream
  6. PrintStream, DataOutputStream, DataInputStream
    1. PrintStream, DataOutputStream, DataInputStream
  7. RandomAccessFile for random access
    1. RandomAccessFile for random access
  8. Character Streams
    1. Character Streams: Reader, Writer
  9. FileReader, FileWriter, PrintWriter, BufferedReader, BufferedWriter
    1. FileReader, FileWriter, PrintWriter, BufferedReader, BufferedWriter
    2. The Console Class
  10. Reading from standard input and writing formatted output
    1. reading from standard input and writing formatted output
  11. NIO.2 API (java.nio.file)
    1. NIO.2 API (java.nio.file): Path, Files, Paths modern file operations
  12. Sequential and Random Access to Files
    1. Sequential and Random Access to Files
  13. Serialization
    1. Serialization: Serializable interface, ObjectOutputStream, ObjectInputStream
  14. I/O Classes and Interfaces review
    1. I/O Classes and Interfaces review.