We may earn an affiliate commission when you visit our partners.
Course image
Mia Minnes, Leo Porter, and Christine Alvarado

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.

Read more

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.

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!

Enroll now

What's inside

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 objects and designing classes. This might be a bit of review for some of you who might have learned this in your first programming course. If that's the case, feel free to jump ahead to the Practice Quiz at the end of the week. Let's get started!
Read more
Memory Models, Scope, and Starting the Project
We hope you’re excited about the project that we're starting to build -- we sure are! In this second part of this week, we'll walk you through setting up your system and working through your first assignment so you'll be having fun with it in no time. Before that though, we'll finish going over some of the fundamentals fundamentals of object oriented programming. Specifically, being able to trace code is a key skill in becoming a stronger programmer. Like the end of last week, the first part of this week might be a bit of a review of material you already learned in your first Java programming course. If that’s the case, you are always welcome to skip to the first graded assignment on Objects, Memory Models, and Scope.
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Cultivates software development skills in Java, a widely-used language in professional settings
Empowers learners to construct advanced Java programs tailored to their interests
Leverages data visualization to make complex data more accessible and understandable
Geared toward learners with some programming experience, making it unsuitable for absolute beginners
Taught by reputable instructors, including those from Google, enhancing the course's credibility
Offers opportunities for learners to build a portfolio of projects, demonstrating their proficiency in Java

Save this course

Save Object Oriented Programming in Java to your list so you can find it easily later:
Save

Reviews summary

Object-oriented programming in java concepts

learners say this course in Object-Oriented Programming in Java provides engaging assignments and is largely positive. It covers well received qualities of the course such as OOP concepts, lectures, readings, deadlines, and certificates. According to students, some important takeaways from the course include concepts like inheritance, polymorphism, memory models, and OOP fundamentals.
The peer feedback component is valuable, but it can be improved by providing more guidance and support to students.
"really useful and impressive. thanks a lot university of san diego."
"The course is really good and touches all of the OOP concepts."
The course offers a significant project that allows students to apply their knowledge and skills in a real-world context.
"it was great to learn the concept of object oriented programming in java in detailed"
"Very Awesome course and literally help me to upgrade my knowledge"
This course provides a solid foundation in OOP, covering the basics well and providing plenty of practice opportunities.
"Excellent course and learning material, congratulations."
"The Challenges with questions and demos are very useful."
The instructors are knowledgeable and engaging, and they do a great job of explaining complex concepts in a clear and concise way.
"Outstanding lectures with in-depth explanation of the topics"
"The Course Was very well Structured with the various assignments."
The course's primary drawback is that it heavily relies on older Java versions and technologies, which can be frustrating.
"Applet is outdated and not used in today's IT industries . "
"This course is too old, it has some things which are not now in Java"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Object Oriented Programming in Java with these activities:
Find a Java mentor
Accelerate your Java learning by connecting with an experienced mentor.
Browse courses on Java
Show steps
  • Attend Java meetups and conferences
  • Join online Java communities
  • Reach out to potential mentors and express your interest in learning from them
Read Effective Java
Enhance your Java coding practices by learning from one of the most respected books on Java best practices.
Show steps
  • Purchase or borrow a copy of Effective Java
  • Read the book and take notes on key concepts
  • Apply the principles you learn to your own Java code
Explore Stack Overflow
Test your understanding of Java fundamentals by seeking out answers to your coding questions.
Browse courses on Java
Show steps
  • Sign up for a Stack Overflow account
  • Search for existing answers to your Java questions
  • Post your own questions if you can't find an answer
Four other activities
Expand to see all activities and additional details
Show all seven activities
Join a Java study group
Collaborate with other learners to reinforce your understanding of Java.
Browse courses on Java
Show steps
  • Find a Java study group in your area
  • Join an online Java study group
  • Participate in study group discussions
  • Help other members of the study group
Practice coding Java
Improve your coding proficiency by working through Java practice problems.
Browse courses on Java
Show steps
  • Find a website or resource with Java practice problems
  • Solve a few problems each day
  • Review your solutions and identify areas for improvement
Attend a Java workshop
Deepen your Java knowledge by attending a workshop led by experts.
Browse courses on Java
Show steps
  • Research upcoming Java workshops in your area
  • Choose a workshop that aligns with your interests and learning goals
  • Attend the workshop and actively participate
Develop a simple Java application
Apply your Java skills by building a functional Java application.
Browse courses on Java
Show steps
  • Brainstorm an idea for a simple Java application
  • Design the application's interface and functionality
  • Code the application in Java
  • Test and debug the application

Career center

Learners who complete Object Oriented Programming in Java will develop knowledge and skills that may be useful to these careers:
Software Engineer
As a Software Engineer, you'll work in the IT or software industry. You might be involved in all steps of the software lifecycle, from analyzing requirements, to coding, to troubleshooting. To excel in this role, you'll want to have a thorough understanding of Java, including object-oriented programming. This course can help you build the foundation required in Java and help you prepare for an entry-level position in software engineering.
Software Developer
Similar to a Software Engineer, a Software Developer may work in a variety of industries, writing and maintaining software applications. They might be involved in any phase of the software development lifecycle. This is a great career path for those that want to specialize in Java programming. This course can help you build a strong foundation in Java, and help prepare you for a role as a Software Developer. The course also covers foundational algorithms, which can help you prepare for technical interviews.
Computer Programmer
Computer Programmers write and maintain computer code. They may work on a variety of projects, from developing new software to updating existing systems. This role requires proficiency in one or more programming languages. This course can help you build a strong foundation in Java, a popular programming language used in a variety of industries. The course also covers object-oriented programming, a paradigm that is used in many modern programming languages.
Web Developer
Web Developers create and maintain websites and web applications. They might start by discussing the project requirements with the client or stakeholders. Afterwards, they will choose a technology stack, and then start coding the application. This role requires proficiency in a general-purpose programming language such as Java. This course can help you build a foundation in Java, which is a useful skill for a web developer to have. It will also introduce you to the fundamentals of object-oriented programming.
Mobile Application Developer
Mobile Application Developers design, develop, and maintain mobile applications. They may work on a variety of projects, from creating new apps to updating existing ones. Proficiency in Java is not required, but it is a popular language for developing Android apps. This course can help you build a foundation in Java, which could be a valuable asset if you want to work as a Mobile Application Developer. The course also covers object-oriented programming, a concept that is important for developing maintainable and scalable mobile applications.
Data Scientist
Data Scientists collect and analyze data to help organizations make better decisions. They are involved in a number of processes, including data mining, data visualization, and machine learning. This course may be helpful to you in your pursuit of a career as a Data Scientist. The course will provide an introduction to core algorithms for searching and sorting data, which are essential skills for Data Scientists to have.
Systems Analyst
Systems Analysts analyze and design computer systems. They may work on a variety of projects, from developing new systems to improving existing ones. Proficiency in Java is not required for this role, but it is helpful. This course can help you build a foundation in Java, which could be a valuable asset if you want to work as a Systems Analyst. The course also covers topics such as data visualization and object-oriented programming, both of which are important concepts in systems analysis and design.
Data Analyst
Data Analysts are responsible for collecting, analyzing, and interpreting data. They use data to help organizations make informed decisions. Proficiency in Java is not a requirement for this role, but it can be helpful. This course may be useful for you if you are interested in learning Java to complement your skills as a Data Analyst. The course also covers data visualization, which is a skill that is useful for Data Analysts.
Computer Science Teacher
Computer Science Teachers educate students in computer science at the secondary school level. They teach a variety of topics, including programming, web design, and computer hardware. This course can provide you with a solid foundation in Java, a core programming language that you may teach as a Computer Science Teacher. The course also introduces you to object-oriented programming and data visualization, both of which are important concepts in Computer Science education.
IT Consultant
IT Consultants provide advice and guidance to businesses on a variety of IT issues. They may help businesses choose and implement new software, or they may help them troubleshoot existing IT systems. Proficiency in Java is not required for this role, but it can be helpful. This course may be useful for you if you want to learn Java to complement your skills as an IT Consultant. The course also covers topics such as data visualization and object-oriented programming, both of which are important concepts in IT.
Business Analyst
Business Analysts analyze and improve business processes. They may work on a variety of projects, from developing new processes to improving existing ones. Proficiency in Java is not required for this role, but it can be helpful. This course may be useful for you if you want to learn Java to complement your skills as a Business Analyst. The course also covers topics such as data visualization and object-oriented programming, both of which are important concepts in business analysis.
Network Engineer
Network Engineers design, implement, and maintain computer networks. They may work on a variety of projects, from installing new networks to upgrading existing ones. Proficiency in Java is not required for this role, but it can be helpful. This course may be useful for you if you want to learn Java to complement your skills as a Network Engineer. The course also covers topics such as data visualization and object-oriented programming, both of which are important concepts in network engineering.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals and training materials. They may work on a variety of projects, from documenting new software to updating existing documentation. Proficiency in Java is not required for this role, but it can be helpful. This course may be useful for you if you want to learn Java to complement your skills as a Technical Writer. The course also covers topics such as data visualization and object-oriented programming, both of which are important concepts in technical writing.
Project Manager
Project Managers plan, execute, and close projects. They may work on a variety of projects, from developing new products to improving existing ones. Proficiency in Java is not required for this role, but it can be helpful. This course may be useful for you if you want to learn Java to complement your skills as a Project Manager. The course also covers topics such as data visualization and object-oriented programming, both of which are important concepts in project management.
User Experience Designer
User Experience Designers create and improve the user experience of products and services. They may work on a variety of projects, from designing new websites to improving existing ones. Proficiency in Java is not required for this role, but it can be helpful. This course may be useful for you if you want to learn Java to complement your skills as a User Experience Designer. The course also covers topics such as data visualization and object-oriented programming, both of which are important concepts in user experience design.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Object Oriented Programming in Java.
Effective Java classic book that provides practical advice on how to write effective Java code. It covers topics such as object-oriented design, performance optimization, and concurrency.
Java Concurrency in Practice comprehensive book that provides practical advice on how to write concurrent Java code. It covers topics such as thread synchronization, concurrency patterns, and performance optimization.
Java: The Complete Reference comprehensive reference manual for the Java programming language. It provides a thorough overview of the language, including syntax, semantics, and the Java class library.
Refactoring book that provides practical advice on how to refactor existing code to improve its design. It covers topics such as identifying bad smells, refactoring patterns, and test-driven development.
Domain-Driven Design book that provides a practical approach to designing software that is closely aligned with the business domain. It covers topics such as domain modeling, bounded contexts, and strategic design.
Design Patterns classic book that provides a catalog of design patterns for object-oriented software development. It provides practical advice on how to use design patterns to solve common software design problems.
The DevOps Handbook book that provides practical advice on how to implement DevOps in your organization. It covers topics such as culture, process, and tools.
Clean Code book that provides practical advice on how to write clean and maintainable code. It covers topics such as naming conventions, refactoring, and unit testing.
Head First Design Patterns companion book to Head First Java that provides a practical introduction to design patterns. It provides excellent examples and explanations of key design patterns and how to use them in practice.
The Art of Unit Testing book that provides practical advice on how to write effective unit tests. It covers topics such as test design, test automation, and test refactoring.
Building Microservices book that provides practical advice on how to design and build microservices. It covers topics such as microservice architecture, API design, and deployment strategies.
Head First Java provides a good companion reference that covers the basics of Java programming. It provides excellent examples and explanations of key concepts such as object-oriented programming, exceptions, and concurrency.
Continuous Delivery book that provides practical advice on how to implement continuous delivery in your software development process. It covers topics such as build automation, test automation, and deployment automation.

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser