“软件 = 算法 + 数据结构”,算法是软件的灵魂。在信息时代,计算思维是分析复杂工程问题的重要思维方式, 计算机则是求解问题的重要工具。本课程以计算机经典问题求解为导向,通用算法思维和编码能力培养为目标,引入ACM 国际大学生程序设计竞赛的有益元素,精心安排课程的理论教学和编程实践。
本课程主要讲授计算机问题求解的经典算法设计方法和算法复杂度分析方法,主要内容包括算法复杂度分析,枚举算法,递归与分治策略,动态规划,贪心算法和通用搜索技术。本课程除了强调经典的算法理论和模型,亦兼顾编程实践能力。力图使得学员面对复杂问题时,既能“想到”还能“做到”。
培养算法思维,掌握枚举算法、分治策略、动态规划、贪心算法和搜索算法等经典算法模型;
培养实践能力,掌握在存储空间和时间开销受限情况下的程序设计方法;
培养理论思维,掌握复杂问题的算法设计与分析方法。
高级程序设计语言基础,熟悉C/C++,Java,Python中的任何一种;
高等数学、线性代数等基本工科数学基础;
了解基本的数据结构知识;
了解 Online Judge。
学习本课程,积极参与课程讨论,完成本课的单元测试、单元作业和期末测验,成绩合格获得合格证书,成绩优秀获得优秀证书。按照平台政策,本课程不再支持免费电子证书,只提供认证证书。
评分依据:课程满分100分。单元作业占60分,考试占40分,60分获得合格证书,80-100分获得优秀证书。
李清勇. 算法设计与问题求解-编程实践, 电子工业出版社, 2013.
Cormen, T.H.等著,潘金贵等译. 算法导论,机械工业出版社,2006.