计算机基础教育课程的前沿性与实用性探讨

时间:2022-10-26 17:00:04 来源:网友投稿

摘要:本文从课程目标、教学理念和课程体系三个方面论述了计算机基础类课程的改革方向,并介绍了我系的一些具体措施。

关键词:基础课程;教学改革;课程体系;教学理念;课程目标

中图分类号:G642

文献标识码:B

1引言

面向高等学校非信息类专业的“计算机基础教育课程”,从1990年开始已经经历了18年的历史。这18年来,计算机基础教育直接为大学复合型人才培养做出了显著贡献,而且间接地促进了计算机技术在其他学科中的应用,促进了学科间的交叉与融合。

随着计算机技术发展越来越快,各个学科的研究和工程中对计算机技术的需求越来越广泛,计算机基础教育系列课程正面临着前所未有的新挑战:如何在基础课中体现前沿性与实用性?解决这个问题要从三个方面着手:教学理念、课程体系、课程内容。而教学理念在其中起着根本作用,它主导着课程体系与课程内容的设计。

我们既要重视基础,又要紧跟前沿,注重课程的实用性和学生创新能力、创新意识的培养。于是矛盾的关键就是,在非常有限的学时中,如何组织课程体系结构,如何选择和安排教学内容。我们传统的教学,讲究知识结构的严密性,内容的循序渐进,但是知识爆炸的时代对我们传统的教学观点提出了挑战。

非信息类专业的课程计划中,安排给计算机类课程的学时很少,有的专业可能只学两门计算机课:大学计算机基础、计算机程序设计基础。这样,我们规划课程内容的时候,既很困难,于是认为,在这么少学时的基础课中,不大可能介绍很多的前沿和实用技术。的确,在如此少的课时中,似乎也只能循序渐进地打一点基础,甚至连打基础都不够。但是,从另一个角度考虑问题,就会得出不同的结论。这个角度就是目标导向,就是首先要明确我们计算机基础教育的根本目的是什么,然后围绕这个目标来制定课程体系和教学内容。

2课程目标的变化

由于计算机科学和技术本身的发展,以及其他学科对计算机技术的需求的变化、人才知识结构要求的变化,导致了计算机基础教育课程目标的变化。

2.1学科交叉融合的现状

目前各学科的科学研究中,已经不仅以计算机为工具,而是将计算机科学与其他学科进行融合,出现大量跨学科的研究,这就对人才培养提出了新的要求:非计算机专业的学生不仅要能够以计算机技术为工具,而且要了解计算机科学,及其研究方法,能够从事跨学科的综合性研究。这就要求我们的课程中不仅要介绍技术,还要将整个计算机专业的主要研究方向、原理、方法、技术都做一个概要性的介绍,为学生以后的深入学习及交叉学科研究奠定基础、打开通路。

2.2从普及知识到复合型人才培养

由于计算机技术的日益普及、硬件价格的降低,使得计算机已经不再是专业人员的专属工具,而是进入了每个家庭,进入到了工作、生活、娱乐的每个角落。普及计算机知识的任务也已经下放到中小学,大学本科的计算机课程要以符合型的研究和应用人才培养为目标。因此不能再以技能和操作入门,而应该以计算机学科的全面介绍为引导,使学生对学科概况、研究方法、与其他学科的交叉融合关系有一个科学、全面的认识,作为今后学习的引导与基础。这也正式目前各校普遍将原来的“计算机文化基础”课改为“大学计算机基础”的目的。

2.3从基本编程技能到应用能力和研究能力

计算机在诞生之初,就是为了辅助人们进行科学计算的,到目前者仍然是计算机的最基本用途之一。但是由于科学的发展,各个学科研究的内容及方法已经发生了很大变化。对计算机技术的要求已经从最基本的,编写代码处理实验数据、用计算支持理论推导,发展为应用计算机技术进行复杂的模拟与分析。更有将生物学、数学与计算机科学相结合的交叉学科研究。相应地,对学生的能力要求,也由能够逐行编写代码形成中小规模计算程序,发展到需要利用平台、工具、软件包进行更为复杂的建模与分析。

我们传统的基础教给学生的逐行自己编写代码,效率与可靠性都低,不可能开发真正有用的大型系统,无法适应科学研究中的复杂需求。正确地选择和应用开发平台、软件构件库、服务,是现在和将来开发实用系统必须的能力。我们应该培养学生具有系统的观点,具有应用平台和工具进行构件组装的能力。

3教学理念的变化

课程目标的变化给我们带来的最大挑战是:在有限的学时内,有太多“应该”讲的内容。这几乎成了我们课程改革的瓶颈,好像很自然的结论就是:这么点学时只能打打基础。果真应该得出这样的结论吗?

实际上,不仅是计算机基础课程,所有专业、所有课程都面临这样的问题。科学发展到了目前的知识爆炸时代,我们在有限的学时内应该教给学生什么,这是一个需要重新思考的问题。当然,我们知道要教给学生能力与方法,而不仅是知识。授人以渔已经是一个古老的话题了,但是如何做到,却永远是一个新的课题。下面分别就培养目标的两个方面,以及知识结构的完整性方面谈教学理念的变革

3.1应用能力的基础

具体地,以计算机程序设计类课程为例。我们大多数的基础课都在将重点放在教学生如何一行一行地写程序,尤其以讲C语言的居多。但是学生在他本专业的学习和工作中有多少时候会需要以C语言写程序呢?他工作中需要的计算机软件又有多少是靠少数几个人用C语言可以写出来的呢?这两个问题的回答是非常明确的:很少。这也是我们普遍认识到的。那么如何应对呢?这就需要我们从根本上转变教学理念。我们习惯的“循序渐进”、传统意义上的“打好基础”是否应该有新的诠释?

我们知道目前大型的软件开发平台,以及面向对象程序设计、泛型程序设计等程序设计方法都已经从新技术、新方法变成了常规技术、主流方法,而我们的基础课中还在花大量时间反复训练学生如何用指针、结构体写链表程序,如何自己实现各种各样的查找与排序方法,如何以各种技巧更有效地利用内存空间,如何小心翼翼避免数组越界、非法指针操作等等。有限的、不够用的学时都大量的用在这些曾经的“基础”内容中了。

我们很多老师,包括我自己都曾认为这些是必须的基础,如果不讲这些,学生就不懂得程序设计的底层原理,就不能写很好的程序。过去这些的确是必须的基础,因为任何一个程序中这些细节都必须由编程者一行一行亲自写。但是计算机软件已经开始进入产业化时代,与制造业一样,工业化生产和细化的分工使得应用软件的开发者必须能够利用平台工具和预先开发好的框架、组件来快速开发稳定、高效的软件。因此,对于非信息类专业的学生来说,由于他们的任务不是研究和开发基础软件,因而软件工程的系统观点、需求工程方法、建模方法和工具、大型开发平台的使用、各种库(类库、构件库、服务库)的使用才是现在必须的基础。

那么,没有很强的基础编码能力,能够使用平台和组件来开发软件吗?这是我们很多老师的疑问。如果我们借鉴一下制造业和计算机硬件行业,这个问题就迎刃而解了。当我们出于应用的目的需要一台计算机时,我们需要去研究计算机的原理、数字电路的原理、……然后自己从头设计制造一台机器吗?当然不需要,我们首先考虑的是基于对我们自己需求的准确理解和对计算机系统及其性能指标的概要理解,选择购买一台整机。如果现有的机型不能满足我们的需求,我们通常会按照需求用现成的组件、框架去定制(自己动手或者由厂家生产)。大多数人使用这些组件时并不清楚其中大规模集成电路的原理,但是并不影响他成功地使用。计算机硬件的发展也经历过软件发展同样的道路,现在薄薄一个笔记本电脑的性能远远超过了当初玻璃房子里一大群机柜、控制台、磁鼓等等设备。那时候的计算机的确不是谁都能组装的,它的设计、制造者需要懂得全部的底层原理,亲自设计和实现所有细节。现在的软件产业化进程虽然远远落后于硬件,但是也早已经过了必须从底层起步去写每一个应用程序的时代了。

所以,在计算机基础课程中,什么是“基础”应该值得重新考虑了。

3.2跨学科研究能力的基础

要具有跨学科的研究能力,就不仅仅是将计算机技术作为工具,而是需要对计算机科学有深入的理解,能够将计算机科学与他它学科进行融合。学生要达到这样的能力,决不是几门基础课可以解决的问题,这需要不同的学科在专业课设置上进行结合、在培养方案中体现融合,这不是本文主要讨论的问题。但是我们计算机基础教育课程要负责给各个专业的学生展示计算机科学的全貌,要使学生初步但是全面地认识计算机科学及其研究方法、关键技术、发展方向。现在各个学校的计算机系或者信息学院普遍都开设了“概论”课,其实对全校各专业来说,也都需要一门更为浅显但不失全面的“概论”课,为学生选择今后的研究方向、研究方法奠定一个通识的基础。

目前各校正在进行的“大学计算机基础”课程改革就正在承担着这一任务。

3.3知识体系结构的完整性问题

传统的教学要求“循序渐进”,但是知识爆炸的时代如果过于强调课程与课程之间、课程内各知识点之间的严格逻辑,就必然要牺牲对前沿知识、最新技术的引入,牺牲学生主动探索获取知识的能力。西方学校的教学也是经历了这种观念变化的。实际上大学的课程其知识结构中可以“断点”,尤其是我们针对非信息类专业开设的课程,除了讲授必备的基础知识以外,应该将重点放在开设一些具有实用性、前沿性的课程。学习这些课程可能需要一些基础,这些基础应该体现在教科书中,而不必都在课堂上讲。所以针对非专业的教材与专业教材的最大不同点应该是知识体系更完整,在每本书中尽量提供一个完整的知识体系,包含必要的基础知识,这样老师课上可以只讲主要内容,可以让知识点是跳跃的,而教科书的内容起到连接跳跃点的功能。

4课程体系改革的措施与规划

上述的观点我们在清华大学的计算机基础教育系列课程中也是刚刚开始尝试,远没有达到谈及“经验”的地步,这里我简要地将我们目前正在建设的课程体系做一个介绍。

清华大学面向全校的计算机基础教育课程体系包含公共基础系列课程、应用专题系列和应用延伸系列课程,见图1。

通识教育核心课程包括:计算机程序设计基础、大学计算机基础两个系列。建设原则是:重组基础、分类分层,设置了多元化选修课。

其中程序设计课程涵盖了面向过程和面向对象的多种程序设计语言,旨在培养学生运用程序设计技术对各专业科学计算问题进行建模、分析的能力。

大学计算机基础系列课程包括计算机文化基础和应用专题课程。计算机文化基础课程为非计算机专业的学生普及计算机科学与技术的基础知识,使学生初步了解计算机科学的概况和发展动态,为进一步学习计算机相关课程作准备。

应用专题课程的主要目的是为一部分计算机操作技能不足的学生补基础,使入学时基础薄弱的学生能够掌握基本技能,适应信息化的学习、研究环境。

应用延伸系列目前开设的课程有:

面向理工科院系高年级本科生的并行计算基础,课程目标是:为了适应计算技术发展趋势,将并行计算技术作为一种通用计算技术介绍给非计算机专业的同学,促进其在专业计算中的应用,重点是掌握并行程序开发方法和重要并行程序工具。

面向工科院系高年级本科生的嵌入式系统设计与应用,课程目标是:介绍嵌入式系统基本知识,学习嵌入式系统的一般设计和实现方法,掌握嵌入式系统的原理性应用。

5结束语

计算机基础教育在培养学生跨专业的综合应用能力、研究能力方面起着举足轻重的作用,如何将计算机科学与技术的最新成果、发展方向及时纳入课程中,不仅是课程本身的事情,更关系到众多其他学科的人才培养,是一个值得深入研究和实践的课题。

参考文献:

[1] 冯建华等. 清华大学计算机科学与技术系教学评估自评报告[R]. 2007,10.

推荐访问:实用性 教育课程 探讨 计算机 基础