D
-O
建电脑
COMPUTER
:1
0
1
6
7
0
7
/
c
n
k
p
c
2
0
1
7
0
6
0
8
7
基于思维培养的Python程序设计类课程之实践
吴萍,朱敏,蒲鹏
(华东师范大学计算机科学与软件工程学院计算中心上海
/
2
0
0
0
6
2
)
【摘要】针对目前非计算机专业大学生利用计算机求解实际问题的迫切需求,本文结合学校的教学实际,重点分析 了程序设计类课程不仅仅是让学生学会一门程序设计语言,更多的是培养学生的一种思维能力。阐述了如何从大纲拟 定、教材设计、课件制作到课堂的教学形式等各个环节,将计算机求解问题的方法和思维贯穿到整个程序设计的教学实 践中。
【关键词】
P
y
hon;计算思维;算法;程序设计方法
纯粹的知识学习,职业培训不是大学培养所追求的目标, 思想方法的启迪更为重要。在程序设计类课程的教学实践中, 我们常能观察到学生思维能力的不同:有些学生设计的程序脉 络清晰,而有的则缺乏逻辑性。传统的以讲授程序设计语言为 主的教学方式已不能满足现代社会对计算机应用人才的需求。 如何进行思维训练,增强学生分析问题和解决问题的能力,是 摆在我们面前的重要任务。对非计算机专业学生而言,更是今 后他们利用计算机解决与专业、科研和社会需要密切相关的实 际问题之基础。
1课程培养模式分析
在教育中不能固守传统,只注重智性的培养,也不能采用 以市场为导向的职业教育而抛弃了知识的整体性[1]。我们在制 定课程内容时,力求将思维能力的培养贯穿其中,使学生在获 取较为完整的知识同时,能够掌握获取知识的方法,提高他们 的问题求解能力,包括基础的模型化逻辑推演能力、算法设计 和分析能力以及程序设计和实现能力。
1
1
教材设计思路
现有的程序设计类教材一般围绕语言本身的体系展开内 容,以讲解语言知识以及编程技巧为主。我们编写的教材[2]是多 年教学经验与不断改革和实践的成果,教材设计了“算法与程 序设计基础”通识课程方案,力求融入计算思维的思想,将计算 机学科所形成的解决问题的思维模式和方法渗透到各个学科。 与传统的程序设计类教材不同,我们选择了较容易上手的
P
y
h
o
n
语言,着重介绍利用计算机分析问题和解决问题的方法
和思路,指导学生更多的思考自己想要解决的问题而不是一头 栽进单纯的语言学习中。教材中的例题和实验部分的范例更是 通过对不同解决方案的分析比较,帮助学生掌握选取优化方案 并编程予以实现的理论方法和实际应用能力。1
2
理论与实验合理分配,精选基础性实验案例
教材的内容围绕以上所述的学习目标和能力目标设置,并 对实验内容进行了精选与提炼,按照实验课时数,结合理论进 度进行了合理分配,力求理论与实际相结合。例如针对枚举、递 归、查找和排序等常用算法,在讲述每一种算法的基本思路与 设计步骤的基础上,落实到每一个案例求解,从案例的提出到 算法设计与描述、从程序实现到案例结果的讨论与分析,突出 算法在解决实际案例中的引导作用,将思维训练贯穿于算法设 计与案例实现中。2教学设计与实践
教学设计是运用系统方法分析教学问题和确定教学目标;
建立解决问题的策略方案,试行方案,评价试行结果并对方案 进行修改的过程。它以优化教学效果为目的,以学习理论、教学 理论和传播学为基础[3]。传统的教学是围绕着课程大纲,以“教” 为主的教学模式。这种方式效率高,特别适合学生人数众多的 课堂,是一直以来广泛采用的教学方式。只是“教”的内容、方 法、过程和手段需要有教学理论的指导,需要我们在教学实践 中不断探索和总结,目的是促进学生思维能力、实践能力、自主 学习能力和创新能力的发展。
2
1
学习内容与教学策略分析
美国著名的教育心理学家罗伯特•加涅提出的学习层次理 论的核心是:学习是累积性的,较复杂高级的学习是建立在基 础性的学习之上的。将这一理论运用于教学实践中,就是在确 定总教学目标后,应将总目标细分成一个个小目标,并把每个 学习内容细化为一个个容易掌握的“任务”,通过这些“任务”来 体现总的学习目标。依据“任务”的内容特点,我们在教学实践 中可灵活采用讲授法、演示法、实践法和网络平台下学习等多 种方法。可以是具体细致的讲解教材里没有的基础理论推导; 可以是教师授课时,引导学生思考一个问题的多种求解方法; 可以是针对具体问题,教师指导、小组成员协同配合、小组之间 交流和评价;可以是利用网络平台和实验教材的某种意义上的 “翻转”课堂。在以“教”为主的教学模式中融入基于问题教学 法、案例教学法和针对不同层次学生的非颠覆式“翻转”课堂教
学法[4]等。
传统教学中亟待解决的一个症结是学生基础的差异,为此 我们在教材中撰写了实验范例,安排了课前导读,并对课程的 重难点内容制作了视频和语音教学演示。不同层次学生可以根 据自己的学习情况完成课前的预习和课后的巩固复习。课前的 主动预习不仅能够帮助学生跟上课堂教学进度,更重要的是带 着疑问的学习可以培养学生更主动的思考问题和探究知识的 能力。
2
2
教学设计案例
这里选择教学内容“第7
章算法分析与设计”中的一节课
“折半搜索算法”作为案例。
1
教学目标
理解折半查找的概念和特点。
通过分步解析,设计折半查找的算法,写出伪代码。掌握折半查找算法的程序实现。
综合应用已学的程序设计方法及各种控制语句。进一步熟练掌握程序的编写与调试。
2017年第6期|福建电脑
.167-
建电脑COMPUTER
2
学习内容分析
折半查找是计算机科学中的一个基础算法,涉及到问题分 析、算法设计、效率分析、优化方案和编程求解等一系列用计算 机求解问题的步骤。也是对前面学习的程序设计知识和方法的 综合应用。因此,激活学生思维,引导他们去探索和解析方法的 形成过程非常重要。
3
教学策略
教师在讲解过程中,首先通过案例引领学生,提出折半查 找的原理;然后进一步演示折半查找的问题求解过程,鼓励学 生归纳出算法特征;最后学生通过实验课编程解决问题。折半 查找的性能分析是难点,教师要具体细致地将理论推导过程讲 解清楚。
4
教学过程
“折半搜索算法”教学过程描述如表1
所示。3教学成果评价
经过本学期的教学实践,我们通过学生调查问卷的形式对
教学实践结果进行了详细的分析。8
1
9
份问卷调查结果统计分
析如下。(1
) 对本课程的难度,有3
5
%学生反应难度适中,有4
2
生反应比较难。说明课程具有一定的挑战性。
(2
) 对学生课外学习时间的调查显示有5
5
%学生每周大约 1
小时,有2
2
%学生每周大约2
3
小时。说明学生基本能够在 课堂和实验课时间内巩固所学的内容。(3
) 面对编写的程序遇到困难的情况,5
3
%学生表示会自己 尝试解决,3
6
%学生表示会和同学商量解决。说明学生能够自 主、独立和互助地解决问题。(4
) 7
9
%学生希望通过本课程学习逻辑思维能力和编程知
识,5
5
%学生希望逻辑思维能力得到拓展,反过来能影响他们的 专业学习。
(5
) 4
1
%学生希望通过本课程的P
y
h
o
n
帮助系统学习计算
机英语。(6
) 5
1
%学生喜欢传统的教学:听老师讲二节课—实验课做
练习,2
4
%学生喜欢翻转课堂教学:课前自学—上课提问—老师
讲解—实验课做练习,2
5
%学生喜欢实践为导向的翻转课堂教
学:实验课做练习—上课提问—老师讲解。
通过以上分析,以下结论是明显的:1
0
0
%
的学生认识到了
思维能力培养的重要性;虽然课程具有一定的挑战性,近
9
0
%
的学生仍然希望能够自主、独立和互助地解决问题,
4
9%
的学生
不喜欢传统的以教为主的教学模式。因此,在思维培养的基础 上,针对不同层次学生的非颠覆式“翻转”教学将是后续课堂教 学的重要方式。
参考文献:
[1] Newm:rnJ.H.大学的理念[M].北京:清华大学出版社,2012.[2] 吴萍,等.算法与程序设计基础:Python版[M].北京:清华大学出 版社,2015.
[3] 乌美娜.教学设计[M].北京:高等教育出版社,1993.
[4] 张萍.翻转课堂在高校计算机基础课教学中的应用研究[].开封 教育学院学报,2015(2).
•168-
福建电脑I 2017年第6期
表1教学过程示例
教学方法
课件内容
教师讲解演示内容学习目标
设计要点:
首先建一个函数 判断所产生随机
编写一个玩猜数的游 与游戏者所猜 戏。由程序产生一个 数之间的大小关 1~1000间的随机数, 系。调用函数,根
玩游戏者可输入最多 据函数返回的结
运行程序。
问学生:如创设
十次猜数。每次如果输 果进行处理:若 情境入的数不对,可给出偏 猜数正确,
结束 何猜可以 折半查找大偏小提示。如果猜正 循环,若猜得不
猜的快一 的原理
确,给出恭喜信息,游 对,给出大或小
点?有什么
戏结束;如果十次猜数 的提示,
然后如 技巧?不正确,游戏结束,给 果次数少于10
出失败信息。
次继续下一轮猜 数,如果次数已 达10次则也结 束循环。
设有一个13个记录的 分析折半查找的
有序表的关键字值如 原理与方法:取 下:5 7 13 25 mid 指示位置的
32 46 54 62 78 关键字值 13 与
学 83 88 91 99 给定值32作比
假设针left和right 较,显然13<32, 分别指示待查元素所 故要查找的 32
在区间的下界和上界, 应该在后半部
指针mid指示区间的 分, 所以下次的 中间位置。left(1) mid查找区间应变为
学生归纳 (7) 讲解查找关键字值为right(13)
[4,6],即 left 值 演示折半 总结查找 32的
变为 mid+l=4, 查找的问 的各种情 过程:right值不变仍为 题求解过 况, 写出
取mid位置的关键字 6。求得 mid=5。
程算法伪代 值54与32作比较,显 取 mid 指示位置
码。然32<54,故要查找的 的关键字值32 32应该在前半部分, 与给定值32作
所以下次的查找区间 比较,显然是相
应变为[1,6],即left值 等的,说明查找 不变仍为1,right的值 成功。所查元素 变为mid-1=6。求得 在查找表中的位
mid=3 (整除)。left(l) 置即为mid所指
mid(3) right (6)示的值。算法的效率为:O(log2n) while的每次循环(最
后一次除外)都将以减
半的比例缩小搜索范 推导围。在最坏情况下,
即 详细解释算法效 折半查找折半搜索
过程的判算法的效被查找的值位于叶子
率的推导过程。
定树率分析节点或不存在,这时的 比较次数为判定树深度:[log2 (n+1)]。实践程序的一种实现。
提示学生根据算 程序设计
法写出代码。运行程序
与调试
思考:如果待查
如果待查找的元素在 找的元素在序列
讨论
序列中有多个,则上述 中有多个,如何 修改方案
修改算法返回第 的运行结 程序的修折半查找算法返回的 是其中的任意一个。一个所在的位
果
改
置。
%
因篇幅问题不能全部显示,请点此查看更多更全内容