邹韬奋先生在《职业教育研究》中说,“总言之,职业教育乃准备能操一技之长,从事有益于社会之生产事业,籍以求适当之生活,乃教育中之一方面”。我同意这种观点。所以我觉得高职院校软件技术专业的培养目标应当是“培养具有扎实程序设计、实现、调试能力,掌握一项软件开发技能,有一定实践经验与理论基础的具备较高综合素质的软件开发与运维人才”。其中的核心是“程序设计、实现、调试能力”。所以问题的核心是如何培养这项能力。
在我学习程序设计,还有观察周边小伙伴学习程序设计的时候,我们遇到的问题主要有以下几个:1、一学期一门课程,学完后以后没有课程衔接,等到毕业的时候就忘的差不多了;2、学完之后无法做出有趣的东西,尤其是学的C语言,渐渐觉得难、枯燥、没意思,就不想学了;3、程序设计课程的内容实际是一门编程语言的学习,而不是程序设计;4、基于一门编程语言学习完程序设计后,对于学习一门新编程语言帮助不大,感觉还需要重头学习一遍编程语言;
知识可以通过背诵记住,但是如果没有理解并且长期不使用,就会被大脑丢弃在很难找到的地方。能力只有通过不断练习,长期使用才能不断掌握并且获得提升。程序设计能力的培养,应当是一个持续的过程。因此,我觉得可以连续四五个学期都开设程序设计的课程,课程难度循序渐进。比如可以开设《程序设计入门》,《程序设计基础》,《程序设计进阶》,《高级程序设计》这样四门课程,分布到四个学期里。
关于问题二,个人觉得可以使用一些学完立即就可以做出软件的编程语言来作为程序设计课程的语言。比如:Python,Java,C#。这样,学生学习的过程中就可以结合一些具体项目来学习。比如我会提前写好一个游戏,把其中学生未学习到的部分封装好,把需要学生完成的部分隔离出来,让学生自己去完成。这样学生就能立马体会到强烈的成就感,就会愿意继续学习,即使遇到困难,也会有更多的学生愿意去努力克服。
其实程序设计课程的核心应该是如何深入理解问题,如何设计解决方案,如何实现解决方案,如何调试解决方案,而不是一种编程语言的语法。而我在大学里学习过的课程几乎都是编程语言的教授。编程语言是用来进行程序设计的工具,它很重要,但是不能将它和程序设计混为一谈,更不能让它掩盖住了程序设计。所以个人觉得程序设计课程应当弱化编程语言。
最后,程序设计课程无法脱离编程语言,因为目前的计算机还无法理解人类语言。但是程序设计课程中的编程语言讲解应该是关于编程语言根本核心概念以及共同特性的讲解,而不能只见一斑不见全豹。比如,我们用Python讲程序设计,我们在讲语法的时候,不是说条件语句这么写,而是说,在程序设计中我们常常需要用到这种结构的语句,叫条件语句,用来控制程序的执行流程,他一般有以下几个组成部分,在Python中它是这么写的。这样对于学生学习其他编程语言会有很大益处。
另外,高职院校的学生学习成绩一般不太好,尤其是很多同学的语文和数学不太好,这从一定程序上说明他们的抽象能力以及逻辑思维能力不够强,这就决定了如果我们一上来就讲抽象的东西,他们无法接受。而语言实际上就是较抽象的东西,所以我们现在并没有先让学生学习编程语言再学习程序设计,我们先基于图形化的编程语言Scratch讲《程序设计入门》,之后再开始讲基于Python的《程序设计基础》,介绍编程语言的基础语法和基本的程序设计思路。
我不是教育专业出身,计算机也是个半吊子,只是觉得教育是一件很有意义的事情,做这件事能让我的人生有意义,于是投身在一所高职院校工作。这是工作后的一些思考和总结,欢迎大家批判。