How do Java programs deal with vast quantities of data? Many of the data structures and algorithms that work with introductory toy examples break when applications process real, large data sets. Efficiency is critical, but how do we achieve it, and how do we even measure it?
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, and in particular, we recommend that you have taken the first course in this specialization (which also requires some previous experience with Java).
In this course, you will use and analyze data structures that are used in industry-level applications, such as linked lists, trees, and hashtables. You will explain how these data structures make programs more efficient and flexible. You will apply asymptotic Big-O analysis to describe the performance of algorithms and evaluate which strategy to use for efficient data retrieval, addition of new data, deletion of elements, and/or memory usage.
The program you will build throughout this course allows its user to manage, manipulate and reason about large sets of textual data. This is an intermediate Java course, and we will build on your prior knowledge. This course is designed around the same video series as in our first course in this specialization, including explanations of core content, learner videos, student and engineer testimonials, and support videos -- to better allow you to choose your own path through the course!

AE

Very solid review of data structures. In fact, I learned a lot of new things along the way like how to benchmark test Java code and how to properly use JUnit and other unit testing frameworks.

YK

Jan 11, 2016

Filled StarFilled StarFilled StarFilled StarFilled Star

I really liked this course and the way it was taught. Although I am a CS major, I really learnt a lot of other stuff from this course apart from learning the core content of Data Structures.

From the lesson

Efficiency Analysis and Benchmarking

Welcome to week 3! The text-editor application you worked with last week does something, but it doesn't do it particularly fast. This week we'll start talking about efficiency. We'll introduce the concept of "Big-O" notation, which sounds a little silly, but is really a powerful (and extremely common) way of analyzing a program's efficiency, independent of the system that it's running on and the exact details of how it's implemented. Then we'll go the other direction and dive into the details, talking about how to measure the actual running time of a piece of code to get an idea of how it really performs in practice.

Taught By

Christine Alvarado

Associate Teaching Professor

Mia Minnes

Assistant Teaching Professor

Leo Porter

Associate Teaching Professor

Transcript

[SOUND] You may wonder, why is worst-case analysis useful? After all, that's not what users are gonna see most of the time. And it's true that other kinds of analysis can be really helpful as well. For instance, best case analysis can let you know right up front if there's no way that the algorithm is gonna work for you at all. If you know that even the best case scenario it's gonna take five years to finish this job, that's probably okay, great, we're done. Time to look for something different. But worst case analysis is important because that's what people remember. Google, if most of your searches take less than a second to complete, and here's your answers and it's great, cool. And we could have the bet answers in the world, and we like to think that we try to give you that. But if every so often running a search takes on the order of 10 minutes, 20 minutes to complete because there's a worst case divot that just takes that long, you're not gonna use this. You're gonna go to somebody else, because who's got 20 minutes to wait even if you know you're answers are gonna be good. So, best case performance is great to know. Average case performance is great to know. But worst-case scenario is really the killer, and that's what we've gotta know, because if the worst case isn't good enough, then it's not good enough, and that's it.

Explore our Catalog

Join for free and get personalized recommendations, updates and offers.

Coursera provides universal access to the world’s best education, partnering with top universities and organizations to offer courses online.