算法分析与设计
分享
课程详情
课程评价
spContent=智能时代的今天,互联网是道开胃菜,人工智能是主菜。不管是AlphaGo打遍天下棋手无敌手,还是红黑客网络大战,程序设计都是必要的元技能。 “如果你控制了代码,那就控制了世界。” 算法设计与算法分析不但是程序也是计算机科学的核心和灵魂。在当今复杂、海量信息的大数据处理中好算法往往是一锤定音的利器。
—— 课程团队
课程概述

“科学殿堂里陈列着两颗熠熠生辉的宝石,一颗是微积分,另一颗就是算法。微积分成就了现代科学,而算法成就了现代世界。”

Pascal之父Nicklaus Wirth提出的公式“算法+数据结构=程序” 展示了程序的本质。算法不但是程序也是计算机科学的核心和灵魂。

算法分析与设计是一门理论性与实践性兼顾的课程,主要介绍算法分析与设计的基本理论、思想和方法,介绍枚举、递推、贪心、分治、动态规划、回溯、分支限界、网络流、图算法、随机算法等算法设计策略和分析方法。从各个应用领域的大量实际问题出发,分析问题的性质,建立合理的数学模型,选择合适的数据结构,设计结构清晰、正确高效的算法解决之,分析比较算法的性能以及提高算法性能的技巧,培养初步的算法设计与分析能力,培养计算思维和分析解决实际问题的能力,提高学生的科研素质和创新能力。通过实验实践进一步培养算法实现、调试测试和结果分析的基本能力,强化专业核心意识和职业素养,为学习其他专业课奠定扎实的基础。

设计原则

1.从解决问题和应用实例入手,按照提出问题、分析问题、解决问题、总结问题的步骤,培养学生算法基本理论来分析和解决问题的能力。

2.以实践为导向,专题案例与思考讨论相结合, 自动评测和互动交流相结合,引导学生参加小组活动和科技竞赛,培养学生的实践能力、科研创新能力和团队合作能力。

3.适应探究性和碎片化学习,聚集和重组课程内容;适应自主性和多样化学习,线上开放与线下实践相结合;适应多元化和个性化需求,培养学生主动学习、研究和创新意识。

面对各个应用领域的大量复杂问题,最重要的是建立数学模型并设计高效的求解算法。不管未来你将从事何种行业,《算法分析与设计》培养的计算思维和编程能力,会让计算机更好沟通和服务;《算法分析与设计》培养的求解问题能力和创新素养,会让你事半功倍,一览人生风云。

授课目标

1. 掌握算法分析与设计的基本理论,学会枚举、递推、贪心、分治、动态规划、回溯、分支限界、网络流、图算法、随机算法等基本方法和设计分析技巧,培养其算法设计的初步能力。

2. 正确分析算法和程序的时间和空间复杂度,以及提高算法的性能。培养其分析算法复杂性的能力和初步分析问题复杂性的能力。

3. 引导学生分析解决现实应用问题,培养计算思维及用计算机分析与解决实际问题等基本能力,培养程序设计、实现、调试测试的基本能力,锻炼其逻辑思维能力和创新能力,强化学生的专业核心意识和职业素养。

课程大纲
预备知识

高级语言程序设计、数据结构

参考资料

1.  李恒武. 算法分析与设计.北京:清华出版社,2022

2.  王晓东.计算机算法设计与分析(第5版).北京:电子工业出版社,2018.

3.  John Kleinberg.算法设计. 北京:清华出版社,2007

4.  屈婉玲. 算法设计与分析 (第2版). 北京:清华出版社,2017.

5.  Thomas H.Cormen. 算法导论(第3版). 机械工业出版社,2013.

6.  Anany Levitin.算法设计与分析基础(第3版). 北京:清华出版社,2015

7.  Alsuwaiyel. 算法设计技巧与分析.北京:电子工业出版社,2010

常见问题

Q : 学校云如何认证?

A :  中国大学mooc上注册用户,在学院云中认证,请参考1.1节的学校云认证。

 

Q : 我是计算机小白,可以学这门课吗?

A : 学习这门课需要编程语言和数据结构的知识,不需要精通,这门课的实践会将编程语言与数据结构越练越精。

 

Q : 我不是计算机类专业的,可以学这门课吗?

A : 有兴趣就可以学,但需要有编程语言和数据结构的知识。

 

Q : 学习这门课需要使用哪种编程语言?

A : 对编程语言没有限制,C/C++, JAVA, Python等都可以。


Q : 学了这门课之后,我就是优秀程序员了吗?

A : 学习这门课,结合实践作业进行练习,多想、勤练、相信你会成功的。参加一下程序设计竞赛,你会明白的。