Ahmed Elmalla
Ahmed Elmalla
Expert Python, Java, and VB.NET Programming Guidance IB Computer Science Tutor AP Computer Science A Tutor Python Programming Tutor Java Programming Tutor Experienced VB.NET Coding Tutor
Ahmed Elmalla

Blog

Danial | Mastering Java for University Students: A Step-by-Step Guide Using the AP CS A Syllabus

Danial | Mastering Java for University Students: A Step-by-Step Guide Using the AP CS A Syllabus

If you're a university student feeling overwhelmed by Java programming, you're not alone. Many students struggle with learning how to code, especially when the course material gets more complex. But there’s a proven solution! By following the AP Computer Science A syllabus—widely used in high schools in the U.S.—you can gain a solid foundation in Java, regardless of where you currently stand. Whether you're preparing for exams, projects, or just looking to build confidence, this step-by-step guide will help you understand and apply Java concepts in no time.

This blog post is tailored specifically for Malaysian university students who may need extra support in mastering Java. We’ll cover key topics such as variables, control flow, object-oriented programming, data structures, and much more. Let’s dive in and start your journey toward becoming a more confident Java programmer!

 

Class 1 (9 Sept 2024) 

 

a) Class Summary:

- Demo Session

 

Class 2 (12 Sept 2024) 

 

a) Class Summary:

  • The class covers the basics of static and non-static methods in Java, including how to define and call these methods within a program.

  • It explores method signatures and how inputs, like integers and doubles, are passed into functions, along with the importance of using the return keyword when returning values from a method.

  • Students also learn about using Java's Math library for functions like sqrt and abs, understanding how methods operate with and without input parameters.

 

b) Video (Thrusday):

Part 1: Java Programming for Beginners: Live Session Breakdown & Hands-on Coding Tutorial

Part 2: Java Methods and Static vs Non-Static Explained: Live Coding Session

Part 3: Mastering Java Methods: Static, Non-Static, and Returning Values Explained 

 

d) Files:

- Static & Non Static methods part 1
 

e) Class Code:

- n/a

 

f) Exercises:

- Write and understand the provided function, then create a similar function for division using double data types.

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 3 (16 Sept 2024) 

 

a) Class Summary:

  • Memory Management in Java: Discussed how memory is allocated and released, focusing on garbage collection and heap management.
  • Method Overloading: Covered how to overload methods by changing the number and type of parameters, allowing flexible code implementation.
  • Variable Scope: Explained the difference between variable scope within functions and the main program, and how values behave across different data types.
  • Average Calculation: Practiced writing a method to calculate the average of two numbers, highlighting proper function definition and variable usage.

b) Video (Monday):

Part 1: Mastering Programming Fundamentals: Memory Management, Method Overloading, and Average Calculation

 

d) Files:

Static & Non Static methods (Completed)

e) Class Code:

- n/a

 

f) Exercises:

- Create Methods as defined in the Module 5 Lab

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 4 (19 Sept 2024) 

 

a) Class Summary:

  • Java Programming and Memory Management: Ahmed and Naim discussed Java's string manipulation methods, memory addresses, and how an operating system loads into RAM. Naim learned how data is organized inside RAM using binary addresses.

  • High-Level vs. Low-Level Languages: They explored the differences between high-level languages like Java and low-level languages such as assembly language, focusing on the translation of code into machine language and understanding memory locations.

  • Balancing AI and Independent Coding: Ahmed advised Naim on balancing the use of ChatGPT with independent coding, suggesting an 80/20 ratio and emphasizing the importance of developing self-reliant programming skills.

  • Practical Tips and Next Steps: Naim was encouraged to practice Java programming, focus on sports to boost cognitive function, avoid negative emotions before classes, and consider subscribing to Replit if affordable for improved functionality.

 

b) Video (Thrusday):

Part 1: Understanding Java, Memory, and Programming Challenges: Key Takeaways from Ahmed and Naim’s Class

 

d) Files:

- Module 6 - Introduction to String Methods (Part 1)

- High vs Low-Level Languages & Memory Management

 

e) Class Code:

- n/a

 

f) Exercises:

- Strings Homework - Acronym Creation & Flashlight Exercise

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 5 (24 Sept 2024) 

 

a) Class Summary:

  • String Manipulation Techniques: Students practiced using substring methods, string indexing, and ASCII values to understand character representation in programming.

  • String Equality Checks: The session covered the differences between the equals() method and the == operator, highlighting best practices for string comparisons.

  • Data Representation: Exercises included converting between binary and decimal numbers, enhancing students' understanding of data storage and manipulation.

  • Random Number Generation and Troubleshooting: The class explored Java's Math.random() method for generating random numbers and addressed code troubleshooting techniques.

b) Video (Monday):

Part 1: Java Programming: String Manipulation and Random Number Generation

 

d) Files:

 

e) Class Code:

- n/a

 

f) Exercises:

-  Generate Random Numbers & BMR Wellness Exercise

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

 

Class 6 (26 Sept 2024) 

 

a) Class Summary:

  • Programming Exercises: Covered if-else statements, string manipulation, comparison methods, and immutability concepts in coding.
  • Variable Scope Discussion: Explained local vs. global scopes in Java and their implications in programming.
  • Career Path Exploration: Discussed different fields in programming and engineering to help Naim identify his interests.
  • Server Types Overview: Compared rack servers and standard servers, highlighting their differences and real-world applications.

b) Video (Thrusday):

Part 1: Programming Concepts and Career Insights: If-Else Statements, String Manipulation, and Server Types

 

d) Files:

e) Class Code:

  • Not applicable

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 7 (30 Sept 2024) 

 

a) Class Summary:

  • String Manipulation Techniques: Discussed methods like split, indexOf, and substring for extracting names from strings.
  • Code Efficiency: Focused on making the code dynamic and adaptable by recognizing patterns and using indexes effectively.
  • Coding Best Practices: Emphasized understanding code, avoiding blind copying, and balancing AI reliance with mental agility in coding.
  • Learning and Practice: Encouraged consistent coding practice, refining skills through mistakes, and focusing on proper coding techniques over merely learning new topics.

b) Video (Monday):

Part 1: Mastering String Manipulation and Code Optimization in Java

 

d) Files:

  • n/a

e) Class Code:

  • Not applicable

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 8 (3 Oct 2024) 

 

a) Class Summary:

  • Python Automation & Text Extraction: Ahmed demonstrated Python code for extracting text from PDFs and images, discussing its application for Naim's study resources.
  • Input Validation and Loops: They discussed techniques for proper input validation, emphasizing the importance of error handling and avoiding infinite loops.
  • OCR Software & Programming Concepts: The pair explored OCR technology and how it can be integrated into programming for editing scanned content.
  • Java Functions & Best Practices: Ahmed reviewed essential Java functions such as Math.abs(), Math.pow(), and string comparison using .equals().

b) Video (Thrusday):

Part 1: Mastering Python Automation, OCR, and Java Code Essentials

 

d) Files:

e) Class Code:

  • Not applicable

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 9 (7 Oct 2024) 

 

a) Class Summary:

  • Functionality in Programming: Ahmed explained the difference between methods and functions, emphasizing the importance of return types and variable scoping in Java, and the use of Math.min() and Math.max() functions.
  • Project Development: Discussion on Naim’s project, focusing on improving code using efficient techniques, such as eliminating unnecessary if statements with mathematical functions, and generating random numbers effectively.
  • Debugging and Code Optimization: Ahmed guided Naim through fixing errors related to variable scoping, random number generation, and improving code readability by avoiding infinite loops and using while loops appropriately.
  • Career and Skills Development: Ahmed advised Naim on the importance of perseverance in the job market, encouraging self-reliance in problem-solving and consistent skill-building, particularly in areas like PHP, HTML, CSS, and JavaScript.

b) Video (Monday):

Part 1: Advanced Coding Concepts: Functions, Scoping, and Career Development

 

d) Files:

Java Wrapper Classes: Integer and Double

e) Class Code:

  • Not applicable

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 10 (10 Oct 2024) 

 

a) Class Summary:

  • Flag Variables and Complex Data Types: Discussion on how flag variables control loops and improve code readability, and exploration of complex data types for enhanced functionality.
  • Integral vs String Data Types: Covered differences between simple and complex data types, such as integers vs strings, and introduced helper methods for complex types.
  • Simulating with Threading and Sleep: Explanation of using threading and sleep to simulate real-world scenarios, handling exceptions, and controlling code execution speed.
  • Class Development in Programming: Demonstrated the creation of a class to represent a game character, emphasizing object-oriented programming principles and problem-solving.
  • Student Tracking Platform: Discussed building a student tracking platform using classes, focusing on scalability and efficient data management.

b) Video (Thrusday):

Part 1: Programming Concepts and Object-Oriented Development

 

d) Files:

Understanding Object-Oriented Programming & Building a Character Class in Programming

e) Class Code:

  • Not applicable

f) Exercises:

how to create a Student class and measure code execution speed in Java

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 11 (14 Oct 2024) 

 

a) Class Summary:

  • Code Organization and Class Variables:
    Ahmed explained the importance of organizing code properly, using separate files for classes, and initializing class variables correctly to enhance readability and maintainability.

  • Objects and Constructors in Java:
    The concept of creating and managing objects was explored, with Ahmed demonstrating how to use constructors and handle input parameters while ensuring the proper execution order.

  • Getter and Setter Methods:
    Ahmed introduced getter and setter methods, emphasizing their role in maintaining data integrity and controlling access to class variables in Java programming.

  • Debugger and Code Efficiency:
    Debugging tools and techniques for analyzing code execution were discussed, with a focus on tracing variables and optimizing code performance using time analysis methods.

  • Personal Remarks - Learning Through Real-World Examples:
    Ahmed shared practical examples, such as the creation of student objects and the use of sprite clauses in a game project, which helped Naim grasp complex concepts like null pointer exceptions, data types, and memory locations.

b) Video (Monday):

Part 1: Mastering Classes, Objects, and Debugging Techniques in Java & PHP

 

d) Files:

Objects and Constructors in Java (Module 4 - Completed)

e) Class Code:

  • Not applicable

f) Exercises:

- Create a Car Class Exercise  

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 12 (17 Oct 2024) 

 

a) Class Summary:

  • Binary and Denary Systems: Ahmed explained how to convert binary numbers to denary using place values and highlighted the importance of binary in computing.
  • Conditional Statements: Ahmed discussed operators in conditional statements and clarified the differences between if, else-if, and nested if statements.
  • Fuel Consumption Code: Ahmed guided Naim in resolving issues with calculating MPG and miles to empty in his project, offering advice on code structure and using helper functions.
  • Computer Memory Units: The session covered the difference between units of memory like kilobytes, megabytes, and gigabytes, as well as understanding RAM measurements such as KiB and MiB.
  • Personal Advice: Ahmed emphasized emotional stability, advising Naim on maintaining focus and reducing stress in order to optimize problem-solving and project completion.

b) Video (Monday):

Part 1: Mastering Binary Numbers, Coding Techniques & Conditional Statements, Practical Programming

 

d) Files:

- Binary and Denary Number Systems Explained

Mastering If-Else and Nested Conditional Statements

e) Class Code:

  • Not applicable

f) Exercises:

Class Dance Exercise: Complete the Missing Parts

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 13 ( 21 Oct 2024) 

 

a) Class Summary:

  • Project Focus: Naim's project will focus on improving English skills for individuals with Down syndrome, especially in constructing sentences and retaining new words.
  • Code Troubleshooting: Ahmed guided Naim in resolving issues with the dance class project, emphasizing method calls and improving code structure.
  • SRS Revision: The SRS document must be revised by removing unnecessary features like backups and focusing on critical aspects of the project.
  • Digitizing Homework Assignments: They discussed streamlining homework assignments and feedback using a digital system to improve communication between teachers, students, and parents.
  • Personal Advice: Ahmed advised Naim to:
    • Perform Istikhara (prayer for guidance) before making critical decisions.
    • Focus on solving 1-2 critical issues that can improve his sister’s life rather than creating a complex system.
    • Build a deeper relationship with his sister to understand her needs better.

b) Video (Monday):

Part 1: Improving Project Focus and Coding Practices for Down Syndrome Educational Website

 

d) Files:

Types of IF Statements with Examples

e) Class Code:

  • Not applicable

f) Exercises:

- Prime Number Test Java Code

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 14 ( 26 Oct 2024) 

 

a) Class Summary:

  • Developing a System for Students with Down Syndrome: Ahmed and Naim discussed the structure of a user-friendly interface and database for students with Down Syndrome, considering the specific needs of the users and parents.
  • Prime Number Checking Algorithm: They reviewed the concept of prime numbers, working on an efficient method to improve the function by reducing unnecessary loop iterations.
  • Sorting Numbers Algorithm: Naim was tasked with creating a function to sort three numbers in descending order, guided by Ahmed’s step-by-step explanation.
  • Database Setup for User Registration: They outlined the structure of a registration system, including tables for storing user and lesson information, with a focus on authentication and roles.
  • Personal Advice: Ahmed suggested drinking green tea with lemongrass to help Naim recover from illness and encouraged him to focus on critical project paths like database setup before refining secondary features.

b) Video (Saturday):

Part 1: Developing Educational Systems: Prime Numbers, Sorting Algorithms, and Custom Interfaces

 

d) Files:

- Easy English Web Project - Database Schema

 

e) Class Code:

  • Not applicable

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 15 ( 28 Oct 2024) 

 

a) Class Summary:

  • PHP Sessions Explained: Ahmed introduced the concept of sessions in PHP, highlighting their importance for storing user information across multiple pages and ensuring data persistence during a session.

  • User Authentication Process: The discussion covered the steps involved in user authentication, including secure form submissions using the POST method and retrieving submitted data to verify user credentials.

  • Project Organization and Logging: Ahmed advised Naim on the importance of organizing project files and implementing logging for effective troubleshooting, emphasizing the need for structured log messages.

  • Java Helper Functions and Coding Practices: The session focused on improving coding skills in Java, including creating helper functions for finding maximum values, using nested if statements, and understanding logical operations in programming.

b) Video (Monday):

Part 1: PHP Sessions, Java Helper Functions, and User Authentication

 

d) Files:

Session Usage, Logging Methods, and POST Requests

-  And and Or Operators in Conditional Formatting

e) Class Code:

  • Not applicable

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 16 ( 31 Oct 2024) 

 

a) Class Summary:

  • Project Organization and Dashboard Development: Ahmed and Naim focused on organizing the project better by naming the database appropriately and creating separate login pages for students, parents, and teachers, with teachers having admin-like access to view student progress.
  • Technical Guidance on JavaScript and PHP: Ahmed highlighted the importance of JavaScript checks for username and password validation, explaining its role in front-end and its execution in the user’s browser. The class also touched on the integration of PHP and JavaScript for comprehensive web development.
  • Relational Database Structure: The structure of a relational database was discussed, emphasizing the need for specific tables for users, students, and parents, and how to link them using primary and foreign keys.
  • Security and Input Validation: They covered the importance of login attempt limits to prevent brute force attacks and the role of JavaScript in validating inputs to avoid common input errors like empty fields.
  • Personal Advice: Focus on iterative progress—complete small tasks like input validation and login page adjustments one at a time to avoid feeling overwhelmed and ensure project momentum.

b) Video (Thrusday):

Part 1: Building Login Systems, Relational Databases, and Java Logic Expressions 

 

d) Files:

e) Class Code:

f) Exercises:

  • Continue refining the enhanced three-login-attempt feature that we began working on during class.

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 17 ( 4 Nov 2024) 

a) Class Summary:

  • Class Frequency Adjustment: Ahmed and Naim discussed reducing their class frequency to once a week, agreeing to keep the sessions on Mondays.

  • User Table Creation and Login Consolidation: They planned a centralized "user" table to store login details (username and password) for students, teachers, parents, and admins, consolidating login info and removing redundancies across tables.

  • Role-Based Access Control: They reviewed the role system, ensuring users only access relevant data (e.g., teachers can view students' info, students see only their own data), enhancing security and user experience.

  • Login System Refinement: They refined the login system code, utilizing a while loop to manage login attempts and discussed using SQL queries to retrieve role-specific data.

  • Personalized Advice for Naim: Ahmed encouraged Naim to practice SQL queries, review role-based access concepts, and prepare questions for the next class to deepen his understanding and strengthen his coding skills.

b) Video (Monday):

Part 1: Enhancing User Login Systems: Consolidation, Roles, and Functionality in SQL-Based Projects

 

d) Files:

e) Class Code:

 

f) Exercises:

  • Review the Java slides from the past four classes for revision and practice.

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

Class 18 ( 11 Nov 2024)

 

a) Class Summary:

  1. SQL Project Setup & Database Management: Learn to set up your SQL database, import dumps, and manage tables effectively. Students will practice SQL commands and ensure database integrity before integration into Laravel.

  2. MVC (Model-View-Controller) Framework Basics: Understand MVC architecture and how to structure your code. Get hands-on practice creating models, views, and controllers in Laravel, with a focus on implementing a secure login process.

  3. Password Encryption & Session Management: Discover the importance of secure password storage using encryption techniques and managing user sessions. This includes hands-on practice with SHA encryption and using session variables for access control.

  4. Logging for Troubleshooting & Code Evaluation: Develop essential troubleshooting skills through logging, allowing you to track and understand the flow of your code. Additionally, learn the importance of operator precedence and evaluating logical conditions for optimized code performance.

  5. Personal Advice for Success: Start small with manageable tasks to build your foundational knowledge in MVC and SQL. Practice and patience are key – take on each component step-by-step, and remember that challenges are a natural part of the learning process in software development.

b) Video (Monday):

Part 1: Mastering SQL Projects with MVC, Encryption, and Advanced Programming Concepts

 

d) Files:

e) Class Code:

  • n/a

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

h) Additional Links :  

  • Introduction to MVC Framework

  • Setting Up Your SQL Database

  • Password Encryption Techniques

  • Session Management in Laravel

  • Using Logging for Troubleshooting

  • Writing SQL Statements for Testing

    • Link Text: “SQL Statements Guide”
    • URL: https://www.w3schools.com/sql/sql_syntax.asp
  • Operator Precedence in Programming

    • Link Text: “Mastering Operator Precedence”
    • URL: https://www.geeksforgeeks.org/operator-precedence-and-associativity-in-c/
  • MVC Login Implementation Guide

    • Link Text: “Building a Secure Login System”
    • URL: https://laracasts.com/series/laravel-from-scratch-2018/episodes/27 (Note: Laracasts may require a subscription)
  • Evaluating Conditions in Code

  • Determining Quadrants in Coordinate Geometry

    • Link Text: “Quadrant Calculation Basics”
    • URL: https://www.mathopenref.com/coordquadrants.html
  • Laravel Documentation for Beginners

 

Class 19 ( 19 Nov 2024)

 

a) Class Summary:

  1. Git for Version Control:
    Naim learned how to use Git commands like git add, git commit, and git revert to manage and protect project code. Ahmed emphasized the importance of version control for tracking changes and preventing data loss.

  2. Laravel Logging and Debugging:
    Ahmed introduced logging in Laravel using Log::info() and Log::error(). This process helps track errors and events efficiently. The importance of session data and reviewing logs for debugging was also discussed.

  3. Simplifying Code Logic:
    Ahmed guided Naim on storing conditional results in variables to simplify code. Techniques like converting characters to lowercase for comparison and returning values directly were highlighted to enhance code readability.

  4. Database Management and .env File Configuration:
    The importance of editing the .env file for database settings was emphasized. Ahmed demonstrated how to configure roles like teachers, students, and admins in Laravel for role-based access control.

  5. Personal Advice for Continuous Improvement:
    Ahmed encouraged Naim to embrace the learning process, accept challenges, and not hesitate to seek help. Consistent practice, revisiting class notes, and applying new concepts to projects were highlighted as key to growth in programming.

b) Video (Monday):

Part 1: Mastering Git, Laravel Logging, and Simplifying Code: Ahmed & Naim’s Coding Session

 

d) Files:

e) Class Code:

f) Exercises:

 

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

h) Additional Links :  

  • n/a

 

Class 20 ( 18 Nov 2024)

 

a) Class Summary:

  1. Simplifying Conditions with the Zen Concept:
  2. Ahmed guided Naim through simplifying complex conditional statements in programming using the Zen method. They discussed the importance of reducing unnecessary conditions for clarity and efficiency.

  3. Application of D. Morgan's Law:
    They explored D. Morgan’s law for converting logical conditions, demonstrating how to transform 'AND' conditions to 'OR' conditions and vice versa for easier code readability and functionality.

  4. System Conditions and User Validation:
    They covered how certain conditions like 'admin' and 'active' status are crucial for validating a user in a system, and discussed best practices for handling user input validation (e.g., username and password conditions).

  5. Division by Zero and Short-Circuit Evaluation in Java:
    They tackled the issue of division by zero in code and discussed Java's short-circuit evaluation, which helps prevent errors and optimize the performance of complex conditions.

  6. Personal Advice for Improvement:
    Naim should focus on practicing logical condition simplifications using D. Morgan’s law and the Zen method regularly. This will improve not only his coding efficiency but also his understanding of how to structure conditions in a way that minimizes errors and improves code readability.

b) Video (Monday):

Part 1: Understanding Simplification, System Conditions, and Advanced Programming Concepts: A Practical Approach
 

d) Files:

e) Class Code:

  • n/a

f) Exercises:

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

h) Additional Links :  

  • n/a

 

 

Class 21 ( 2 Dec 2024) 

a) Class Summary:

  1. System Functionality and User Session Management: Ahmed and Naim discussed the functionality of their system, including user table and session management. The user’s information, such as ID and role, is stored in the session upon login and used to retrieve specific data later.

  2. Sessions, Redirects, and Database Structure: The class covered how sessions store data in memory and persist across the user's session. They also explored the login process, database encryption, and how different tables, such as the student table, interact with the system, especially in terms of accessing the student dashboard.

  3. Database Queries and MVC Framework: Ahmed explained querying and joining database tables (e.g., joining the lesson and exercise tables). They also touched on the MVC (Model-View-Controller) framework, emphasizing the role of controllers in managing business logic and views in displaying data.

  4. Java Programming Concepts: The class delved into various Java programming topics, including short-circuit evaluation, while loops, and string operations. Naim practiced using methods like isUpperCase and understood the importance of evaluating conditions efficiently.

  5. Personal Advice and Class Title: To improve further, Naim is encouraged to practice regularly, especially focusing on loops and conditionals, and to take notes during lessons for better retention

b) Video (Monday):

Part 1: Mastering User Sessions and Java Programming Concepts: A Comprehensive Coding Session

 

d) Files:

e) Class Code:

f) Exercises:

g) HomeWork Solutions Posting (FB) :

 post answers or link to answer files

 

h) Additional Links :  

  • n/a