APP下载

软件工程专业“操作系统”课程的教学探讨

2009-08-28张玉军

计算机教育 2009年14期
关键词:操作系统软件工程教学方法

马 驰 张玉军

摘要:“操作系统”是软件工程专业本科教学中的必修课程,其庞杂的内容给教师的教学和学生的学习都带了很大的困难。本文针对软件工程专业学生的培养,结合自身的教学经验,对课程的教学内容,教学方法,实践教学几个方面进行了探讨,为课程的教与学提供了一些观点和思路。

关键词:软件工程;操作系统;教学方法

中图分类号:G642 文献标识码:B

1引言

目前我国计算机本科教育中培养的软件人才主要来自于计算机科学与技术专业及软件工程专业,从本质上讲,这两个学科在人才培养方式,培养目标以及所关注的知识领域等方面都有所不同。一般来讲,计算机科学与技术专业是学习软件及硬件理论的专业,侧重于研究;软件工程专业是以学习软件理论为主的专业,侧重于技术。从目前我国的软件行业的市场需求来看,更需要软件工程专业的人才,因此高校对于软件工程专业学生的培养,应更强调其动手能力,实践能力的培养,使其尽早了解计算机的工程属性,适应软件技术快速发展的市场环境。

“操作系统”课程是软件工程专业的必修课程,是涉及到较多硬件知识的计算机系统的软件课程,该课程通过讲述操作系统的基本理论,经典的算法以及现代操作系统成熟的设计思想来培养学生的抽象思维,逻辑推理和实践动手能力。同时通过对于操作系统的学习,也有助于培养学生对于大型软件系统的使用能力,分析能力和设计能力。但是由于“操作系统”课程具有内容庞杂,涉及面广,概念抽象,实践性强等特点,尤其涉及大量硬件知识,对于软件工程专业的学生的教学有相当的难度,因此有必要在课程内容,实验内容,教学方法及教学手段上做出改进和创新。本文结合作者自身的教学经验,总结了以下的一些经验及观点。

2根据培养目标,合理组织教学内容

软件工程专业人才培养的特点是以技术应用能力培养为核心,以技术需要为依据。目前还要面向就业,产学结合,这些都注重实践技能的培养。面向计算机科学本科教育的“操作系统”教学内容主要是以讲述操作系统概念、原理、经典算法和硬件基础等理论知识为主,很少讲述现代典型操作系统,如Linux、Solaris和Windows等便于学生实际操作使用的内容,也很少将理论知识运用到实际的典型操作系统中去,这不适合于软件工程人才的培养目标,所以应该根据软件工程专业及市场的需求,摆脱传统“操作系统”教学中所采用的理论分析长而深的模式,在“操作系统”课程教学中增加并充实大量的应用实例内容,以便于教师理论联系实际地讲解操作系统的理论知识,将理论知识及时的转化成应用实例,并运用到实际的经典操作系统中去。同时应加强学生对典型操作系统的使用能力和在其上的开发能力,提高软件工程专业学生实际的研发能力。在具体的教学内容组织实施上,可将教学内容划分为以下三个部分。

首先讲授操作系统实现的基本原理和概念。如进程管理部分阐述进程和线程的概念,进程的管理,同步与互斥,死锁等问题,存储部分说明连续分配方式,分页分段存储管理,虚拟存储系统的概念和请求分页系统的实现原理等,设备管理部分介绍在I/O系统及控制方式,设备分配,设备驱动程序的基本概念,磁盘管理等。文件部分讲述文件系统的基本概念,文件的组织结构,文件目录管理以及文件存储,共享与保护等内容。在讲授这些内容的同时,应注意考虑软件专业学生硬件基础较差的特点,适当取舍硬件相关知识,比如涉及硬件知识较多的中断技术就可以适当删节,说明原理即可。

其次应该为学生介绍典型操作系统的使用。这里操作系统的使用主要指对于典型操作系统的基本操作,常用管理,基本配置工具使用以及典型开发环境的了解。在说明抽象的原理和概念之后介绍这些实用内容,既有助于对抽象原理和概念的理解,巩固了理论知识,又为下一步进行系统相关的程序设计奠定了较为扎实的基础。在具体实施中,可以选择Windows操作系统和Linux操作系统。Windows操作系统的基本使用方法对于大多数计算机相关专业的学生来说问题不大,但其高级管理功能有必要向学生介绍,如它用于维护进程管理,存储管理,文件系统管理,设备管理等的相关工具的使用。对于Linux操作系统或者其他开源的Unix系统而言,在对它们研究和学习之前,必须给出一点时间介绍它的基本使用方法,目前很多高校的操作系统实验课及实践课都在Solaris或Linux下进行,但实验中很显著的问题就是学生对操作系统的使用都比较陌生,大量的时间花在摸索操作系统的使用,而延误了基本的实验内容。因此Unix或Linux的基本shell命令,vi的使用,基本的shell的程序设计知识,C/C++编译器的使用等基本知识要给予讲授。

最后,根据软件专业学生应注重软件的开发的特点,介绍典型操作系统下的程序设计知识。这里不是指介绍一些开发工具的使用以及具体的程序设计语言,主要是指对典型操作系统编程接口(API)的介绍。如借助C++语言和Windows的API函数适当适量的介绍相关Windows编程知识。利用C语言和Unix或Linux的系统调用介绍其系统级的程序设计。该部分内容的讲解,既回忆和巩固了操作系统原理的知识,又拓展了学生程序设计的知识面,为学生进

一步的接触特定操作系统的系统级编程打下良好的基础。

3改进教学方法,提高学生学习主动性

在原有的“操作系统”课程教学中,教学方法比较单一,主要采用教师使用PPT课件讲授为主,无法激发学生的学习兴趣。这里根据上述提出的教学内容,改进原有的填鸭式教学方法,以提高学生学习的主动性。首先,对于操作系统原理这部分内容的教学,由于教学内容具有一定的难度和广度,因此教学中面临的主要问题是学生对理论课程所产生的兴趣和信心问题。针对软件工程专业的学生的教学,一方面尽量考虑在软件层面上体现教学内容,不宜讲解过深。另一方面考虑采用多种教学方法相结合,活跃课堂气氛,提高学生学习的兴趣。教师可以采用启发式的教学方法,如在介绍进程同步问题时,首先教师可以讲授一个生产者和一个消费者共用一个缓冲区的情况,而后,可以启发同学尝试修改同步算法,以适应生产者和消费者使用多个共享空间和无限共享空间的情况。在教学中经常设置问题,能够启发调动学生的思维,提高同学的学习主动性。另一个角度,教学中经常引用日常生活中的应用实例是引发学生学习兴趣的又一种好的方法,如在讲授进程互斥时,可以使用航空售票,交通流量统计等应用实例,在讲授中断机制时,引入一些基于中断机制的病毒工作原理,都会很大程度的引起学生的兴趣。好的实例既能够简化学生对抽象复杂问题的理解,又能调动学生思维,使其联系其他课程知识,并理论联系实际,达到学以致用的效果。

对于典型操作系统应用这一部分的内容,建议首先应该由教师演示讲解,使学生了解基本使用方法和理论。之后可以为学生布置一些特定功能的任务,来使学生巩固课堂讲解内容,以任务促进教学。比如学习Linux命令过程中,可以布置利用命令和管道及输入输出重定向操作相结合的任务完成指定功能。在学生了解基本shell命令和基本shell语法后,可以布置些短小的shell程序以锻炼学生的动手能力。

最后,对于系统编程这部分的内容,建议教师首先要为同学编写几个典型程序,在学生了解基本程序设计流程后。教师可以为学生布置几个针对特定功能是小项目,以项目促进教学,来提高学生的编程能力,以达到软件工程专业学生的学习目标。

任务和项目驱动教学方法有助于提高学生的自学能力,在动手的过程中,一般会遇到一些通过课堂知识无法解决的问题,要求学生查阅相关资料解决问题。这一过程可以很好的培养学生独自解决问题的能力。

4加强实践教学,提高学生实践能力

操作系统的实践课是其教学过程必不可少的环节,其实施质量对专业教学质量具有举足轻重的影响。在重视基本概念,理论和算法的课堂讲授教学的基础上,有针对性地加强实践教学,有助于提高学生的综合素质,培养学生的创新精神与实践能力。由于教学课时所限,必须重视实践课程内容的合理性,是其紧跟课堂教学,达到学生边学边练,及时消化课堂教学内容的效果。

从实践课程的组织上,一般可以分为课程实验,课程设计,以及课外实验几个部分。课程实验通常要求紧跟教学内容,在操作系统理论部分主要应设置利用程序设计语言完成操作系统经典算法的验证和模拟。如对进程调度算法,存储算法的模拟等实验。这部分实验具有一定难度,通常需要教师提供指导和部分代码,而后引导学生实现实验内容。教师可以鼓励并启发有余力的学生完成理论课中出现的其他经典算法。系统应用和编程部分的实验可以借助虚拟机软件完成系统命令和系统管理的实验。教师布置任务可以是一些成型的案例,由教师先演示操作一遍,然后让学生自己重复、调试操作,以便加深学生的印象。案例的组织可以按章节知识点的内容,尽量做到前后联系,以求融会贯通。比如shel1脚本编程练习的时候,可以设计一个实现稍微复杂点功能的shel1脚本,其内容可以覆盖操作系统多个章节的内容。

除了随课的课程实验之外,设置必要的课程设计,对综合运用和巩固操作系统知识也非常有必要性。课程设计的内容应贴近操作系统并结合软件专业的教学特点,着重编程实现,如实现一个特定功能的守护进程,实现一个简单的系统调用等等。给有余力的同学布置编写内核雏形等设计任务,提高学生的系统级编程能力。

课外的实验部分,应该给学生较大的自由空间,增加学生涉猎知识的广度,可以为学生布置些开源系统源代码的阅读和修改。组织设计小组修改精简开源内核,以及编写简单的小型操作系统,从软件工程的角度,培养学生的工程意识,进一步提高学生的实践能力。

5结束语

操作系统相关知识是软件人才应必备的基础知识,同时“操作系统”课程也是软件工程专业的一门核心主干课程。合理的组织“操作系统”的教学内容,采取适当的教学方法,加强实践教学环节是软件人才培养必要的手段和途径。本文探讨的观点和经验希望能够起到“抛砖引玉”的作用,使更多教师和同学提出对于“操作系统”教与学的新方法。

参考文献:

[1] 王知非. 操作系统课程教学与学生能力培养[J]. 计算机教育,2008(14):73-74..

[2] 鲁和杰. 基于Linux系统下的Java语言实验教学探讨[J]. 电脑知识与技术,2007(7):572-573.

[3] 王国华. 操作系统实验课程的设置与实践[J]. 山西财经大学学报,2006,9(1):108-109.

[4] 蒋静,徐志伟. 操作体统原理•技术与编程[M]. 北京:机械工业出版社,2004.

[5] Andrew S.Tanenbaum. Modern Operating Systems[M]. 北京:机械工业出版社,2002.

猜你喜欢

操作系统软件工程教学方法
基于gitee的皮肤科教学方法研究
《计算方法》关于插值法的教学方法研讨
《计算方法》关于插值法的教学方法研讨
小学语文字理教学方法探析
智能手机操作系统的分析与比较
国产桌面操作系统中虚拟化技术应用研究
依托工作室的软件工程实践教学研究
基于工程教育认证的《软件工程》课程教学质量建设研究 
关于如何创新和完善计算机软件工程管理的探讨
我的教学方法