《计算思维与实践》课程实验教学大纲 一、课程基本信息 课程代码:16211601/16211602 课程名称:计算思维与实践 英语名称:Computational Thinking and Practice 实验总学时:8/16 适用专业:非计算机类专业 课程类别:通识课 先修课程:无 二、实验教学的总体目的和要求 (一)总体目标 本课程实验教学的目的是让学生提高自己的实际计算问题的能力,熟练理解 程序设计的各种经典方法,具备使用Python语言设计程序解决实际问题的能力。 通过这门课程的学习,应使学生理解以下能力:要求学生理解问题抽象的方法、 程序设计的过程、算法分析方法:要求学生理解Pythor语言的语法:要求学生 理解通过Python语言实现求解各类经典计算问题或最优化问题的算法。 (二)总体要求 1、对学生的要求: 掌握计算机基础知识,有一定的逻辑思维能力:实验前必须对实验内容进行 预习:上实验课须带教材,认真按照实验内容和实验要求完成实验题目,鼓励同 学间可相互讨论,但不得大声喧哗:课后按老师要求提交实验结果或提交实验报 告。 2、对教师的要求: 有一定的程序设计类课程的教学经验,了解Python语言的程序设计方法: 课前准备充分:课中耐心指导学生,发现问题及时解决,不做与实验内容无关的 事情,不能无故擅离实验室:课后认真批改学生的实验报告。 3、对实验条件的要求: 1
1 《计算思维与实践》课程实验教学大纲 一、 课程基本信息 课程代码:16211601/16211602 课程名称:计算思维与实践 英语名称:Computational Thinking and Practice 实验总学时:8/16 适用专业: 非计算机类专业 课程类别:通识课 先修课程:无 二、 实验教学的总体目的和要求 (一) 总体目标 本课程实验教学的目的是让学生提高自己的实际计算问题的能力,熟练理解 程序设计的各种经典方法,具备使用 Python 语言设计程序解决实际问题的能力。 通过这门课程的学习,应使学生理解以下能力:要求学生理解问题抽象的方法、 程序设计的过程、算法分析方法;要求学生理解 Python 语言的语法;要求学生 理解通过 Python 语言实现求解各类经典计算问题或最优化问题的算法。 (二) 总体要求 1、对学生的要求: 掌握计算机基础知识,有一定的逻辑思维能力;实验前必须对实验内容进行 预习;上实验课须带教材,认真按照实验内容和实验要求完成实验题目,鼓励同 学间可相互讨论,但不得大声喧哗;课后按老师要求提交实验结果或提交实验报 告。 2、对教师的要求: 有一定的程序设计类课程的教学经验,了解 Python 语言的程序设计方法; 课前准备充分;课中耐心指导学生,发现问题及时解决,不做与实验内容无关的 事情,不能无故擅离实验室;课后认真批改学生的实验报告。 3、对实验条件的要求:
()硬件要求 多媒体计算机,内部组成局域网,对外每台机器均连入Internet互联网。 (2)软件要求: 中文版Windows7或以上版本;Python3:.0或以上版本 三、实验教学内容 实验项目一Pythoni语言的简单编程 实验1 Python程序设计入门:简单程序设计 实验学时:2学时 实验目的与要求: (1)Python语言概述 (2)理解Pythoni语言开发环境,为后续实验内容奠定基础: (2)熟悉Python中常量与变量、表达式的书写方法: (3)理解Python中程序的三种基本结构-一顺序结构、分支结构和循环结构的书 写方法: (4)理解简单程序的编写、运行及调试方法: (5)理解基本的程序输入输出方法。 实验项目二Pythoni语言的综合编程 实验2 Python程序函数库及其应用 实验学时:2学时 实验目的与要求: (1)理解函数/时程的概今和作用: (2)理解过程/函数的定义和调用方法,理解形式参数和实际参数,与主程序 或其他过程/函数之间参数传递的方式和含义等: (3)理解简单过程/函数的编写、运行及调试方法: (4)熟悉Python程序函数库的使用: 了解国内开发的优秀工具库,如中文分词第三方库Jieba和SoLP(明确学习 Python编程的意义,增强学生的民族自豪感和爱国热情。) (5)了解Python程序函数库中常用函数的使用方法,为下面的函数应用奠定基 础。 (6)学会运用函数解决问题。 (7)理解递归的概念。 (8)理解递归的使用方法。 (9)能够编写与函数相关的Python程序,不少于30行代码: 2
2 (1) 硬件要求: 多媒体计算机,内部组成局域网,对外每台机器均连入 Internet 互联网。 (2) 软件要求: 中文版 Windows 7 或以上版本; Python3.0 或以上版本。 三、 实验教学内容 实验项目一 Python语言的简单编程 实验 1 Python 程序设计入门:简单程序设计 实验学时:2 学时 实验目的与要求: (1)Python语言概述 (2)理解Python语言开发环境,为后续实验内容奠定基础; (2)熟悉Python中常量与变量、表达式的书写方法; (3)理解Python中程序的三种基本结构--顺序结构、分支结构和循环结构的书 写方法; (4)理解简单程序的编写、运行及调试方法; (5)理解基本的程序输入输出方法。 实验项目二 Python语言的综合编程 实验 2 Python 程序函数库及其应用 实验学时:2 学时 实验目的与要求: (1)理解函数/过程的概念和作用; (2)理解过程/函数的定义和调用方法,理解形式参数和实际参数, 与主程序 或其他过程/函数之间参数传递的方式和含义等; (3)理解简单过程/函数的编写、运行及调试方法; (4)熟悉 Python 程序函数库的使用; 了解国内开发的优秀工具库,如中文分词第三方库 Jieba 和 SnowNLP(明确学习 Python 编程的意义,增强学生的民族自豪感和爱国热情。) (5)了解Python程序函数库中常用函数的使用方法,为下面的函数应用奠定基 础。 (6)学会运用函数解决问题。 (7)理解递归的概念。 (8)理解递归的使用方法。 (9)能够编写与函数相关的Python程序,不少于30行代码
实验3 Python基本数据结构及其应用 实验学时:2学时 实验目的与要求: (1)基本数据结构,如一维数组和二维数组的使用:赋值初始化、输入初始化 和输出方法: (2)理解数组的遍历方法,即基于数组的循环结构程序设计: (3)理解字符串和数值型变量的处理方法 (4)循环结构程序的调试和变量值变化的查看方法,体验循环结构程序的执行 过程 实验4利用Python实现穷举法-一问题求解基本思维训练 实验学时:2学时 实验目的与要求: (1)理解穷举算法的基本原理和工作过程: (2)理解利用Python语言构建穷举算法程序框架 (3)基本理解穷举算法程序的调试: (4)理解利用Python语言实现穷举算法,求解一个典型穷举计算问题(如密码 破解问题、换零钱的问题): (5)了解穷举算法求解问题的性能/效率分析。 实验项目三复杂计算问题的求解方法 给学生介绍一个面向领域(比如学校图书馆的书籍信息)的搜索引擎项目, 所涉及的专业问题并不需要过于复杂的算法,又可将Python在人工智能、网络 编程、数据库等领域的应用,融合本科专业中各门基础课程,令其成为一个有机 整体,培养学生工程实践能力。项目要求指导学生展开调研,了解搜索引擎的种 类、原理,学会将项目分解成多个小的功能模块,包括爬取数据、存取数据、分 词、Web开发等。建议学生使用requests库,模拟浏览器请求网页,并学会伪 装UA(User-Agent)破解服务器的检验请求。还需要告诚学生,绝不可开启太 多线程爬取同一个网站,导致服务舞压力过大,网页响应速度变便,引起运苦 商的诉讼(引导学生明白“取之有道)。 实验5利用Python实现递归算法 实验学时:2学时 实验目的与要求: (1)理解递归算法的基本原理和工作过程: (2)理解利用Python语言构建递归算法程序框架:
3 实验 3 Python 基本数据结构及其应用 实验学时:2 学时 实验目的与要求: (1)基本数据结构,如一维数组和二维数组的使用:赋值初始化、输入初始化 和输出方法; (2)理解数组的遍历方法,即基于数组的循环结构程序设计; (3)理解字符串和数值型变量的处理方法; (4)循环结构程序的调试和变量值变化的查看方法,体验循环结构程序的执行 过程; 实验 4 利用 Python 实现穷举法---问题求解基本思维训练 实验学时:2 学时 实验目的与要求: (1)理解穷举算法的基本原理和工作过程; (2)理解利用 Python 语言构建穷举算法程序框架; (3)基本理解穷举算法程序的调试; (4)理解利用 Python 语言实现穷举算法,求解一个典型穷举计算问题(如密码 破解问题、换零钱的问题); (5)了解穷举算法求解问题的性能/效率分析。 实验项目三 复杂计算问题的求解方法 给学生介绍一个面向领域(比如学校图书馆的书籍信息)的搜索引擎项目, 所涉及的专业问题并不需要过于复杂的算法,又可将 Python 在人工智能、网络 编程、数据库等领域的应用,融合本科专业中各门基础课程,令其成为一个有机 整体,培养学生工程实践能力。项目要求指导学生展开调研,了解搜索引擎的种 类、原理,学会将项目分解成多个小的功能模块,包括爬取数据、存取数据、分 词、Web 开发等。建议学生使用 requests 库,模拟浏览器请求网页,并学会伪 装 UA(User-Agent)破解服务器的检验请求。还需要告诫学生,绝不可开启太 多线程爬取同一个网站,导致服务器压力过大,网页响应速度变慢,引起运营 商的诉讼(引导学生明白“取之有道”)。 实验 5 利用 Python 实现递归算法 实验学时:2 学时 实验目的与要求: (1)理解递归算法的基本原理和工作过程; (2)理解利用 Python 语言构建递归算法程序框架;
(3)理解利用Python语言实现递归算法,求解一个典型计算问题(如二分查找 问颜、汉诺塔问题): (4)了解递归算法求解问题的性能/效率分析。 实验6利用Python实现分治算法 实验学时:2学时 实验目的与要求: (1)理解分治算法的基本原理和基本步骤:(分治法的设计思想是:将一个难以 直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。) 引申学生体会一下在学习和生活中是否通到其他问题也适用分治法。 (2)理解利用Python语言构建分治算法程序框架,分治法适用的情况: (3)理解依据分治法设计程序时的思维过程: (4)理解利用Python语言实现分治算法,求解一个典型计算问题,例如二分搜 索、大整数乘法、Strassen矩阵乘法、棋盘覆盖、合并排序、快速排序、线性 时间选择、最接近点对问题、循环赛日程表、汉诺塔。 (5)对比用分治法解决与用递归法解决二分查找问题的差异,如二分查找问题 或汉诺塔问题。 (6)了解分治算法求解问题的性能/效率分析。 实验7利用Python实现回溯法与贪心法 实验学时:2学时 实验目的与要求 (1)理解回溯法与贪心法算法的基本原理和工作过程: 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到 某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不 通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点” 贪心算法是指在对问题求解时,总是做出在当前看来是最好的洗择。也就是 说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 引申学生体会一下在学习和生活中是否遇到其他问愿也适用回湖法或贪心 法。 (2)理解利用Python语言构建回溯法与贪心法算法程序框架 (3)理解利用回溯法与贪心法解题的基本思路: (4)理解利用Python语言实现回溯法与贪心法算法,求解一个典型回溯法与贪 心法计算问题,例如最短路径问题。 (5)了解回溯法与贪心法算法求解问题的性能/效率分析 实验项目四对计算思维的理解与思考
4 (3)理解利用 Python 语言实现递归算法,求解一个典型计算问题(如二分查找 问题、汉诺塔问题); (4)了解递归算法求解问题的性能/效率分析。 实验 6 利用 Python 实现分治算法 实验学时:2 学时 实验目的与要求: (1)理解分治算法的基本原理和基本步骤;(分治法的设计思想是:将一个难以 直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。) 引申学生体会一下在学习和生活中是否遇到其他问题也适用分治法。 (2)理解利用 Python 语言构建分治算法程序框架,分治法适用的情况; (3)理解依据分治法设计程序时的思维过程; (4)理解利用 Python 语言实现分治算法,求解一个典型计算问题,例如二分搜 索、大整数乘法、Strassen 矩阵乘法、棋盘覆盖、合并排序、快速排序、线性 时间选择、最接近点对问题、循环赛日程表、汉诺塔。 (5)对比用分治法解决与用递归法解决二分查找问题的差异,如二分查找问题 或汉诺塔问题。 (6)了解分治算法求解问题的性能/效率分析。 实验 7 利用 Python 实现回溯法与贪心法 实验学时:2 学时 实验目的与要求: (1) 理解回溯法与贪心法算法的基本原理和工作过程; 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到 某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不 通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是 说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 引申学生体会一下在学习和生活中是否遇到其他问题也适用回溯法或贪心 法。 (2)理解利用 Python 语言构建回溯法与贪心法算法程序框架; (3)理解利用回溯法与贪心法解题的基本思路; (4)理解利用 Python 语言实现回溯法与贪心法算法,求解一个典型回溯法与贪 心法计算问题,例如最短路径问题。 (5)了解回溯法与贪心法算法求解问题的性能/效率分析。 实验项目四 对计算思维的理解与思考
实验8理解最优化问题的求解过程 实验学时:2学时 实验目的与要求 (1)理解四种经典最优化问题的基本原理: (2)理解利用Python语言构建最优化问题的算法程序框架: (3)针对身边的最优化问题(如最短路径算法),提出可行的计算方法 (4)针对同一个最优化问题,了解求解的不同算法,比较求解问题的性能/效率 分析。 (5)查看最新关于某个最优化问题的文献综述调查(包括问题的起源、己有的 研究方法以及进展状况)。 四、考核方式 计算思维与实践(Python语言)是一门实践性很强的课程,鉴于Python没 有太多语法类内容需要考核,建议课程考核以程序设计能力为主,分成三个部分: 上机实验、课堂情况、期末考试。 每次实验课可以安排一个或几个实验项目,实验教师可以根据实验完成情况 打分,最后累积实验总分,该成绩占总成绩40%。 课堂情况可以通过学生的课堂参与情况进行10%成绩的考核,包括回答问题、 代码讲解、师生互动等。 期末考试为随堂考试,主要以程序设计为主进行。 对于期末考试,主要以程序设计为主要内容,学生可以带参考书目,重点考 察在规定时间内解决计算问题及编写程序的能力。考试题目的选择可参照表1中 题目,也可以各老师自己指定考试题目。考试题目建议为2-3道题,分别从以下 几个方面考香学生的实际能力 基本程序设计方法:Python程序,代码不超过10行,1-2道题: ●操作输入输出的能力:Python程序,代码不超过30行,1-2道题: 解决实际问题的能力:解决一个实际问题,Python程序,代码不超过50行, 1道颗 表1课程考核参考题目列表 编号 题目名称 题目类 基本内容和目的 刑 温度转换程 基本语 内突,华氏温度和摄氏的石法 序 法型 目的:熟悉基本的IPO程序设计方法 2 词频统计 基本语 内容:对于一个以文本形式存储的英文文章, 法型 统计各单词出现的频率 目的:理解列表和字典的使用 字符串处理基本语内容:字符串翻转和转译等操作
5 实验 8 理解最优化问题的求解过程 实验学时:2 学时 实验目的与要求: (1)理解四种经典最优化问题的基本原理; (2)理解利用 Python 语言构建最优化问题的算法程序框架; (3)针对身边的最优化问题(如最短路径算法),提出可行的计算方法 (4)针对同一个最优化问题,了解求解的不同算法,比较求解问题的性能/效率 分析。 (5)查看最新关于某个最优化问题的文献综述调查(包括问题的起源、已有的 研究方法以及进展状况)。 四、 考核方式 计算思维与实践(Python 语言)是一门实践性很强的课程,鉴于 Python 没 有太多语法类内容需要考核,建议课程考核以程序设计能力为主,分成三个部分: 上机实验、课堂情况、期末考试。 每次实验课可以安排一个或几个实验项目,实验教师可以根据实验完成情况 打分,最后累积实验总分,该成绩占总成绩 40%。 课堂情况可以通过学生的课堂参与情况进行 10%成绩的考核,包括回答问题、 代码讲解、师生互动等。 期末考试为随堂考试,主要以程序设计为主进行。 对于期末考试,主要以程序设计为主要内容,学生可以带参考书目,重点考 察在规定时间内解决计算问题及编写程序的能力。考试题目的选择可参照表1中 题目,也可以各老师自己指定考试题目。考试题目建议为2-3道题,分别从以下 几个方面考查学生的实际能力。 ⚫ 基本程序设计方法:Python程序,代码不超过10行,1-2道题; ⚫ 操作输入输出的能力:Python 程序,代码不超过 30 行,1-2 道题; ⚫ 解决实际问题的能力:解决一个实际问题,Python程序,代码不超过50行, 1道题。 表1 课程考核参考题目列表 编号 题目名称 题目类 型 基本内容和目的 1 温度转换程 序 基本语 法型 内容:华氏温度和摄氏温度的互转换 目的:熟悉基本的IPO程序设计方法 2 词频统计 基本语 法型 内容:对于一个以文本形式存储的英文文章, 统计各单词出现的频率 目的:理解列表和字典的使用 3 字符串处理 基本语 内容:字符串翻转和转译等操作
法刑 目的:理解字符串的使用 者最大问 基本语 内容: 求三个元素的最大元素 目的: 理解分支的使用 随机数的使 基本语 内容:使用Python的数学库math 用 法型 目的:理解随机数的使用 水仙花数 基本语 内容:找到指定范围内的所有水仙花数 日的. 理解基本的文件输入输出方法 计算n 问题求 内容:用递归的方法计算n的阶乘 解型 目的:理解Python语言实现递归算法 找使币问题 问题求 内容:设有3种硬币,面值分别为25分,10分 解型 和1分。编写程序,输入(分钱),求解使 得找出的硬币个数最少 目的:理解Pythoni语言实现贪婪算法 二分查找 问题求 内容:输入一个按大到小(或从小到大)排 解型 列的数组,输入一个数,用二分法找,这个 数是否在数组中。 目的:理解Pythoni语言对文件目录的操作 10 排序 问题求 内容:给定一组随机数,将其按照升序排列 解型 输出 目的:理解Python语言实现排序的方法 11 最优化问题 专业应 内容:无线电快速测向中,需要在起点和终 用型 点的信号源之间找 条最短的路径,使得测 试员将场内的10个信号源都测试一遍。 目的:理解Pythoni语言觉得最优化问题的方 五、 推荐实验教材和教学参考书 推荐实验教材:自编,以电子版形式发给学生及相关老师。 包括:上机实验题和课程练习题集 教学参考书: 《计算思维应用实例》,清华大学出版社赵宏编: 《Python_3.7_入门指南》 (Python Programming:An Introduction to Computer Science (How to Think Like a Computer Scientist:Learning with Python> 《Fundamentals of Python》 六、其他需说明的 6
6 法型 目的:理解字符串的使用 4 三者最大问 题 基本语 法型 内容:求三个元素的最大元素 目的:理解分支的使用 5 随机数的使 用 基本语 法型 内容:使用Python的数学库math 目的:理解随机数的使用 6 水仙花数 基本语 法型 内容:找到指定范围内的所有水仙花数 目的:理解基本的文件输入输出方法 7 计算n! 问题求 解型 内容:用递归的方法计算n的阶乘 目的:理解Python语言实现递归算法 8 找硬币问题 问题求 解型 内容:设有3种硬币,面值分别为25分,10分 和1分。编写程序,输入n(分钱),求解使 得找出的硬币个数最少。 目的:理解Python语言实现贪婪算法 9 二分查找 问题求 解型 内容:输入一个按大到小(或从小到大)排 列的数组,输入一个数,用二分法找,这个 数是否在数组中。 目的:理解Python语言对文件目录的操作 10 排序 问题求 解型 内容:给定一组随机数,将其按照升序排列 输出 目的:理解Python语言实现排序的方法 11 最优化问题 专业应 用型 内容:无线电快速测向中,需要在起点和终 点的信号源之间找一条最短的路径,使得测 试员将场内的10个信号源都测试一遍。 目的:理解Python语言觉得最优化问题的方 法 五、 推荐实验教材和教学参考书 推荐实验教材:自编,以电子版形式发给学生及相关老师。 包括:上机实验题和课程练习题集 教学参考书: 《计算思维应用实例》,清华大学出版社 赵宏编; 《Python_3.7_入门指南》 《Python Programming: An Introduction to Computer Science》 《How to Think Like a Computer Scientist: Learning with Python》 《Fundamentals of Python》 六、 其他需说明的
本门课程实验内容包括两种模式的实验:验证性实验、设计性实验:每个实 验都包括验证性实验:也有部分实验包括设计性实验,这部分实验可以分小组完 成,每组3-5个学生 ◆验证性实验:让学生读懂程序中实现的算法,并能验证实现程序功能。 ◆设计性实验:列出目标要求,让学生按设计要求完成实验。引导学生综合利 用所学的知识为现实生活中遇到的复杂计算问题寻求解决方案。 本门课程需要学生撰写2份实验报告,建议针对实验2和实验4撰写实验报告。 大纲修订人:黄元南 修订日期:2022年1月 大纲审定人: 审定日期: 7
7 本门课程实验内容包括两种模式的实验:验证性实验、设计性实验;每个实 验都包括验证性实验;也有部分实验包括设计性实验,这部分实验可以分小组完 成,每组 3-5 个学生。 ◆ 验证性实验:让学生读懂程序中实现的算法,并能验证实现程序功能。 ◆ 设计性实验:列出目标要求,让学生按设计要求完成实验。引导学生综合利 用所学的知识为现实生活中遇到的复杂计算问题寻求解决方案。 本门课程需要学生撰写 2 份实验报告,建议针对实验 2 和实验 4 撰写实验报告。 大纲修订人: 黄元南 修订日期:2022 年 1 月 大纲审定人: 审定日期: