Data Structures and Performance

  • 4.8
Approx. 42 hours to complete

Course Summary

This course covers advanced topics in data structures and algorithms to optimize performance. Students will learn how to design and analyze algorithms and data structures for efficiency, and gain practical experience in implementing them in code.

Key Learning Points

  • Learn how to optimize data structures and algorithms for improved performance
  • Gain practical experience implementing efficient code
  • Design and analyze algorithms for efficiency

Related Topics for further study


Learning Outcomes

  • Design and implement efficient data structures
  • Analyze algorithms for efficiency
  • Apply optimization techniques to improve performance

Prerequisites or good to have knowledge before taking this course

  • Strong programming skills in a high-level language
  • Familiarity with basic data structures and algorithms

Course Difficulty Level

Advanced

Course Format

  • Online
  • Self-paced
  • Video lectures
  • Assignments and quizzes

Similar Courses

  • Algorithms, Part I
  • Algorithms, Part II
  • Data Structures

Related Education Paths


Notable People in This Field

  • Computer Scientist
  • Computer Scientist
  • Computer Scientist

Related Books

Description

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?

Outline

  • Introduction to the Course
  • Course Title
  • Welcome (Object Oriented Java Programming: Data Structures and Beyond Specialization)
  • Welcome (Object Oriented Programming in Java Specialization)
  • Your path through the course
  • Concept Challenges
  • In the Real World: Welcome from Google Engineers
  • Project Prototype
  • A Customized Welcome to this Course
  • After completing this course, you will be able to...
  • Is this course right for me?
  • If you want more practice before you begin...
  • The structure of this course
  • Project Overview
  • Setting up Java and Eclipse
  • Getting and Working with the Starter Code
  • Pre-Course Quiz
  • Survey: Your goals for the course
  • Quiz about the Starter Code and Course Structure
  • Working with Strings
  • Introduction
  • Project Overview
  • Core: Introduction to the Flesch Readability Score
  • Core: Basics of Strings in Java
  • Core: Working with Strings in Java
  • Support: For-Each Loops, part 1 of 5
  • Support: For-Each Loops, part 2 of 5
  • Support: For-Each Loops, part 3 of 5
  • Support: For-Each Loops, part 4 of 5
  • Support: For-Each Loops, part 5 of 5
  • Core: Introduction to Regular Expressions
  • When I struggled: Regular expressions
  • Concept Challenge: Regular Expressions
  • Support: More with Regular Expressions
  • Project: Programming Assignment Walk Through
  • A note about week numbers
  • By the end of this week, you will be able to...
  • Did you have trouble with any question(s) on the practice quiz?
  • Week 2: Additional Resources
  • Programming Assignment FAQ
  • Week 2: Congratulations and quiz answers
  • Where to next?
  • Strings and Regular Expressions
  • Module and Programming Assignment Quiz
  • Efficiency Analysis and Benchmarking
  • Introduction
  • Project Overview
  • In the Real World: Efficiency
  • Core: Our Motivation for Asymptotic Analysis
  • Core: Counting Operations
  • Core: Introduction to Asymptotic Analysis, Part 1
  • Core: Introduction to Asymptotic Analysis, Part 2
  • Core: Computing Big O with Consecutive Operations
  • Core: Computing Big O with Nested Operations
  • Concept Challenge: Classifying Functions using Big O
  • Support: Analyzing Selection Sort
  • Concept Challenge: Estimating Big O from Code
  • Core: Worst, Best, and Average Cases
  • In the Real World: Worst Case Analysis
  • Core: Analyzing Search Algorithms
  • Core: Analyzing Sorting Algorithms
  • When I struggled: Algorithm performance
  • Core: Merge Sort
  • Core: A Summary of Sorting
  • Core: Common Pitfalls in Asymptotic Analysis
  • Core: Introduction to Benchmarking
  • Core: Using Java Time
  • Core: Analyzing Timings
  • Concept Challenge: Relating Timing Data to Algorithm Analysis
  • Project: Week 3 Project Walk Through
  • By the end of this week, you will be able to...
  • Week 3: Additional Resources
  • Week 3: Congratulations and quiz answers
  • Where to next?
  • Practice Quiz
  • Asymptotic Notation and Analysis
  • Module and After Programming Assignment Quiz
  • Interfaces, Linked Lists vs. Arrays, and Correctness
  • Introduction
  • Project Overview
  • Core: Introduction to Abstraction
  • In the Real World: Data Abstraction
  • Core: Linked Lists vs. Arrays
  • In the Real World: Lists vs. Arrays
  • Core: Generics and Exceptions
  • Core: Java Code for a Linked List
  • Concept Challenge: Implementing linked lists, a first attempt
  • Concept Challenge: Drawing Linked Lists, second attempt
  • Support: Adding to a Linked List
  • When I struggled: Data structures
  • Core: Testing and Confidence
  • In the Real World: How can the compiler help with testing?
  • Core: Testing Practices
  • In the Real World: How do you test the behavior of code?
  • Support: JUnit in Eclipse
  • In the Real World: Unit Testing
  • Core: Testing Linked List's "Get" Method
  • Concept Challenge: Which Tests Should You Run?
  • In the Real World: Test-driven development
  • Project: Linked List Assignment Walk Through
  • When I struggled: confidence in code
  • Core: Markov Text Generation
  • Core: Implementing Markov Text Generation
  • Optional Project: Markov Text Generation Walk Through
  • By the end of this week, you will be able to...
  • Week 4: Additional Resources
  • Week 4: Congratulations
  • Where to next?
  • Where to next?
  • Week 4 Reflective Programming Assignment Quiz
  • Trees! (including Binary Search Trees and Tries)
  • Introduction
  • Project Overview
  • Core: Trees
  • In the Real World: Trees
  • Core: Defining Trees
  • Core: Binary Trees
  • Core: Pre-Order Traversals
  • Core: Post-Order, In-Order, and Level-Order Traversals (Breadth-first search)
  • When I struggled: Why traverse a tree?
  • Core: Introduction to Binary Search Trees
  • Core: Searching in a BST
  • Support: Code for BST's "Find" Method
  • Core: Inserting into a BST
  • Support: Code for BST's "Insert" Method
  • Core: Deleting from a BST
  • Concept Challenge: BST Shape
  • Core: Performance of BSTs and Balancing, Part 1
  • Core: Performance of BSTs and Balancing, Part 2
  • Core: Introduction to Tries
  • Core: Performance of Tries
  • Core: Implementing a Trie
  • Project: Week 5 Project Walk Through
  • By the end of this week, you will be able to...
  • Week 5: Additional Resources
  • Week 5: Congratulations and quiz answers
  • Where to next?
  • Week 5 Content and Programming Assignment Quiz
  • Hash Maps and Edit Distance
  • Introduction
  • Project Overview
  • Core: Hash Tables
  • Core: Collisions in Hash Tables
  • When I Struggled: Hash Tables
  • Core: Applications of Hash Tables
  • Support: Modular Arithmetic
  • Concept Challenge: Hash Tables
  • Core: Overview
  • Core: Algorithm
  • Core: Edit Distance
  • Project: Spelling Suggestions Walk Through
  • Project: Word Path Walk Through
  • Core: Congratulations!
  • By the end of this week, you will be able to...
  • Week 6: Additional Resources
  • Week 6: Congratulations and quiz answers
  • Week 6: Programming Assignment and Content Quiz

Summary of User Reviews

Learn how to optimize performance by mastering data structures. This course on Coursera has received high praise from users for its clear and engaging teaching style, comprehensive coverage of topics, and practical application of concepts. Many users found the exercises and quizzes to be particularly helpful in reinforcing their understanding of the material.

Pros from User Reviews

  • Clear and engaging teaching style
  • Comprehensive coverage of topics
  • Practical application of concepts
  • Helpful exercises and quizzes
  • Good value for the price

Cons from User Reviews

  • Some users found the pace to be too fast
  • Not suitable for absolute beginners
  • Limited interaction with instructors
  • Some technical issues with the platform
  • Requires a strong background in programming
English
Available now
Approx. 42 hours to complete
Christine Alvarado, Mia Minnes, Leo Porter
University of California San Diego
Coursera

Instructor

Christine Alvarado

  • 4.8 Raiting
Share
Saved Course list
Cancel
Get Course Update
Computer Courses