期刊库

教育   经济   科技   财会   管理   
医学   法学   文史   工业   建筑   
农学   水利   计算机   更多>>
 首 页    论文大全   论文精品    学术答疑    论文检测    出书咨询    服务流程    诚信通道    关于我们 

以学生为本的课堂教学内容设计实践探索

人气指数: 发布时间:2018-01-30 10:21  来源:http://www.zgqkk.com  作者: 葛艳
分享到:

 

  摘要:在有众多教学资源选择的前提下,传统课堂教学面临着严峻的考验。如何针对学生特点、学生普遍的接受能力,设计学生乐意听、也听得懂的课程内容,如何有效引导学生,创造有吸引力的课堂教学效果?内容重于形式,有机地组织教学内容仍是重中之重。以系统学为指导,贯彻以学生为本的教学理念在組织和设计高效的课堂教学通过《程序设计基础》课程教学实践验证,是一种可行的方案。
 
  关键词:以学生为本;教学设计;程序设计;系统工程
 
  程序设计基础作为大学生接触程序设计类的第一门课程,在开启学生智慧和控制计算机解决实际问题方面具有启蒙作用,因此用学生听得懂的语言,循序渐进地向学生传授程序设计的基础知识,根据学生已有的认知能力和知识体系将学生平稳地从原来实验思维、逻辑思维过渡到计算思维,做好程序设计基础的开篇教学设计尤为重要。
 
  一、现状分析
 
  通过问卷调查了解,就我校而言,大一新生对计算机的认识基本处于简单文件编辑和上网操作,极个别同学接触过一点VB编程,大部分学生对于学习编程还存在一些畏难情绪。而从已修这门课的同学了解到,初期新概念太多,内容杂,刚到复杂一些的内容一个学期结束了,没学到多少。因此,把握教学目标,了解学生现有的知识结构和认知水平、认真梳理知识脉络,在问题和解决方案之间,在学生的现有知识水平和待学的新知识之间搭起一层层阶梯,是设计有效课堂教学内容,逐步提升学生程序设计能力的有效途径。
 
  二、以学生为本的程序设计基础课程教学设计思路
 
  针对以上分析的现状,程序设计基础课程在承担语言、思维逻辑教学的同时,还要兼顾学生自信心的树立和思维的转换。为了完成以上培养目标,在教学设计上探讨以学生为本,遵循知识的层次性特点,尊重认知由表及里的过程,按此思路来设计教学。
 
  程序设计基础的基本载体是一种编程语言。作为一种可用的编程语言,它本身就是一个独立的系统,而系统都是具有层次性的。于是,用认识系统的方法来学习一种语言,按照系统构成要素的层次性来递进地、有规律地学习一种语言以及语言传递出来的计算思维方法,并将程序设计语言中繁多纷杂的概念按照层次性特点分层梳理。
 
  由表及里的“表”可以理解为外在形式或者系统对外表现出来的功能,“里”则是事物内部的组成和关系。由表及里的认识过程就是先知道事物的功能是什么,可以用来干什么,怎么用,然后再知道它是什么,它的构成,更深一步可以理解它的结构是如何支持对应功能的。
 
  以学生为本,就是在分析学生特点的前提下,按照知识的层级性,遵循认知的基本规律,设计学生听得懂、学了会用的课程。
 
  按照问题→知识→实践→思维,再循环为更复杂的问题→新的知识→再次实践→新的思维螺旋式上升的过程来设计和组织教学,同时结合学生的特点,分清螺旋上升链的课内精讲、学生自建,MOOC资源借用,链条的起点和终点等,可以有序并高效组织每一堂课。
 
  三、实施案例
 
  在上述教学设计思想指导下,程序设计基础课程的具体教学实施办法示例如下:
 
  1.“hello,world”问题的设计
 
  在教学设计中一些重要概念的阐述在用词上注意保持一致性,新的术语或者概念也严格遵循先定义,界定其语义范围,再使用的原则。在学习之初,从一个经典又易上手的“hello,world”程序开始。
 
  在这个实例中,区分程序和程序设计两个概念。引入程序框架、主程序、头文件的概念。在主程序中再引出函数、语句等概念。新概念的引入可以通过类比的方法降低新概念接受的难度。比如,将程序框架比作画板、主程序框架比作画纸,头文件比作工具箱,而函数比作画笔。引导学生在很多概念的学习上学会像用遥控器一样的方法来学习,即只要了解用法和功效即可,无需非要把它拆解。
 
  接下来,可选择地向程序设计、程序设计语言、程序的开发环境以及程序的执行环境几个维度分别去拓展。拓展的原则仍是以“用”为标准,拓展的内容尽可能是能解决当前知识领域的基本问题的一个最小集,更丰富的知识留在对应课程中做深入讲解。拓展中有意识的引导或点拨:一是传递程序设计与程序设计语言、开发环境、执行环境具有相对独立性,在学习过程中要善于区分抽象和具体,普遍规律和具体应用,提高学生更替到新的程序设计语言或开发环境工作的适应性;二是引导学生“先见森林,再见树木”,在进入领域知识的学习中不会迷路;三是为课程与其他课程的衔接预留接口,便于课程之间的无缝对接。
 
  程序设计部分的拓展核心解决程序设计流程图即可。再掌握问题解决流程的形式化表达方法,学生能用形式化的方法表达问题的处理流程,架起问题和程序之间的桥梁。关于算法和数据结构的内容则留待后续课程深入,同时,不要过分强调复杂算法和数据结构的问题来打击学生学好语言基础的信心。
 
  程序设计语言部分的拓展是跨越C语言,简介当前多种常用编程语言,防止学生在学习程序设计基础课程时的“一叶障目”,陷入学习C语言的语法细节,而忽视了独立于C语言的思维方法和适用于各种程序设计语言的通用规律的学习。
 
  程序开发环境包括程序的编辑、编译、调试、预处理等环境,要学生一方面了解程序从编写到执行过程,各自的任务、用户、接口等。二是清楚开发环境的多样性。
 
  尽管教学中以一种具体语言,一种具体环境为例,将语言的普遍规律映射到该具体环境去解决具体问题,但学生需要充分认识到程序设计语言所传递的程序设计的普遍规律与程序的开发、编辑、编译以及运行环境之间的辩证关系,归纳出独立于具体开发环境的一般使用过程,并抓住具体环境的特色之处。在熟练掌握一种具体语言、一种特定的环境后,能触类旁通,培养出对语言和环境变更与进化的自适应性。
 
  程序执行环境拓展,理解计算机系统,更深入地把握程序设计语言的精髓,充分发挥程序设计语言的潜能。拓展中可选择地覆盖进制、数的表示、存储和类型。
 
  以上各个层面的可选拓展为学生打开了视野,也引导不同学习能力、不同兴趣爱好的同学自由构建专业知识体系。
 
  2.简单数学运算问题的设计
 
  聚焦到一门程序设计语言,语言要素部分是最杂乱环节。采用如下方法解決:
 
  首先,引入一个简单数学运算的问题:根据用户输入的两个数,计算商,并显示给用户。
 
  由此分层推进C语言的构成要素:
 
  层次一:常量、标识符、符号
 
  常量,是数据的一种存储形式。根据数据内容的不同分为:整形常量、实型常量、字符常量和字符串常量。转义字符是其中字符常量的一种。
 
  标识符,是所有根据C语言命名规则形成的有效字符序列,用以表达一个对象的名称。标识符可以被用作符号常量、变量、函数名以及C语言关键字等。
 
  符号,代码中除常量和标识符外C语言编译器可以识别的标志就是符号了。符号主要包括所有运算符和特殊符号。特殊符号介绍空格、括号()、逗号,、注释符(/**/或//)以及分号(;)、逗号(,)、引号(“”)等。
 
  层次二:表达式及函数调用
 
  表达式是用运算符和运算符连接起来、符合C语言语法规则的式子。有算术表达式、赋值表达式、关系表达式、逻辑表达式、逗号表达式、条件表达式和函数表达式等。
 
  层次三:语句
 
  语句是C语言编译器可以编译执行的最小单位。一类是以分号为标志,包括变量声明、函数调用、赋值、空、复合表达式语句。一类是以一对{}为标志,称为复合语句。
 
  第四个层次的要素:程序
 
  包括主程序和函数定义。
 
  在按照以上层次划分来梳理和解析C语言代码的构成后,借助于逐级递阶的应用场景,遵循从简入繁的原则,按照知识逻辑的组织,分层次推出语言要素。等课程结束,一览全貌,一张完整的、结构清晰的知识体系图诞生。
 
  3.阶乘fac=n!(n=10)问题的设计
 
  实践证明,学生掌握语法结构、理解代码都不是困难的事情。困难在于遇到实际问题后,学生写不出程序代码。
 
  因此,从问题场景出发,展开分析并做出合理抽象,从程序语言语法设计出发解析与问题对接的线索,当两者之间相匹配时,水到渠成,问题自然就解决了。
 
  问题分解
 
  对于n!,当把n赋予具体数值时,可以看出,完整的数学表达式是:
 
  如果n=1,无需重复,结果直接等于1,其他情况(n>1)则需要重复后面的乘法,根据输入的n,重复(n-1)次,每次都是在原来乘积的基础上再乘一个与当前次数相关的数。此时,可选择延伸一个新的概念:应用程序=数据组织+数据处理。数据在内存中表现为存储空间,在程序中表现为常量或变量。于是,可以通过分析问题需要的数据以及数据需要的处理着手,用流程图把问题描述出来了。
 
  语法解读
 
  在学习循环的语法符号和基本框架时,可以把语法用如下图(图1)表示:
 
  于是,循环结构的语法从语义角度向问题流程图又靠近了一步,降低问题求解的难度。
 
  语言活用
 
  在代码实现中,灵活地运用语言丰富的运算符和表达式,可以给出一个问题的多种代码实现方案,而一个问题的多种求解或描述也为程序代码的优化提供了条件,可以在比较中选择更优化的代码。
 
  上述fac=n!(n=10)为例,用for语句可以表述为:
 
  (1)for(i=1,fac=1;i<=10;i++)fac*=i;
 
  (2)for(i=1,fac=1;i<=10;)fac*=i++;
 
  (3)i=0,fac=1;for(;;)if(i++<10)fac*=i;elsebreak;
 
  用do...while或while语句也可以有多种实现方式,不再累述。还可以用递归函数解决该问题,如下图(图2):
 
  intfac(intm)
 
  四、总结
 
  从实际问题切入,提出了以学生为本的一种教学内容设计思路,解决学生已有认知结构和教学内容之间的差距过大以及知识不能转换为能力的问题。实践下来,对于逐阶提升学生的实践能力、培养学生的学习兴趣以及学生自主系统地拓展都有很好的指导作用。
 
  参考文献:
 
  [1]沈军.程序设计语言类课程的教学思路研究[J].高等工程教育研究,2001(1):79-81.
 
  [2]何钦铭,陆汉权,冯博琴.计算机基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9):5-9.
 
  [3]汪应洛.系统工程理论、方法与应用[M].高等教育出版社,2004.
 
  [4]周光礼.培养理性的行动者——高等教育目的再思考[J].高等工程教育研究,2015,3:49-57.

    期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
      本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。


      【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

     
    QQ在线咨询
    投稿辅导热线:
    180-1501-6272
    微信号咨询:
    fabiaoba-com
    咨询电话:18015016272 投稿邮箱:zgqkk365#126.com(#换成@)
    本站郑重声明:文章只代表作者观点, 并不意味着本站认同。所载文章、数据仅供参考,使用前请核实,风险自负。
    部分作品系转载,版权归原作者或相应的机构   若某篇作品侵犯您的权利,请来信告知.版权:周口博闻教育咨询有限公司 
    Copyright © 2005-2023 . 期刊库 版权所有