以计算思维为导向的程序设计课程教学案例设计探析
【摘 要】针对《C语言程序设计》课程的传统教学存在的问题,文章提出以计算思维为导向的案例教学法,而如何设计有效的教学案例是核心。针对传统教学存在的问题,以计算思维为导向,总结教学案例设计的原则,设计教学案例。通过《C语言程序设计》课程教学实验,证明提出的以计算思维为导向的程序设计教学案例设计方法是有效的。
【关键词】计算思维 C语言程序设计 教学案例设计 中图分类号:G642
课题资助:陕西省教育科学“十二五”规划2014年度课题(SGH140896)。
计算思维
计算思维的概念是由美国卡内基・梅隆大学计算机科学系周以真(Jeannette M. Wing)教授于2006年提出的教育理念,2013年,周教授接受《中国信息技术教育》杂志社刘向永记者的访谈时对计算思维进行了诠释[1-3]。
国外的众多研究者涵盖计算机教育界、社会学界以及哲学界等各个领域对计算思维进行深入的研究[4]。ACM和IEEE-CS在修订后的《计算机科学教程2008》(Computer Science Cu♥rriculum 2008)[5]79-84中明确指出应该将计算思维作为计算机科学教学的重要组成部分。
在国内,基于计算机技术和Internet技术的飞速发展,培养大学生计算机综合能力,提高大学生使用程序语言解决问题的能力,是当今大学生计算机基础教育的核心点之一[6]。根据《中国高等院校计算机基础教育课程体系2008》的规定,高校程序设计基础课程的学习目标是:
⑴学习问题求解的思路和方法,即算法。
⑵理解计算机是如何具体实现算法的,即如何才能有效利用计算机编程。
因此在程序设计课程教学任务中,不仅要使学生掌握程序语言的语法规则来编写程序,更重要的是掌握算法思想与问题求解的思路,而计算思维正是使学生掌握使用计算机科学对问题进行求解的一种思维方法和能力。
国内外的众多学者把计算思维能力的培养视为教育界改革的重要研究范畴,特别是在计算机教育领域,进行了多年的研究与探索。如何将计算思维的理念融入到计算机教学中,培养学生计算思维能力,成为计算机教学研究的焦点和改革的突破点,并在此研究中取得了一定的成果,但在程序设计课程教学中培养计算思维尚未形成一套完整的教学模式,仍处于探索阶段。
如何将计算思维真正融入程序设计课程中,我们进行了一定的探讨,在多年的程序设计课程教学中总结了一定的经验,基于计算思维的案例教学法比较适用,但是如何设计合理有效的设计案例是案例教学法成功的关键。
以计算思维为导向的教学案例设计原则
托尔说:“一个出色的案例,是教师与学生就某一具体事实相互作用的工具;一个出色的案例,是以实际生活情境中肯定会出现的事实为基础所展开的课堂讨论。它是进行学术探讨的支撑点;它是关于某种复杂情境的记录;它一般是在让学生理解这个情境之前,首先将其分解成若干成分,然后再将其整合在一起。”
对C语言程序设计课程的教学任务而言,更重要的是使学生学习计算机分析、解决问题的思路和方法[7]。因此,在C语言程序设计课程教学过程中,一定要避免只重视程序设计语言的语☑法规则的错误思想,在将计算思维的培养作为教学核心任务的教学过程中要重视程序设计方法,而不是语言本身,不仅要求学生用计算机读得懂程序,编写和调试代码,更重要的是要学会如何设计算法,从而开发学生的主动性和能动性。
如何设计以计算思维为导向的程序设计案例,是案例教学法的核心,经过多年程序设计课程教学的经验,将程序设计课程的教学案例设计原则总结如下:
1.案例选题的生活化
在教学案例的选择中坚持生活化、常态化的原则,即选择贴近生活、学生比较熟悉的问题,让学生在熟悉的问题下思考解决方法,这样可以缓解学生对程序设计的畏惧感。在学生给出问题的解决方法并用计算机进行求解后,学生会有一种恍然大悟的感觉,他们从中认识到计算机竟然能这么方便地用以解决日常生活中的问题,从而消除对程序设计语言的抽象、枯燥的感觉。这样生活化的案例在问题的求解中激发学生的学习兴趣,让学生在兴趣盎然的氛围中学习,感受到程序就在身边。而对生活化的问题求解锻炼了学生日常问题求解的思维,从而培养学生的计算思维。
2.案例涵盖知识点的典型化
根据每节课的教学目标和教学内容的需要适当选择教学案例,将本节课的教学内容涵盖在案例的解决中,同时要符合学生的认知水平,案例的设计既是学生平时耳闻目睹的,但又了解不深的普遍问题,这样可使学生对这些问题的实际背景容易接受,从而愿意去深入了解,这样的案例可以使学生更容易理解教学内容,同时能够让学生触类旁通,利用所学知识解决类似问题。
3.案例问题的提出和解决的程序化
使教学案例的设计与计算思维相结合,在案例问题的解决中注重算法的设计,方法的选择,培养学生独立解决问题的能力,并在案例中适当添加程序语言,使学生在问题解决的同时可以使算法程序化,这样既可以培养学生的计算思维,又可以培养学生的程序思维,使枯燥无味的程序语法知识顺其自然地在案例中学习,从而提高学生应用计算机知识抽象和分解问题的能力。
典型案例解析
根据课程教学目标和教学内容,以选择生活化、常态化的案例为原则,以计算思维为导向的程序设计案例的选择原则,让学生体会到如何用计算机解决问题的方法来解决日常生活中的问题。下面以一个典型案例的设计为例具体实现案例设计和应用。
教学内容:指针和数组。
教学目的:掌握指针和数组的定义以及使用。
教学重点:指针和数组的定义及使用。
教学难点:指针和数组的使用。 针对C语言程序设计课程中指针和数组知识的学习,下面给出一个常见问题求解的案例,这一案例同样适用于数组知识的学习,只是案例中问题求解的方式有所变化。
1.问题提出:根据二代居民身份证号确定此人性别的问题。
2.常识解答:居民二代身份证号共18位,从左向右前6位为户口所在地,第7~14位共8位为出生年月日,第15~17位为顺序位(同地区同年同月同日生的人的顺序编号)其中第17位代表性别(奇数为男、偶数为女),最后1位为校验位。
3.问题求解:从18位数字中取出第17位,然后判断奇偶性,奇数为男、偶数为女。
对分解后的两个问题,针对不同的理论学习内容,我们有很多种解决方法,如:使用函数提取字符串中的一个或多个字符、使用数组下标提取数组元素、使用指针提取数组元素等多种方法。下面针对指针的学习给出求解方法。
4.求解方法:
Step1:利用数组存储给定的18位数字,利用指针的移动提取第17位数字;
Step2ϟ:用取出的第17位数字与2模除取其余数,判断奇偶性。
5.算法分析:针对以上问题的求解方法为例写出相应算法:
Step1:定义整型数组a,整型变量b,整型指针变量p;
Step2:将18位身份证号赋值给a数组,指针p指向数组的首地址;
Step3:移动指针指向第17位数字;
Step4:指针提取第17位数字后模除2取余数赋值给b变量;
Step5:判断b的奇偶性,如果是奇数则是男,如果是偶数则为女;
Step6:输出结果。
6.问题求解方法的代码化:
#includestdio.h
main( )
{
int i,c,a[18]={1,5,0,4,2,8,1,9,8,9,0,6,0,8,1,2,3,3},*p;
p=a;
for(i=0;ii++)
p++;
b=*p%2;
if(b==1)
printf("%s\n","男");
else
printf("%s\n","女");
}
✎ 这一案例是非常生活化的案例,每个人都有身份证号,但是将这样一个常见问题用程序设计语言在计算机上实现确实不是一件容易的事情,结合教学内容和教学目标,将问题的解决方法限定在指针和数组的使用,更是加大了问题的解决难度。就案例分析和问题的解决而言,让学生选择多种解决方法,训练学生如何将生活中的问题用计算机来解决,同时掌握指针和数组的定义、赋值及使用等基础知识。使学生在案例分析和算法设计时培养了计算思维能力,同时让学生在有趣的案例中学习相对枯燥的理论知识。
总结
大学教育更多的是素质的养成,能力的培养,正像一条教育格言讲的:“Tell me and I will forget. Teach me and I will know. Involve me and I will learn.”在大学教育中,要少一些灌输,多一些参与。《C语言程序设计》课程的传统教学存在一定的问题,在多年的程序设计课程教学中提出以计算思维为导向的案例教学法,并针对教学案例设计的核心问题进行研究,针对传统教学存在的问题,以计算思维为导向,总结了教学案例设计的原则,设计了教学案例。通过《C语言程序设计》课程教学实验证明,提出的以计算思维为导向的程序设计教学案例设计方法是有效的。学生通过案例教学可以提高学生的学习积极性和主动性,大众化的案例解☤决在使学生掌握了相关理论知识的同时培养了学生分析和解决问题的能力,培养了学生的计算思维。
参考文献:
[1]Jeannette M. Wing,“Computational Thinking,”Communication of the ACM,no.49(Mar.2006):33-35.
[2]刘向永、周以真:《计算思维改变信息技术课程》,《中国信息技术教育》2013年第6期,第5-12页。
[3]周以真:《计算思维》,《中国计算机学会通讯》2007年第3卷第11期,第83-85页。
[4]《九校联盟(C9)计算机基础教学发展战略联合声明》,《中国大学教学》2010年第9期。
[5]“CM/IEEE Computer Society Interim Review Task Force,”Computer science curriculum 2008: An interim revision of CS 2001, accessed June 28, 2010, http://www.acm.org/education/curricula/.
[6]教育部高等学校计算机基础课程教学指导委员会:《高等学校计算机基础教学发展战略研究报告暨计算机基础课程教学基本要求》,高等教育出版社,2009。
[7]战德臣、聂兰顺:《计算思维与大学计算机课程改革的基本思路》,《中国大学教学》2013年第2期,第56-60页。