spContent=本课程以计算机经典问题求解为导向,通用算法思维和编码能力培养为目标,引入ACM 国际大学生程序设计竞赛的有益元素,精心安排课程的理论教学和编程实践。本课程学习将帮助学员提高计算思维和程序设计能力,帮助学员应对IT公司的算法笔试/面试或者研究生入学考试的机考/面试。
课程概述
“软件 = 算法 + 数据结构”,算法是软件的灵魂。在信息时代,计算思维是分析复杂工程问题的重要思维方式, 计算机则是求解问题的重要工具。本课程以计算机经典问题求解为导向,通用算法思维和编码能力培养为目标,引入ACM 国际大学生程序设计竞赛的有益元素,精心安排课程的理论教学和编程实践。
本课程主要讲授计算机问题求解的经典算法设计方法和算法复杂度分析方法,主要内容包括算法复杂度分析,枚举算法,递归与分治策略,动态规划,贪心算法和通用搜索技术。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂问题时,既能“想到”还能“做到”。
授课目标
- 培养算法思维,掌握枚举算法、分治策略、动态规划、贪心算法和搜索算法等经典算法模型;
- 培养实践能力,掌握在存储空间和时间开销受限情况下的程序设计方法;
- 培养理论思维,掌握问题求解的算法设计与分析方法。
课程大纲
预备知识
- 高级程序设计语言基础,熟悉C/C++,Java,Python中的任何一种;
- 高等数学、线性代数等基本工科数学基础;
- 了解基本的数据结构知识;
- 了解 Online Judge(https://tongtong.bjtu.edu.cn/login)。
参考资料
[1] 李清勇. 算法设计与问题求解-计算思维培养(第 2 版), 电子工业出版社, 2020.
[2] Cormen, T.H.等著,潘金贵等译. 算法导论,机械工业出版社,2006.