5点创新之处

本课程从哲学、思维、知识、认知、能力等多方面进行解构,课程教学中体现多个创新思路,国内外无明确同类思想或语言描述,主要创新点如下:

1体现编程思想(世界观)->方法(方法论)->规范、规则的统一核心思想。

体现思想不是本课程的噱头,而是核心。学习知识为求道,求道是为了更好的服务自身与社会,离开了这点学习死知识没有任何价值。但寻道是有规律的。在课程中,我们不仅要展示出在解决将现实世界问题转化成计算机世界的问题过程中,人们认识表达的不断反复、逐步深化的道,还要告之解道的方法、解道的技术。这也就是课程通篇所表现的“面向过程、面向对象”的世界观,有助于理解与合作“环境建模”方法论和经常出现在教学中类似于 “门当户对、抛绣球、芝麻开门” 这种形象化表达方式的语法应用规则。这些思想、思路、步骤的完整融合是创新价值之所在。

 

2独立创新的知识体系结构。

基于对多所大学的调研,发现对“面向过程的程序设计”(各校的课程名可能有区别,大都称为c/c++程序设计)课程的教学知识体系都是以专家认可的难易程度来解构知识的逻辑顺序,“指针”、“函数”、“文件”这些承载面向过程、面向对象思想的概念由于看起来相对较“难”,所以安排在教学最后,待将C/C++语言的基础语法等基础打牢之后,才能讲述。我们认为这种认知是错误的,它严重地损害了对这门基础学科的本质、精髓的认识和掌握,人为地造成了学生学习的片面性、局限性、抽象性,甚至主观造成知识传授的不严谨,影响正常教学。

 

如:所有教材“数组”之后才出现“指针”,但“数组”作为函数的参数进行传递,其实质就是“指针”在传递,如果这点不讲清楚,就会发生认知上无法克服的困惑,本来是正确的知识,可在学生眼里就会直观地看到错误的现象:错一,形参可以是常量;错二,一个模块可以方便地修改另一个模块里的内容。事实上,由于在知识体系的认识上的偏颇,上述的错误将无法避免,学生的认识将反复地出错,失去信心甚至放弃。

 

经过详细地研究和分析,我们提出新的知识传授体系结构:基于对现实问题域的分析提出模型/模块设计,将函数/文件纳入模型/模块并从课程开始引入,在不断的问题需求中,逐步加深对函数/文件各层面的认识,直到课程结束。

 

另外,调整的知识传授体系中,在基本的数据类型之后展开指针教学。这样的安排,是将数据和数据地址作为一个事物的不可分隔的内因和外因同步引入,顺应了科学的认知结构,也为数组、字符中、结构体等构造类型的教学提供了强有力的基础。这种结构完美地解决传统教学体系中诸多瓶颈,经过实践检验证明这种结构科学有效力。

 

3体现内容与教学方法的统一。

学而不思则罔,思而不学则殆,学思不行则费,我们创新性提出“111学思行三位一体的教学模式”,并落实在具体的教学中。每个章节不仅有理论教学内容,还有思维训练和实验,其中思维训练是从理论到实践实验的一个中间过渡环节。思维训练题从内容的编排上有同型题、变式题、提高题、综合题;而思维训练课的形式是以学生上讲台答辩、讨论、交流为主。从认知心理学的角度来看,这一切都是为了促使陈述性知识向程序性知识转化。

 

4结构的本土特色。

以人为本也应该是教学内容呈现的原则。中国人的文化符号是水,中国的文字、书法、绘画、经义讲究的是润,中国人的意象很大程度来源于悟,课程教学如果仅采取案例式,或者经验式就不符合中国学生的特点(国外课程特色)。但一味地追求纯粹的知识结构就会丧失这门课程注重实验的特点(国内课程特色)。

 

综合中国学生的认知特点和本学科特点,课程教学进行了如下设计:第一,按知识结构章节划分而不完全按案例进行授课;第二,章节中知识点的划分不纯粹按所谓的专家定义难度等级,而按照知识探索的规律,按学生认知的思维递进;第三,提出一个典型主题案例和多个小型应用案例,在不同的知识阶段实现不同的功能,而同时提出使用的局限,自然促使学生对知识结构的不满,进而提出解决问题的新途径和新方法,最后实现功能完善系统。

 

5教学内容背景的扩展性。

扩展性是为了更好地体现理论与实践的统一,不是为学语言而学语言,需扩大知识面,不应局限于纯粹的编程语言环境,适当地引用具体的应用背景,比如说,图像的知识及处理,声音的知识及处理,甚至是嵌入式的一些知识与处理,这些知识的引入不仅拓展了同学们的视野,同时也给同学们一个切实的应用环境体验。为了这种扩展,适时地简要引入了分析软件如MATLAB,引入了作图软件如VISIO,这些知识在我们来看,跟C/C++语言本身一样重要。