强化计算思维培养的“软件开发技术”课程改革
2021-12-28高枚王睿智丛培盛
高枚 王睿智 丛培盛
摘 要: “软件开发技术”课程是为理工类非计算机专业学生开设的公共基础课。为适应新时期人才培养需求,需要对原有的以传授计算机理论知识为主的教学内容和单一的教学模式进行改革。针对计算机基础教学的特点,提出以强化计算思维和应用能力培养为目标的改革方向,详细探讨了新的课程知识体系构建、教学内容的组织实施,以及过程化考核方法。教学实践表明,改革提升了学生对课程的兴趣,促进了学生应用创新能力的提高。
关键词: 计算思维; 应用能力; 软件开发技术; 过程化考核
中图分类号:G642 文献标识码:A 文章编号:1006-8228(2021)12-84-03
Abstract: "Software Development Technology" is a public basic course for non-computer students majoring in science and engineering. To meet the needs of talent cultivation in the new era, it is necessary to change the teaching content which mainly consists of theoretic computer knowledge and the unitary teaching mode. According to the characteristics of computer basic teaching, this paper proposes the reformation objective of enhancing computational thinking and application ability cultivating, discusses in detail the construction of new course knowledge system, the organization and implementation of the teaching content, and the process assessment method. The teaching results suggest that the reform improves the students' interest in the course and their application and innovation ability.
Key words: computational thinking; application ability; software development technology; process assessment
0 引言
“軟件开发技术”课程在我校已有二十余年的开设历史。随着计算机技术的快速发展,计算机技术与其他专业的融合日益深入,各专业对学生的计算机应用能力提出了更高的要求。传统的教学内容和培养目标都已无法适应新时期人才培养的需要,课程改革势在必行。本文将从教学目标、课程知识体系、内容组织实施及考核等方面对课程教学改革进行具体介绍。
1 教学目标和课程内容体系
1.1 以计算思维为导向定位教学目标
计算机技术的快速更新换代是计算机基础教学始终面临的挑战。虽然计算机基础教学具有很强的应用性,但仍然需要教授一些相对稳定的、基础性的以及让学生长期受益的内容 [1]。而计算机科学与技术中所蕴含的计算思维的思想和方法则不会随着技术的换代而过时,这些正是稳定的、能使学生长期受益的“授人以渔”的方法,是信息世界普适、通用的思维方式。随着工程实践的复杂化、系统化和社会化,这些可迁移的“通用能力”在工程人才的能力结构中将会占据更加重要的地位[2]。因而,我们根据“软件开发技术”课程在整个公共基础课程体系中的定位,将面向应用的计算思维能力培养确立为主要教学目标,重点培养学生的如下能力。
⑴ 培养学生进行问题求解、数据抽象描述与表达的能力;
⑵ 培养学生对应用系统进行需求分析、总体设计和系统实现的能力;
⑶ 培养学生应用计算机技术解决本专业问题的应用创新能力;
1.2 重构课程内容体系,突出计算思维和应用能力培养
对知识的兴趣的第一个源泉、第一颗火星,就在于教师对上课时要讲的教材和要分析的事实所抱的态度[3]。过时、落后的教学内容无疑会扼杀学生的学习热情,只有保持教学内容的先进性,才能吸引学生对课程产生兴趣。为此,我们编写的教材从教学目标出发重构课程内容体系。新内容体系舍去泛泛而谈、一般性了解的内容,如操作系统、软件工程等计算机专业基础知识;突出了更具应用价值、利于提高学生软件开发能力的相关内容。如图1所示。
新内容体系主要包括三大知识模块:面向对象的设计基础、数据结构与算法、数据库应用开发技术。在三大知识模块之上,通过一个基于数据库应用的系统开发实例将几部分内容进行有机结合,提升学生掌握知识的层级。即,由知识的学习和理解上升到运用知识解决实际问题的高度,突出了应用能力培养的目标。为保证技术与工具的先进性,课程选用C#为语言工具,以VS.NET和SQL SERVER数据库为实践平台[4]。
2 内容组织与教学实施
通过教学实践我们认识到:学生对课程兴趣的持久化源于在学习过程中学习能力所及前提下获得感的不断被满足。为此,在教学内容的组织和实施中我们力求兼顾学生的兴趣和能力设计教学,以保证教学目标的顺利实现。
2.1 以应用为目标选取教学内容
非计算机专业的计算机基础教学不同于计算机专业教学,强调应用性,主要目标是让学生获得一种今后可以更好地利用计算机解决专业领域相关问题的计算思维能力。而“软件开发技术”课程是基础教学三层次中应用层次的课程,其教学内容相较于同一层次的其他课程来说更加宽泛,涉及计算机专业的几门核心课程。怎样将多门课程的内容有效组织在容量有限的一门课程里呢?如何取舍是关键。
我们围绕软件应用开发这条主线,以应用为目的进行内容选取。根据计算机基础教学的特点和非计算机专业的学生能力,舍去与应用关系不大泛泛而论的内容,而与某一领域更深层应用相关的内容也不宜组织在教材中,但会在授课时给学生一些引导,使其在需要的时候,通过自主学习掌握相关内容。这样选取组织内容,使得所有知识模块皆围绕应用开发的目标展开,主线明确,形散神聚。
2.2 理论与实践相互支撑,螺旋上升开展教学实施
为降低学生感知上的难度,同时不断有惊喜的获得感,持久化学习兴趣,我们力求做到各知识模块的理论知识与开发实例的实践应用相互支撑,相互促进,螺旋上升组织教学。
⑴ 按what-why-how顺序递进组织内容
面向对象的程序设计涉及大量抽象概念,如果在这一相关模块集中铺陈介绍这些概念,学生很难理解,也会因此丧失学习兴趣。为此,我们按照“what-why-how”的逻辑顺序分阶段展开这些概念。首先让学生快速建立起面向对象的思维框架,即这是一种什么样的框架。在这个模块中只需先掌握这种框架下最基础、最核心的概念及其表达;随后,在数据结构模块中通过对框架的反复运用达到对这种思维框架的熟练掌握;再后,结合开发实例模块对为什么用、如何用一些难点概念和特殊方法解决实际问题再做更深入具体的介绍。比如,对特殊的访问权限、静态类、静态方法这些较难抽象理解的概念结合应用介绍,就会使学生对概念的认识不仅能做到知其然,还能理解其所以然。
⑵ 从抽象到具体展开数据结构模块,深入理解计算思维本质
数据结构的实现和应用最能体现计算思维的运用,因为计算思维的本质就是抽象和自动化,而通过数据抽象建立数据的对象模型恰恰就是数据结构要解决的问题。在这一模块中,我们首先利用ADT建立数据对象模型,使学生从抽象的顶层认识某种数据结构;然后再结合具体应用实现数据结构以理解问题求解的算法;在对常用数据结构的内在逻辑已经熟练掌握的前提下,再通过实用类的应用简化程序设计的复杂度。这样逐步使学生能驾驭的程序规模不断扩大、应用能力不断增强,学习过程中不断体验获得感。通过这个知识模块的训练,强化了学生问题抽象、建模,进行递归思维和折衷处理等计算思维能力。
⑶ 以应用开发为目标组织数据库模块
“数据库”作为计算机专业的一门核心课程,其理论内容非常丰富,应用层次多样。但在我们这门课程有限的知识体量中只能选择一个合适的角度选取组织内容。我们以设计数据库应用程序为目标,按设计主线组织这个模块。先使学生掌握数据库从概念设计到逻辑设计,再到物理设计的基本概念、工具、方法以及数据库操纵的SQL语言;进而与面向对象的程序设计技术结合介绍ADO.net数据库访问技术,实现前后台的数据访问交互;再在开发实例中进一步提升从问题域中抽象数据及数据类之间关联分析的能力,使学生掌握面向对象程序设计与数据建模之间的统一。
通过对各知识模块理论知识的理解与开发实例的实践应用相互支撑来组织教学实施,使得知识难点得以分散,学生对概念的接受水到渠成,驾驭能力逐渐增强,从而持久保持学习课程的兴趣。
2.3 基于开发实例的工程思维构建,进一步提升思维层次
如陈国良院士所指出的:计算思维教育的目的是培养一种思维习惯[5]。我们希望在更高层面上培养学生的这种思维习惯,帮助学生构建更高层次的系统思维、工程思维,进一步提升知识的应用能力。为此,在三大知识模块之上设计了开发实例模块。通过一个基于数据库应用系统的开发实例将几个模块内容有机贯穿起来,运用软件工程思想,设计实现这个应用系统,使学生学会从全局分析问题、把握目标,掌握计算思维如何通过抽象和分解进行复杂系统设计的过程和方法。
⑴ 按软件体系结构分层部署
突破直接编写窗体事件实现数据库访问那种局部解决方案的局限,按照软件开发的要求,从认识事物的全局出发,将整个系统划分为数据存储层、数据访问层、逻辑层和表示层四层体系结构,分别完成数据存储、访问、控制和界面表达的功能。如表1所示。四层体系架构反映了各层次要素之间的一种横向联系,帮助学生跳出孤立考虑问题的局限,学会正确分析事物间相互联系和作用的关系,更加全面地认识问题。
⑵ 多层次工程思维构建
为便于项目管理,从系统功能角度将系统划分为多个子模块,每个模块组织在一个项目文件夹下,对应一个命名空间;模块内部涉及实体类、控制类和窗体类等多个层次的管理。四层体系结构划分和多模块项目组织管理,纵向思维和横向思维相互交织,需要能够进行立体层次思维和总体功能把握。在系统构建实现过程中,需要明确各层次要素的作用、每个层次要素与其他层次要素的对应及相互作用关系,从而抽象出类数据、方法及其访问属性和其他属性的正确表达。像诸如静态方法的运用、类的public访问属性的使用、哈希表的应用、自定义命名空间的意义等等难以抽象理解的概念、方法,通过在实际开发中解决应用问题得到了具体的诠释,这也加深了学生对前面所学理论知识的进一步理解。
2.4 全方位的过程化课程考核
课程采用过程化考核。课程评价由平时成绩、期中考试成绩、期末考试成绩和项目开发大作业共同构成。平时成绩包括了理论课和上机实践课的考勤及每个模块中布置的作业,而这些作业都要求学生将调试过的程序在指定日期前上传到我们自己的网站;期中、期末考试均采用上機考试方式,目的是以考促练,促使学生重视平时的实践训练;项目开发大作业考虑学生能力的不同,提出分层要求,完成较高要求的可通过申请项目答辩获得一定加分。这种过程化考核规范了过程管理,一定程度上保障了教学实施效果。
3 结束语
本文详细探讨了“软件开发技术”课程改革的教学目标、新课程内容体系的构建,以及围绕教学目标如何组织实施教学的方法。从教学过程和课程考核结果来看,改革取得了一定的效果,体现在学生学习过程中兴趣的持久性和考核中反映出对知识运用的能力上。部分学生还通过课程学习,激发了进一步深入学习的兴趣,在后续参加的不同层级计算机应用能力竞赛中获得了不错的成绩,也从侧面反映了我们课程改革的效果。
虽然课程改革初见成效,但尚有许多可以改进、完善之处。比如在考核中如何提升项目开发的实效,让更多学生在不同层面受益更多;在应用开发中,将更先进的面向对象的分析方法引入系统设计,系统实现中通过通用类来优化设计,提高系统开发效率等等。这些改进都将进一步提升学生对计算思维的深入理解,也是我们需要努力挖掘梳理的内容。
参考文献(References):
[1] 教育部高等学校计算机基础课程教学指导委员会.高等学校计算机基础教学发展战略研究报告暨计算机基础课程教学基本要求[M].高等教育出版社,2009.
[2] 钱进.推动工程人才核心能力培养有效落地[J].中国高等教育,2021.6:48-50
[3] B.A.苏霍姆林斯基.给教师的建议[M].教育科学出版社,1984.
[4] 丛培盛,龚沛曾.计算机软件开发技术与应用[M].高等教育出版社,2012.
[5] 陈国良,董荣胜.计算思维的表述体系[J].中国大学教学,2013.12:22-26