- Level Professional
- المدة 42 ساعات hours
- الطبع بواسطة University of California San Diego
-
Offered by
عن
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!الوحدات
About This Course
2
Assignment
- Pre-Course Quiz
- Survey: Your goals for the course
7
Videos
- 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
7
Readings
- A Customized Welcome to this Course
- After completing this course, you will be able to...
- Is this course right for me?
- Up Next: A short survey
- If you want more practice before you begin...
- The structure of this course
- Project Overview
Check Your Understanding
1
Assignment
- Quiz about the Starter Code and Course Structure
2
Readings
- Setting up Java and Eclipse
- Getting and Working with the Starter Code
Welcome
2
Videos
- Introduction
- Project Overview
2
Readings
- A note about week numbers
- By the end of this week, you will be able to...
Working with Strings in Java
2
Assignment
- Where to next?
- Strings and Regular Expressions
1
Discussions
- What questions do you have about Strings and Regular Expressions?
12
Videos
- 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
1
Readings
- Did you have trouble with any question(s) on the practice quiz?
Check Your Understanding
- How Easy to Read is Your Writing?
1
Assignment
- Module and Programming Assignment Quiz
1
Videos
- Project: Programming Assignment Walk Through
3
Readings
- Week 2: Additional Resources
- Programming Assignment FAQ
- Week 2: Congratulations and quiz answers
Welcome
3
Videos
- Introduction
- Project Overview
- In the Real World: Efficiency
1
Readings
- By the end of this week, you will be able to...
Measuring Performance: Big O
3
Assignment
- Where to next?
- Practice Quiz
- Asymptotic Notation and Analysis
17
Videos
- 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
Measuring Performance: Benchmarking
4
Videos
- Core: Introduction to Benchmarking
- Core: Using Java Time
- Core: Analyzing Timings
- Concept Challenge: Relating Timing Data to Algorithm Analysis
Check Your Understanding
- Making Flesch Score Calculation More Efficient
1
Assignment
- Module and After Programming Assignment Quiz
1
Videos
- Project: Week 3 Project Walk Through
2
Readings
- Week 3: Additional Resources
- Week 3: Congratulations and quiz answers
Welcome
2
Videos
- Introduction
- Project Overview
1
Readings
- By the end of this week, you will be able to...
Abstraction, Interfaces, and Linked Lists
10
Videos
- 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
Testing and Correctness
1
Assignment
- Where to next?
9
Videos
- 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
Check Your Understanding Part 1
- Implement and Test a Linked List
2
Videos
- Project: Linked List Assignment Walk Through
- When I struggled: confidence in code
1
Readings
- Week 4: Additional Resources
Markov Processes and Probabilities
1
Assignment
- Where to next?
2
Videos
- Core: Markov Text Generation
- Core: Implementing Markov Text Generation
Check Your Understanding Part 2
- (Optional) Markov Text Generation
1
Assignment
- Week 4 Reflective Programming Assignment Quiz
1
Videos
- Optional Project: Markov Text Generation Walk Through
1
Readings
- Week 4: Congratulations
Welcome
2
Videos
- Introduction
- Project Overview
1
Readings
- By the end of this week, you will be able to...
Trees
1
Assignment
- Where to next?
14
Videos
- 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
Run Time Analysis of BSTs
2
Videos
- Core: Performance of BSTs and Balancing, Part 1
- Core: Performance of BSTs and Balancing, Part 2
Tries
3
Videos
- Core: Introduction to Tries
- Core: Performance of Tries
- Core: Implementing a Trie
Check Your Understanding
- Spell Checking and Autocomplete
1
Assignment
- Week 5 Content and Programming Assignment Quiz
1
Videos
- Project: Week 5 Project Walk Through
2
Readings
- Week 5: Additional Resources
- Week 5: Congratulations and quiz answers
Welcome
2
Videos
- Introduction
- Project Overview
1
Readings
- By the end of this week, you will be able to...
Hash Maps (or Tables)
6
Videos
- 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
Edit Distance
3
Videos
- Core: Overview
- Core: Algorithm
- Core: Edit Distance
Check Your Understanding
- Spelling Suggestions
- Word Paths (Optional but Recommended)
1
Assignment
- Week 6: Programming Assignment and Content Quiz
2
Videos
- Project: Spelling Suggestions Walk Through
- Project: Word Path Walk Through
2
Readings
- Week 6: Additional Resources
- Week 6: Congratulations and quiz answers
End of Course Message
1
Videos
- Core: Congratulations!
Auto Summary
Discover how to efficiently manage vast amounts of data in Java with the "Data Structures and Performance" course, an engaging intermediate-level program designed for those with a background in software development or computer science. Ideal for learners who have completed the first course in the specialization, this course dives deep into industry-level data structures including linked lists, trees, and hashtables. Led by expert instructors from Coursera, this 2520-minute course emphasizes the importance of efficiency in processing large data sets. You'll learn to apply asymptotic Big-O analysis to evaluate algorithm performance and make informed decisions about data retrieval, addition, deletion, and memory usage. Throughout the course, you'll build a practical program to manage and manipulate large sets of textual data, reinforcing your understanding of how advanced data structures enhance program flexibility and efficiency. The course content is delivered through a variety of engaging formats including core content explanations, learner videos, testimonials, and support videos, allowing you to tailor your learning experience. Choose from Starter, Professional, or Paid subscription options to begin your journey towards mastering data structures and performance in Java, and take your software development skills to the next level. Perfect for professional-level learners aiming to deepen their expertise and apply their knowledge to real-world applications.

Christine Alvarado

Mia Minnes

Leo Porter