你将学到什么
Ways to express a computational problem (such as pathfinding) using graph theory
How to choose the appropriate algorithm to solve the given computational problem
How to code the algorithmic solution in python
Methods for evaluating the proposed solution in terms of its complexity (amount of resources, scalability) or performance (accuracy, latency)
课程概况
Algorithmics and programming are fundamental skills for engineering students, data scientists and analysts, computer hobbyists or developers.
Learning how to program algorithms can be tedious if you aren’t given an opportunity to immediately practice what you learn. In this course, you won’t justfocus on theoryor study a simple catalog of methods, procedures, and concepts. Instead, you’ll be given a challenge wherein you’ll be asked to beat an algorithm we’ve written for you by coming up with your own clever solution.
To be specific, you’ll have to work out a route faster than your opponent through a maze while picking up objects.
Each week, you will learn new material to improve your artificial intelligence in order to beat your opponent. This structure means that as a learner, you’ll confront each abstract notion with a real-world problem.
We’ll go over data-structures, basic and advanced algorithms for graph theory, complexity/accuracy trade-offs, and even combinatorial game theory.
This coursehas received financial support from the Patrick and Lina Drahi Foundation.
课程大纲
Week 1:Fundamentals of Graph Theory, Problem Solving, Good Programming Practices
Week 2: Graph Traversal, Routing, Queuing Structures
Week 3:Shortest Paths, Min-Heaps, Algorithmic Complexity
Week 4:NP-Completeness, Traveling Salesman Problem, Backtracking
Week 5:Heuristics, Greedy Approaches, Accuracy/Complexity tradeoff
Week 6:Combinatorial Game Theory, Winning Strategies
预备知识
Some familiarity with Python 3 and basic mathematics.