Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Java Programming

University of Helsinki via Independent


Welcome to the University of Helsinki’s free massive open online course (MOOC) on programming! This is an updated version of our popular course Object-Oriented Programming with Java.

During this course, you will learn the basics of computer programming, along with algorithms and object-oriented programming through the Java programming language. The course includes comprehensive materials and plenty of programming exercises - all of which are tested using our automatic testing service Test My Code.

Anyone can join - no previous programming knowledge is required.

Unlike many programming courses found online, ours is completely unabridged; the course’s scope and material are identical to our CS1 Introduction to Programming and Advanced Programming courses.

This is the first course in our computer science learning track, and we use industry-grade tooling from day one. As such, the course is about programming in a real integrated development environment (IDE) instead of a browser or an educational IDE.

The course does not require separate registration. You can simply dive into the first part of the course found over here.

Course Contents

The course is split up into two individual courses: Java Programming I and Java Programming II. Each course consists of seven parts, each with its own exercise set. Completing a single part takes approximately 5-20 hours, and we recommend reserving at least 10 hours per part, depending on prior skills with computers.

Credits and certificate

No more exams will be held on this course. If you have a Finnish social security number and wish to complete Introduction to Programming and the Advanced Course in Programming for credits, see Python Programming MOOC.
You can get a certificate for each course (Java Programming I & Java Programming II seperately) from here:


  • Java Programming I
    • Part 1: Welcome to learning programming! The first part of the course focuses on taking the plunge with programming and getting familiar with all the required tools.
    • Part 2: The second part of the material focuses on repetition in programs and on how to divide functionality into distinct units.
    • Part 3: The main themes in the third part of the course are adding information to list and array data structures, and handling information in string form.
    • Part 4: The main theme of the fourth part is object-oriented programming. You will learn to read data from files and to represent and handle information with the help of objects.
    • Part 5: The fifth part of the course material continues with object-oriented programming, which was introduced in the fourth part.
    • Part 6: The sixth part of the course material handles objects consisting of objects, and we'll take a look at separating the text user interface and the program logic.
    • Part 7: In the seventh part of the course we'll focus on general programming paradigms and algorithms. The course Introduction to programming (TKT-10002) ends after the seventh week, and the Advanced course in programming (TKT-10003) begins with the eight part.
  • Java Programming II
    • Part 8
    • Part 9: The ninth part of the course material focuses on two essential concepts of object oriented programming, namely inheritance and interfaces. You will learn to create classes that inherit another classes, and also classes that implement one or more interfaces. You are also going to notice that an object can be represented by any of its actual types.
    • Part 10: In the tenth part of the course we introduce handling collections with streams. You'll learn how to create a stream from a collection, filter the values of a stream, transform the values of a stream, and collect values of a stream to another collection. We introduce the concept lambda expression, and you'll learn to use it in your programs. You will also learn how to order objects using the Java Comparable interface, and some other useful techniques like regular expressions, enumerate type and iterator.
    • Part 11: In the eleventh part you'll learn to decypher simple class diagrams. You'll become familiar with packages in Java and learn what the different parts of an import statement mean. You'll practise using exceptions in Java: how to throw and handle them. You'll take another look at reading data from a file, and learn to write data to a file.
    • Part 12: In the twelfth part of the course we will introduce type parameters and you will learn what ArrayList<String>; actually means. You will learn to implement classes that use type parameters. You will get to understand how ArrayList and HashMap are implemented, and you will implement your own versions as well. You will learn how to create random numbers, and practice using some Java tools to create random numbers. You will learn how multidimensional data can be presented, and how to use multidimensional arrays.
    • Part 13: The thirteenth part of the course material introduces the topics of creating graphical user interfaces and the kinds of components that are used in them. You will learn to handle different events that occur in graphical user interfaces, and practise creating applications that contain multiple views.
    • Part 14: In the fourteenth part you will learn methods for data visualization and acquaint yourself with Java's existing charts (line chart, bar chart). You will learn to make simple drawings and take a look at image processing. You will also learn to play audio files. Finally, there is a slightly larger program — the Asteroids game — that you will create by following an example.

Taught by

Agile Education Research


5.0 rating, based on 1 Class Central review

Start your review of Java Programming

  • Anonymous
    gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggoaepmgmaelme;leava;ofma;fafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm(actualy i don't know haw to say it but it the best class)

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.