|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/data-structures-optimizing-performance
课程评论:没有评论
课程名称:数据结构与性能 课程概述:在这个中级Java课程中,您将学习Java程序如何处理大量数据。许多适用于初学者的示例数据结构和算法在处理真实的大数据集时常常失效。效率至关重要,您将探讨如何实现效率,并学习如何测量它。 本课程适合已经具备软件开发经验或计算机科学背景的学习者,建议参加过本专业第一门课程(需具备Java基础)后再学习本课程。您将使用和分析在行业应用中使用的数据结构,如链表、树和哈希表,说明这些数据结构如何提升程序的效率和灵活性。此外,您将应用渐近的Big-O分析来描述算法性能,并评估何种策略适用于高效数据检索、新数据添加、元素删除和内存使用。 您将在整个课程中构建一个程序,该程序允许用户管理、操作和推理大量文本数据。本课程围绕与第一门课程相同的视频系列进行设计,包含核心内容讲解、学习者视频、学生和工程师的见证,以及支持视频,以便您能够自主选择学习路径。 课程大纲: 1. 课程介绍:欢迎您参加本中级Java编程专业的第二门课程。我们将再次进行介绍,以帮助您熟悉将要编写的代码。 2. 字符串处理:深入课程编程项目,学习字符串和正则表达式,并在编程作业中为文本编辑器添加功能,以测量文本的可读性评分。 3. 效率分析与基准测试:介绍“Big-O”符号作为分析程序效率的常用方法,并学习如何测量代码的实际运行时间以评估性能。 4. 接口、链表与数组的正确性:学习数据抽象的基本概念及链表的实现,并了解如何进行单元测试,以确保代码的正确性。 5. 树结构(包括二叉搜索树和前缀树):学习树结构,与链表相似,但通常速度更快。在项目中为文本编辑器添加自动完成功能。 6. 哈希映射与编辑距离:了解基本的数据结构——哈希表,并完成编程作业为文本编辑器添加拼写校正建议。 通过本课程,您将增强对数据结构的理解,提高程序的运行效率。
Part: 1
Title:Introduction to the Course
Description: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.
Part: 2
Title:Working with Strings
Description: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!
Part: 3
Title:Efficiency Analysis and Benchmarking
Description: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.
Part: 4
Title:Interfaces, Linked Lists vs. Arrays, and Correctness
Description: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.
Part: 5
Title:Trees! (including Binary Search Trees and Tries)
Description: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. :)
Part: 6
Title:Hash Maps and Edit Distance
Description: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.
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!