议高校软件编程教学中的目的与方法
随着社会的发展,科技的进步,越来越多的高校开设编程语言类课程,特别是对于计算机类学科来说,编程语言类课程的重要性与日剧增,占的课时比例越来越大。本文就编程教学课程的目的与方法进行浅议。
一直以来软件开发编程语言类课程在大学计算机专业里占有很重要的一席,从经典的C语言,到时下流行的C#、Java等,甚至有些还开设了便捷化的图形化编程。到底应当如何提高编程语言类课程的教学质量,高效率地完成教学任务,培养出合格人才。本文从课程的目的和教学的方法进行探讨。
一、编程语言类课程开设的教学目的
这里所讲的目的并不是教学大纲所提的目的,教学大纲所提的目的过于细分,甚至有些过于“崇高”,笔者认为其目的分为三个大的方向:(1)培养软件编程操作类人才,通常称为程序员;(2)培养计算机研究类人才。其实这两类教学目的无非是培养操作实践类人才,或者是理论研究类人才。(3)培养计算思维,并应用其解决问题的能力。这个方向一般是非计算机专业的编程类课程的目的。
当然这三大方向只是不同的侧重点,它们并不是彼此割裂的,在很多高校里将第一方向作为第二方向的基础,即先操作实践后理论研究。同样,第三方向也是计算机领域的重要技能,它是第一方向和第二方向的基础。
1、教学方向一:培养软件编程操作类人才
以此为计算机编程教学目的的院校,大多是高职高专,甚至有些中职类学校。在这类院校里,学生毕业即面临就业,而编程操作可以说是他们“吃饭的工具”。如何使学生熟练掌握“工具”是编程教学的主要目的。一般来说,这类院校的编程教学有如下几个特点:(1)熟练使用软件。要求学生能够使用一些当前行业比较流行的编程软件(Visual studio、JDK等);(2)以任务驱动、项目驱动为主,跟实际应用结合比较紧密,有条件的院校直接让学生参与一些大型的项目制作;(3)校企结合,担任这些编程类课程的教师,往往是有企业项目开放经验者,这样能够更好地与企业接轨。
2、教学方向二:培养计算机研究类人才
大部分本科类院校以此为计算机编程教学目的。此类院校里,学生有可能进一步深造,或者做一些其它研究类工作。在这种情况下,学生学会编程主要是成为自己的技术手段,对信息技术相关的知识进行验证,或者为自己科研理论做实验实践。总的来说此方向的编程教学有以下几个特点:(1)理论化、系统化。编程课程往往是一个体系,从基础的数据结构到控制台类的语言,再到模块化的其他高级语言,由多门课程组成。(2)注重知识间的迁移与联系。例如,数据类型与存储工作原理相联系;多线程与CPU工作原理相结合;网络连接使用网络基础的TCP/IP协议去理解。(3)课程进度往往较快,不注重学生练习,而注重学生理解。一些实践类的操作一般是由学生自己的实践,遇到问题需要自己去解决。
3、教学方向三:培养非计算机专业学生的计算思维
在国内非计算机专业开设计算机编程课程的院校比较少,而在国外,这一类课程是作为公共选修课开设的,而选修此类课程的大多是非计算机类学生,最后这些学生在结课时往往能设计出比较有创意的程序,从而达到了开发学生计算思维的目的。
一般来说,国内大学都有计算机公共课,有些院校规定学生需要通过国家的或者地方的计算机等级考试。这些计算机公共课,本应该是培养学生计算思维的,而现在往往成为了一种应试教学,而非计算机专业根本就不开编程类课。
笔者在此建议国内的高校多开些非计算机专业的编程课,哪怕是公共课也好,当然编程语言选择上,最好使用图形化编程软件,例如:Scratch、Hopscotch等。
二、编程教学方法的探讨
近年来,有关于编程教学的方法很多,比如说:结对编程、任务驱动、演示练习、分组实训、项目驱动、发现式学习等等,甚至有些校企结合的院校直接将学生送入项目开发组学习锻炼。但在此笔者强调一点,所谓的教学方法必须能够因材施教,与教学目的相结合。
在此不妨将学生的素质能力分为高低两个层次,大致对应于本科类和高职高专的学生,但是这种界定也不能太过于绝对,主要是针对学生的状况而言。对于素质能力相对较低的学生来说,主要的教学方法是多动手,因此像任务驱动之类是比较好的选择。而对于素质能力相对较高的学生来说,则要侧重于多动脑,教师主要是引导学生去发现,普通的演示练习教学法即可,在学生达到一定程度时可以使用项目驱动来检验教学成果。
在此,还要强调的是学生的素质能力一般来说是正向发展的,这也是我们教育的努力方向,因此我们的教学方法并不是一成不变的,而是要随时根据学生的情况作出相应的改变。
总之,作为编程教学的教育工作者,我们需要自身有良好的素质基础,多参与一些企业类的项目,多扩展自己的计算机知识面,最好能够融会贯通。而且更需要了解编程教学的目的,学生的基本素质情况,以及整个课程体系,只有这样我们才能够因势利导、因材施教,高效率、高质量地完成教学任务。
【作者简历】
朱兆松,男,南京特殊教育师范学院讲师,主要研究方向:计算机软件开发。
下一篇:试析计算机应用与软件工程建设