Menu logo

Thoughts on Software Engineering

My Free Java Foundations Full Course: 30 Hours Video Tutorial + 55 Hands-On Exercises

I am happy to publish my Free Java Foundations Full Course (30 hours video tutorial + 74 hands-on exercises). This course is designed as next step after the “Java Basics” free course. It will help you learn the core of programming with Java, using a practical, hands-on approach. In this free Java programming course I teach the fundamentals of Java programming, from the basics to the advanced features: data types, arrays, methods, lists, strings, maps, lambda expressions and stream API, classes and objects, object-oriented programming principles, exception handling and some Java APIs.

The ultimate goal of the course is to prepare students for the official Java Foundation certification from Oracle. After the course, when you solve the hand-on exercises, you will get practical skills in coding and Java programming foundations, which will allow you to learn modern Java technologies and start a tech job after that. This course is not enough to start a job as Java developer, but gives you a solid foundation for the software engineering profession.

Access the free Java coding video lessons, practical hands-on assignments, the course slides, and the automated code grading system for your exercise solutions from the SoftUni Global website:

All the topics from my Java Foundations course are essential to your further development as a software engineer. So, make sure to solve the hands-on exercises in addition to watching the video lessons. Software companies need practical skills, not just knowledge, so you should focus on the hands-on exercises if you want to become a Java developer. If you have no prior programming experience, first watch my Programming Basics with Java course.

Video Tutorial: Java Foundations Certification

Watch my free 30-hours Java Foundations video course on YouTube:

Java Foundations Certification Course (Part 1 of 3): Java Syntax, Conditions, Loops, Data Types, Arrays, and Methods
Java Foundations Certification Course (Part 2 of 3): Lists, Strings, Maps, Lambda, Stream API, Classes, and Objects
Java Foundations Certification Course (Part 3 of 3): Defining Classes, OOP, Principles, Exceptions, and Basic Java APIs

Course Instructors

This course is designed and created by me (Svetlin Nakov) and is taught by me and my colleague George Georgiev.

Svetlin Nakov

I am an experienced tech trainer who helped in the last 20 years more than one hundred thousand young people to begin coding, learn software development, and start a tech job. Learn more from my personal web site:

George Georgiev

George Georgiev, an experienced programming instructor, is a senior Java developer and an award winner.

Learn By Doing: Learn to Code by Coding Exercises and Projects

This free Java Foundations video course teaches skills, not just theory. Each course section comes with carefully prepared hands-on practical exercises, where you write code to solve practical problems, run and test your solutions, maybe make bugs, fix them, and test your code over and over until it finally works properly. My entire course provides more than 50 exercises, with automated grading in the SoftUni Judge System.

Remember that coding is a skill, and should be practiced, just like any other skill. Write code to learn the skill of coding! Write code every day for 1-2 years, and you will get enough experience to start your first developer job.

Automated Grading System for Your Code

To check your solutions to the practical hands-on exercises from this course, I give you a free access to SoftUni’s automated Judge System, where you send your Java code, and you get an automated grading: the Judge System tells you whether your solution is correct or wrong. That is quite useful. Try it, and you will love it!

I will show you how to solve many coding problems. Follow my guidelines and sample solutions and write them. Try to solve the additional exercise problems as well. Write code, play with it, experiment, make bugs and imperfections, fix them, write code, do it many times! That is how you acquire coding skills in practice.

Spend Enough Time on the Exercises!

Do not skip the coding exercises at the end of each course section! They are much more important than video lessons. They give you the practical skills you need for your next tech job.

If you are serious about programming, take this course with all its exercises. You should invest about 60 or maybe 70 hours. Yes, this is a lot of time, but learning programming takes time! Just like learning math. Do you remember how many hours you spent at school learning it?

Ask the Mentors for Free

In case that you have a question or difficulty solving some of the exercise problems, or you have a bug, and you do not know how to fix it, I and my team are here to help.

Join the SoftUni community at and ask for free help from our mentors. Yes, you can ask anything about this training, and you’ll get a free answer! At SoftUni, we value our community and we are always open to help.

At SoftUni, we have answered hundred of thousands of questions already and we helped tens of thousands of students to learn to code and start a tech job. See their profiles at the SoftUni alumni page on LinkedIn:

This Course is Just a Start in Your Java Journey

This course is just a start in Java programming. To become a software engineer and start a tech job, you should learn and practice programming 10-15 times more than what I give you in this course. It takes time and effort to build the skills for your first IT job, so be patient and keep coding for a long time (1-2 years until your first developer job).

To become a junior Java developer, you should learn advanced coding, data structures and algorithmsobject-oriented programmingdatabases, and object-relational persistence frameworks, such as Hibernate and Spring Data, backend development, MVC frameworks, and enterprise technologies, such as Spring BootSpring MVC, and Java EE, as well as basic front-end skills, such as HTMLCSSJavaScriptREST and AJAX. That is what the software companies expect from you as a junior Java developer. It takes time to get practical skills and experience with all these concepts and technologies, along with a solid GitHub portfolio of Java projects.

If someone says that a beginner can learn to program and start a job in 3 or 5 months, do not believe him. That is unlikely to happen. You better study slowly and thoroughly. The effort will pay off.

Java Foundations Certification: Course Topics

This free Java Foundations Certification course covers the following topics from Java programming:

  1. Basic Syntax, Conditions and Loops in Java
  2. Java Data Types, Variables and Expressions
  3. Arrays in Java
  4. Methods, Parameters, Return Value
  5. Lists in Java: Using ArrayList<E>
  6. Strings and Text Processing in Java
  7. Maps, Lambda Functions and Java Stream API
  8. Objects and Classes in Java
  9. Defining Classes: Fields, Constructors. Accessors, Methods
  10. OOP Principles: Encapsulation, Inheritance, Abstraction and Polymorphism
  11. Exception Handling in Java
  12. Java API Classes: Time, Random, Big Numbers
  13. JDK, JRE and Java Tools

This is the detailed course content of my free Java Foundations course:

Lesson #0: The Judge System (Automatic Grading for Your Code)

Before I start with the course topics, I will show you the SoftUni Judge System, where you can check your exercise solutions instantly, for free.

SoftUni Judge is an automated system for code evaluation. Just send your code solution for a coding problem from this course, and the system will tell you whether your solution is correct or not and what exactly is missing or wrong. I am sure you will love the Judge System once you start using it!

Lesson #1: Basic Syntax, Conditions, Loops

In the first course lesson, I explain some of the fundamental concepts in programming. For example – I will review how to use data typesvariablesconditional statements, and loops. Also, I will show how to debug our code and see where it fails. Read more here.

Lesson #2: Data Types and Variables

In the next lesson, I will talk about variables and data types (such as string, integer number, floating-point number, boolean, and others). I will show how variables are stored in the memory, how to convert from one data type to another, etc. Read more here.

Lesson #3: Arrays

In the next course lesson, I will show how to read an array from the console, process arrays, use the for-each loop, print arrays, and simple array algorithms. Build a strong foundation of knowledge in Java programming by learning them. Read more here.

Lesson #4: Methods

This lesson reviews another main paradigm in the programming universe: methods. I will show a few ways to make our code more organized and readable. Also, I will explain how to extend the functionality of our code. Read more here.

Lesson #5: Lists

In this next lesson, I will talk about Lists. They are one of the most popular data structures in programming, as they allow for flexibility. Unlike arrays, their length is not fixed, and you can insert and delete elements at any point. Read more here.

Lesson #6: Strings and Text Processing

This lesson introduces strings and provides an in-depth explanation of text processing in Java. It includes several important topics surrounding strings – the StringBuilder classconcatenation and why it’s a slow operation, the methods concat(), indexOf(), contains(), split(), replace(), and many more. Read more here.

Lesson #7: Maps, Lambda and Stream API

In this lesson, I explain maps, lambda, and the stream API. All of these three topics are extremely important for every beginner programmer. They are part of the pillars of programming, just like the rest of the topics in the current course. Read more here.

Lesson #8: Objects and Classes

With this lesson, you will make your first steps in the world of Object-Oriented Programming (OOP), which is one of the most widely-used programming paradigms in modern programming. By the end of the lesson, you will be familiar with the objects and classes and their purpose. You will also know the different class membersmethods, constructors, getters and setters, fields, etc. Read more here.

Lesson #9: Defining Classes

In this next lesson, I will go over the topics of defining simple classesconventions, and best practices in doing so, creating objects of these classes, object references, and what is the difference between an object and a class. Read more here.

Lesson #10: OOP Principles

This lesson explains another main part of programming. I will talk about and explain the four pillars of Object-Oriented Programming (OOP). They are encapsulation, abstractioninheritance and polymorphism, . Read more here.

Lesson #11: Exception Handling

In this lesson I explain exception handling and why it’s important in software engineering. Exceptions simplify code construction, maintain and allow problematic situations to be processed at multiple levels. In Java, exceptions are objects. The base for all exceptions is the Throwable class – it contains information about the cause of the exception, its description, and the stack trace. Read more, here.

Lesson #12: API Classes

In the next lesson, I show the most frequently used Java API classes. Get familiar with the Math class, how to generate random numbers, the need for BigInteger and BigDecimal in programming, and how to work with the date and time in Java. I will also look at two of the main Java classes – Arrays and Formatter. Read more here.

Lesson #13: JDK, JRE and Java Tools

This is an extra lesson in the course, in which I explain and demonstrate with live code examples the concepts of JDK, JRE, JVM, the command-line compilation tools in Java, the Java compiler javac, class files and JAR archive, the concept of “classpath” and how to deal with all these technologies and tools. Read more here.

Coding Exercises: The Most Important Part of This Course!

The essential part of this practical Java training is the hands-on exercises: the homework assignments after each course section. This course provides more than 50 exercises, with automated grading in the SoftUni Judge System. You should spend about 30 hours of coding to solve them. Yes, this is a serious effort, but it will pay off.

Remember that the only way you can get practical skills is by practice. Write code and solve exercises. Watching video lessons can be pleasant and motivational, but you will never become a software developer by only watching videos. It is a good start, but it’s not enough.

Please, follow the exercises: solve the practical problems and send your solutions to the Judge System for grading. You have more than 50 exercises to solve. Most of them are already solved in the video lessons, but the others are intentionally left for you.

Join the SoftUni Global Lerarn-to-Code Community!

In case that you have a question or difficulty solving some of the exercise problems, or you have a bug, and you do not know how to fix it, we are here to help.

Join the SoftUni community at and ask for free help from our mentors. You can ask anything about this training, and you’ll get a free answer! At SoftUni, we have already helped hundreds of thousands of students to learn to code. See their profiles at SoftUni alumni at LinkedIn.

Join the SoftUni global learn-to-code community at to get free access to the practical exercises and the automated Judge System for this course. Get free help from mentors and meet other learners. It is all for free!

My most successful teaching methodology is “learn by doing“. Write code, run the code, test the code, make mistakes, fix them, run and test again, finally submit your code to the Judge System. That is how you learn coding: by practice.

Subscribe to My YouTube Channel

Do you like this Java Foundations Certification free programming course? Do you want more? Subscribe to my YouTube channel to stay in touch with my free coding courses, lessons, and tutorials:

Comments (1)

One Response to “My Free Java Foundations Full Course: 30 Hours Video Tutorial + 55 Hands-On Exercises”

  1. thabet says:

    Thien Ha Bet (thabet) is considered as the house that owns the largest and most diverse online game store. There are all forms of sports betting, attractive card games, etc. with high winning rates. Including prizes up to 5 billion VND. Please visit thabet to join

RSS feed for comments on this post. TrackBack URL