拓宽基础,强化实践,程序设计语言类课程教学的探索与实践

发布时间:2019-08-07 来源: 幽默笑话 点击:


  摘要:程序设计语言是高等学校计算机专业本科教学计划中不可缺少的基础课程,由于语言种类多、发展快、实践性强,如何在有限的课时内让学生系统地掌握程序设计语言的基本原理、具备初步的编程能力,是该类课程教学面临的一个主要挑战。本文介绍北京交通大学在程序设计语言类课程教学方面进行的研究性教学与实践性教学相结合的探索与尝试。
  关键词:计算机教育;程序设计语言类课程教学;教学改革;研究性教学;实践教学
  中图分类号:G642 文献标识码:B
  
  1程序设计语言类课程教学的问题
  
  程序设计语言的研究与开发一直是计算机科学领域的核心问题之一。事实上,信息技术领域的任何新技术与新方法都离不开程序设计语言的表达和实现,多名“图灵奖”获得者都是因为在程序设计语言方面的开创性成果而获奖。研究型大学的计算机专业本科生不仅应掌握特定程序语言的应用,更应了解不同类型程序设计语言的理论基础及其背后所蕴涵的程序设计方法学。
  我国绝大多数高校计算机专业方向的本科生教学培养计划中安排了程序设计语言的教学任务。与西方发达国家的高等院校相比,程序设计语言教学方面的突出不足之处主要表现为:
  (1) 程序设计语言的教学在有限的本科生教学课时中占用了较大比例,开设了如C、C++、Java、C#、Web程序设计语言、脚本语言等课程,设置零散,缺乏系统性。
  (2) 程序设计语言的教学大纲侧重语言的语法教学,忽视程序语言设计的理论基础。学生缺乏研究和开发新型程序设计语言的能力,与研究型大学的学生培养目标有较大差距。
  (3) 程序设计语言实例教学的效果不能令人满意。相当比例的计算机专业本科毕业生需要经过一段时间的编程训练后方能满足工业界需求。
  初步调研发现,我国计算机学科排名靠前的几所高校,如北京大学、北京航空航天大学、东南大学,开设了“高级程序设计语言的设计与实现”或“程序设计语言的原理与实践”课程,但这些课程大多是面向计算机专业方向的研究生。据我们所知,德国和荷兰等西方发达国家的高校在本科生层次上就已经开设了相应课程,并且将程序设计语言的教学任务分配到多个阶段。
  基于以上分析,我们认为,有必要在计算机专业本科生教学培养计划中增设程序设计语言的理论基础课程,适当删减程序设计语言实例教学课时,实现从程序设计语言基础理论到编程实践的系统化教学。
  以培养可持续发展的计算机专业人才为导向,本文探讨“研究性”教学与“实践性”教学相结合的“程序设计语言”课程教学的探索与实践。具体说来,在程序设计语言理论基础教学方面,归纳与整理几类程序设计语言的理论基础,并以代表性程序设计语言为例进行分析与讲解;在程序设计语言实践教学方面,保留“C程序设计”课程教学,但对已有的教学内容与方式实施改革。上述教学改革的目标是提高学生程序设计语言的理论水平,增强对程序设计语言的理解与应用能力,为后期从事计算机相关领域的研发活动夯实基础。
  
  2程序设计语言理论基础的研究性教学探索
  
  程序设计语言理论基础研究性教学遵循“三结合”的基本原则,设计和实施课程教学。具体说来,采用“授之以渔”与“授之以鱼”相结合、“演绎”与“归纳”相结合、“原理”与“实践”相结合的方式。
  由教授、副教授、讲师各一名组成本课程的教学小组。三名授课教师均长期从事计算机软件与理论方面的研究工作,在国内外学术期刊或学术会议上发表多篇高水平的研究论文。其中,一名教师负责讲授不同类型程序设计语言的理论基础,另外两名教师配合理论基础讲授语言实例。
  本课程以授课教师编写的讲义为主,并提供大量相关的参考文献。通常,程序设计语言的理论基础可按三种编排方式讲授,即按照不同语言的重要特征及比较、或者按照程序设计语言的基本结构及实现、或者按照程序设计语言的形式化语义讲解。基于近几年程序设计语言的研究进展,本课程采用第一种编排方式组织课程的教学大纲。
  (1) 分析与整理现有的各种程序设计语言,如C、C++、C#、Java、Ada、Lisp、Prolog等,归纳不同范型程序设计语言的特点与由来,绘制程序设计语言的发展谱系。
  (2) 整理与探讨过程式、函数式、逻辑式、面向对象式、并发式等不同范型程序设计语言的理论基础,结合有代表性的程序设计语言实例分析讲解。
  (3) 探讨新型程序设计语言的发展趋势,讨论开发新型程序设计语言的一般过程与方法。
  在实施课程教学时,采取教师讲授、学生演讲与报告、课堂讨论等各种形式的研究性教学方式。首先教师主讲先导性知识与理论基础,然后由教师指定相关文献,学生课前必须认真研读、准备课堂演讲与报告,老师和其他同学提问;学生无法回答或解释不清时,由教师进行疏导。学生准备课堂演讲与报告时,应能运用合适的研究方法,并结合具体程序设计语言进行分析与讨论。该教学方式将“学”与“教”互相融合,学生既是“学”的主体,又具有“教”的能力,即学习新知识并能清晰地讲授给别人。通过积极参与课堂讨论,学生必须积极思考教师或其他同学提出的问题,并进一步研读文献,锻炼“提问题”、“回答问题”的能力,提高做研究的素质。
  下面以“过程式程序设计语言的理论基础”与“过程式程序设计语言实例”为例,简要论述“学”与“教”相结合的研究性教学方式。
  (1) 由教师讲解过程式程序设计语言的基本思想、特点与理论基础。
  (2) 教师指定过程式程序设计语言中相关问题的研究论文,要求学生课后进行认真阅读,并安排不同的学习小组对这些研究文章进行课堂演讲与报告。
  (3) 教师与学生提出各种问题,要求作报告的同学进行回答。例如,教师让学生思考或回答“作为过程式程序设计语言的代表,C语言是如何处理控制结构、类型、存储”等问题,学生必须将所学的基础理论与C语言设计的基本思想结合起来才能回答此类问题。
  类似地,教师系统地讲授各类程序设计语言的理论基础,学生结合各自程序设计语言实例进行分析与研究。通过这样的由“一般”到“具体”或“归纳”与“演绎”相结合的过程,学生不仅可以深入理解面向对象、函数、逻辑、并发等各种范型的程序设计语言的理论基础、设计思想,还可以对不同范型的程序设计语言进行系统的分析与比较。更重要的是,已知的程序设计语言上百种,课堂教学中不可能讲授所有的程序设计语言,因此上述研究性教学方式有助于学生快速掌握新型程序设计语言。
  课程考核采用“课堂演讲与报告”加“课程论文”的形式,前者占40%,后者占60%。“课堂演讲与报告”布置一些经典的程序设计语言方面的研究论文,学生阅读并理解其中的关键思想,运用本课程讲授的各种计算机专业研究方法、并结合程序设计语言实例进行课堂演讲与报告,所有同学必须参与课堂讨论。“课程论文”则要求学生运用计算机专业研究方法学习和追踪某种新程序设计语言,或对当前主流程序设计语言进行评述。为了鼓励讨论,课程论文可以以研究小组为单位提交。但小组成员必须独立参加口头答辩,并说明自己在论文研究中的贡献。
  不难看出,上述课程教学将计算机专业研究方法潜移默化地运用到程序设计语言的教学中。通过本课程的学习,学生不仅要掌握程序设计语言的理论基础,增强对程序设计语言的理解与应用,而且应理解如何应用各种计算机专业研究方法。
  
  3程序设计语言实例实践性教学的改革与尝试

相关热词搜索:实践 拓宽 课程教学 强化 探索

版权所有 蒲公英文摘 www.zhaoqt.net