Data Structures and Performance

Product type

Data Structures and Performance

Coursera (CC)
Logo Coursera (CC)
Provider rating: starstarstarstar_halfstar_border 7.2 Coursera (CC) has an average rating of 7.2 (out of 6 reviews)

Need more information? Get more details on the site of the provider.

Description

When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan

  • Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
  • Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.

About this course: 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-lev…

Read the complete description

Frequently asked questions

There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.

Didn't find what you were looking for? See also: .

When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan

  • Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
  • Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.

About this course: 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!

Who is this class for: This is an intermediate software development course. We recommend this course to learners who have previous experience in programming, specifically in Java, or a background in computer science and who want to take the next step in designing data structures for more efficient and more complex algorithms.

Created by:  University of California, San Diego
  • Taught by:  Christine Alvarado, Associate Teaching Professor

    Computer Science and Engineering
  • Taught by:  Mia Minnes, Assistant Teaching Professor

    Computer Science and Engineering
  • Taught by:  Leo Porter, Assistant Teaching Professor

    Computer Science and Engineering
Basic Info Course 4 of 4 in the Object Oriented Programming in Java Specialization Level Intermediate Commitment 6 weeks of study, 6-10 hours/week Language English How To Pass Pass all graded assignments to complete the course. User Ratings 4.8 stars Average User Rating 4.8See what learners said Coursework

Each course is like an interactive textbook, featuring pre-recorded videos, quizzes and projects.

Help from your peers

Connect with thousands of other learners and debate ideas, discuss course material, and get help mastering concepts.

Certificates

Earn official recognition for your work, and share your success with friends, colleagues, and employers.

University of California, San Diego UC San Diego is an academic powerhouse and economic engine, recognized as one of the top 10 public universities by U.S. News and World Report. Innovation is central to who we are and what we do. Here, students learn that knowledge isn't just acquired in the classroom—life is their laboratory.

Syllabus


WEEK 1


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.


7 videos, 9 readings, 2 practice quizzes expand


  1. Video: Course Title
  2. Reading: A Customized Welcome to this Course
  3. Video: Welcome (Object Oriented Java Programming: Data Structures and Beyond Specialization)
  4. Video: Welcome (Object Oriented Programming in Java Specialization)
  5. Reading: After completing this course, you will be able to...
  6. Reading: Is this course right for me?
  7. Practice Quiz: Pre-Course Quiz
  8. Reading: Up Next: A short survey
  9. Practice Quiz: Survey: Your goals for the course
  10. Reading: If you want more practice before you begin...
  11. Reading: The structure of this course
  12. Video: Your path through the course
  13. Video: Concept Challenges
  14. Video: In the Real World: Welcome from Google Engineers
  15. Reading: Project Overview
  16. Video: Project Prototype
  17. Reading: Setting up Java and Eclipse
  18. Reading: Getting and Working with the Starter Code

Graded: Quiz about the Starter Code and Course Structure

WEEK 2


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!


15 videos, 6 readings, 2 practice quizzes expand


  1. Video: Introduction
  2. Reading: A note about week numbers
  3. Reading: By the end of this week, you will be able to...
  4. Video: Project Overview
  5. Video: Core: Introduction to the Flesch Readability Score
  6. Video: Core: Basics of Strings in Java
  7. Video: Core: Working with Strings in Java
  8. Practice Quiz: Where to next?
  9. Video: Support: For-Each Loops, part 1 of 5
  10. Video: Support: For-Each Loops, part 2 of 5
  11. Video: Support: For-Each Loops, part 3 of 5
  12. Video: Support: For-Each Loops, part 4 of 5
  13. Video: Support: For-Each Loops, part 5 of 5
  14. Video: Core: Introduction to Regular Expressions
  15. Video: When I struggled: Regular expressions
  16. Video: Concept Challenge: Regular Expressions
  17. Video: Support: with Regular Expressions
  18. Practice Quiz: Strings and Regular Expressions
  19. Reading: Did you have trouble with any question(s) on the practice quiz?
  20. Discussion Prompt: What questions do you have about Strings and Regular Expressions?
  21. Reading: Week 2: Additional Resources
  22. Video: Project: Programming Assignment Walk Through
  23. Reading: Programming Assignment FAQ
  24. Reading: Week 2: Congratulations and quiz answers

Graded: How Easy to Read is Your Writing?
Graded: Module and Programming Assignment Quiz

WEEK 3


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.


25 videos, 3 readings, 3 practice quizzes expand


  1. Video: Introduction
  2. Reading: By the end of this week, you will be able to...
  3. Video: Project Overview
  4. Video: In the Real World: Efficiency
  5. Video: Core: Our Motivation for Asymptotic Analysis
  6. Video: Core: Counting Operations
  7. Video: Core: Introduction to Asymptotic Analysis, Part 1
  8. Video: Core: Introduction to Asymptotic Analysis, Part 2
  9. Video: Core: Computing Big O with Consecutive Operations
  10. Video: Core: Computing Big O with Nested Operations
  11. Practice Quiz: Where to next?
  12. Practice Quiz: Practice Quiz
  13. Video: Concept Challenge: Classifying Functions using Big O
  14. Video: Support: Analyzing Selection Sort
  15. Video: Concept Challenge: Estimating Big O from Code
  16. Video: Core: Worst, Best, and Average Cases
  17. Video: In the Real World: Worst Case Analysis
  18. Video: Core: Analyzing Search Algorithms
  19. Video: Core: Analyzing Sorting Algorithms
  20. Video: When I struggled: Algorithm performance
  21. Video: Core: Merge Sort
  22. Video: Core: A Summary of Sorting
  23. Video: Core: Common Pitfalls in Asymptotic Analysis
  24. Practice Quiz: Asymptotic Notation and Analysis
  25. Video: Core: Introduction to Benchmarking
  26. Video: Core: Using Java Time
  27. Video: Core: Analyzing Timings
  28. Video: Concept Challenge: Relating Timing Data to Algorithm Analysis
  29. Reading: Week 3: Additional Resources
  30. Video: Project: Week 3 Project Walk Through
  31. Reading: Week 3: Congratulations and quiz answers

Graded: Making Flesch Score Calculation Efficient
Graded: Module and After Programming Assignment Quiz

WEEK 4


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.


26 videos, 3 readings, 2 practice quizzes expand


  1. Video: Introduction
  2. Reading: By the end of this week, you will be able to...
  3. Video: Project Overview
  4. Video: Core: Introduction to Abstraction
  5. Video: In the Real World: Data Abstraction
  6. Video: Core: Linked Lists vs. Arrays
  7. Video: In the Real World: Lists vs. Arrays
  8. Video: Core: Generics and Exceptions
  9. Video: Core: Java Code for a Linked List
  10. Video: Concept Challenge: Implementing linked lists, a first attempt
  11. Video: Concept Challenge: Drawing Linked Lists, second attempt
  12. Video: Support: Adding to a Linked List
  13. Video: When I struggled: Data structures
  14. Video: Core: Testing and Confidence
  15. Video: In the Real World: How can the compiler help with testing?
  16. Video: Core: Testing Practices
  17. Practice Quiz: Where to next?
  18. Video: In the Real World: How do you test the behavior of code?
  19. Video: Support: JUnit in Eclipse
  20. Video: In the Real World: Unit Testing
  21. Video: Core: Testing Linked List's "Get" Method
  22. Video: Concept Challenge: Which Tests Should You Run?
  23. Video: In the Real World: Test-driven development
  24. Reading: Week 4: Additional Resources
  25. Video: Project: Linked List Assignment Walk Through
  26. Video: When I struggled: confidence in code
  27. Practice Quiz: Where to next?
  28. Video: Core: Markov Text Generation
  29. Video: Core: Implementing Markov Text Generation
  30. Video: Optional Project: Markov Text Generation Walk Through
  31. Ungraded Programming: (Optional) Markov Text Generation
  32. Reading: Week 4: Congratulations

Graded: Implement and Test a Linked List
Graded: Week 4 Reflective Programming Assignment Quiz

WEEK 5


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. :)


22 videos, 3 readings, 1 practice quiz expand


  1. Video: Introduction
  2. Reading: By the end of this week, you will be able to...
  3. Video: Project Overview
  4. Video: Core: Trees
  5. Video: In the Real World: Trees
  6. Video: Core: Defining Trees
  7. Video: Core: Binary Trees
  8. Video: Core: Pre-Order Traversals
  9. Practice Quiz: Where to next?
  10. Video: Core: Post-Order, In-Order, and Level-Order Traversals (Breadth-first search)
  11. Video: When I struggled: Why traverse a tree?
  12. Video: Core: Introduction to Binary Search Trees
  13. Video: Core: Searching in a BST
  14. Video: Support: Code for BST's "Find" Method
  15. Video: Core: Inserting into a BST
  16. Video: Support: Code for BST's "Insert" Method
  17. Video: Core: Deleting from a BST
  18. Video: Concept Challenge: BST Shape
  19. Video: Core: Performance of BSTs and Balancing, Part 1
  20. Video: Core: Performance of BSTs and Balancing, Part 2
  21. Video: Core: Introduction to Tries
  22. Video: Core: Performance of Tries
  23. Video: Core: Implementing a Trie
  24. Reading: Week 5: Additional Resources
  25. Video: Project: Week 5 Project Walk Through
  26. Reading: Week 5: Congratulations and quiz answers

Graded: Spell Checking and Autocomplete
Graded: Week 5 Content and Programming Assignment Quiz

WEEK 6


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.


14 videos, 3 readings expand


  1. Video: Introduction
  2. Reading: By the end of this week, you will be able to...
  3. Video: Project Overview
  4. Video: Core: Hash Tables
  5. Video: Core: Collisions in Hash Tables
  6. Video: When I Struggled: Hash Tables
  7. Video: Core: Applications of Hash Tables
  8. Video: Support: Modular Arithmetic
  9. Video: Concept Challenge: Hash Tables
  10. Video: Core: Overview
  11. Video: Core: Algorithm
  12. Video: Core: Edit Distance
  13. Reading: Week 6: Additional Resources
  14. Video: Project: Spelling Suggestions Walk Through
  15. Video: Project: Word Path Walk Through
  16. Ungraded Programming: Word Paths (Optional but Recommended)
  17. Reading: Week 6: Congratulations and quiz answers
  18. Video: Core: Congratulations!

Graded: Spelling Suggestions
Graded: Week 6: Programming Assignment and Content Quiz
There are no reviews yet.

    Share your review

    Do you have experience with this course? Submit your review and help other people make the right choice. As a thank you for your effort we will donate $1.- to Stichting Edukans.

    There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.