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

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?

Read more

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!

Enroll now

What's inside

Syllabus

Introduction to the Course
Welcome to the first module in the second course of our Intermediate Java Programming Specialization. We'll start with introductions again: to ourselves, the Google engineers, and the structure of the course. After the introduction we'll have a short warm up to get you comfortable with the code you will be building on to this class. But don't worry--no graded programming assignments yet. This week is all about getting comfortable and excited to learn.
Read more
Working with Strings
This week we're going to dive into the course programming project. In the first lesson you'll learn about Strings and Regular Expressions, and in the programming assignment this week you'll apply that knowledge to adding functionality to your text editor so that it can measure the "readability" of text by calculating something called the "Flesch Readability Score". This course is focused on building code that not only does interesting things, but also finishes them quickly. So, let's get started building some code!
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.
Interfaces, Linked Lists vs. Arrays, and Correctness
This week we'll start talking about some of the basic concepts that one expects to find in a data structures course: the idea of data abstraction, and a data structure called a Linked List. Even though Linked Lists are not very efficient structures (for the most part), they do hit home the idea of "linking" pieces of data together in your computer's memory, rather than storing the data in one contiguous region. This linking idea will be central to many of the more advanced data structures, namely trees and graphs, that are coming up later in this course and in the next course in this specialization. In this module you'll also learn tools and procedures for unit testing your code, which is a way to make sure that what you've written is correct, and a staple practice of any sophisticated software developer.
Trees! (including Binary Search Trees and Tries)
Welcome to week 4! We know you've been working hard. We hope you tried that optional Markov Text Generation programming assignment last week, but if not, no worries. You can always go back and do it later (spoiler alert: it's pretty amazing that such a simple algorithm can produce such realistic text). This week there's more fun (and hard work) as we learn about trees. Trees rely on the same linked structure idea as Linked Lists, only they're MUCH faster (usually...). In the project this week you'll add auto-complete to your text editor. Believe us when we say it's so cool when you get it working! You'll see... and we bet you can't wait for the programming assignment now. :)
Hash Maps and Edit Distance
You made it to the last week! Congratulations on getting this far! In this last week we'll be looking at a fundamental data structure called a Hash Table. If you thought trees were fast, just wait until you see what Hash Tables can do! Your last programming assignment will add spelling correction suggestions to your text editor, and there's an optional assignment that builds on the same ideas as the main assignment too, if you have the time and energy.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers the fundamentals of data structures, such as linked lists, trees, and hashtables, which are core to industry-level applications
Taught by Christine Alvarado, Mia Minnes, and Leo Porter, recognized for their work in Java programming
Examines efficiency analysis, benchmarking, and data retrieval strategies, which are essential skills for Java developers
Builds a practical text editor application throughout the course, allowing learners to apply their knowledge hands-on
Introduces asymptotic Big-O analysis, a widely used technique for describing algorithm performance
Assumes prior experience in Java and recommends a prerequisite course in the specialization

Save this course

Save Data Structures and Performance to your list so you can find it easily later:
Save

Reviews summary

Comprehensive data structures

Learners say this course is a comprehensive introduction to data structures and performance, implemented using Java. Instructors are praised for being thorough and teaching complex functionalities. However, some learners critique the course for being advertised as free but requiring payment after the first 7 days.
Covers a wide range of data structures and performance topics.
Instructors are highly knowledgeable.
"This course is very thorough."
"It will teach you very very properly, the implementation of different data structures using Java, and the implications those different data structures have on your algorithms."
Course is advertised as free but requires payment after 7 days.
"Courses are advertised as "free" yet, when you click on "start class" a pop-up shows a "free 7 day trial" and a dollar amount to continue."

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 Data Structures and Performance with these activities:
Java Refresher
Take time to review Java fundamentals like variables, data types, and control structures before starting the course to refresh your memory.
Browse courses on Java
Show steps
  • Review your notes
  • Solve coding problems
Algorithms Unlocked
Read a book like "Algorithms Unlocked" to enhance your foundational understanding of algorithms, which are essential for data structures.
Show steps
  • Read the book
  • Work on the exercises
Study Group
Join a study group with fellow learners to discuss concepts, work on projects, and quiz each other.
Browse courses on Java
Show steps
  • Find a study group
  • Attend the study group
  • Contribute to the discussions
Five other activities
Expand to see all activities and additional details
Show all eight activities
Advanced Java Tutorials
Expand your knowledge of Java data structures by following comprehensive tutorials on topics like linked lists, trees, and hash tables.
Browse courses on Linked Lists
Show steps
  • Find a tutorial
  • Follow the instructions
  • Complete the exercises
Coding Practice Problems
Solve programming problems on platforms like LeetCode or HackerRank to solidify your understanding of Java data structures and algorithms.
Browse courses on Data Structures
Show steps
  • Find a problem to solve
  • Design your solution
  • Implement your solution
  • Test your solution
Data Structures Workshop
Attend a workshop to deepen your understanding of Java data structures and algorithms, and connect with other learners.
Browse courses on Data Structures
Show steps
  • Find a workshop
  • Register for the workshop
  • Attend the workshop
  • Complete the exercises
Java Project
Use the knowledge you've acquired to start a project that will cement your skills in Java data structures and algorithms.
Show steps
  • Design your project
  • Implement your project
  • Test your project
Java Explained
Write a blog post or create a video explaining a Java data structure or algorithm to reinforce your understanding and help others.
Browse courses on Java
Show steps
  • Choose a topic
  • Research the topic
  • Write the content

Career center

Learners who complete Data Structures and Performance will develop knowledge and skills that may be useful to these careers:
Quantitative Analyst
Quantitative Analysts use mathematical and statistical models to assess risk and make investment decisions. They work in the financial industry, typically for investment banks and hedge funds. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Quantitative Analyst.
Machine Learning Engineer
Machine Learning Engineers develop and deploy machine learning models. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Machine Learning Engineer.
Operations Research Analyst
Operations Research Analysts use mathematical and statistical models to solve problems in business and industry. They work in a variety of industries, including manufacturing, logistics, and healthcare. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Operations Research Analyst.
Data Scientist
Data Scientists use data to solve problems and make predictions. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Data Scientist.
Data Engineer
Data Engineers design and build the infrastructure that stores and processes data. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Data Engineer.
Data Analyst
Data Analysts collect, clean, and analyze data to help businesses make better decisions. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Data Analyst.
Computer Programmer
Computer Programmers write and maintain computer programs. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Computer Programmer.
Business Analyst
Business Analysts use data to help businesses make better decisions. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Business Analyst.
Software Engineer
As a Software Engineer, you will design and develop software applications. Your work has an impact on people's lives in many ways. You may develop software that helps people manage their finances, stay connected with loved ones, or learn new things. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Software Engineer.
Database Administrator
Database Administrators manage and maintain databases. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Database Administrator.
Systems Analyst
Systems Analysts analyze and design business systems. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Systems Analyst.
Software Architect
Software Architects design and develop the architecture of software systems. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Software Architect.
Web Developer
Web Developers design and develop websites. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Web Developer.
Game Developer
Game Developers design and develop video games. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Game Developer.
Mobile Developer
Mobile Developers design and develop mobile applications. They work in a variety of industries, including finance, healthcare, and retail. To be successful in this role, you will need to have a strong understanding of data structures and algorithms. This course will help you build a foundation in these topics, which will make you a more effective Mobile Developer.

Reading list

We've selected 13 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 Data Structures and Performance.
Provides a comprehensive introduction to algorithms, with a focus on mathematical analysis. It valuable resource for students and professionals who want to learn more about the theoretical foundations of algorithms.
Provides a comprehensive overview of algorithms, with a focus on mathematical analysis. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides a comprehensive overview of Java concurrency. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides a comprehensive introduction to algorithms, with a focus on Java implementations. It valuable resource for students and professionals who want to learn more about the fundamental concepts of algorithms.
Provides a comprehensive overview of data structures and algorithms, with a focus on Java implementations. It valuable resource for students and professionals who want to learn more about the fundamental concepts of data structures and algorithms.
Provides a comprehensive overview of data structures and algorithms, with a focus on Python implementations. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides practical advice on how to write effective Java code. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides practical advice on how to write effective Java code. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides a comprehensive overview of the Java programming language. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides a concise overview of computer science. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides a beginner-friendly introduction to the Java programming language. It valuable resource for students and professionals who want to learn more about the Java programming language.
Provides a beginner-friendly introduction to the Java programming language. It valuable resource for students and professionals who want to learn more about the Java programming language.

Share

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

Similar courses

Here are nine courses similar to Data Structures and Performance.
Data Structures & Backend with Java
Applying Data Structures to Manipulate Cleansed UN Data
Algorithms Data Structures in Java #2 (+INTERVIEW...
Data Structures and Algorithms In Java ( DSA )
Data Structures Fundamentals
Preparing Data for Machine Learning with Java
Testing and Profiling in NetBeans: Fix a Mortgage...
Data Structures
Data Structures and Algorithms: In-Depth using Python
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