Python & Java
Learn two powerful languages used for backend systems, automation, and enterprise applications.
Prerequisites
No prior experience required β open to beginners.
Certificate
Awarded by Rescue Academy on successful completion of the program's assessments and final project.
Learn Online β Live Classes
Register, receive your schedule, and join live instructor-led Python & Java classes on Zoom. Assignments, instructor feedback, and a certificate on completion.
Learn In Person
Attend Python & Java classes in person in Juba with hands-on labs, instructor mentorship, and a certificate on completion.
What You'll Learn
- Variables, data types, operators, and functions
- Control flow: if/else, loops, and errors
- Files and basic data processing
- Object-Oriented Programming: classes and objects
- Mini projects: calculator, records list, simple CLI app
Curriculum
Beginner
Full lessons available belowModule 1: Fundamentals of Programming & Syntax
Learning objectives
- Compare Python and Java syntax and typing
Lessons
- Variables & Types in Python vs Java
- Control Flow & Loops
Module 2: Object-Oriented Programming (OOP)
Learning objectives
- Build classes and objects in both languages
Lessons
- Classes & Objects
- Inheritance & Polymorphism
Module 3: Data Structures & Algorithms
Learning objectives
- Use core data structures and basic algorithms
Lessons
- Lists, Arrays & Dictionaries/Maps
- Basic Sorting & Searching
Module 4: File Handling & Exception Management
Learning objectives
- Read/write files and handle errors safely
Lessons
- Reading & Writing Files
- Try/Catch & Exceptions
Module 5: Logic Building & Problem Solving
Learning objectives
- Solve structured problems step by step
Lessons
- Breaking Down a Problem
- Building a Small Console Program
Intermediate
Outline β full lessons coming soonModule 1: Working with Modules & Packages
Learning objectives
- Organize code across files using both languages' module systems
Lessons
- Python Modules & pip
- Java Packages & Imports
Module 2: Collections in Depth
Learning objectives
- Use advanced collection types effectively
Lessons
- Python Comprehensions & Generators
- Java Collections Framework
Module 3: Working with APIs & JSON
Learning objectives
- Consume external data in both languages
Lessons
- Calling a REST API
- Parsing JSON Data
Module 4: Testing & Debugging
Learning objectives
- Write basic tests and debug systematically
Lessons
- Unit Testing Basics
- Debugging Techniques
Module 5: Intermediate Project
Learning objectives
- Build a multi-file program with real data
Lessons
- Planning a Multi-File Program
- Building & Testing It
Advanced
Outline β full lessons coming soonModule 1: Design Patterns
Learning objectives
- Apply common design patterns appropriately
Lessons
- Common OOP Design Patterns
- When (and When Not) to Use Them
Module 2: Concurrency Basics
Learning objectives
- Understand basic concurrent execution
Lessons
- Threads in Java
- Async Patterns in Python
Module 3: Connecting to Databases
Learning objectives
- Read and write data from a database
Lessons
- Database Connectivity
- Building a Data-Backed Feature
Module 4: Packaging & Deployment
Learning objectives
- Package and share a finished program
Lessons
- Packaging a Python App
- Building a Java JAR
Module 5: Capstone Project
Learning objectives
- Build a complete data-backed application
Lessons
- Planning the Capstone
- Build, Test & Present
Full Lessons β Beginner Level
1. Fundamentals of Programming & Syntax
Every language has its own syntax β the set of rules for writing code. Python uses
indentation (whitespace) to group statements, making it clean and readable. Java
uses curly braces { } and semicolons, and you must
declare the type of each variable (like int or String).
- Python variables:
name = "John"β no type declaration needed. - Java variables:
String name = "John";β type is required. - Python reads like plain English; Java is more explicit and compiled.
- Both are widely used in 2026 β Python for data/automation, Java for Android and backend systems.
π‘ Practical Skill: Write clean, reusable code. Use VS Code or PyCharm for Python, IntelliJ IDEA for Java. Track changes with Git.
Try it Yourself β Hello World & Variables
Python
# Python: no type declaration, indentation matters
name = "Grace"
age = 22
city = "Juba"
message = "Hello, " + name + "! You are " + str(age) + " years old."
print(message)
# Output: Hello, Grace! You are 22 years old.
Java
// Java: type declaration, curly braces, semicolons
public class Main {
public static void main(String[] args) {
String name = "Grace";
int age = 22;
String city = "Juba";
String message = "Hello, " + name + "! You are " + age + " years old.";
System.out.println(message);
// Output: Hello, Grace! You are 22 years old.
}
}
2. Object-Oriented Programming (OOP)
OOP models real-world things as objects with properties (data) and methods (behaviors). A class is the blueprint. Python and Java both support inheritance (a child class reusing parent code) and encapsulation (keeping data safe inside the object).
- Python class:
class Car:β simple, no access modifiers needed. - Java class:
public class Car { }β with visibility keywords likepublicorprivate. - Both languages let you create objects:
my_car = Car("Toyota")orCar myCar = new Car("Toyota"); - OOP helps you organize large projects and reuse code across your team.
π‘ Practical Skill: Build reusable components. In IntelliJ IDEA, use refactoring tools to extract classes. In PyCharm, auto-generate getters/setters.
Try it Yourself β Car Class
Python
class Car:
def __init__(self, brand):
self.brand = brand # property
def honk(self): # method
print(f"{self.brand} says: Beep beep!")
# Create an object
my_car = Car("Toyota")
print(my_car.brand) # Toyota
my_car.honk() # Toyota says: Beep beep!
Java
public class Car {
// Property (private for encapsulation)
private String brand;
// Constructor
public Car(String brand) {
this.brand = brand;
}
// Method
public void honk() {
System.out.println(brand + " says: Beep beep!");
}
public static void main(String[] args) {
Car myCar = new Car("Toyota");
System.out.println(myCar.brand); // Toyota
myCar.honk(); // Toyota says: Beep beep!
}
}
3. Data Structures & Algorithms
Data structures organize information so your code can process it efficiently. Python has built-in Lists and Dictionaries; Java uses ArrayList and HashMap. Both allow you to loop through data and filter based on conditions β a core algorithm pattern.
- Python list:
numbers = [1, 2, 3, 4, 5]β flexible, mixed types allowed. - Java ArrayList:
ArrayList<Integer> numbers = new ArrayList<>();β type-safe, must specify type. - Filtering with a loop is a fundamental algorithm for cleaning and analyzing data.
- Mastering this helps you build everything from reports to AI pipelines.
π‘ Practical Skill: Automation scripts (Python) and backend logic (Java) rely on efficient data manipulation. Use VS Code with the Python extension for testing.
Try it Yourself β Filter Even Numbers
Python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
if num % 2 == 0:
even_numbers.append(num)
print("Even numbers:", even_numbers)
# Output: Even numbers: [2, 4, 6, 8, 10]
Java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ArrayList<Integer> evenNumbers = new ArrayList<>();
for (int num : numbers) {
if (num % 2 == 0) {
evenNumbers.add(num);
}
}
System.out.println("Even numbers: " + evenNumbers);
// Output: Even numbers: [2, 4, 6, 8, 10]
}
}
4. File Handling & Exception Management
Programs often need to read from or write to files. Things can go wrong β the file might not exist. That's why we use try/except (Python) or try/catch (Java) to handle errors gracefully without crashing.
- Python:
with open("file.txt") as f:auto-closes the file. - Java:
try (Scanner sc = new Scanner(new File("file.txt")))uses try-with-resources. - Catching specific exceptions (like
FileNotFoundError) helps you give clear feedback. - Error handling is a must for any professional application β never let your users see a crash!
π‘ Practical Skill: Safely process data files from NGOs, surveys, or business records. Use Git to version your scripts before running on production data.
Try it Yourself β Safe File Read
Python
try:
with open("data.txt", "r") as file:
content = file.read()
print("File content:")
print(content)
except FileNotFoundError:
print("Oops! The file 'data.txt' was not found.")
except Exception as e:
print(f"An error occurred: {e}")
Java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
System.out.println("File content:");
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("Oops! The file 'data.txt' was not found.");
} catch (Exception e) {
System.out.println("An error occurred: " + e.getMessage());
}
}
}
5. Logic Building & Problem Solving
Logic is the heart of programming. You combine conditional statements (if/else) with loops to solve real-world problems. A classic example is FizzBuzz: print numbers but replace multiples of 3 with "Fizz" and multiples of 5 with "Buzz".
- Use
if,elif(Python) orelse if(Java) to check conditions. - Loops let you repeat logic efficiently β great for data validation, report generation, and automation.
- Building small utilities sharpens your problem-solving skills for bigger projects.
- Python's concise syntax lets you prototype fast; Java's structure prepares you for large-scale apps.
π‘ Practical Skill: Create automation scripts (Python) or backend validation logic (Java). Use IntelliJ IDEA for Java debugging and PyCharm for Python testing with breakpoints.
Try it Yourself β FizzBuzz Utility
Python
# FizzBuzz: classic logic-building challenge
for i in range(1, 16):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
# Output: 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz
Java
public class Main {
public static void main(String[] args) {
// FizzBuzz: classic logic-building challenge
for (int i = 1; i <= 15; i++) {
if (i % 3 == 0 && i % 5 == 0) {
System.out.println("FizzBuzz");
} else if (i % 3 == 0) {
System.out.println("Fizz");
} else if (i % 5 == 0) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
// Output: 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz
}
}
Quick Quiz β Python & Java Basics
Tools & Technologies
- VS Code
- PyCharm
- IntelliJ IDEA
- Git
Career Opportunities
- Junior web or software developer
- Freelance developer for local businesses and NGOs
- IT/software role in a company or government office
Practical Projects
- Build a small console application implementing the same logic in both Python and Java
- Solve a set of programming logic challenges using structured problem-solving