搜索
您的当前位置:首页正文

基于思维培养的Python程序设计类课程之实践

来源:尚佳旅游分享网
o

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)]。实践程序的一种实现。

提示学生根据算 程序设计

法写出代码。运行程序

与调试

思考:如果待查

如果待查找的元素在 找的元素在序列

讨论

序列中有多个,则上述 中有多个,如何 修改方案

修改算法返回第 的运行结 程序的修折半查找算法返回的 是其中的任意一个。一个所在的位

置。

%

因篇幅问题不能全部显示,请点此查看更多更全内容

Top