概述
本文将依照张国川老师的授课以及其余材料整理.
资源列表 & 前人经验
一些有意思且非常有用的网站:数据结构可视化:usfca版
修佬的笔记 \(\quad\) WintermelonC的笔记 \(\quad\) StarStone的笔记 \(\quad\) BruceJqs的笔记
MIT 6.046J, 2015 spring \(\quad\) 点击下载wyh助教的ADS讲义
摘自罹魂梦蝶的经验帖:
学习情况:我选的是bjj的班,老师本身上课的话可能并没有像myc或者zgc那样花费了很多时间投入,我本人也并没有认真听过几次课。从我个人的学习情况来看,基本就是上完课当天去听陈越老师在MOOC上的课程链接,然后自己整理笔记,整理完之后再看看作业题(ps.bjj老师每年的作业题都基本一样,所以如果平时作业分数想高一点的话……)
对于project,这学期ads同组有一个非常强的大佬基本carry了代码工作,我和另一个同学就是写写注释、文档之类的活,对于文档,我做了一份报告模板每次展示的PPT是用reveal.js做的,这里附上我做的PPT链接1 链接2,这种方法可以快速产生简洁帅气的PPT,我还是很喜欢的,如果有同学想学的话可以参考xy的笔记链接.
考前补天:借用wrt的一句话,ads如果考前你还在看知识点,已经可以准备明年的考试了。ads适当做一些题目是很重要的,刷刷历年卷能极大的提高自己对题目的熟悉程度,考场上面猜也好猜~还有推荐一下我自己的笔记链接.
提前学习动态规划等经典算法,做做 leetcode 题。
1.教考分离的情况较为严重。
针对期末复习,一定要把陈越钦定的ppt过一遍(因为这些是考点,而老师课上讲的并不一定是考点)。不懂的地方结合杨洋的智云。最后刷资源中提到的历年卷。从难度来看,前半学期数据结构的部分关键是理解每个操作是怎么实现的,然后能在草稿纸上画出来即可。后半学期开始变得玄学,特别是Local search和近似算法这块的题目变化很多,难度很大,不过很多题目都是算法导论的课后习题改编的的。最后两章并行计算和外排序虽然听起来也很难,但是考的都是固定的模板,如果只想追求分数的话记住每种方法的复杂度即可。
2.相对不重视代码,而重视对时间复杂度的分析
实际上ADS的考点和OI/ACM差别还是挺大的。因此即使以前搞过也不能掉以轻心,需要记忆算法复杂度的结论和理解分析方法(比如势能分析一定要理解)。后半部分的近似算法等也跟OI关系不大,很多纯数学的推导。
先过一遍课本知识,每天看一章,如cyll的PPT、wyy的笔记、笔记: 修佬 (但是后半部分,特别是近似算法,local search,随机算法,并行计算不全)、Zhou Jianjun佬的考前突击
考前跟按考点整理的历年卷习题复习一遍:xyx-1 \(\quad\) xyx-2
一些历年卷
教学大纲 & 评分细则
数据结构:(占\(\dfrac13\))
- Balanced Search Trees: AVL Tree, Splay Tree, B+ Tree, Red-Black Tree
- Leftist Heaps, Skew Heaps, Binomial Queue
- Inverted File Index(看起来简单实则极易丢分)
算法:
-
Exact Algorithms
- Divide and Conquer
- Backtracking
- Dynamic Programming
- Divide and Conquer
-
Heuristic Algorithms
- Greedy Algorithms
- Local Search (find a solution, then making subtle modification to find an optimal solution)
- Greedy Algorithms
-
Approximation Algorithms
- NP-Completeness
- Approximation Algorithms
- Randomized Algorithms
- NP-Completeness
-
Other Algorithms
- Parallel Algorithms
- External Sorting
- Parallel Algorithms
Grading Policy:(平时分60',不溢出)
- 作业10'
- 讨论10'
- Project 30' (2-3人,Presentation)
- MidTerm(10*,可以被Final Term覆盖)
- Final Term (40*)