Object Oriented Programming in Java (Coursera)

Object Oriented Programming in Java (Coursera)

Welcome to our course on Object Oriented Programming in Java using data visualization. People come to this course with many different goals -- and we are really excited to work with all of you! Some of you want to be professional software developers, others want to improve your programming skills to implement that cool personal project that you’ve been thinking about, while others of you might not yet know why you’re here and are trying to figure out what this course is all about.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

This is an intermediate Java course. We recommend this course to learners who have previous experience in software development or a background in computer science. Our goal is that by the end of this course each and every one of you feels empowered to create a Java program that’s more advanced than any you have created in the past and that is personally interesting to you. In achieving this goal you will also learn the fundamentals of Object Oriented Programming, how to leverage the power of existing libraries, how to build graphical user interfaces, and how to use some core algorithms for searching and sorting data. And this course is project-based, so we’ll dive right into the project immediately!
We are excited to be offering a unique course structure, designed to support learners of different backgrounds in succeeding at their own pace. The first module explains how this will work and if this course is right for you. We also recommend taking a few minutes to explore the course site. A good place to start is the navigation bar on the left. Click Course Content to see what material we’ll cover each week, as well preview the assignments you’ll need to complete to pass the course. Click Discussions to see forums where you can discuss the course material with fellow students taking the class. Be sure to introduce yourself to everyone in the Meet and Greet forum.
This course should take about 6 weeks to complete. You can check out the recommended course schedule below to see a quick overview of the lessons and assignments you’ll complete each week.
We’re excited you’re here learning with us. Let’s get started!Completing this course will count towards your learning in any of the following programs:

Syllabus

Welcome and Project Overview: Visualizing Data
Welcome to the first week of our course. In this week, we'll get started by introducing ourselves and the Google engineers who will be making appearances throughout the course. We'll also give you of the unique video series we provide and help you understand how to navigate the course to get the most out of it given your background and learning speed. Finally, we'll jump right into the course programming project. We know some of you might be a little intimidated by this aspect of the course, but we'll walk you through the setup and your first assignment so you'll be having fun with it in no time. Let's get started!
Objects, Memory Models, and Scope
We hope you’re excited about the project that we're starting to build -- we sure are! In this second part of the course, we’re going to briefly step away from writing project code and learn some fundamentals of object oriented programming. Specifically, being able to trace code is a key skill in becoming a stronger programmer. This module might be a bit of a review of material you have learned in your first Java programming course. If that’s the case, you are always welcome to skip right to the end-of-week assessment, which for this week is a quiz. Also remember there are many paths you can take through the different videos:The Core videos introduce the basic material. If you learn well from lectures alone, then watching only these videos might work for you. The Concept Challenge videos test your learning of material you just watched. These videos will give you practice to make sure you’re prepared for the quizzes and the programming assignments. Most learners will find them helpful in addition to the Core video series. The Support series videos give you a little extra practice and guidance when you feel you need it. Finally, the In the Real World, and When I Struggled video series relate the concepts and skills you are learning to real-life experiences and situations. Play around with watching and/or skipping the different video types until you find a combination of that works best for your learning.

Graphical output: Creating GUIs and Displaying Data
Now that you have the tools to write and trace object oriented code, let’s get back to developing the project! In this first (real) part of the project, you will create an interactive graphical map that will display geospatial data. This is a highly interactive week, so make sure you’ve got Eclipse loaded up! We encourage you to play around as you watch the videos. Some of the code that we use in the videos is in the demos package in the starter code you set up for this course. Open it up and experiment with it while you're watching the videos. We also encourage you to dive right into the programming project, even before watching the videos, if you want. The programming assignment instructions are in the last lesson of this week - you can watch a video walkthrough of the instructions and also read the step-by-step directions in the accompanying reading. There’s lots of room for creativity, too, so have fun!

Inheritance
Now that you’re in full swing with the project, let’s take a closer look at some concepts that you have already been using in your code. Specifically, the keyword “extends”. What exactly does it mean that your program “extends PApplet”? To answer this question we’ll need to dive into the details of how Java allows for Class Hierarchies through Inheritance and Polymorphism. These fundamental and powerful concepts will serve you well in the future! We’ll use these ideas to allow for displaying markers differently. If you feel you’re already comfortable with Inheritance and Polymorphism, feel free to dive straight into the project (programming assignment) for this week. As you work with the project, feel free to have some fun and introduce new levels of class hierarchies for improved functionality.

GUIs: Responding to User Events
You’ve reached an exciting point in the project - in this week you’ll add interactivity to your map! You’ll be learning how to design event-driven programs, using a new and powerful programming paradigm. Your map will now respond to mouse hovers and clicks. As always, make sure you're writing code along with us as you watch the videos and work through the week. Also, feel free to dive into the programming assignment (project) whenever you are ready

Searching and Sorting: From Code to Algorithms
You've come a long way in this course, and you've got a great project to show for it. In this last module we'll shift gears a bit to talk about some very exciting and fundamental algorithms for finding and sorting data in an array. Searching and sorting algorithms are not only fundamental to computer science, but also ideal for beginning to explore issues of algorithm efficiency. We will only begin to touch on issues of algorithm efficiency here. We will say much more about it in the next course in this specialization, so we hope you will continue with us. We'll also apply sorting to your project, and you'll wrap things up by finishing your project with an extension of your own choosing.

Finishing Up
What? Another week? Well, there's no new content to learn, but we wanted to give you a little buffer time to work on your projects and your peer review assignments and reviews. So take this time to make sure you've got the best project you can produce, and to get some ungraded feedback from your peers on your peer review assignment. Just make sure you're all finished up with your graded submission and your peer reviews well before the end of course deadline. We're looking forward to seeing you in our next class!

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

Related Courses

Learn TypeScript (Coursera) Coursera
Scrimba

Learn TypeScript (Coursera)

Are you a proficient developer in HTML, CSS, and JavaScript, looking to elevate your technical skillset? Have you observed an increasing demand for TypeScript in the professional job market and are keen to explore its significance? Are you in search of a programming language that offers ease in readability and debugging? If the answer to any of these questions is affirmative, then you have arrived at the optimal course to advance your career.

Aug 3rd 2026
4 Weeks
Blockchain Scalability and its Foundations in Distributed Systems (Coursera) Coursera
The University of Sydney

Blockchain Scalability and its Foundations in Distributed Systems (Coursera)

Blockchain promises to disrupt industries once it will be efficient at large scale. In this course, you will learn how to make blockchain scale. You will learn about the foundational problem of distributed computing, consensus, that is key to create blocks securely. By illustrating limitations of mainstream blockchains, this course will indicate how to improve the technology in terms of security and efficiency. In particular, this course will help you: understand security vulnerabilities of mainstream blockchains; design consensus algorithms that tolerate attacks, and; design scalable blockchain systems.

Aug 3rd 2026
5-12 Weeks
Code Yourself! An Introduction to Programming (Coursera) Coursera
University of Edinburgh,Universidad ORT Uruguay

Code Yourself! An Introduction to Programming (Coursera)

Have you ever wished you knew how to program, but had no idea where to start from? This course will teach you how to program in Scratch, an easy to use visual programming language. More importantly, it will introduce you to the fundamental principles of computing and it will help you think like a software engineer.

Aug 3rd 2026
5-12 Weeks
Sistemas Digitales: De las puertas lógicas al procesador (Coursera) Coursera
Universitat Autònoma de Barcelona

Sistemas Digitales: De las puertas lógicas al procesador (Coursera)

En este curso aprenderemos los fundamentos del diseño de los circuitos digitales actuales, siguiendo una orientación eminentemente práctica. A diferencia de otros cursos más "clásicos" de Circuitos Digitales, nuestro interés se centrará más en el Sistema que en la Electrónica que lo sustenta. Este enfoque nos permitirá sentar las bases del diseño de Sistemas Digitales complejos.

Aug 3rd 2026
5-12 Weeks
Analysis of Algorithms (Coursera) Coursera
Princeton University

Analysis of Algorithms (Coursera)

This course teaches a calculus that enables precise quantitative predictions of large combinatorial structures. In addition, this course covers generating functions and real asymptotics and then introduces the symbolic method in the context of applications in the analysis of algorithms and basic structures such as permutations, trees, strings, words, and mappings.

Aug 3rd 2026
5-12 Weeks
Introduction to Genetics and Evolution (Coursera) Coursera
Duke University

Introduction to Genetics and Evolution (Coursera)

Introduction to Genetics and Evolution is a college-level class being offered simultaneously to new students at Duke University. The course gives interested people a very basic overview of some principles behind these very fundamental areas of biology. We often hear about new "genome sequences," commercial kits that can tell you about your ancestry (including pre-human) from your DNA or disease predispositions, debates about the truth of evolution, why animals behave the way they do, and how people found "genetic evidence for natural selection." This course provides the basic biology you need to understand all of these issues better, tries to clarify some misconceptions, and tries to prepare students for future, more advanced coursework in Biology (and especially evolutionary genetics). No prior coursework is assumed.

Aug 3rd 2026
5-12 Weeks
Programming with Scratch (Coursera) Coursera
The Hong Kong University of Science and Technology - HKUST

Programming with Scratch (Coursera)

Learning coding is not only about understanding the programming language being used, but also developing important computational thinking skills, which are useful for problem solving across many disciplinary areas. In this course, students will learn basic programming skills by creating interactive storybooks, animations, and games with Scratch, which is a block-based visual programming language for anyone new to coding.

Aug 3rd 2026
5-12 Weeks
Ethical Issues in Data Science (Coursera) Coursera
University of Colorado Boulder

Ethical Issues in Data Science (Coursera)

Computing applications involving large amounts of data – the domain of data science – impact the lives of most people in the U.S. and the world. These impacts include recommendations made to us by internet-based systems, information that is available about us online, techniques that are used for security and surveillance, data that is used in health care, and many more. In many cases, they are affected by techniques in artificial intelligence and machine learning.

Aug 3rd 2026
5-12 Weeks
NLP Modelos y Algoritmos (Coursera) Coursera
Universidad Austral

NLP Modelos y Algoritmos (Coursera)

Este curso te brindará los conocimientos necesarios para la implementación de algoritmos de NLP. Mediante el uso de los últimos algoritmos más populares en NLP se procederá a dar solución a un conjunto de problemas propios del área. Para realizar este curso es necesario contar con conocimientos de programación de nivel básico a medio, deseablemente conocimiento básico del lenguaje Python y es recomendable conocer los Jupyter Notebooks en el entorno Anaconda.

Aug 3rd 2026
4 Weeks
Genetic Epidemiology Foundations (Coursera) Coursera
University of Colorado System

Genetic Epidemiology Foundations (Coursera)

This course is designed to provide students with the foundation necessary to conduct statistical analysis of genetic association study data. This course includes topics such as quality control in genetic studies, population-based case-control association studies, genome-wide association studies, and foundational concepts in population genetics and the history of genetics research. Examples of concepts and reference literature are provided in this 6-module course.

Aug 3rd 2026
5-12 Weeks
Decision Making and Reinforcement Learning (Coursera) Coursera
Columbia University

Decision Making and Reinforcement Learning (Coursera)

This course is an introduction to sequential decision making and reinforcement learning. We start with a discussion of utility theory to learn how preferences can be represented and modeled for decision making. We first model simple decision problems as multi-armed bandit problems in and discuss several approaches to evaluate feedback. We will then model decision problems as finite Markov decision processes (MDPs), and discuss their solutions via dynamic programming algorithms. We touch on the notion of partial observability in real problems, modeled by POMDPs and then solved by online planning methods.

Aug 3rd 2026
5-12 Weeks
Avatar Psychology for Designers (Coursera) Coursera
Michigan State University

Avatar Psychology for Designers (Coursera)

This course covers the latest and greatest psychological research on avatars and is relevant to current and future designers of any medium that includes user self-representations (e.g., video games, virtual worlds, robots, automobiles, social media, etc.). By taking this course, you will be able to define digital and non-digital avatars and identify how they are applicable in everyday life.

Aug 3rd 2026
4 Weeks