?

軟件工程專業“操作系統”課程的教學探討

2009-08-28 09:09張玉軍
計算機教育 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的皮膚科教學方法研究
《計算方法》關于插值法的教學方法研討
《計算方法》關于插值法的教學方法研討
小學語文字理教學方法探析
智能手機操作系統的分析與比較
國產桌面操作系統中虛擬化技術應用研究
依托工作室的軟件工程實踐教學研究
基于工程教育認證的《軟件工程》課程教學質量建設研究 
關于如何創新和完善計算機軟件工程管理的探討
我的教學方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合