Develop powerful interactive software. Gain in-depth knowledge of software development in four comprehensive courses.
Suggested by: Coursera (What is Coursera?)
No prior knowledge required
No unnecessary risks
This specialization deals with intermediate topics in software development. You will learn object-oriented programming principles that will allow you to maximize the potential of Java, and you will implement data structures and algorithms to organize large amounts of data efficiently and conveniently.
In the final project, you will apply your skills to analyze data collected from a real social network.
A small, select group of outstanding learners who complete the internship will be invited to practice interviews with Google recruiters. An invitation to a practice interview does not guarantee an actual interview or job.
Welcome to our course on Object Oriented Programming in Java used with Data Visualization. People come to this course with a wide variety of goals – and we are really excited to work with all of you! Some of you want to become professional developers, others are interested in improving your programming skills to realize that special personal project you have in mind, while others may not yet know why they are here and are trying to figure out what this course is about.
This is an intermediate Java course. We recommend this course for learners who have previous experience in software development or a background in computer science. Our goal is that by the end of the course, each of you will feel ready to create a Java program that is more advanced than anything you have created before, and that you will find interesting to work on.
As part of achieving this goal, you will also learn the basics of object-oriented programming, how to leverage the power of existing libraries, how to build a graphical user interface, and how to use some basic algorithms for searching and sorting data. And this course is project-based, so let’s get started on a project right away!
We are excited to offer a unique course structure, designed to support learners from diverse backgrounds to succeed at their own pace. The first module will explain how it will work and whether this course is right for you. We also recommend taking a few minutes to explore the course website. A good place to start is the navigation bar on the left. Click on Course Content to see what material we will cover each week, and also view the assignments you will need to complete to pass the course. Click on Discussions to see forums where you can discuss the course material with other students taking the class. Don’t forget to introduce yourself to everyone in the “Meet and Greet” forum.
This course is expected to take approximately 6 weeks to complete. You can check out the recommended course schedule below for a quick overview of the classes and assignments you will be completing each week.
We’re excited to have you here learning with us. Let’s get started!
How do Java programs deal with huge amounts of data? Many of the data structures and algorithms that work with basic examples break down when applications process real, large data sets. Efficiency is critical, but how do you achieve it and how do you measure it?
This is an intermediate Java course. We recommend this course for learners who have prior experience in software development or a background in computer science, and in particular, we recommend that you have experience in the first course in this field (which also requires prior experience in Java).
In this course, you will use and analyze data structures used in industrial-grade applications, such as linked lists, trees, and fire tables. Explain how these data structures make programs more efficient and flexible. Apply Big-O asymptotic analysis to describe the performance of algorithms and evaluate which strategy to use for efficient data retrieval, insertion, deletion, and memory usage.
The program you build in this course will allow the user to manage, manipulate, and reason about large sets of textual data. This is an intermediate Java course, and we will build on your previous knowledge. This course is designed around the same series of videos as the first course in our specialization, including explanations of basic content, learning videos, student and engineer testimonials, and support videos – to allow you to choose your own path within the course!
How does Google Maps plan the best route to travel in a city given current traffic conditions? How does an internet router forward packets of network traffic to reduce latency? How does an aid organization allocate resources to its local partners?
To solve such problems, we first represent the key data in a complex data structure. In this course, you will learn about data structures, such as graphs, which are fundamental to working with structured real-world data. You will develop, implement, and analyze algorithms to work with this data to solve real-world problems. Additionally, as the programs you develop in this course become more complex, we will examine what makes code good design and a layered structure that will allow you to not only write good code, but also share it with others and maintain it in the future.
The main project in this course will be a route planning app. You will apply the concepts from each module directly to building an app that allows an autonomous agent (or human driver!) to navigate its space. As always, we have different video series to connect the content to its real-world relevance and provide different levels of support to meet your individual needs.
You’ve reached a major milestone as a software developer and have become a skilled programmer. You already know how to solve problems, write algorithms, and analyze solutions; and you have a wealth of tools (like data structures) at your disposal. Now you may be ready for an internship or (perhaps) an entry-level job in programming. But will you be able to land the internship/job? That depends in part on how well you can solve new technical problems and communicate during interviews. How can you get better at this? Practice! With the help of Google’s hiring and engineering teams, we’ve provided tips, examples, and practice opportunities in this course that can help you with a number of tech companies. We’ll help you organize yourself into practice groups. Finally, we’ll give you some basic job search advice and tips for success once you’re on the job.
In this final project, we will combine all the skills from all four courses of the specialization to do something really fun: analyze social networks! The opportunities for learning in a social network are almost endless. Who are the “influential friends” on the network? What are the subcommunities within the network? Who is connected to whom, and how many links are there? These are just some of the questions you can explore in this project.
We’ll give you a real-world dataset and some infrastructure to get you started, as well as some warm-up tasks and basic project requirements, but after that you’ll be free to choose which direction to take. If you run out of ideas, we’ll have a few suggested directions that can help spark your creativity and imagination. Finally, to integrate the skills you’ve acquired in Course 4 (and market your project!) you’ll be asked to create a video showcasing your final product.



