“知行合一”的高职计算机教学观

“知行合一”的高职计算机教学观
一、 楔子
1941年9 月德国法西斯逼近列宁格勒(今 圣彼得堡)城外,他们只需要一个冲锋就可以冲入列宁格勒。朱可夫大将被委以保卫城市的重任,在他到职后的第一次军事会议上,他和他的参谋长有如下一段对话。
……………
朱可夫:“我命令,马上从第23 集团军中抽出部分兵力调归第42 集团军指挥,以加强乌里茨克和普耳科沃方向上的防御。”
参谋长:“可是,司令员同志,第 23 集团军防守的卡累利阿地峡,也承受着巨大的压力,这样,会削弱那个地段的防守力量,万一……”
朱可夫:“别讲废话!一个普通的作战参谋都明白,每一次调动部队,都削弱一个地段,加强另一个地段!到目前为止,乌里茨克、普耳科沃是最危险的地段,是全线防御的重点,不加强这里加强哪儿?如果以后卡累利阿地峡成了重点,再调部队去加强它!”
…………

二、“知”与“行”的关系
计算机教育从培养职业IT人员的角度,可以分为“知”与“行”两个方面。一是对计算机系统本身的认识,即所谓“知”;二是将计算机技术运用到实践中,即所谓“行”。
虽然,最终的“知”是蕴含在“行”中体现出来的,即所谓的“知行合一”的教育结果是体现在一个被教育者身上。但是,“知”和“行”的教育在过程上是要分开进行的。现代化的社会分工可以提高效率一样,现代专业教育也将学习内容分解设置为多门课程来完成,计算机专业同其他专业一样,也有相应的专业课程体系。
对计算机系统本身的认知的“知”的教育的,首先要强调的是对整个学科体系结构系统性的掌握,现代建构主义的学习理论说明,学习者只有将外在的知识结构(系统化)内化为自己的知识结构,才能有效记忆并有效的运用,这也是学习的结果。其次,才是对学科体系集体内容的全面掌握,由于计算学科体系的庞大(内容)和精深(难度),这里存在一个如何分门别类,循序渐进的掌握的问题。
任何专业技能行为都是在一定的时、空环境展开的,它呈现出一种时间上的次序。因此,运用于实践的“行”的教育则强调过程性,即工作过程(工程)的掌握。在邹欣老师的《构建之法》一书中,将这些内容被提炼成一个概念——“流程”——加以概括。
当前,我们的计算机专业教育状况侧重于“知”,而轻视“行”。看看我们本科的专业课程体系(见邹欣老师的博客“现代软件工程 习而学的软件工程教育”),其中大部分经典课程如:操作系统、数据结构、……等都是围绕着计算机系统结构的某一方面进行教学,都是“知”的知识。而关于行的课程只有少数的软件工程、软件测试等少量课程而已,(作为开发工具的语言课,从某种意义上可以算作“行”的课程),而事实上,从现代计算学科的发展上看,当前人们已经开拓了很多指导行动过程的“行”的方面知识,如:重构、XP、敏捷、……,这些内容有些并没有有效地纳入专业课程教育体系之中。

三、个人的专业教育历史经验反思
我个人是从1997年开始从事计算机专业教育工作的。从那时至今,一直从事计算机应用专业的教学工作。从入行到现在,我们的专业教学大约可以划分为四个阶段:
第一阶段,拿来主义。1997年刚刚升格为专科的我们,开始的教学计划,就是拿来主义,将其他本专科学校的专业教学计划拿来,删去难学的课程(比如,编译原理),以及所讲授课程中学生较难掌握的章节,形成我们自己的教学计划。
第二阶段,系统化和可操作化的改进。从2001年到2005年,随着第一阶段教学经验的积累,我们开始考虑如何让学生有效掌握知识,如何有效应用知识的探索,即所谓的高职教育特色。这一阶段,我们专业开设了大量的如PS等所谓的实用课程。但从软件开发的角度,值得一提的是在我的倡导下,开设了《软件工程》和《计算机导论》两门课程,一个是用于指导学生的开发实践,另一个则是我作为一个系统思维的倡导者的执拗。后来,随着自己对教育教学理论的学习,知道了现代建构主义的认知理论正与系统思维暗合。
第三阶段,引入高职的实践教学方式。从2006年到2014年,我们与北大青鸟教育培训机构开始校企合作,开设北大青鸟班,学习他们软件开发实践教学的方式,并将之引进我们的专业教学工作中。青鸟的教学计划强调“行”,而轻视“知”,这也与他们作为大中专计算机专业毕业学生做岗前培训的企业战略相适应。因为“知”的教育学生在校已经完成。刚刚开始时,我们将青鸟的“行”的教育与我们的“知”的教育结合,我们专业曾经只是开设了一届的专业方向的两个班(软件081和082),取得了很好的教学效果。然而,由于教学过程的滞后性,2009年就莫名其妙地没有坚持。
第四阶段,彻底倒向青鸟模式。从青鸟模式开始,其他的培训机构如:达内……等各种合作的“企业”粉墨登场,像“零基础学习Java”这样狗血的企业宣传噱头漫天飞舞,我们专业的一个个专业课程数据结构、操作系统……等被不断攻陷(砍掉),最后在2014年《计算机导论》这最后一门关于“知”的课程也没有了。作为一名负责任的教师,我只有在课堂上将这些需要的基础知识,以课外参考书籍的形式提供给我的学生。

四、“知行合一”的高职计算机教学
诚如一些反对者所言,高职教育存在两个时间上的困难,一是相较于一般本、专科教育,高职教育的绝对学制偏短,三年学制,还要去掉顶岗实习和毕业设计时间,整个教学时间只有4.5个学期(我们这里)。二是需要加强职业技能的教育(即所谓的操作能力),这会使得本来少的可怜的时间更加捉襟见肘。但这并不是没有解决之道,下面我就从“知行合一”等三个方面,提出我的方案:
1、 关于“知”的方面
诚然,高职教育的时限使得其无法开设像本科那样的堂堂之阵系列体系课程(见邹欣老师的博客“现代软件工程 习而学的软件工程教育”),具体原因见前文。我们可以尝试一下螺蛳壳里做道场,将整个计算学科体系的知识合成在一门课程里面完成,有人会说,这不就是《计算机导论》课吗?对,就是《计算机导论》,只是针对高职的特殊情况开设一门加强版的《计算机导论》,说是加强版是要将过去每周四个学时的一个学期纯理论课程(我过去就是如此讲授,使用的是祁亨年老师的教材),拓展为每周六个学时两个学期的课程,多加的两个学时用于上机实验如果嫌课名不好,可以改为《软件技术基础》,《程序设计基础》。卡
当然,这门课还可以有另外一种讲法,就是围绕一门语言的编译、管理和执行讲授,《深入理解计算机系统》就是如此。如果嫌课名不好,可以改为《软件技术基础》,《程序设计基础》等名称,内基梅隆大学的计算机导论教材,翻译到国内就是那本著名的《深入理解计算机系统》。在我们11级有一个自主能力很强的同学,就是通过我当时讲授的《计算机导论》课程为起点,通过《深入理解计算机系统》, 《C++语言》以及PHP开发工具的学习,而成功完成了专业教育,而入职腾讯,值得注意的是,后面的学习内容并不在我们提供的专业教育范畴内。
这两种讲授方法各有利弊,围绕计算体系结构直接讲解,内容相对枯燥,学生不易接收,而且对教师的体系把控能力,“深入浅出”讲授水平,也是一个考验。因此,我这里提出加入必要的实验课程,来提高加强对学生及时反馈学习效果。用一门语言贯穿计算机系统体系的方方面面来理解计算机系统,可以让学生通过语言的执行,快速获得学习效果的反馈,而且,随着知识内容增长,让学生的知识“生长”出来,这要求教师不能仅仅讲授语言的语法,还要讲授语言背后涉及的计算机体系知识,能将它上升到一个体系的高度。前几天在我们的教师助教微信群里,有老师就C语言来讨论这个问题。因为,不明白课程体系和课时量的安排,就没有插嘴。特别说明一下,第二种讲法的课程名称,一定不要使用《××语言》或《××程序设计》这样的课程名称,以免引起不必要的误会。
2、 关于“行”的方面
就是工程过程的演练,国内这方面的教材首推邹欣老师的《构建之法——现代软件工程》,好像我还没有接触到第二本类似的好教材,不知是不是与大家的知识产权保护意识提高有关。
与前面关于“知”的课程一样,也建议在高职《软件工程》课程开设为一周六个学时(其中两个学时的实验),两个学期的课程,用这门课程统摄“行”的知识教育。也许有反对意见认为邹欣老师的这本教材是本科教材,不适合高职学生,这种担心是没有必要的:第一,工程过程主要教授学生做事情的工作步骤、操作流程,没有什么难以理解的内容;第二,将教学时间适当延长,可以强化主动性较差的高职学生的学习效果。
3、 关于“合一”的“一”
前文我提到将“知”与“行”合到一个学生身上,那在他身上体现的就是这个“一”——一个开发工具的掌握。这种掌握的要求是全面而精通的,可以让他们走向职场就能得到一个工作岗位,也就是吴军老师在其第133封《硅谷来信》中所提到的“一碗小米粥”。
诚然,高职学生在学生素质,教学时间、教师水平等多方面,都比本科学生要差一些,在竞争日益激烈的人才市场上,如果我们各个方面都比本科学生差一些,我们只有喝“一碗热开水”的份了。如何为我们的学生争取到一席之地,就需要相应的策略,这个策略就是“专”,就是让我们的学生专精一个开发工具。市场上可能有十家公司,他们要求不同的开发工具,假如,只有一家公司需要.NET的开发人员,我们培养的.NET方向的毕业生,就可以胜任它的工作,尽管我们的学生在别的方面都比本科的学生差。
从这个要求反观我前文提到的“知”,可以得出两点对这个方面的要求,一是具有对知识体系整体的掌握,否则,“知”的学习就是失败的,记不住,没法运用。二是具有与精通开发工具这个“一”相适应的知识深度,高职学生能力较差,教学时间偏少,较深的内容难度大不易掌握,费时较长。
对这个要求精通掌握的开发工具,最好开始于第一、二个学期,而且其后续程序框架库内容要不断线地贯穿到底。其语言语法的掌握要全面,一些高级语法内容如反射、设计模式等都应让学生掌握。我们这里由于将“知”的教学一砍了之,导致作为二流课程(编程语言)的开发工具课程的教学事倍功半,步履维艰,只能提供“一碗热开水”,何以“续命”,只有仰赖学生自己的主动精神和正确的认知能力了。
对这个要求精通掌握的开发工具,开始的早也方便在教学中安排大量的时间,展开对它的“刻意”的练习,而不让这种练习滑向学生的潜意识,对专业的“知”的认知则必不可少。
最后,就是合理地安排一些专业的辅助课程,如:数据库、HTML与XML等,这样,加上必要的素质教育的公共课程,高职教育那点可怜的教学时间也就所剩无几了。对于那些如PS般的边际课程,既浪费教学时间,也浪费学生宝贵的学习精力,还是抱着宁缺毋滥的态度待之。

一些题外话,高职计算机专业的教学话题,是一个争论不休的话题,这涉及多个角度和多个侧面,它也是我职业生涯绕不开的话题,现在表述的只是截至目前自己的专业认知结果,而且由于表述能力有限,一些地方挂一漏万,而另一些地方意犹未尽,其目的一方面对自己当前的专业认知成果做一个总结,另一方面为我即将开始的一个系列——计算机导论——随笔做一个开始的铺垫。
《计算机导论》是我近十年专业教学的主要内容,尽管已经不存在于当前的专业教学课程计划中。但“学生的需要,就是我们教师努力的方向”,因此我将修改我的教案发表在网上发布。由于是第一次开始这件工作,我的速度可能比较慢。

posted on 2017-02-25 21:00  特里卡尔  阅读(309)  评论(3编辑  收藏  举报

导航