|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/advanced-data-structures
课程评论:没有评论
课程名称:Java中的高级数据结构 课程概述:本课程将探讨如何使用数据结构解决现实世界中的复杂问题,例如如何在当前交通条件下为Google地图规划最佳路线,如何使互联网路由器转发网络流量以减少延迟,或者救援组织如何分配资源给其当地合作伙伴。您将学习图等关键数据结构,这些结构对于处理结构化的现实世界数据至关重要。您将开发、实现和分析算法,以利用这些数据解决实际问题。同时,随着您开发的程序变得越来越复杂,我们也将研究良好的代码和类层次设计原则,以便您不仅能够编写正确的代码,还能将其与他人共享并在未来进行维护。 本课程的核心项目是路线规划应用。您将应用每个模块的概念,直接构建一个允许自主代理(或人类驾驶员)在环境中导航的应用程序。我们还将提供不同的视频系列,帮助您将内容与其在现实世界中的重要性联系起来,并提供分层支持以满足您的个人需求。 课程大纲: 1. 课程介绍:欢迎来到中级Java编程专业化的第三门课程,我们将介绍课程的独特结构并提供一个选修的前测,以帮助您判断这门课程是否适合您。您将构建一个灵感来自Google地图的映射应用! 2. 图的介绍:本周将开始深入技术内容,介绍本课程的核心数据结构:图。您将学习基本知识,并深入代码,为构建应用做好准备。 3. 类设计和简单图搜索:本周您将建立地图搜索引擎的基础,通过自行设计类来掌握关键技能。此外,将引入深度优先搜索和广度优先搜索这两种核心搜索算法。 4. 加权图中最短路径的查找:您将为图的表示添加重要特性——距离,探索如何在加权图中找到最短路径以及如何更快地实现这一目标。 5. 路线规划与NP-难问题:我们将讨论整体路径规划的问题,例如旅行推销员问题(TSP),并探讨解决“困难”问题的启发式算法和近似算法。 6. 课程项目扩展:在课程的最后一周,您将有机会扩展您的项目,朝着自己选择的方向发展,创作个性化的地图应用程序。 通过以上模块,您将全面掌握使用高级数据结构解决现实世界问题的技能,并提升您的Java编程能力。
Name:Introduction to the Course
Description:Welcome to the first week in the third course of our Intermediate Java Programming Specialization. Once again start with introductions, and in particular introduce the unique structure of this course. Also, if you're not sure if this course is right for you, we've got an optional pre-course quiz coming right up that can help you figure out if you're in the right place. If you decide to stay with us (and we really hope you will!) we've got a great backbone project for you: your very own mapping application, inspired by Google Maps! The core data structure throughout this course is graphs, which may very well be the most fundamental data structure in all of computer science. Ready to begin? So are we!
Name:Introduction to Graphs
Description:This week we'll start getting technical, introducing you to the central data structure in the course: Graphs. You'll learn the basics and then have a chance to dive in a little deeper into the code, getting ready to start building that Google Maps-like application.
Name:Class design and simple graph search
Description:This week you'll get the backbone of your map search engine up and running. In previous courses, including the previous courses in this specialization, you've probably been given most of the classes you needed to complete the assignments. But learning how to design classes from scratch is a key skill that you will need as you become a more sophisticated Java programmer. This week we'll give you the tools you need to create a robust and elegant class design for your map search engine. We'll introduce a similar problem and show you how it can be represented as a graph. Then we'll introduce two core search algorithms: depth-first search and breadth-first search. Finally, we'll turn our graph problem into a set of Java classes. Your task on the programming assignment this week will be to do the same thing, but in the context on the map search engine!
Name:Finding shortest paths in weighted graphs
Description:In the past two weeks, you've developed a strong understanding of how to design classes to represent a graph and how to use a graph to represent a map. In this week, you'll add a key feature of map data to our graph representation -- distances -- by adding weights to your edges to produce a "weighted graph". Although this might seem like a small change, the algorithms that work for unweighted graphs may prove ineffective for weighted graphs. To address this problem, you'll explore more advanced shortest path algorithms. First, you'll see how to find the shortest path on a weighted graph, then you'll see how to find it more quickly. In the project, you'll apply these ideas to create the core of any good mapping application: finding the shortest route from one location to another.
Name:Route planning and NP-hard graph problems
Description:In this week, we'll go beyond the problem of finding a path between two points, and focus on problems requiring overall path planning. For example, if you wanted to go on errands and visit 6 different locations before returning home, what is the optimal route? This problem is actually a really well known problem in computer science known as the Travelling Salesperson Problem (TSP). Attempting to solve the problem will lead us to explore complexity theory, what it means to be NP-Hard, and how to solve "hard" problems using heuristics and approximation algorithms. We'll end the week by showing how reformulating a problem can have a huge impact: making something which was effectively unsolvable before, now solvable!
Name:End of Course Project Extension
Description:You made it to the last week of our course! We're glad you're still with us. As a reward, there's no new content to learn this week. Instead you'll get the opportunity to extend your project in a direction of your own choosing. We hope you've got some neat ideas for personalizing your map application, and we look forward to seeing them in the peer review gallery. Submitting to the peer review gallery is optional (though the extension is required), but we hope you'll choose to participate.
How does Google Maps plan the best route for getting around town given current traffic conditions? How does an internet router forward packets of network traffic to minimize delay? How does an aid group allocate resources to its affiliated local partners? To solve such problems, we first represent the key pieces of data in a complex data structure. In this course, you’ll learn about data structures, like graphs, that are fundamental for working with structured real world data. You will develop, implement, and analyze algorithms for working with this data to solve real world problems. In addition, as the programs you develop in this course become more complex, we’ll examine what makes for good code and class hierarchy design so that you can not only write correct code, but also share it with other people and maintain it in the future. The backbone project in this course will be a route planning application. You will apply the concepts from each Module directly to building an application that allows an autonomous agent (or a human driver!) to navigate its environment. And as usual we have our different video series to help tie the content back to its importance in the real world and to provide tiered levels of support to meet your personal needs.