Course Content
KM-01- Introduction to Java Programming
Module Code: 900102-000-00-KM-01 Credits: 2 Summary: This module introduces learners to the fundamentals of Java programming and basic computing concepts. It builds a strong foundation by covering essential topics such as how computers work, the Java environment, development tools, and core programming principles. Learners are also introduced to version control and the structure of Java programs, preparing them to begin writing, compiling, and managing simple applications.
0/13
KM-02- Principles of Programming with Java
Module Code: 900102-000-00-KM-02 NQF Level : NQF Level 4 Credits: 6 Credits This module builds the learner’s understanding of the principles of programming with the Java programming language. It covers Java program structure, variables, data types, arrays, strings, classes, conditionals, loops, algorithms, exception handling, file systems, multithreading, and the programming life cycle.
0/29
KM-03: Principles of Object-Oriented Programming with Java
his module introduces learners to the core principles and structure of Object-Oriented Programming (OOP) using Java. Learners will explore how object-oriented concepts are used to design scalable, reusable, and maintainable software applications in modern software development environments. The module covers the foundational concepts of OOP, including classes, objects, methods, inheritance, abstraction, encapsulation, polymorphism, aggregation, association, and composition. Learners will also examine the advantages of applying object-oriented principles in real-world software projects and enterprise application development. Through theoretical understanding and contextual programming examples, learners will develop the ability to analyse object-oriented structures, identify relationships between objects, and apply OOP principles to solve programming problems effectively. This module supports learner progression into intermediate and advanced Java development by building strong foundational knowledge required for application development, GUI systems, REST APIs, enterprise systems, and software engineering workflows.
0/4
KM-04- Principles of Intermediate Programming with Java
Module Code: 900102-000-00-KM-04 NQF Level: 4 Credits: 6 Curriculum Title: Java Programmer Curriculum Code: 900102-000-00-00 Module Summary This module focuses on building an understanding of the principles of intermediate programming with Java. Learners are introduced to more advanced Java concepts, including collections, generics, functional programming, concurrency, concurrent collections, and atomic operations.
0/9
KM-05- REST API and Modularization
Module Code: 900102-000-00-KM-05 NQF Level: 4 Credits: 2 Module Summary The main focus of this knowledge module is to build an understanding of the functionalities of REST API and modularization and when to use them. Learners will develop knowledge of REST API concepts, functions, features, and implementation approaches used in Java applications. The module also introduces Java modularization concepts, including module structures, dependency management, encapsulation, and modern Java features such as Local Variable Type Inference, Switch Expressions, Text Blocks, and Records. The module prepares learners to understand modern Java application development practices and modular software design.
0/5
PM-01- Getting Started with Java
Module Code: 900102-000-00-PM-01 NQF Level: 4 Credits: 3 Module Summary The main focus of this practical module is to introduce learners to the practical application of basic computer skills, Java installation and setup, Integrated Development Environments (IDEs), Java class creation, and Git commands. Learners will perform practical activities that involve setting up Java development environments, creating and running Java programs, navigating IDEs, and applying basic source code management practices using Git. The module prepares learners for practical Java software development activities in modern programming environments.
0/10
PM-02- Programming with Java
Module code: 900102-000-00-PM-02 NQF Level: 4 Credits: 8 Module Summary This module introduces learners to practical Java programming skills used in software development. Learners develop the ability to create and run Java programs, work with variables and data types, use arrays and ArrayLists, create and manage classes and objects, and apply core programming concepts such as loops, conditionals, algorithms, exception handling, and multithreading. The module also covers string manipulation, file handling, wrapper classes, and the programming lifecycle used to develop complete software solutions. By the end of the module, learners will be able to design, write, test, and troubleshoot Java applications using structured programming techniques and object-oriented programming principles.
0/44
PM-03- Object-Oriented Programming with Java
Module code: 900102-000-00-PM-03 NQF Level: 4 Credits: 4 Module Summary This practical module introduces learners to Object-Oriented Programming (OOP) using Java. Learners will apply practical Java programming skills to design classes, create objects, apply inheritance, use constructors, manage object state, and develop reusable Java applications. The module focuses on practical implementation of OOP principles including: * encapsulation, * inheritance, * polymorphism, * and abstraction. Learners will also compile, execute, and organize Java programs correctly within Java file systems and directories. The module prepares learners for real-world Java software development environments through hands-on practical activities and problem-solving scenarios.
0/2
PM-04- Intermediate Programming with Java
Module code: 900102-000-00-PM-04 NQF Level: 4 Credits: 6 Module Summary This practical module introduces learners to intermediate Java programming concepts and practical software development techniques using modern Java functionalities. Learners will apply Java collections, generics, functional programming concepts, and concurrency techniques to create efficient and scalable Java applications. The module focuses on practical implementation of: * Java collections and data structures, * generics and type safety, * functional programming using lambda expressions and streams, * and concurrent programming using synchronization and concurrent collections. Learners will develop hands-on Java applications that manage collections, process data functionally, and handle concurrent operations safely within multi-threaded environments. The module prepares learners for real-world Java software development by strengthening problem-solving abilities, improving software performance, and introducing enterprise-level programming techniques commonly used in modern Java applications.
0/8
PM-05- Getting Started with REST API and Modularization
Module code: 900102-000-00-PM-05 NQF Level: 4 Credits: 4 Module Summary This practical module introduces learners to REST API development and Java modularization using modern Java technologies and frameworks. Learners will develop practical skills in connecting Java applications to databases, creating RESTful web services, implementing CRUD operations, and deploying databases using Docker. The module focuses on practical implementation of: * JDBC database connectivity, * REST API development using Java and Spring Boot, * CRUD operations using HTTP methods, * Docker containerization, * Java modularization, * and modern Java APIs. Learners will build practical Java applications that connect to MySQL databases, manage data using REST APIs, split applications into Java modules, and apply modern Java functionalities for cleaner and more scalable code. The module prepares learners for enterprise-level Java software development environments where REST APIs, modular applications, and containerized systems are widely used in modern software engineering.
0/4
PM-06- Keystone Project with Java
Module code:900102-000-00-PM-06 NQF Level: 4 Credits: 8 Module Summary This practical module provides learners with the opportunity to complete a comprehensive Keystone Project using the Java programming language. Learners will apply all the programming knowledge and practical skills acquired throughout the qualification to design, develop, test, and execute real-world Java applications. The module focuses on practical implementation of: * core Java programming, * arrays and objects, * conditions and loops, * GUI development, * game development, * and complete Java application solutions using frameworks and environments of the learner’s choice. Learners will complete practical exercises, build an operable Java game, and develop a contextual GUI-based solution within a selected sector such as: * retail, * healthcare, * IoT, * cloud computing, * mobile development, * or network systems. The module prepares learners for real-world software development environments by strengthening problem-solving abilities, practical development experience, creativity, and application deployment skills using Java technologies and frameworks.
0/6
Java Programmer Skills Programme

📘LESSON 1

 

3.1 Lesson Outcomes

After completing this lesson, learners will be able to:

  • Explain the need for Java Collections.
  • Describe the Java Collection Framework hierarchy.
  • Explain List, Set, Queue, and Map interfaces.
  • Differentiate between ArrayList, LinkedList, Vector, HashMap, LinkedHashMap, and TreeMap.
  • Perform collection operations such as add, remove, update, sorting, and iteration.
  • Explain basic data structures used in Java Collections.
  • Use collection interfaces and implementations in Java applications.

3.2 Overview

Modern software systems process and manage large amounts of data that require flexible and efficient storage structures. Java Collections provide reusable data structures and interfaces that simplify data management and improve application performance.

This lesson introduces learners to Java Collections and explains collection interfaces, implementations, sorting mechanisms, data structures, and collection operations used in Java applications.

Java Collections are widely used in:

  • enterprise systems,
  • banking applications,
  • healthcare systems,
  • inventory systems,
  • and cloud platforms.

Understanding Java Collections is important because collections form the foundation of data management in modern Java programming.


KT0101 — Need for Collections

Collections are used to store and manage groups of objects dynamically.

Arrays have limitations because:

  • they have fixed sizes,
  • resizing is difficult,
  • and data management is less flexible.

Why Collections are Needed

Collections support:

  • dynamic resizing,
  • flexible storage,
  • searching,
  • sorting,
  • and efficient data processing.

Importance of Collections

Collections improve:

  • scalability,
  • maintainability,
  • and data organization.

KT0102 — Java Collection Framework Hierarchy

The Java Collection Framework provides interfaces and classes for storing and managing data.


Collection Framework Hierarchy

 
Collection
|
--------------------------------
| | |
List Set Queue
 

Common Collection Implementations

Interface Implementations
List ArrayList, LinkedList, Vector
Set HashSet, LinkedHashSet, TreeSet
Queue PriorityQueue
Map HashMap, TreeMap

Importance of Collection Framework

The Collection Framework supports:

  • reusable data structures,
  • standardized operations,
  • and efficient programming.

KT0103 — List Interface

The List interface stores elements in a specific order.

Lists:

  • preserve insertion order,
  • allow duplicates,
  • and support indexed access.

Position/Order is Advisable

Lists maintain the order in which elements are inserted.


Example

 
ArrayList<String> names =
new ArrayList<String>();

names.add("John");
names.add("Sarah");
 

Immutability and Introduction of Implementations – Array

Arrays have fixed sizes and limited flexibility.

Collections improve flexibility compared to arrays.


Implementations — ArrayList vs LinkedList

ArrayList LinkedList
Faster retrieval Faster insertion/removal
Dynamic array Linked nodes

Implementations — ArrayList vs Vector

ArrayList Vector
Not synchronized Synchronized
Faster Thread-safe

Methods to Add, Remove and Change Elements and Lists


Adding Elements

 
names.add("David");
 

Removing Elements

 
names.remove("John");
 

Changing Elements

 
names.set(0, "Peter");
 

KT0104 — List and ArrayList

ArrayList is a commonly used implementation of the List interface.

ArrayList dynamically resizes during execution.


Iterating Around Elements

Collections can be traversed using loops.


for Loop Example

 
for(int i = 0; i < names.size(); i++) {

System.out.println(names.get(i));
}
 

Enhanced for Loop Example

 
for(String name : names) {

System.out.println(name);
}
 

Choosing Iteration Approach for Printing and Display

Approach Purpose
for loop Indexed access
enhanced loop Simple traversal

Type Safety and Removing Integers

Generics improve type safety by restricting collection types.


Example

 
ArrayList<String> cities =
new ArrayList<String>();
 

Sorting – Introduction to Collections sort Static

Java provides:

 
Collections.sort()
 

for sorting collection elements.


Example

 
Collections.sort(numbers);
 

Sorting – Implementing Comparable Interface

The Comparable interface allows custom sorting logic.


Example

 
class Student implements Comparable<Student> {

int age;

public int compareTo(Student s) {

return this.age - s.age;
}
}
 

Importance of Sorting

Sorting improves:

  • searching,
  • reporting,
  • and organized data management.

KT0105 — Data Structures

Data structures organize and store data efficiently.


Array

Arrays store elements in contiguous memory locations.


LinkedList

LinkedList stores elements as linked nodes.


Hashing

Hashing stores and retrieves data using hash values.


Tree – Sorted Order

Tree structures automatically maintain sorted order.


Importance of Data Structures

Data structures improve:

  • storage efficiency,
  • searching,
  • and performance.

KT0106 — Set Interface

The Set interface stores unique elements only.

Sets do not allow duplicates.


Hands-on — HashSet, LinkedHashSet and TreeSet

Set Type Characteristic
HashSet Unordered
LinkedHashSet Maintains insertion order
TreeSet Sorted order

Find Unique Characters in a List

Sets can remove duplicate values automatically.


Example

 
HashSet<Character> letters =
new HashSet<Character>();
 

TreeSet – Methods from NavigableSet

Method Purpose
floor() Greatest value ≤ given value
lower() Greatest value < given value
upper() Smallest value > given value
subSet() Returns subset
headSet() Returns head portion

Queue Interface – Process Elements in Order

Queues process elements using:

 
First In First Out (FIFO)
 

Importance of Sets and Queues

Sets and queues improve:

  • uniqueness handling,
  • ordered processing,
  • and data management.

KT0107 — Introduction to PriorityQueue – Basic Methods and Customized Priority

PriorityQueue processes elements based on priority rather than insertion order.


Basic PriorityQueue Methods

Method Purpose
add() Inserts element
poll() Removes highest priority
peek() Retrieves highest priority

Example

 
PriorityQueue<Integer> queue =
new PriorityQueue<Integer>();
 

Customized Priority

PriorityQueue supports custom ordering using comparators.


Importance of PriorityQueue

PriorityQueue supports:

  • scheduling,
  • priority processing,
  • and task management.

KT0108 — Map Interface

The Map interface stores:

  • key-value pairs.

Maps do not allow duplicate keys.


Key and Value

Component Purpose
Key Unique identifier
Value Associated data

Implementations — HashMap, HashTable, LinkedHashMap

Implementation Characteristic
HashMap Fast performance
Hashtable Synchronized
LinkedHashMap Maintains insertion order

Basic Operations


Adding Values

 
map.put("A", 100);
 

Retrieving Values

 
map.get("A");
 

Comparison — HashMap vs LinkedHashMap vs TreeMap

Map Type Characteristic
HashMap Unordered
LinkedHashMap Ordered
TreeMap Sorted

Count Occurrences of Characters and Words

Maps are commonly used for counting frequencies.


Example

 
HashMap<String, Integer> words =
new HashMap<String, Integer>();
 

TreeMap – Methods from NavigableMap

Method Purpose
floorKey() Greatest key ≤ given key
higherKey() Smallest key > given key
firstEntry() Returns first key-value pair

Importance of Maps

Maps support:

  • fast retrieval,
  • key-value management,
  • and efficient searching.

3.5 Key Notes / Summary

  • Collections store and manage groups of objects dynamically.
  • The Collection Framework contains List, Set, Queue, and Map interfaces.
  • ArrayList, LinkedList, and Vector are List implementations.
  • Sets store unique elements.
  • Queues process elements in order.
  • Maps store key-value pairs.
  • Collections support sorting, iteration, and efficient data management.
Scroll to Top