-
Notifications
You must be signed in to change notification settings - Fork 150
关于算法训练营 | 极客大学
- 让优秀的人一起学习
- 师傅领进门,修行靠个人
以下内容包括课前预习内容、线下大课内容、线上学习内容及提交作业、助教答疑、直播答疑的详细安排,请仔细阅读。
4月1日-4月12日 算法训练营“热身运动”
- 阅读《算法训练营学习手册1.0》
- 请大家订阅极客时间《数据结构与算法之美》专栏(戳此订阅)
- 预习《数据结构与算法之美》专栏
- 4月12日,建立班级大群
- 4月12日晚,社群内班会
地点:北京中关村软件园国际会议中心 地址:东北旺西路8号中关村软件园四号楼AB座
课程内容 | 课程描述 |
---|---|
4月13日 周六 9:30-18:30 | 主讲:王争 |
复杂度、数组、链表、栈、队列、递归 | 从算法基础开始讲起,结合案例介绍基础的数据结构和算法 |
排序与二分查找 | 讲解几种常见的排序算法、以及经典二分查找算法 |
动态数据结构 | 讲解各种支持动态增删改查的数据结构:跳表、散列表、二叉树、堆 |
字符串匹配算法 | 讲解BF、RK、BM、KMP、Trie树、AC自动机等常见的字符串匹配算法 |
图及相关算法 | 讲解深度、广度优先搜索、最短路径、A*算法等相关图算法 |
四种算法思想精讲 | 讲解贪心算法、分治算法、回溯、动态规划四种常用的算法思想 |
4月14日 周日 9:30-18:30 | 主讲:陈皓 |
算法题解题思路总结 | 数组(一维二维)、链表(单向、双向、跳表)、二叉树(遍历、搜索)、哈希表,以及数据结构的混合(如LRU),其中包括5-8个算法题 |
算法题解题思路总结 | 深度优先、回溯法、分治法、动态规划,其中包括3-4个算法题 |
深度优先+回溯法 | 深入讲解DFS和Backtracing的原理和思路,3-5个相关算法题讲解 |
分治法 + 动态规划 | 深入讲解分治法和动态规划,3-5个相关算法题讲解 |
动态规划 | 深入动态规划的经典解法,3-5个相关算法题讲解 |
面试的注意事项 | 面试算法时需要注意的事项,包括各公司算法题的难度分析,以及临场发挥和应变能力。 |
线上学习的主要内容是王争老师在极客时间的《数据结构与算法之美》专栏。很多同学已经学习过专栏了,在训练营再次学习专栏,希望你能够做到思辨、践行、总结、归纳,有更多收获。
此外,训练营会把线下大课的视频上传至极客时间App内,并将阅码给到你,兑换阅码后,你就可以随时在线观看了。
每周学习内容和作业题目会发布在GitHub上,你需要完成至少两道算法题、提交一篇学习总结文章、Review并点评至少5名同学的作业。
如果你在学习期间遇到问题,可以在GitHub上留言,训练营的助教会进行回答。你也可以在社群中跟同学们互动讨论。
时间 | 学习内容 | 作业 |
---|---|---|
4月15日 - 4月21日 | 复杂度、数组、链表、栈、队列、 递归、排序、二分查找 | 2道算法题、1篇学习总结文章 Review并点评至少5位同学作业 |
4月22日 - 4月28日 | 跳表、散列表、哈希算法、二叉树、 红黑树 | 2道算法题、1篇学习总结文章 Review并点评至少5位同学作业 |
4月27日 | 直播:GitHub高频问题答疑 | |
4月29日 - 5月5日 | 递归树、堆和排序、图、深度和广度优先搜索、字符串匹配 | 2道算法题、1篇学习总结文章 Review并点评至少5位同学作业 |
5月6日 - 5月12日 | Trie树、AC自动机、贪心算法、 分治算法、回溯算法、动态规划 | 2道算法题、1篇学习总结文章 Review并点评至少5位同学作业 |
5月10日 | 直播:GitHub高频问题答疑 | |
5月13日 - 5月19日 | 毕业考试:线上答题、全模块学习总结文章 |
(开课前我会在学习手册中更新“如何Review及点评同学的作业”)
以下,是几个重要时间点:
- 学习任务发布:周五下午
- 作业提交:截止到周六晚
- 助教答疑:日常浏览GitHub并进行答疑
开营周 | 4月8日-4月14日 |
---|---|
4月12日 周五 | 发布 Week 1 学习任务、作业题目,成立班级社群,召开第一次班会 |
4月13日-14日 周六-周日 | 线下大课(地点:北京中关村软件园国际会议中心) |
线上Week 1 | 4月15日-4月21日 |
4月19日 周五 | 发布 Week 2 学习任务、作业题目 |
4月20日 周六 | Deadline:提交 Week 1 作业 |
线上Week 2 | 4月21日-4月28日 |
4月26日 周五 | 发布 Week 3 学习任务、作业题目 |
4月27日 周六 | Deadline:提交 Week 2 作业,直播:GitHub高频问题答疑 |
线上Week 3 | 4月29日-5月5日 |
5月3日 周五 | 发布 Week 4 学习任务、作业题目 |
5月4日 周六 | Deadline:提交 Week 3 作业 |
线上Week 4 | 5月6日-5月12日 |
5月11日 周六 | Deadline:提交 Week 4 作业 |
5月12日 周日 | 毕业考试试题发布 |
结业周 | 5月13日-5月19日 |
5月14日 周二 | 直播:GitHub高频问题答疑 |
5月19日 周日 | Deadline:毕业考试试题提交 |
以下关于有效提问的建议,根据陈皓老师在《左耳听风》专栏“72 | 程序员练级攻略:程序员修养”中推荐的《提问的智慧(How To Ask Questions The Smart Way)》一文整理而来。这篇文章最早是由 Eric Steven Raymond 所撰写的,详细描述了发问者事前应该做好什么,而什么又是不该做的。作者认为这样能让问题容易令人理解,而且发问者自己也能学到较多东西。
对于很多能够在网上通过搜索、阅读专栏得到的答案,助教将不予回答。原文中也列举出了一些提问的禁忌和“好问题vs坏问题”的对比,强烈建议你阅读原文。
请确信你已尽力尝试自己找到答案,比如说:
- 尝试在你准备提问论坛的历史文档中搜索答案
- 尝试搜索互联网以找到答案
- 尝试阅读手册以找到答案
- 尝试阅读“常见问题文档”(FAQ)以找到答案
- 尝试自己检查或试验以找到答案
- 尝试请教懂行的朋友以找到答案
- 如果你是程序员,尝试阅读源代码以找到答案
如果通过以上方式,你都没有找到答案,那么在提问时,也可以告诉被提问者,你已经尝试了什么方法寻求答案。
- 使用简明扼要的主题。使用主题的好惯例是“对象──偏差”(式的描述),“对象”部分指明是哪一个或哪一组东西有问题,在“偏差”部分则描述与期望的行为不一致的地方,这个过程有助于你组织对问题的细致思考。
- 用清晰、语法、拼写正确的语句书写。经验告诉我们,粗心与草率的作者通常也粗心与草率地思考和编程(我敢打赌),清楚、良好地表达你的问题非常重要。
- 使用易于读取且标准的文件格式发送问题。比如,使用纯文本而不是 HTML;勿滥用“表情符号”......
- 描述问题应准确且有内容。比如,仔细、清楚地描述问题的症状;描述提问前做过的研究及其理解;描述提问前为确定问题而采取的诊断步骤等。
- 量不在多,精炼则灵。你应该写得精炼且有内容,简单地将一大堆代码或数据罗列在求助消息中达不到目的。
- 描述问题症状而不是猜测。确保只是告诉他们问题的原始症状,而不是你的解释和理论,让被提问着来解释和诊断。
- 描述目标而不是过程。如果你想弄清楚如何做某事,在开头就描述你的目标,然后才陈述遇到问题的特定步骤。
- 提问应明确。漫无边际的问题通常也被视为没有明确限制的时间无底洞。如果你明确了想让回复者做的事(如指点方向、发送代码、检查补丁或其它),你更有可能得到有用的回复。
- 关于代码的问题。别要求他人给你出问题的代码排错而不提及应该从何入手。张贴几百行的代码,然后说一声“它不能运行”会让你得不到理睬。只贴几十行代码,然后说一句“在第七行以后,本应该显示,但实际出现的是”非常有可能让你得到回复。
如果你看不懂回答,不要马上回复一个要求说明的消息,先试试那些最初提问时用过的相同工具(如手册、FAQ、网页、懂行的朋友等)试着搞懂回答。如果还是需要进一步解答,请展现出你已经明白的部分。
在陈皓老师和王争老师的专栏中,提到了非常多关于“学习”的建议。将这些文章推荐给你:
- 15 | 时间管理:同扭曲时间的事儿抗争
- 16 | 时间管理:如何利用好自己的时间?
- 74 | 程序员练级攻略:理论学科
- 95 | 高效学习:端正学习态度
- 96 | 高效学习:源头、原理和知识地图
- 97 | 高效学习:深度,归纳和坚持实践
- 98 | 高效学习:如何学习和阅读代码
- 99 | 高效学习:面对枯燥和量大的知识
- 基础知识:《算法》《算法图解》
- 理论加持:《算法导论》
- 思维改善:《编程珠玑》
如果你想有科班出身的理论基础,那么这些书是必读的:
- 《数据结构与算法分析》
- 《数据库系统概念》
- 《现代操作系统》
- 《计算机网络》
- 《计算机程序的构造和解释》
- 《编译原理》
以上摘自 陈皓 | 左耳听风 74 | 程序员练级攻略:理论学科