Refine your programming skills by exploring the most commonly-used data structures and algorithms in Java. In this course, you'll learn about the importance of data structures and algorithms in writing efficient and correct code. You'll explore the differences between abstract data types and data structures. You'll then learn how you can use complexity to measure the performance of your code based on running time, space, network usage, and other resources. Next, you'll examine the big-O notation to measure complexity. Finally, you'll learn how to analyze different methods to determine their running time, expressed using the big-O notation.