课程详情
课程图谱
课程评价
spContent=本课程既讲授动态规划与分而治之等经典算法策略,又以产教融合方式邀请阿里副总裁,第四范式CEO、联合创始人、ACM国际大学生程序设计竞赛世界冠军等算法专家分享经验。无论您是零基础的初学者,还是在刷题中困惑的求职者,本课程都将通过详细剖析实例降低理解难度,通过归纳总结问题揭示算法本质,助您真正学懂算法!
—— 课程团队
课程概述

从辗转相除法到割圆术,从算盘到电子计算机,算法在人类文明发展中始终扮演着重要角色。如今,有计算的地方,就有算法的身影。从网上购物到出行规划,从工作学习到休闲娱乐,算法无所不在,已融入到人们生活的方方面面。

本课程是面向计算机和信息技术相关专业本科生的核心专业课,同时适合对算法的基础知识有学习需求的相关从业人员。课程汇聚了北航计算机学院顶级的算法授课团队,不但讲授分而治之、动态规划和贪心策略等经典算法技术,而且以产教融合的方式邀请阿里巴巴等互联网公司副总裁、ACM国际大学生程序设计竞赛世界冠军等产业界算法专家进行经验分享。

本课程具有对基础知识要求少、对核心方法讲解细、对算法本质剖析深、对产业需求分析准的特点。无论你是你是零基础的算法初学者,还是在算法刷题中困惑的求职者,相信本课程都将通过详细易懂的实例剖析降低理解难度,通过相关问题的归纳总结揭示算法本质,助你真正学懂算法!

授课目标
  • 帮助学生掌握算法的定义、性质和表示方法,能够熟练使用伪代码对算法进行描述; 
  • 帮助学生掌握算法分析的理论工具,能够熟练采用渐近上界分析算法运行时间;
  • 帮助学生掌握算法设计的常用方法,包括分而治之、动态规划、贪心策略;
  • 帮助学生建立对简单计算问题的建模、分析、算法设计、算法优化和编程求解能力。
课程大纲
预备知识
  • 掌握离散数学与数据结构的基础知识;
  • 熟悉任何一门高级程序设计语言,如C/C++,Java,Python等;
  • 具备高等数学、线性代数与概率统计的基本工科数学知识。
参考资料
  • T.H. Cormen, C.E. Leiserson等著,殷建平,徐云等译,算法导论(原书:Introduction to Algorithms,第3版),机械工业出版社,2012.12.
  • S. Dasgupta, C. Papadimitriou等著,王沛,唐扬斌等译,算法概论(原书:Algorithms),清华大学出版社,2008.7.
  • J. Kleinberg, É. Tardos著,张立昂,屈婉玲译, 算法设计(原书:Algorithm Design),清华大学出版社,2007.3.
常见问题

Q :  如果之前没有计算机基础可以学习本门课程吗?

A :  没有计算机基础知识也可以进行本课程的学习。本课程的核心是讲授算法设计的思想、策略和算法分析的基本方法。课程对理论知识进行了细致入微的讲解,通过算法单步执行的示例降低理解难度,并对算法本质进行深入浅出地剖析。无论您是零基础的算法初学者,还是对算法有困惑的求职者,本课程都将助您真正学懂算法!


Q : 每周课程的视频学习需要多长时间?

A : 课程每周发布一个章节的学习视频,视频时长根据课程内容有所浮动,但不会超过2个小时。特别的是,有些章节会包含“课程彩蛋”,为同学们带来阿里巴巴副总裁,第四范式创始人、CEO和ACM国际大学生程序设计竞赛世界冠军等国际顶级算法专家的经验分享与学习建议! 


Q : 课程除视频学习外还有其他练习方式吗?

A : 除了通过课程视频进行理论知识的学习,我们还建议您多进行实践来巩固知识。同学们可以根据本课程讲授的算法伪代码,从python、C/C++、JAVA等多种编程语言中选择自己熟悉的进行算法实现。本课程在希冀在线程序评测系统上提供了与课程内容配套的题目,您可以在该平台"算法MOOC在线习题"课程中进行编程训练。希冀在线程序评测系统的网址是  https://course.educg.net/


Q : 有疑问时如何求助?

A :  关于课程的理论问题,您可以在课程讨论区提问并与其他同学互相讨论,授课老师和助教老师们也会在讨论区答疑解惑。关于课程的实践问题,如是在算法编程时遇到的问题,请您提问时附上代码和错误信息,便于老师们运行程序帮助纠错。


Q : 学好算法有什么意义?

A :  早在古代,辗转相除和割圆术这样的算法就已经展示出了其惊人能力。如今的算法已经渗透到人们衣食住行的方方面面。购物推荐、出行规划、休闲娱乐的背后,都少不了算法的强大助力。

对于计算机专业的学生,算法设计与分析是一项必备的基本专业技能。学好算法有助于您在未来的求职晋升和专业探索的前进道路上打下坚实基础;对于计算机相关专业的求职者,算法是各大公司在初试和面试时必考的题目,学好算法有助于您在求职时过关斩将;对于非专业的社会人士,学习算法有助于启发思维,增强逻辑能力,对于您原本就擅长的专业技能也会有促进作用。

   学好算法,就如同掌握了信息时代的钥匙,有助于您把握时下迅猛前进的信息技术,把握当今飞速发展的智能时代。


Q : 如何学好本门课?

A :  学好算法需要将理论与实践相结合,并联系生活实际学会运用算法。

     在理论学习方面,需要您在学习时注意梳理课程结构并关注课程重点。在课程结构方面,本课程按照不同的算法设计思想划分篇章,并在每个篇章里根据不同问题划分小节,每个小节又按照问题背景-问题形式化-问题算法的思路进行讲解;在课程重点方面,请着重关注每个问题的含义、问题的形式化建模过程、算法改进的思路和伪代码细节等。

      在实践学习方面,需要您多做课下练习。同学们可以到我们提供的在线评测网站进行配套练习;此外,特别推荐您通过编程实践对课程教授的算法进行实现,这能让您对算法有更加全面和深入的理解。

     我们更希望您对算法的学习不止局限于本课程,因为生活中处处有算法。比如您在等电梯时是否思考过电梯是如何进行调度的呢?您可以按照本课程中学习问题的思路进行思考:首先如何对电梯的调度问题进行形式化建模,其次对于该问题考虑何种思想来设计算法比如贪心策略,然后如何评判设计算法的优劣与效果,接下来如何对算法进行改进等等。

     只要勤于思考,多加练习,相信同学们定能感受到算法的乐趣与奥妙!