课程介绍
数学建模、计算机程序设计竞赛是大学生课外科技活动的重要形式,因其涉及的知识面广、比赛形式激烈有趣,已吸引了越来越多的大学生参与其中。参赛者不仅可以从中锻炼模型建立、算法设计的能力,也能极大地提升程序代码的编写能力,其中竞赛的佼佼者更是受到越来越多的国内外知名企业的重视和欢迎。
本慕课课程以竞赛中所涉及的算法为基础,重点讲述在大学阶段与数学建模、程序设计竞赛过程中的相关算法设计内容。课程分章节讲述在编程中的常见算法原理及实现方式,并用具体示例加以讲解。算法的程序实现采用流行的Python语言,该语言对初学者比较容易理解和掌握,编程形式也灵活多样。
课程内容主要有以下几个部分:1.竞赛所涉及的数学基础:包括数论、代数、概率与统计、组合数学等;2.竞赛所涉及的常用数据结构:包括Python常用数据类型、线性表、栈和队列、树和二叉树、图等;3.竞赛所涉及的常用算法:包括枚举、贪心、分治、递归、搜索、排序、动态规划等;4.数学建模常用算法:包括层次分析法、主成份分析法、遗传算法、贝叶斯统计分类、线性与非线性规划等。
通过课程学习,同学们能在以下几方面得到锻炼:1.编写大量代码,做到算法精妙合理、逻辑清晰透彻、代码喷涌而出、格式赏心悦目、挑Bug手到擒来;2.学习各种算法知识,算法是计算机的灵魂,每个计算机问题需要采取适当算法,分析算法的时间复杂度、空间复杂度,让代码能更高效地完成任务;3.培养计算思维和逻辑思维,一道竞赛题往往需要综合多种能力,例如数据结构、算法知识、数学方法、流程和逻辑等,这是计算思维和逻辑思维的体现。
希望能通过课程的学习,以问题驱动进行建模抽象,以算法设计进行编程实现,带你体验精妙绝伦的算法之美,引领同学们进入算法与程序设计的艺术殿堂。
课程大纲
学习目标
本课程从建模与程序设计竞赛中所涉及的经典算法入手,讲授各类算法设计的基本原理、方法和技巧,通过典型问题及相应的算法求解,达到掌握算法设计的常用方法,建立对常见问题的建模、分析、算法设计、算法优化和编程实现的目的。通过课程的学习,使同学们有能力参与数学建模竞赛及各类程序设计竞赛。
学习要求
预备知识:程序设计语言基础;高等数学、线性代数、概率论与数理统计基础。
考核标准
线上成绩包含:
观看视频 30%
单元测试 30%
期末考试 40%
教材教参
1. 李春葆,数据结构教程(Python语言描述),清华大学出版社,2020.11
2. 吕云翔,数据结构(Python版),清华大学出版社,2019.04
3. 李粤平,王梅,数据结构(Python语言描述),人民邮电出版社,2020.08
4. 张光河,数据结构-Python语言描述,人民邮电出版社,2020.08
5. 裘宗燕,数据结构与算法(Python语言描述),机械工业出版社,2020.06
6. 张玲玲,Python算法详解,人民邮电出版社,2019.06
7. 李春葆,算法设计与分析(第2版),清华大学出版社,2018.08
8. 滕国文,李昊,ACM-ICPC基本算法,清华大学出版社,2018.09
9. 黄天羽,李芬芬,高教版Python语言程序设计冲刺试卷(第3版),高等教育出版社,2020.04
10. 刘汝佳,算法竞赛入门经典(第2版),清华大学出版社,2014.06
11. 张新华,算法竞赛宝典,清华大学出版社,2017.01
12. 巫俊泽,挑战程序设计竞赛(第2版),人民邮电出版社,2018.01


sjtucnmooc
