時間:2022-11-09 11:06:47
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇計算機程序設計論文,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
論文摘要:成人教育是我國高等教育辦學模式的一種創新體制,計算機程序設計課程是成人教育計算機教學中的必修課程,其主要目的是培養學生的程序設計能力和算法分析應用能力。本文從教學實際出發,針對當前成人教育計算機專業程序設計課程的實踐教學進行了探索和研究,并提出一些建議。
1計算機專業程序設計課程實踐教學的主要范疇
計算機專業程序設計課程實踐教學主要包括上機實驗、綜合練習、課程設計、軟件開發實訓等幾個方面。上機實驗是最基本的實踐教學,由任課教師根據理論教學的具體進度,設置一些簡單的實驗,要求學生在規定時間內完成,通過這些實驗加強學生對理論知識的理解和掌握。綜合練習一般在經歷了一定的學習階段之后,任課教師根據現階段學生的學習情況,結合日常生活、工作中面臨的實際問題,設置一些難度較小的綜合性練習題,要求學生在規定的時間內進行調查分析,然后應用所學知識解決問題。綜合練習主要側重某一方面具體知識的應用。課程設計是在本門課程學習完畢后,任課老師根據教學大綱的要求,結合課程的特點和實際應用,設置一些難度適中、綜合性強的課題,要求學生按要求完成課題任務。課程設計主要考查學生對知識綜合運用的能力,培養學生利用所學知識來分析問題、解決問題的能力。軟件開發實訓則是通過實際軟件項目來提高學生的職業綜合技能。計算機程序設計實踐教學都采取由淺入深的原則進行,其過程為:上機實驗綜合練習課程設計軟件開發實訓。
2計算機專業程序設計課程實踐教學的重要性
2.1加強實踐教學是實現計算機專業程序設計課程教學目標的要求計算機程序設計課程的主要目的是培養學生的程序基本開發能力、程序代碼編寫能力和程序調試應用能力,重點培養學生的算法應用分析能力和數據綜合處理能力。其主要任務是通過日常教學,使學生掌握程序設計的一般方法和程序設計的具體過程,掌握計算機程序設計語言的語言特征,具備程序設計師的基礎應用能力。在教學過程中,任課教師應以人才培養為目標,側重編程綜合應用能力的培養,通過具體的實踐教學來提高學生的職業技能。
2.2實踐教學是提高程序設計課程教學質量的重要手段實踐教學是培養學生動手能力的重要手段,是提高學生的動手能力和職業技能最有效的方式,是對學生理論知識掌握程度的檢驗。“知識來源于實踐”,“實踐是檢驗真理的唯一標準”,計算機程序設計課程的理論知識應通過編程實踐體現,通過具體的程序設計案例和實際編程來提高學生對理論知識的掌握,學生
綜合編程能力的強弱是檢驗計算機專業程序設計課程教學質量的基本標準。
3成人教育業程序設計課程實踐教學存在的問題
我國成人教育業程序設計課程的實踐教學存在問題的體現在下述方面:①實踐設施不足,教學條件不完善;②對教學認識不足,實踐教學不受重視;③實踐教學方法陳舊,考核方式單一。 轉貼于
4積極探索,構建合理的程序設計課程實踐教學模式
4.1實踐教學要符合教學目標的需要計算機專業程序設計課程實踐教學必須緊緊圍繞專業培養目標、人才培養規格進行。要結合專業特點更新教學內容,調整實踐教學內容、方法和手段。實踐教學內容的更新,要注重對學生編程綜合能力的培養和創新能力的培養,要對已有的實踐教學內容進行篩選、整合,改變單一的演示性、驗證性實驗,增加綜合性、設計性、創新性實驗,要充分利用計算機課程的教學特征,提高實踐教學效果。
4.2以社會就業需求為主導,開展多種形式的實踐教學程序設計課程實踐教學主要有上機實驗、課程章節綜合練習、大作業、課程設計、軟件項目實訓、校外軟件基地實習、軟件合作企業頂崗實習、校內軟件課題研發等。其中實訓、實習和研發都是采用“真題真做”。通過上述這些實踐過程,學生的程序設計綜合應用能力和軟件開發能力都能得到良好的鍛煉。
4.3程序設計課程實踐教學設計一般要求定教學的具體內容。大多數情形下,采用實例教學效果比較明顯,通過實例的演練促進學生對知識的掌握。實例式實踐教學設計一般應包括教學目標、課時要求、教學組織、教學內容、實踐方式、實踐總結、成績評定等幾部分內容。在設計實踐教學內容的過程中,應做好三個方面工作。一是要結合學生實際情況,盡量體現知識性、實用性,激發學生的靈感和創造欲,使學生對實踐內容感興趣,以充分調動學生的學習積極性和主觀能動性,促進學生積極創新,完成實踐內容。二是應注重理論教學與實踐教學相結合,保證實踐教學與理論課教學相適應,加深學生對基本理論、基本知識的理解和掌握。三是保證實踐題目難度和工作量適中,學生通過自己的努力,可以在規定時間內完成實踐任務,實踐方式可以靈活多變。
4.4改變實踐教學的考核方式學習程序設計課程的真正目的在于應用,是為了能正確編寫出應用程序。因此,程序設計課程的考核要理論考核與實踐操作考核并重,各占1/2,并要求理論考核與實踐考核分離,只有理論考核和實踐操作考核均合格后,整個課程成績考核才算合格。實踐教學考核主要考核學生綜合運用所學知識解決實際問題的能力,不僅要考查學生的知識理解程度和基本操作技能,也要考查學生認知能力、動手能力、知識轉化能力、再學習能力和創造能力,任課教師可以通過學生平時的學習情況和期末實踐測驗給出一個比較合理的綜合成績。這樣,不僅可以對學生的學習情況給出一個客觀的評價,還可以鼓勵學生平時認真學習。
關鍵詞:課程服務專業 計算機基礎課程 計算機基礎教學
中圖分類號:G642.0 文獻標識碼:A
文章編號:1004-4914(2014)08-252-02
引言
計算機基礎課程是非計算機專業本科生必修的公共基礎課,在公共基礎教育平臺和學生的基礎教育中占有重要的地位。計算機基礎教育課程包括《大學計算機基礎》課程和《計算機程序設計基礎》課程。為加強計算機基礎教育的針對性,更好地服務于專業學習,建立了“1+X”的課程體系。《大學計算機基礎》是“1+X”課程體系中的“1”,其教學內容豐富、受眾面廣、教學成效顯著;《計算機程序設計基礎》是“1+X”課程體系中的“X”,根據不同專業需求,開設不同的程序設計語言。然而如何能使不同專業的學生更好地學習和接受計算機能力,將“課程服務專業”的思想引入到教學當中,是教學改革的重點也是難點。
一、課程服務專業思想的引入
計算機基礎教學的目標是為非計算機專業學生提供計算機知識、能力與素質方面的教育,培養非計算機專業的本科生掌握一定的計算機基礎知識、技術與方法,能夠利用計算機進行學習、工作和生活,適應信息化社會的發展,并在此基礎上,培養學生利用計算機解決本專業領域中問題的意識與能力。
進入21世紀以來,互聯網技術的發展和應用深度滲透到生活的各個領域,各個專業對信息處理的終生需求和計算機網絡應用的終生需求,使得計算機基礎教育的范圍不斷擴大,與之相對應的是如何將這些需求反映到計算機基礎教育的課程中。
1.充分考慮各專業差別,開展計算機基礎教學。根據各專業的不同需求和學生的自身發展需求以及國家信息化的要求,筆者所在的黑龍江科技大學為不同專業的學生開設了《計算機程序設計基礎(VB)》課程和《計算機程序設計基礎(C)》課程。例如,對電子信息類專業,開設《計算機程序設計基礎(C)》課程;對信息管理類專業,開設《計算機程序設計基礎(VB)》課程。
2.理念先進,服務人才培養定位,教學目標明確。以我校應用型人才培養為目標,在教學過程中,始終堅持“以學生為主體、以教師為主導”的教學理念,提倡“自主、合作、探究、創新”,不斷改革教學方法和手段,鼓勵學生進行研究式學習、自主式學習、資源式學習和協作式學習,注重對學生四個方面的能力培養:通過計算機、網絡及信息技術基本原理、基本知識的講授,掌握計算機分析問題、解決問題的基本方法,培養學生對計算機的認知能力;通過計算機數據處理、多媒體技術及程序設計知識的講解,培養學生應用計算機解決問題的能力;通過熟練掌握與運用計算機與網絡技術,有效地表達思想,掌握基于信息技術的團隊協作方式,接受信息社會道德規范的約束,并自覺承擔相應的社會責任,培養學生依托信息技術的共處能力;通過對信息的獲取、分析、評價和吸收,培養學生的自我學習能力。
二、課程服務專業思想的實施
根據我們多年在計算機基礎教育改革實踐過程中積累的經驗,改革的核心在于“以學生為主體,以教師為主導”和為專業服務的“計算機應用能力培養”的教學模式和方法。我校計算機基礎教育與學生專業結合的做法是在教學手段和模式富有建設性成效的基礎上積極主動思考,結合了我校辦學的主導思想和特色并有了創新性發展。從幾年的實踐過程看,做法日漸科學,效果積極顯著。
具體做法:“積累、實踐、服務”相結合。
1.及時與專業負責人進行溝通,與專業對接。第一學期開學前,通過與學生所在院系教學負責人、專業建設負責人溝通等方式,實現課程內容與專業需要的對接,重新定位,按照專業需求調整教學內容,使課程內容滿足專業培養目標的需要。即每學期在制定計算機基礎課程授課計劃時,請專業負責人或骨干教師參與,根據各專業需要提出合理的意見和建議,充分了解各專業學生對計算機應用技能的需求,從而對課程內容及時做出調整和修訂。
2.提高課程組教師的計算機能力培訓。課程組的教師積極參與實習、實訓、畢業設計和實踐鍛煉等環節,不斷提高自身的實踐水平,實現教學水平與專業能力培養的需要對接。同時,課程組的多名教師通過到企業掛職鍛煉及時了解社會對計算機能力的實際需要,也了解到學生將來的就業趨勢,在提高自身能力的同時,也保持了計算機教育的實用性和先進性,為培養學生的計算機能力作出了充分的準備。
3.為學校各專業的大四學生,進行畢業論文排版指導,發揮服務作用。隨著用人單位對大學畢業生計算機能力的要求有增無減,計算機水平高低已經成為衡量大學生業務素質與能力的突出標志之一。因此,我校計算機基礎教育“課程服務專業”的理念和做法既符合教育部對普通本科院校提出的“應用型本科教育”的內涵所指,也符合我校的三大教育理念。作為我校的特色項目,必定對于促進學生終身學習和主動應用計算機起到積極的推動作用。
4.根據專業需要重新整合教學內容,探索為專業課服務的途徑與方法。在計算機教學過程中,我們打破了原有的學科體系,按照學生能力培養體系重新組織教學內容和教學方法,將相關的理論課程重新整合、重組。如在講計算機程序設計時,重點針對專業的實際問題進行程序分析。新體系淡化了基礎課與專業課的界線,實際了知識整合、交叉安排,加強了針對性和實用性,目的是更好地為學生專業技能培養服務。
5.加大實踐教學環節,提升學生實際操作能力,為專業服務奠定基礎。計算機基礎教學建立了相對獨立的實踐教學環節,加大了實踐教學在教學計劃中所占的比例,強調實踐與實習,實驗的目的不是為了驗證理論,而是為了培養學生的技術應用和實際動手能力。同時,在授課計劃中還安排了多項相對獨立、逐步提升的階段性技能與綜合性實驗與訓練,不斷提高學生的實踐操作能力。
6.課程組教師需要了解相關專業課教學重點,積極主動地為專業課服務。課程組教師通過與相關專業負責(下轉第255頁)(上接第252頁)人及骨干教師的溝通,以及與專業課教師之間相互聽課,及時地了解了專業急需用計算機解決的相關知識與問題,在備課和授課過程中都會將此部分內容作為重點進行講解,為今后學生利用計算機解決專業知識打下了堅實的基礎。
比如,會計專業是研究企業在一定的營業周期內如何確認收入和資產的學問。會計師除了準備財務報表以及記錄企業交易行為外,更重要的是能夠參與企業間的合并、質量管理、信息技術在財務方面的應用、稅務戰略以及很多企業的管理決策活動。因此一個現代高水平的會計人才,不僅僅要會收錢,會記賬,會審計,更應該利用會計這個工具,學會管理,具備多方面的能力。美國一個權威職業評估機構分析得出:Computer literacy是會計專業人才應具備的重要能力之一。同時,現代信息技術對會計工作也有著重大的影響作用,會計實務的重點將由原來的編制憑證、記賬、結賬、編制報表等轉向收集信息、存儲信息、加工信息、傳遞信息、查詢信息等。因此,面對會計專業的學生進行《大學計算機基礎》授課時,也要考慮以上因素,只有這樣才能在提高學生學習興趣的同時,增強學生的計算機會計能力。
7.開發了自主學習,課程服務專業的網站。為了提高學生的自主學習能力,課程組開發了計算機基礎系列課程網站,網站中包括了課程的大綱、授課計劃、課件、習題、名師視頻等資料,方便了學生資料的獲取。同時,網站還重點設置了“專業學習模塊”,針對不同的專業,根據各個專業對計算機能力的需要設置了不同的模擬試題,極大地調動了學生的學習主動性,激發了學生的學習興趣。
8.適應專業特點,精心設計案例。案例式教學方法的實施是提高計算機基礎課程教學質量的有效途徑之一。為了更好地做到課程服務專業,需要授課教師在案例設計之前需要與專業知識進行對接,對案例進行反復斟酌、思考與設計,好的案例可以幫助學生更好地記憶基本概念,理解所學知識,掌握基本技能。
如在對會計專業進行案例設計時,要盡可能將具有專業特色的案例融入教學過程中。在安排案例教學時有意識穿插更具會計專業特色的實例,在學習Word時,可以設計“財務報表”、“月份財務分析表”、“資產負債表”等案例,使學生在練習了表格排版的同時,了解了財務報表、財務分析表及資產負債表應包含的基本信息,與會計專業基礎課有了更好的結合。
在講解Excel時,可以重點與財務相關的公式與函數。在講授PPT時,可以利用PPT內容提示向導、母版的改造、PPT中表格和圖表的插入等操作,制作財務報告幻燈片,向股東和投資人介紹公司的財務狀況等。通過這些有針對性的、與專業知識相結合的案例講解,并結合布置一些有挑戰性或應用性或有樂趣的任務、習題,使學生對計算機基礎課的學習興趣大大提高。
三、結論
實踐證明,課程服務專業思想在高校公共計算機基礎課程中的引入與實施,使得教師能夠更加有針對性地進行教學與授課,使得原本枯燥的知識和課堂變得更加生動和引人入勝,充分調動了學生的學習積極性和主動性,激發了學生的學習興趣,為學生今后利用計算機解決專業實際問題奠定了夯實的基礎。
[本文為:1.黑龍江科技大學高層次引進人才科研啟動基金(06-122);2.黑龍江省高等教育教學改革項目]
參考文獻:
[1] 金蓉,莊紅,黃德生.面向能力培養的高校非計算機專業計算機基礎教學改革與實踐.計算機教育[J],2010(1)
[2] 韓雪.淺析服務專業能力培養的高職《計算機基礎》教學.科技信息[J],2011(6)
[3] 孫麗娜.服務專業需求的高職計算機公共課教改研究.中國教育技術裝備[J],2013(15)
關鍵詞 計算機教學 考試 改革 能力培養
中圖分類號:G424 文獻標識碼:A DOI:10.16400/ki.kjdkx.2016.12.040
Abstract In order to improve the non computer professional students of science and engineering teaching quality courses of computer application, this kind of curriculum reform of traditional teaching methods, pay attention to the cultivation process and the ability to adjust the classroom computer room, teaching methods and real-time interaction with the screen broadcast, will lecture and experimental fusion, the teaching and examination fusion, using a variety of means of examination coverage of the whole teaching course, not only to achieve the purpose of motivating students to learn, but also make the classroom lively and lively, good teaching effect.
Keywords computer teaching; examination; reform; ability training
為了鼓勵和督促學生通過課程真正掌握計算機程序設計及應用的技能,許多任課教師傾注了大量心血,提出了很多方法和措施,值得我們參考。①②③④筆者認為考試是教學的指揮棒,考試改革和教學改革必須同時進行才能取得好的教學效果。為此,在學院教務部門的支持下,筆者在講授“Matlab語言及應用”課程中,對課程教學和考試方式進行了改革創新,現就有關教學實踐的經歷談一下自己的看法。
1問題分析
1.1 傳統思想造成考試方式的固化
“筆試”在時間與空間上的嚴格性的優勢使其成為長期且普遍采用的考試方式。以至于造成很多師生固執的認為“只有筆試才是考試”。另一個原因,由于教師們普遍重視理論教學和熟悉筆試操作流程,使得即使在程序設計和應用類的課程考核中,也往往傾向于采用筆試來考核。⑤實際上,筆試的考核方式在理論性較強的課程,如政治類、原理類等課程中適應性更強。考試內容和考試方式又是教學的指揮棒,采用筆試考試直接導致了日常的教學內容和教學方法也會偏重理論講授,在實踐性較強的科目中客觀上會造成實踐教學的減弱。計算機程序設計應用類課程就是這樣一種實踐性很強的課程,它的核心教學目的是培養學生程序設計或者使用專業軟件的能力,使學生能夠在電腦上獨立操作實現專業所需的程序設計或者軟件操作,而非演算紙上寫出步驟或代碼。顯然,筆試的考核方式制約了這類課程教學過程,影響了教學效果。考察國外大學的課程考核形式,主要包括了閉卷筆試、開卷筆試、小論文、專題討論、教師口試、答辯、小組研究項目、資料分析、課堂表現和社會實踐筆記等等,他往往根據課程內容確定較為適合的考核方式。⑥這些考核方式都是值得我們參考的。開展考核方式改革的探索將有利于我們客觀、合理和綜合地評價學生的學習過程和知識掌握程度,進而調整教學思路和實踐教學步驟。
1.2 社會環境影響學生的學習目的
當前“急功近利”的社會氛圍下,獲得學分、取得高分成為學生學習的第一目的,真正熟練掌握專業技能和專業知識被大家嚴重忽視。一個較為典型的例子就是,在我校本專業免試推薦研究生時,入圍的資格是考試成績,復試內容是專業操作技能和專業素質。在這一環節中,高分學生表現出較差的技能或專業素質的現象非常常見。在日常教學中,學校也往往過分重視分數的價值功能,特別是獎學金、評優等幾乎完全看考試分數,使學生產生了“分數高于一切”,“考試分數高的才是好學生”等問題。客觀上引導學生以考試成績為第一,而并不關心是否真正掌握了專業知識和專業技能。
對于理工科學生來講,上述做法嚴重削弱了學生參與實踐教學的積極性。在類似計算機應用類課程的很多科目中,筆試分數并不能真正檢驗學生的學習效果,筆試成績高也不能代表高的實踐能力。理論上,切實開展專業教育、職業規劃是解決這一問題的基本途徑。讓學生知道每門課程在未來職業中的用途,這需要由每一位任課教師滲透到所負責的專業課程中,需要結合課程知識點告訴學生本節課的技能在未來的工作或研究中有什么用途。實際教學中,還可通過改變傳統教學模式、提高學習興趣來督促鼓勵學生,如本文的方法。
2教考綜合改革實踐
2.1 考核方式
為避免學生平時疏于學習、期末惡補考試,使學習效果得到客觀、公正評價,更為了鼓勵學生真正學好技能,在“Matlab語言及應用”教學中取消原來的期末統一筆試,改為貫穿整個教學過程的全程考核,將考核點設計為作業、小實驗、討論和課程設計等,表現為“考教融合”。在本門課程中,將成績構成分配為期末程序設計考試成績占40% ,平時實驗成績占30%,課后作業占20%,課堂討論占10%的模式。
課堂實驗和課后作業部分要求所有學生教學過程中同步完成,屬于完成性考核。所有W生都被要求掌握這些基礎知識點和技能。討論部分和程序設計考試階段是提高的部分,屬于提高性考核,學生如果想取得好的成績,就要在完成基本實驗和作業的基礎上,認真思考問題,上課積極參與討論,針對問題提出更優方案,努力掌握軟件應用技能,并在期末程序設計考試中順利完成考題。討論課的內容包括了如專業數據處理需求、特殊功能實現方法等廣泛的擴展性內容,大家討論給出程序設計方案和步驟,這能考察出學生的基本素質、思維能力和知識熟悉程度。在期末程序設計考試階段,通常會設計包含了多個教學知識點的專業有關應用型程序設計題目,學生在給定的時間內在教學機房獨立完成程序開發。這部分的考核以解決實際問題為考核目標,給了學生更大的學習壓力。但由于這部分比重只占總成績的40%,也沒有給學生過多的精神壓力。這種考核方式能夠充分調動學生積極性,使得學習過程豐滿而充實。
2.2 教學方式
為了配合上述考核形式,需要深刻改革授課方式。在講課風格上,盡量避免空洞的理論講授,通過給學生提供生動、形象的演示,使他們了解直至理解每一個知識點,在實踐中掌握。在上課地點上,拋棄了原有的講臺和黑板,將授課地點從教室改到計算機室,學生每人一臺電腦,既能觀看教師演示,又能動手實踐,還能隨時與老師交流。在授課方式上,不再劃分講課學時和實驗學時,將授課與實驗融合起來,邊講邊練邊討論。
具體操作,將每2學時的教學內容劃分為4個階段。第一階段,采用屏幕廣播方式,利用案例教學,為學生講授基本原理和操作方法(約30分鐘),將空洞的理論性的知識點穿插到實踐中,讓學生看得見;第二階段,學生獨立練習前述教學內容(約30分鐘),完成老師的演示內容,通過操作理解知識點;第三階段,集體討論,啟發式教學,并采用屏幕廣播方式,為全體同學重復解釋教學難點,討論知識擴展;第四階段,布置需在課堂完成的與實驗內容和課后思考作業,重點培養學生解決問題的能力,課堂實驗需要當堂提交,不能按時完成的或完成不認真的,直接影響成績評定;課后作業完成時間由學生掌握,按完成水平給出成績。⑦
上述教學方式使得學生在沒有壓力的情況下輕松學習,增強學生的學習主動性,使學生覺得“每節課都在學習,每節課都是考試”。
2.3 教學內容
教學大綱要求掌握的教學內容和實踐技能,都設計到各個實驗中,不鼓勵學生死記硬背。因為“紙上得來終覺淺,絕知此事要躬行”。對于基礎的命令和方法,學生會在反復訓練中掌握,結合專業需求理解,經過大家多次討論后自然就可以熟練掌握。對于生僻復雜的知識點或模塊,更沒有死記的必要,教會學生解決問題的辦法,要求學生在遇到或用到時,能知道其解決方案并能查找相應資料就行。關于教學內容,重點引入學科專業有關的應用內容和常用熱門模塊,不但使學生學有所用,還跟蹤了知識前沿。
3教學效果分析
多輪的“Matlab語言及應用”教學實踐表明,本文提出的教學方法能夠充分調動了學生的學習興趣,所有選課學生都獲得了學分,且都取得了良好以上的成績,70%以上的學生在期末的程序設計考試中都能獨立完成程序設計。與授課前相比,學生的編程能力、創新意識以及實踐課程的學習主動性等方面均有所提高,兩年的授課前與考試后問卷調查的結果表明,學生對程序設計類課程的有好感的比例都是從約30%上升到約70%。編程基礎較好的約20%的同學經過本課程的學習后已經能夠熟練掌握Matlab語言,在畢業論文和研究生階段可以自由設計所需專業程序。考察2015、2016兩年本專業本科畢業論文中數據處理環節,50%以上學生采用了Matlab軟件設計程序,包括自主設計和改造他人程序兩種情況。上述教學效果完全達到了本專業本科培養方案中設置本門課程的目的。
4結語
從計算機語言應用類課程教學中存在的問題出發,結合“Matlab語言及應用”課程的教學實踐,探索了教學和考試改革的方法,取得了一定的成效,使得學生的素質得到較好發展,編程實踐水平普遍提高,提高了學生的學習興趣。需要指出的是,我們一直采用的是小于20人的小班教學方法。在這種師生比的情況下,教師的教學工作強度是可以承受的,學生發生抄襲現象也是容易被發現并制止的。非常明顯,當學生人數增多時,這種教學方案會給任課教師帶來很大負擔。因此,不斷完善教學和考試改革,使教學和考試體制更具科學性、合理性和適用性,以滿足優秀人才培養的需求任重道遠,我們仍需不斷努力。
注釋
① 張貞貞,宋連公.非計算機專業計算機基礎教學模式探析[J].華北水利水電學院學報:社科版,2009(5):111-113.
② 金蓉,莊紅,黃德生.面向能力培養的高校非計算機專業計算機基礎教學改革與實踐[J].計算機教育,2010(1):145-148.
③ 張居曉.提高高校非計算機專業計算機基礎教學質量的策略[J].計算機教育,2011(2):54-57.
④ 吳春明,鄒顯春,杜云.高校非計算機專業學生計算機創新能力培養模式研究[J].西南師范大學學報:自然科學版,2011(5):240-243.
⑤ 劉智運.大學教學機制必須改革[J].教學研究,2011.34(3):9-11.
關鍵詞:計算思維;VFP程序設計;計算機基礎教育
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2014)06-1271-02
目前,計算思維是計算機界關注的一個熱點。自2010年7月,九校聯盟(C9)西安會議提出計算機基礎教學的核心任務是計算思維能力的培養以來,國內多所高校圍繞計算思維與計算機基礎教學改革進行了深入的研究和實踐,發表了一些計算思維研究和實踐方面的論文。在新的形勢下,如何在大學計算機基礎教學中,培養學生在各自專業領域中應用計算機和計算思維解決實際問題的能力,對于提高學生的創新能力和信息素養都具有重要的意義。
1 計算思維
計算思維是美國卡內基梅.隆大學計算機系主任周以真(Jeannette M. Wing)教授提出的。周教授認為:計算思維 ( Computational Thinking )是運用計算機科學的基礎概念去求解問題、設計系統和理解人類的行為,其本質是抽象和自動化。
計算思維是數學思維、邏輯思維和工程思維的綜合,是與閱讀能力、寫作能力和算術思維并列的第四種能力,能夠提升人類的能力。就像識字、做算術一樣,是人人都必須具備的思維方式。
2 VFP程序設計教學現狀分析
Visual FoxPro(簡稱VFP)課程是面向高等學校非計算機專業學生開設的計算機基礎教育課程。VFP作為計算機程序設計的一門基礎課程,應注重學以致用。學習的重點不只是編寫程序,而是學習算法思想與問題求解的思路,增強學生計算思維能力的培養。
但是,從目前VFP程序設計教學,尤其是非計算機專業現狀來看,普遍存在以下問題。
2.1 課程學時少
隨著計算機技術內容的不斷更新,以及信息技術在中小學的普及,在新的形勢背景下,計算機基礎教學面臨著新的挑戰。人們對計算機基礎教學產生了片面的認識。認為“計算機會用即可”、“計算機即編程”,造成學時被壓縮,資源得不到充分的配置和利用。就我校的計算機基礎教學改革來看,“大基”的學時由64變成32,時間壓縮了一半,學生計算機基礎水平有待提高。
VFP的教學課時相對“大基”課時雖然要多些,但對于非計算機專業的學生來說,計算機語言底子更是薄弱,想在短期內掌握一門計算機語言,十分不易。對于授課教師而言,既要完成教學目標,又要學生掌握計算機語言使用方法,并且在教學中形成學生的計算思維能力是非常困難的事情。
2.2 以語言知識為主,偏理論,輕實踐
在實際教學中,很多老師以語言知識為主線,詳細介紹語法規則等細節內容,上機操作多以驗證為主,偏重考試內容而不是編程,這和課程的教學目的是相悖的。導致學生學習積極性不高,感到枯燥,學的不牢,編程能力和分析解決實際問題的能力沒有得到提高,更談不上運用計算機解決專業問題。
3 以培養計算思維為核心的VFP程序設計教學方法
3.1 以計算思維為主線,改進教學內容和教學方法
計算思維養成以計算能力的培養為基礎,對教學內容的改革,不是完全改變原有的課程內容,而是內容的再組織與優化,突出核心內容和方法。
教師在上第一節課時可以介紹一個完整的系統,比如學生信息管理系統。在演示過程中告知學生,每項功能可由哪些知識實現,讓學生對本門課程有一個系統開發的概念。并了解VFP數據庫管理系統在各個領域的應用。學習本門課程的目的,不是為了順利通過考試,而是能夠獨立開發一個完整的系統,并能解決自己的專業問題。
在實際的教學中,以培養學生計算思維能力為核心任務,采用“任務驅動”和“案例教學”的方法,針對不同的專業和不同層次的學生設計教學任務。按照“提出問題—分析問題—尋找解決問題的方法—介紹解決問題的方法和知識—方法和知識推廣—課后作業和拓展”的教學片段設計思路,對學生進行計算思維的實踐。
3.2 注重程序設計思想和算法訓練
計算思維的本質是抽象和自動化。在教學過程中,可將相同或相近的知識點整合,設計相應教學任務,讓學生了解程序設計思想和程序設計過程。如求解方程、求階層等任務,可先讓學生用數學方法來求解,再引導學生用抽象的計算機語言來實現。
啟發學生利用多種技術、多種算法解決同一問題,圍繞問題求解和設計能力培養。例如求解“1+2+3+……+100”,可分別考慮用for循環、while循環來實現。采用有趣的案例,比如“猜數游戲”,“幸運7”,“測試體重”等,用多種思路設計與多種編程方法實現。
3.3 以上機實踐為重點
VFP是實踐操作性很強的一門課程,學生只有親自動手編寫代碼,調試程序,才能掌握和理解所學的知識,了解編程的思路和方法,訓練思維能力。對此,教學過程中可以考慮以下方法:
3.3.1 設計合理的實驗內容
由于實踐課時限制,學生練習時間較少,首先要使學生熟練掌握基本的語言知識,具備基本的編程和調試能力,才能逐步引導深入。實驗內容包含主要重點內容,難度適中,有一些讓學生發揮的余地,在書上能找到所有知識點和類似代碼,但又不是完整的照抄,有助培養學生的設計能力。
3.3.2 實驗任務具有趣味性和綜合性
通過實驗任務的趣味性、綜合性等來增強實驗內容的難度,從而強化計算思維訓練。如在“幸運7”游戲案例中,把一些枯燥和不易理解的知識,變成有趣的游戲。不僅讓學生理解面向對象程序設計的相關概念,并對應用程序的開發流程有了一個綜合的認識。通過拓展知識,讓學生實現多位數的幸運數字游戲設計。通過反復訓練,以提升學生計算思維能力。
3.3.3 安排課程設計實驗
在程序設計課程的最后環節,安排課程設計。或結合實例,完成一個項目。為學生提供一個全面考查學生水平的機會,對所學知識進行融會貫通。
4 結束語
計算思維的教育,是一種普適教育,對任何類型的學生都需要培養。什么是計算思維,如何去理解它,每一位教師都應該充分地認識到它的重要性。只有改變了教師的意識,才能把計算思維的培養貫徹到自己的教學中,才能培養學生的研究創新能力,提高學生的信息素養。面向計算思維的計算機基礎教學改革任重而道遠,還需要不斷的探索和改革。
參考文獻:
[1] 何欽銘.計算機基礎教學的核心任務是計算思維能力的培養[J].中國大學教學,2010(9).
[2] 李麗新.任務驅動教學法在Visual FoxPro程序設計課程教學中的應用[J].吉林建筑工程學院學報,2011(6):75-77.
信息生態觀從社會環境的角度整體理解信息技術、人與社會的關系。該觀點認為隨著信息社會的快速發展,信息技術已不再是簡單地創造物質財富的技術工具和技術系統,信息技術的每一次革新都深刻地影響著人的生活習慣和思維方式,乃至改變著整個社會生態環境。德國學者昆特(ThorstenQuan-dt)依據“人的生存空間”理論,分析了技術生態系統中各要素之間的互動過程,建立了“技術應用的三角模型”,認為“用戶的知識結構和生活方式影響著他們對技術的選擇和應用;信息技術應用不僅反映了用戶需要的特征,同樣會不自覺地把一些附屬特征強加給用戶,改變用戶的特征;社會環境同樣也影響著技術的應用的發展。三者中,每一要素的變化都會整響到整個媒介生態環境的變化”[4]。由此可見,在復雜多樣的信息社會中,對信息技術的理解已不能只是“中性”的技術工具,還需要考慮技術、人、社會的相互關系,理解信息技術對社會正、負兩方面的影響。在信息技術教育研究中,如果只談“信息技術發展,忽視信息技術的社會人文特征”或“只談信息社會的表面問題,忽視引發問題的內在技術原因”都是不全面的,甚至還有可能會引發更復雜的社會問題。信息技術“工具觀”“系統觀”“生態觀”是人們對信息技術認識的一個發展性連續體。這個連續體既反映著信息技術對人類生活的影響程度,也表現出人們對信息技術的認識層次,一定程度上也影響著學校信息教育的開展。
信息技術教育:歷史的考察
中小學信息技術教育可以追溯到20世紀50年代的計算機輔助教育。20世紀90年代,隨著計算機技術、網絡技術的發展,以及人們對技術與社會關系認識的深入,它逐漸演變成為一個目標多元、內容豐富、方法多樣的現代教育領域,成為許多國家中小學的基礎教育課程。考察國內外信息技術教育的發展歷程,它大體經歷了計算機程序、計算機應用、信息素養、信息生態等四個教育階段。
1.計算機程序教育
20世紀70年代未,微型計算機的快速普及受到了教育學界的廣泛關注。為占得信息化社會的先機,世界發達國家紛紛將計算機設置為中小學教育內容。1980年,英國實行了“微電子教育計劃”(MicroelectronicEducationProgram),投巨資幫助中小學配置計算機和其它電子設置,開發教學軟件,進行教師培訓,改造中小學教材,使之滲透計算機教育內容。1981年,前蘇聯計算機教育學家葉爾肖夫在題為《程序設計——第二文化》中提出了程序設計文化的觀點,他認為“是否具有編排與執行自己工作的程序的能力是人們能不能有效完成各種任務的關鍵。現代人除了傳統的讀寫算能力以外,還應該具有一種可以與之相比擬的程序設計能力,這種能力可以幫助人們從小培育一種程序設計意識與能力”[5]。此觀點清晰地反映出“算法思維”的理念,并希望通過計算機程序的學習,培養學生解決問題的方法和策略,引發了計算機教育界的共鳴。隨之,程序設計成為計算機教育的重要內容。受程序設計文化的影響,我國中小學計算機教育在試點期也將“發展學生程序設計能力”作為主要的教育目標。1984年教育部(當時的國家教委)頒發的《中學電子計算機選修課教學綱要(試行)》就提出了“掌握基本的BASIC語言,并初步具備讀、寫程序和上機調試的能力”。從實施成效來看,程序設計教育為青少年創造了接觸和了解計算機的機會,推動了計算機文化的普及。但是,從學生學習心理和學習過程來看,脫離了具體生活情境、忽視學生自身學習特點、抽象地向學生灌輸計算機程序結構知識,無疑也是對青少年身心成長的一種摧殘,因此,計算機教育過程中,如何調動學生學習積極性,激發學生學習興趣,適應社會需要就成為計算機教育的新挑戰。
2.計算機應用教育
20世紀80年代中期計算機操作系統和應用軟件日趨成熟,一些數據庫管理系統(Dbase)、電子報表系統(Visculc)、文字處理系統(WordStar)開始安裝到微型計算機上,越來越多非專業的人員從事計算機應用日常工作。1985年美國東田納西州大學科爾教授在第四屆計算機教育應用大會上發表了題為《面向職員的計算機課程》的論文,在報告中將計算機文化教育的目標界定為“應用者能夠在自己的教學科研、管理服務中把計算機作為一種有效的工具使用,其教學內容應該包括文字處理、電子報表處理、數據庫、圖像處理等應用軟件的使用”[6]。社會對計算機應用的現實需求促進了計算機教育從“程序設計”向“計算機應用”的轉型。我國教育工作者也對當時中小學計算機教育進行了反思,指出“名為計算機課程卻只講BASIC語言,給學生造成計算機就是BASIC,BASIC就是計算機的錯覺”。1994年,在總結前期計算機教學實驗的基礎上,教育部頒布了《中小學計算機教育指導綱要(試行)》,將“培養學生利用現代化的工具和方法去處理信息;培養學生分析問題、解決問題的能力,發展學生的思維能力”作為中學計算機教育的兩項重要目標,學習內容也從前期的BASIC程序設計拓展為“計算機基礎知識、計算機基本操作與使用、計算機常用軟件介紹、程序設計語言、計算機對現代社會的應用以及對人類社會的影響”5個模塊。“計算機學以致用”的觀點有著它的合理性,能夠激發學生學習動機和掌握這種技能的積極性,特別是對即將畢業尋找工作的高年級學生來說,能夠增加一門非常實用的技能。但是,基礎教育階段教育的目的畢竟不是完全的社會職業教育,更重要的還是促進學生綜合素質的發展[7]。如果過于強調計算機技能教育,忽視計算機應用道德的培養,也可能會出現應用著“由人類理性創造的計算機工具,做著不理智、乃至計算機犯罪的事情”。
3.信息素養教育
20世紀90年代,信息技術發展日新月異,信息總量的膨脹沖擊著人們工作與學習的各個領域,計算機應用教育已很難應對信息化社會的挑戰,發展學生利用信息技術解決問題的能力,培養信息素養已為人們所共識。早在1989年,美國圖書情報協會就分析了信息社會對公民的素養要求,認為“具有信息素養的公民,能夠根據個人的信息需要,有效地檢索、評價和使用信息的綜合能力”[8]。艾森堡(MikeEisenber)等人在此基礎上創立了發展學生信息素養的6種基本技術:(1)任務確定;(2)信息搜尋策略;(3)檢索和獲取;(4)信息應用;(5)信息創建和展示;(6)信息評價。隨后,美國一些州(例如,北卡羅來納州、威斯康辛州等)開始以課程整合的方式普及中小學信息素養教育。20世紀90年代,英國政府將信息技術(ICT)正式列入國家中小學課程,并將教育目標界定為:(1)了解和使用信息技術;(2)學習利用信息技術開展各學科的學習;(3)培養學生利用信息技術解決問題的能力。推動了英國信息技術教育的發展。2000年,我國教育部在北京召開的“全國中小學信息技術教育工作會議”上決定用5到10年時間,在中小學普及信息技術教育,并將信息技術教育課程列為中小學的必修課程,提出信息技術教育的主要任務之一就是要“培養學生的信息素養”,隨后的《普通高中信息技術課程標準》把提升學生信息素養作為課程建設的總目標。信息素養教育將信息知識技能的學習融入到學生利用信息技術解決問題的現實情境之中,強調學生在信息社會中需要注意的問題,養成良好的信息技術應用習慣,這無疑為學生今后在信息社會中健康成長創造了條件。但是,信息素養教育并沒有從信息環境的內在特征分析技術、人、社會之間的關系,沒有引導學生從根本上思考信息技術可能會帶給人們潛在危機,因此,“缺少了批判性分析信息的意識,當學生微笑地享受著信息環境中的娛樂,卻不知為何而微笑時,當學生控制著‘電游’操作桿,卻被‘電游’所控制時,世界就已不再是美麗新世界”[9]。
4.信息生態教育
計算機和網絡通信技術的革新推動了信息全球化的發展。隨之,大眾傳媒擺脫了傳統的單向、線性、控制的信息傳播模式,進化為多元、互動、開放的信息環境。信息受眾也從被動的“接受者”成長為信息“者”。在此充滿“新奇、變幻,乃至誘惑”的信息環境中,信息技術教育也正接受新的沖擊與考量。其教育目標就不應局限于“信息技術”的掌握,甚至也不應只停留于“生活問題”的解決上,還需要幫助青少年正確認識技術、個人、社會的相互關系,發揮信息技術的積極因素,將其可能會帶來的負面影響提前消解于信息生態系統之中。波斯曼在對“媒介信息給社會所帶來的現實問題”研究中指出“媒介生態關注的是信息環境交流的工具和技巧是如何控制信息的形式、數量、速度、分類以及方向的。同時,這樣的信息構造與偏見也影響著大眾的觀點、價值觀和態度”[10]。可見,信息技術教育研究在關注“技術教育”的命題時,也要關注“人在信息環境中的行為以及形成的社會關系”命題。即:(1)技術層面的命題。包括信息交流的技術特征、基本概念、和操作程序等。(2)信息社會情境層面的命題。即使是相同的信息工具傳遞相同的內容,在不同的社會情境下表現出來的意義也可能不同,在現實情境中理解信息顯然是一個重要命題。(3)人與技術關系層面的命題。不同知識結構和生活背景的受眾對信息技術及其表達信息的理解是不一樣的,反之,信息技術工具及其表達的信息對不同的受眾有著不同的影響。2010年,美國教育技術協會在《學生教育技術標準》的修訂版中反映了信息生態的理念,增加了“批判性思考”和“數字化公民”的指標,指出“學生要具有批判性選擇工具和資源,理解與技術相關的人、文化、社會的相關問題,安全合法負責任地使用信息和技術。”信息生態教育已經擺脫了“純技術”教育狹隘觀念的束縛,從生態學的視角來理解信息環境中各要素的關系,希冀幫助青少年在“學技術”“用技術”的基礎上,也能夠從現實情境中,批判性地認識技術變革給信息環境帶來的整體生影響,從思想和行為上預防可能出現的信息問題。
信息技術教育:現實的追問
伴隨著信息技術革新和人們對信息社會認識的深入,信息技術教育的內涵得以不斷豐富和發展。受技術特征和應用環境的影響,不同時期表現出不同的教育內容、教育方法和教育目標。尤其在信息爆炸的今天,教師該如何開展信息技術教學?家長又該如何幫助孩子合理應用信息技術?這還需要從我國的現實情況談起。
1.信息技術教育是要學生“抵制”信息技術嗎
信息技術的發展與普及為青少年創造了全新的學習環境,但帶來了前所未有煩惱和困惑。“網絡成癮”“沉迷手機”“遠程作弊”等事件都引發了社會對信息技術教育的熱議和關注。一些家長不惜使用“沒收手機”“電腦上鎖”“切斷網絡”等嚴防死守的方式阻止孩子接觸信息技術,在調研中一種家長如是說:“最初給孩子買手機是為了知道孩子上學情況。我們上班忙,沒法接送孩子,通過手機可以知道孩子是不是按時到校、是不是安全回家。可是,現在的手機功能越來越強大。自從孩子用上iPhone,吃飯拿著手機,走路拿著手機,甚至洗澡也把手機放在手邊。全家人在一起說話的時間比以前少多了,最糟糕的是我發現他還通過手機抄襲同學的作業,這學期學習成績明顯下降。依我看,如果能教育孩子徹底遠離信息技術最好”。在信息社會到來的今天,青少年是否真的需要與信息技術隔絕呢?事實上,無論從信息技術發展目的,還是從社會生存需要來看,這都是不可能的。首先,信息技術是人類文明進步的工具。從收音機、電視機到計算機和互聯網,信息技術的發展都適應著當時人類社會的需要,推動著社會時步。在人類文明史上,信息技術的每一次飛躍,都使得“人體得以延伸”。“因噎廢食”、不加分析地將青少年與信息技術隔離開來,無異于關閉了青少年利用信息技術自我發展的大門。其次,信息技術已成為我們日常生活必不可少的工具。在信息技術日益發展的今天,數字化技術滲透到社會生活的各個角落,網絡銀行、數字化圖書館、遠程學習等信息技術工具徹底改變著人們生活與學習的方式。如果不加選擇地拒絕信息技術,也就阻礙了青少年在信息社會中學習生存的機會。由此可見,開展學校信息技術教育,絕不是要求青少年完全抵制信息技術,當然也不是讓兒童在信息技術環境中放任自流,而是要根據信息生態環境與青少年成長的特點,發展青少年“使用信息技術而不是為信息技術所利用的能力”[11]。
2.信息技術教育等同于“操作技能”訓練嗎
信息技術是我國中小學教育的必修課程,它以提高學生信息素養為目標,強調同學合作解決問題,引導學生在信息獲取、加工、管理、表達與交流中,掌握信息技術、感受信息文化、增強信息意識。然而在教學實施過程中,一些教師依然偏重于技能操作與訓練,忽視現實問題解決能力和信息情感的培養。訪談過程中,一位教師表達了他對信息技術教育的認識:“根據學校課程綱要,我們學校在三年級開設信息技術課,涉及的內容主要有信息與計算機基礎知識,應用軟件學習和網絡應用等內容。其中,信息與計算機基礎知識包括信息的定義和特征、計算機的發展史、組成和工作原理。應用軟件主要學習文字處理、電子表格、演示文稿等基本的操作與應用。網絡應用包括用瀏覽器收集網絡材料、學習使用電子郵件等。此外,我們學校四年級校本課程中,學生還可根據個人愛好選修‘機器人制作’的校本課程,進行算法與程序設計、組件安裝訓練”。分析調研材料發現:當前一些教師還是將信息技術教育簡單等同于信息技能的學習,認為信息技術教育就是讓學生掌握一些操作技能,完成一些簡單的信息作品。實際上,無論從基礎學力教育理論,還是從國際信息教育發展趨勢來看,當前青少年信息技術教育都已超越了傳統的知識記憶與技能訓練,應用信息技術解決現實問題,理解技術、人與社會的關系日益受到重視。現代學力觀認為“基礎學力大體可分為兩個側面:其一是‘實體性側面’,包括諸如知識、技能之類的能夠借助測驗測定的顯性學力;其二是‘功能性側面’,包括思維能力、學習動機的隱性學力。”從學力的綜合發展來看,信息技術教育不應僅限于顯性的信息知識與技能,還應包括解決實際問題、良好信息技術價值觀等隱性內容。從國際信息技術教育發展的經驗來看,基礎信息技術教育絕不能等同于信息技術職業教育。如果在基礎教育一味強調信息技能的發展,無視信息生態環境的復雜性和多樣性,這勢必會在基礎教育階段陷入“培養技術員式的陷阱(Tech-nicistTrap)”[12]。
3.學校信息技術課程是“雞肋”嗎
嚴峻的社會現實問題增強了學校信息技術教育的迫切性。2010年頒布的《國家中長期教育改革和發展規劃綱要(2010-2020年)》就明確提出“鼓勵學生利用信息手段主動學習、自主學習,增強運用信息技術分析解決問題能力。加快全民信息技術普及和應用”。那么在學校層面,該如何開展信息技術教育?又如何鼓勵學生在學習過程中利用信息技術自主學習?一些學校的教育管理者提出了自己的困惑。訪談中一位校長談了自己的想法:“信息技術作為一門必修的基礎課程已為大家所共識。但是,從近年來課程實施成效來看,信息技術卻處在一個‘尷尬的地位’。一些學生和家長認為,它‘文’不如語文、英語,‘理’不如數學、理化,一些信息技術教師認為,隨著信息技術應用的‘普及化’和‘傻瓜化’,學生會越來越容易掌握相關的操作技能,信息技術在將來也許會淡出學校基礎課程,失去其存在的意義。”信息技術是一門年輕的基礎教育課程,莊子云“始生之物,其形必丑”。當前,中小學信息技術課程實施確實存在一些困難,例如,課程設計、活動組織、學習評價等方面都還有不完善的地方,給人們以“雞肋”的感覺。但是,從我國的教育現狀和國際前沿教育發展分析來看,信息技術課程都有著其存在的必要性和合理性。其一,“教育機會平等”要求信息技術課程的存在。受經濟發展不平衡的影響,我國區域教育還存在著不平衡的問題。如果信息技術不能以學校課程的形式存在,就很難保證學生學習信息技術的平等機會,加劇區域教育的“數字化鴻溝”。其二,從國際發展的維度來看,為了加強國家競爭力,占得數字化發展的先機,日本、韓國等國家都制訂了國家課程標準,以學科的方式開展信息技術教育。近年來,美國一些州也紛紛制定信息技術教育標準,以媒體技術、計算機等課程方式展中小學信息技術教育。此外,中小學信息技術知識技能體系的不斷完善、教育研究隊伍的不斷壯大,也有利于信息技術課程的建設和發展。
芭芭拉•莉斯科芙(Barbara Jane Huberman Liskov) 1939年11月7日生于美國加州洛杉磯市。1961年在加州大學伯克利分校取得數學學士學位,此后去麻省,作為計算機程序員先后進入Mitre公司和哈佛大學工作。1963年,她重新回到舊金山,進入斯坦福大學人工智能項目組,作約翰•麥卡錫教授(1971年“圖靈獎”得主)的研究生。1965年獲碩士學位,1968年獲得計算機科學博士學位,成為全美國第一位計算機科學女博士。在麥卡錫教授的指導下,她的博士論文是編計算機下棋殘局的程序(Dissertation: A Program to Play Chess End Games)。
離開斯坦福大學,芭芭拉•莉斯科芙重新回到Mitre公司(1968C1972)工作,此后她成為MIT電氣電子與計算機科學系的教授,直到現在。1986C1997年,她擔任軟件科學與工程的NEC教授,1997年后擔任計算機工程的Ford教授,2008年后擔任MIT的研究教授,這是MIT的最高榮譽。芭芭拉•莉斯科芙培養了25位博士生,她的這些學生又培養了81位博士生。
2009年3月10日,美國計算機協會(ACM)宣布2008年度“圖靈獎”授予芭芭拉•莉斯科芙,以表彰她在編程領域的奠基性貢獻。ACM的頒獎詞是:表彰她“在編程語言和系統設計,特別是在數據抽象、容錯和分布式計算方面對實踐與理論基礎的貢獻”(For contributions to practical and theoretical foundations of programming language and system design, especially related to data abstraction, fault tolerance, and distributed computing)。
莉斯科芙領導了許多重要的項目,包括小型低成本交互式的分時操作系統設計范例Venus、第一個支持數據抽象的面向對象編程語言CLU的設計與實現、第一個支持分布式程序實現的高級語言Argus、面向對象數據庫系統Thor,還有最近的Byzantine分布式容錯系統。其中,CLU語言對現代主流語言,如C++/Java/Python/Ruby/C#都有比較深遠的影響,而她從這些實際項目中提煉出來的程序模塊化和數據抽象思想,已經成為軟件工程中最重要的精髓之一。她的另一個在程序設計中廣泛應用的成就,是與周以真(Jeannette Wing)一起提出的Liskov替換原則,即“派生類(子類)對象能夠替換其基類(超類)對象被使用”――這是面向對象最重要的原則之一。華裔女教授周以真現在是卡內基梅隆大學計算機系系主任。
美國計算機協會認為,莉斯科芙在計算機編程領域帶來了革命性的創新。MIT官員拉斐爾•雷夫表示:“她的杰出成就已經跨越了學界的高墻,改變世界的日常生活。你每次和朋友交換郵件,檢查銀行賬戶,或者是搜索Google,都是在利用莉斯科芙的研究成果。”
莉斯科芙早期在計算機軟件設計領域的成就已經被納入到多種計算機編程語言中,她在程序模塊和數據抽象上的研究成果幫助軟件更加容易編寫、修改和維護。莉斯科芙表示,她的工作和“模塊化”有關系,將復雜的系統拆分成小的模塊,使它們變得更簡單。
2009年6月27日,在加州圣迭戈舉行了“圖靈獎”的頒獎儀式。圖1為授獎晚宴留念,從左向右為:ACM 2008年主席Dame Wendy Hall(大英帝國女勛爵、英國南安普敦大學教授、英國計算機協會會長),英特爾公司企業技術事業部副總裁兼英特爾研究部門總監錢安達(Andrew Chien),谷歌副總裁Alfred Z. Spector,芭芭拉•莉斯科芙,ACM CEO約翰•懷特(John R. White )。
從1968年全美第一位計算機科學女博士,到2008年全世界第二位女性“圖靈獎”得主,芭芭拉•莉斯科芙辛勤工作了整整40年。
關鍵詞:游戲教學法;游戲案例;激勵機制;案例教學
中圖分類號:G431 文獻標識碼:A 文章編號:16727800(2013)009019203
基金項目:國家自然科學基金項目(61171075);湖北省自然科學基金項目(2011CDB297);武漢市教育局重點科研項目(2011020);湖北省教研項目(鄂教(2011)32);湖北省教育廳科研項目(B20129003);湖北省教育廳科學研究項目(B2013254);校本重點研究項目(2013JZ06)
作者簡介:周方(1982-),女,碩士,武漢生物工程學院計算機與信息工程系講師,研究方向為分布式系統與軟件工程。
0引言
縱觀筆者所在院系人才培養方案,除去專業實習與畢業設計環節,專科學生在校學習5學期,程序設計類課程開設共持續4學期,本科學生在校7學期,程序設計類課程開設共持續6學期,雖然經過長時間的系統學習,但是效果并不理想。該系針對面向過程和面向對象兩類程序設計類課程,開設有《C語言程序設計》、《面向對象程序設計》、《Java語言程序設計》、《Delphi語言程序設計》、《C#語言程序設計》、《.Net語言程序設計》等一系列程序設計類課程,期望用程序設計語言的高覆蓋率換取高就業率。但大多數學生均感覺投入了過多的精力,卻沒有精通任何一門程序設計類語言,并且從事計算機相關工作的畢業生
人數比例不到25%,這與人才培養初衷出現了嚴重的不一致。針對該現象,汲取各程序設計類課程任課教師的經驗,在現有教學學時的基礎上,通過調整人才培養方案,尋找各類程序設計類課程教學方法、教學內容、考試方式、教學評價等的通用性研究,并構建知識共享平臺,摸索出一套適合本校校情的程序設計人才培養模式,并爭取向其它兄弟院校推廣。
1游戲教學法定義及創新
所謂游戲教學法,就是在分析常規教學方法的基礎上,結合在校大學生愛玩游戲的實際情況,采用學生普遍感興趣的游戲案例作為載體,教學過程中,注重與學生平等、信任關系的建立,實現“寓教于樂”的最高境界。具體創新如下:
(1)該方法通過深入剖析計算機相關專業程序設計類課程之間的關聯關系,將其組成群組進行立項研究,通過調整教學大綱、注重第一門程序設計課程的教學、利用案例特別是游戲案例進行知識點講解等方式,從多個角度激發學生學習程序設計的積極性,達到提高學生工程實踐能力的目的。
(2)該方法首次將軟件產業中的角色定位和角色職能,引入高校計算機教學課堂,以便學生對該行業有所了解,更早、更好地涉及該領域,從而定位和充實自己的職業生涯。
(3)該方法在進行案例教學過程中,以小組協作方式進行學習,以提高學生的團隊合作意識;依照“將課堂還給學生”以及“授人以魚,不如授人以漁”的思想,讓學生自己組合成小組,自己參與管理,摸索適合自己團隊的激勵機制,促使學生在提升程序設計能力的同時,也相應提升其管理能力,這樣有助于培養技能和管理相結合的復合型人才,全面提高學生的綜合素質,以適應我國軟件產業迅猛發展的需要。
(4)本項目研究堅持強化學生的抽象思維能力和設計(動手)能力的培養,從教學過程的一點一滴入手,逐步引導學生建立創造性學習和創造性工作的意識,以達到培養創新人才的目的。
(5)本項目以游戲案例為載體,快樂學習為理念,通過尋找程序設計類課程教學的通用性并建立通用性案例庫等方式,達到縮短能力培養周期的目的。
2游戲教學法具體內容
該教學方法以《C語言程序設計》、《C++語言程序設計》為主,《數據結構》和《數據庫》為輔,通過對這4門計算機軟件系列類課程立項進行研究,針對學生愛玩游戲的特點,通過對知識點進行提取、整合,構建核心知識體系,將其融入到游戲案例中, 從教學計劃、教學案例、教學方法、教學模式、教學內容、教學反思、評價體系、考核形式、激勵機制等9個方面進行研究,具體內容如下:
2.1教學計劃研究
雖然網絡游戲已經盛行,但暫時還沒有進入高校計算機專業的課堂教學,因此很難借鑒其它兄弟院校的教學計劃,而培訓機構和游戲公司卻充當了先行者。可以借鑒其課程體系結構和人才培養方案,例如:開設游戲策劃基礎、游戲構架設計、Flash、Flex、Java、網絡游戲程序設計、網絡游戲算法設計、游戲數理概論、游戲渲染技術、游戲平臺設計、游戲組建開發等課程。
2.2教學案例研究
建設程序設計專用案例庫,以便復用。以游戲案例為切入點,結合當前計算機業內的熱點,選取游戲中的某個片段,結合程序設計的理論知識,帶領學生去實現,例如:人人網、騰訊網、雅虎網平臺上的社區類游戲。案例收集過程中,兼具趣味性和實用性,例如:交通信號燈程序、打字程序、計算器、猜數程序等,以此來吸引學生,學生對其了解后,可進行適當的完善和修改,以培養其創新意識。
2.3教學方法研究
教學過程中,要綜合考慮學生的知識水平、認知規律、學習特點和接受能力,同時也要清楚地意識到第一堂課的重要性。能否上好第一堂課,直接影響到整個課程的學習,在上第一堂課時,教師應幫助學生明確學習該門課程的目的和學習任務,建立一個完整的學習框架,使學生能樹立為用而學的學習動機。在課前充分了解學生的基本情況,包括他們的入學起點、已學課程、對該門程序設計類課程的認識和需要、興趣愛好和關心的話題等,還要對課堂上可能遇到的各種問題予以充分估計,并擬定多種相應的教學方案。
講解知識點時,加入公司實際運作時崗位分工的介紹,例如:美工、前臺程序員、后臺程序員、游戲策劃、運維等工作人員應具備的知識體系等,讓學生依據自己的興趣愛好,有針對性地培養和提高自己在該方面的能力,以便更早、更快地與工作接軌。
2.4教學模式研究
采用“以例激趣—以例說理—以例導行”的教學模式,激發學生的求知欲和表現欲,寓教于樂。心理學研究表明,良好的心境可以使思想活躍,思維敏捷,表達欲增強。游戲能激發學生的學習興趣,能給課堂營造良好的氛圍。游戲活動能激發學生的創新意識,針對青少年模仿能力強、好動、好玩、愛表現的天性,將游戲元素引入課堂,通過游戲案例對程序設計類課程教學方法進行改革,打破傳統的“概念—命令—程序”一條線的教學安排,讓學生能夠輕松接受新知識,調動他們主動學習新知識、探索新方法的積極性,使得學習逐步進入一個良性循環的軌道[1]。
2.5教學內容研究
重設授課內容順序。程序設計類課程,通常是按知識的體系結構進行組織,即“數據類型—基本結構—數組—函數—模塊與項目—文件”的章節順序,在課程起始階段,系統地講述各種數據類型和基本語句,需要花費大量的時間,映證相關內容重要性的例子又相對缺乏,導致許多學生在此階段開始就喪失了學習的耐心和興趣。按此授課內容順序不利于案例教學法的進行,而授課時以案例為載體,將核心知識體系貫穿其中,則有利于加強學生對抽象知識的消化與吸收。
2.6教學反思研究
教學反思是教師進步的階梯,是教師進步的重要途徑,進行教學反思能夠充分激發教師的教學積極性和創造性,并為其專業發展提供機會和條件。教學反思鼓勵教師通過多種策略和方法審視、分析自身的教育觀念及教學活動,充分尊重教師的主體地位,發揮教師的能動性、積極性和創造性。只有通過不斷的教學反思,才能夠逐漸提高教師的教學監控能力,提升教師的專業素質、綜合水平等[2]。
2.7評價體系研究
要檢測教學效果,必須有完善的評價體系,只有各個方面的評價指標都較高,才能真正做到教與學的完美結合,從而促進游戲案例教學在程序設計類課程教學中的發展。評價主要包括兩個方面:對學生而言,應該從知識的掌握程度、理解程度和是否具備了獨立設計管理軟件的能力等指標來進行評價;對教師而言,主要從案例的選取、課堂實施效果以及教學藝術等方面進行評價。
2.8考核形式研究
計算機程序設計類課程的實踐性決定了它不注重學生死記硬背各種語法規則,而看重學生利用程序設計解決實際問題的能力。因此,可以將考試形式多樣化,采取閉卷、開卷、考查、免考、實驗報告、口試(類似于畢業答辯)、現場操作、小論文、作品等方式,精心營造“創新”的濃厚氛圍,通過全程考核來激發學生學習的主動性和積極性。
2.9激勵機制研究
激勵有兩種對象:一種是游戲玩家,對游戲而言,激勵就是游戲的可玩性,即如何使得玩家能夠對某個游戲樂此不疲。從游戲的視覺效果、聲音效果,到人物設計、劇情編制,乃至規則制定、操作設置等方面都充分發揮其激勵作用。將玩家類型分為成就型玩家、探索型玩家、社交型玩家和殺手型玩家,研究其特點并制定相應的激勵機制;另一種是學生,在項目的分工合作中,也需要構建健全的激勵體系。
3結語
本方案已在筆者所在院系實施了3年半的時間,效果良好。該教學方法的實施,不僅提升了本系計算機相關專業學生的程序設計能力,而且鍛煉了學生的創新思維能力。通過對學生進行試點,并跟蹤調查,提升了學生在程序員崗位的就業率,同時也提高了學生對計算機相關專業的認知度和對學校的認可度。
參考文獻:
關鍵詞:移動學習,C語言程序設計,教學
1 移動學習
移動學習(M-Learning)是借助移動互連技術,使用移動計算設備(智能手機、PDA、移動電話等)實現學習者隨時隨地進行不同目的、不同方式的學習[1]。移動的內涵包括:形式上是移動的,即學習者不再受時間、空間和有線網絡的限制,可以隨時隨地進行不同需求、不同方式的學習;學習環境是移動的,學習資源和學習者也是移動的;內容上是互動的,進行教學活動的雙方實時交流,教育信息、教育資源與教育服務依靠移動計算技術和互聯網技術實現雙向“移動”,教與學相互促進,才能更充分的體現移動學習的優越性;實現方式上是數字的,移動學習是基于無線移動設備進行的數字化學習,它是在數字化學習的基礎上發展起來的,是遠程學習發展的一個新階段[2] 。
現階段的移動學習受技術條件的制約,通常作為高校教學的一種輔助學習模式,主要應用于管理和為學習支持服務提供“交互”通道,學生和教師通過使用移動設備(如手機等)方便、靈活地實現交互式教學活動。高校移動學習的主要應用模式分為三大類:基于短信息的在線移動學習,基于連接的在線移動學習以及存儲移動學習模式[3]。基于短信息的在線移動學習具有使用費用低,設備普遍支持等優點,主要應用于通信數據少并且可用簡單文字描述的學習活動和學習服務,可用于向學習者發送課程安排、考試安排和考試成績等信息,提供指導、激勵和支持等作用。基于連接的在線移動學習和存儲移動學習,需要建設WAP站點,提供能夠支持移動設備訪問和下載的學習資源,著重選取能夠貼近學習者生活和工作同時又較為時尚和流行的主題作為學習內容。存儲移動學習和基于短信息的在線移動學習將是目前在高校中最切實可行的移動學習應用模式[4] [5]。
2 C語言程序設計課程特點
C語言作為當今最為流行的程序設計語言之一畢業論文范文,不僅是計算機專業的必修課,也是很多
非計算機專業的學習課程。隨著計算機的普及,學生運用計算機的能力越來越強,但計算機程序設計課程因其較復雜的語法、編程等知識,依然是眾多學生學習上的“攔路虎”。
C語言程序課程知識點瑣碎,概念繁多,理論不易掌握;概念抽象且復雜,包含的數據類型和運算符豐富,需預習與復習相結合才產生較好學習效果;對應的規則繁多且易混淆,使用較為靈活,容易出錯,使得學生容易產生畏難、厭倦情緒;理論與實驗教學學時分布不均衡,導致課堂教學中,對如何分析和解決問題講得不夠充分,學生編程思路不清楚;實驗過程中,不能將理論知識應用自如,在處理實際問題時往往不知從何入手,需要在平時教學中注意培養學生動手能力[6][7]。
C語言程序課程的這種特點,適合采用移動學習作為其輔助教學方式。針對C語言理論性強的特點,可以在課前課后發送定時短信,提示預習摘要求較高,不好的縮進格式影響其呈現效果,結構化風格使得程序占用篇幅往往較長等等,這些因素均會制約移動設備的可讀性。
3移動學習在課程教學中的應用
根據上述分析,設計移動學習方式如下:總體原則,以傳統教學方式為主,移動學習方式為輔,移動學習方式充當課堂教學的重要補充,能夠實現課堂知識的延伸,指導和激勵學生進行更深層次的學習和實踐。實現方式,主要采用基于短信息的在線移動學習方式,配合基于連接的移動學習空間、論壇,以及存儲移動學習資源建設。針對課堂教學,精心設計課前案例,提出驅動式問題,相關預習提示,課后設計相關重點回顧,知識點延伸,以短信形式發給學生,對于短信不能很好顯示的內容可以郵件形式發送給學生,或者放在相關網站上,以消息的形式提醒學生查收。軟硬件支持:考慮到學生普遍擁有設備的程度,將移動設備限定在普通移動手機,軟件使用中國移動飛信校園版(EFetion_campus)[10],可以支持PC端向移動手機的短信群發,通過飛信、群、語音、郵箱、空間等多種方式實現互聯網、移動網間的無縫互通畢業論文范文,還可以使用日程提醒,郵件提醒等功能打造個性化的學習指導。移動學習具體實現方式如圖1。
圖1 移動學習應用模式圖
3.1功能模塊介紹
移動學習做為一種輔助教學模式,能夠參與到C語言課堂教學的課前準備,課后輔導以及實驗指導等方面。
3.1.1短消息學習模塊
(1)課前預習提示。可將每節的學習目標、重點、難點發送給學生,也可發一典型程序,加驅動式問題,發送到郵箱里,同時設置郵件提醒功能。
(2)課堂內容回顧。對前面課程學習過的知識內容以短信形式發給學生,提醒其回顧。
(3)作業提示、階段測試。也可仿照上述短信設置方式,定時群發給所有的學生。
3.1.2移動學習空間或論壇
移動學習空間既可以方便學生在線瀏覽,也要努力適應基于連接的移動學習訪問,其資料下載模塊提供的學習資源,也要支持移動終端設備。移動學習論壇,實現學生自由交流空間。在移動學習論壇上定期設置討論專題,既可以是關于某個錯誤進行分析,也可以針對相關程序選題集思廣益,還可以是對當前教育進行探討等等。
(1)課堂內容延伸。可提供諸如:MSDN使用介紹,幫助學生自如設計C/C++程序等;CSDN論壇介紹,提供同資深程序員交流學習的平臺。
(2)常見錯誤提示分析。提供調試程序基本步驟,常見錯誤解讀及可能出錯原因。
(3)課程設計選題。設計相關程序選題,使其能夠體現課程各個階段的進度,并且具有一定的實用性,趣味性,能夠調動學生的學習積極性。
(4)測試空間。提供一些歷年試題,可以幫助學生鞏固理論學習。
(5)教育思考。定期對教學進行總結,尋求更好的教學方式,也可以一些高校精品課程網站鏈接。
(6)資料下載。課程內容的各種學習資源,如PPT課件、多媒體課件、部分課程的錄音、錄像等;有關課程的各種輔導資料,如各章節的知識要點、課程設計任務庫、程序設計案例庫、試題庫等都可以作為下載的資料。
3.2移動學習內容設計
在高校教育中,學生同時需要進行多門課程的學習,如果在針對某一門課程實施基于短信息的移動學習方式時,設計過多的短信內容,或者發送較多的次數,都將會給學生造成信息轟炸,帶來過重的信息負擔。配合C語言程序課堂教學,在課前課后發送兩條飛信,每次不超過5頁,對于無法以短信內容呈現的資源就發送到郵箱,同時以短信形式提醒學生注意查收。程序設計課程所涉及程序對格式要求較嚴格,一個程序案例通常占用較多篇幅,此時以郵件的方式發送較為合適,同時在相關論壇上設置討論專題,根據學生回答設置最佳答案,統計學生活躍度,作為平時成績參照。圖2為課前預習的飛信基本內容設計。
圖2 飛信基本內容設計
把課程內容按照“章-節-知識點”的層次模式進行組織,整理出每章每節的學習目標、重點、難點、學習指導、參考資料等內容畢業論文范文,并概要總結出每個知識點的核心內容和若干測試題目,學習者可以通過短信息隨時隨地自由學習、復習這些重要的知識點,并對學習的效果進行測試。設計短信內容時需考慮程序格式問題,屏幕顯示行數,盡量控制在8行*5屏=40行,每行8字以內,不要以圖片的形式發送(涉及彩信資費問題)。
另一方面,為課程的核心內容提供文檔、PPT課件、課程錄音、課程錄像等多種媒體格式、適合多種移動終端的學習資源,滿足學習者不同的學習需求和學習習慣。學習者只要把這些資源通過教學網站,下載到自己的移動終端上,當他們在教室外面、公共汽車上等地方時,都可以通過移動終端來瀏覽這些學習內容,充分享受移動學習的便捷與方便,而且不需要承擔高昂的移動通訊費用。但是供下載的資料要充分考慮移動學習的特點,不僅要考慮學生的設備支持程度,還要考慮移動學習的片段性特點,對其中的部分資料需要進行特殊處理使其適合移動學習方式,主要處理原則,按知識點,將文檔,影音資料都處理成片段,確保一個片段一個知識點,每個片段持續10分鐘左右。
4 實驗分析
借助中國移動飛信校園版,上述大部分移動學習方式都可以實現,從PC端到手機客戶
端可以方便的實現短信群發,只要不超過一定數量,免費且易于操作。學生也分常樂意參與到這種形式的移動學習中來,非移動用戶除了在接收短信受限之外,也可以加入飛信校園版PC端,可以共享資源。實驗證明,使用移動學習方式作為程序設計課程的輔助教學方式能夠大大調動學生學習的積極性。但是在學生中間出現了兩級分化的現象,部分同學興趣高漲,能夠充分利用提供的學習資源,學習進度甚至出現超前現象,另外一部分同學上課時也在查看手機,學習不僅沒有進步,反而沉迷于手機上網。這種現象提醒大家不僅應該注意實施移動學習的方式,同時還要加強大學生的思想教育,使其認識到網絡資源的便利性和危害性,能夠主動的去尋求有益的資源來提高自己。
使用飛信實現移動學習還有以下必須注意的地方:(1)飛信中涉及大量廣告,容易分散學生注意力。(2)短信數量過大,易給學生造成信息轟炸,要限制性的使用。(3)需警惕不法分子盜取飛信或手機號,進行詐騙。可以利用飛信的二次開發功能,屏蔽其他模塊,使其更適合校園使用。
移動學習對學習者也要有一定要求畢業論文范文,比如說需要一定的自學能力,自制能力,以及較強的學習動機等[8][9]。現階段的移動學習在高校教學中應該起輔助作用,但不能排除其對研究生,博士生及在職人員充電的作用,所以還是要做好移動資源的建設工作,注意打上數字簽名保護知識產權。
5 結論
當前,移動學習是教育界的研究熱點。將移動學習方式引入語言類課程的教學中已取得較大進展,但將其應用到C語言程序設計課程教學中來,還屬于嘗試階段。移動學習給教學改革注入新鮮活力,其對高校教學的促進作用,不僅依賴教師的合理使用和學生的大力配合,還依賴于軟件平臺的設計。本文所使用的飛信校園版,受到發送短信條數,廣告綁定等不利因素的限制,不僅要考慮課程特點,還要考慮軟件的使用規則,不能充分發揮移動學習的優勢。下一步需要改進的地方,不僅在于移動學習資源的建設,還要建設實施移動學習的軟件平臺,不僅要適合移動終端在線瀏覽,還要能夠與校園各個系統整合,充分利用現有資源,更加適應程序設計課程的要求。
參考文獻:
[1]德斯蒙德·基更.移動學習:下一代的學習[J].開放教育研究.2004
[2]劉豫鈞,鬲淑芳.移動學習——國外研究現狀之綜述[J].現代教育技術.2004
[3]王建武.3G網絡下基于彩信的被動式移動學習實踐研究[D].西安:陜西師范大學.2009
[4]張瓏,王建華,張軍,邸佳奇.移動學習在高等學校教學改革中的應用[J]. 計算機教育.2010(6):34-37
[5]王偉,鐘紹春,呂森林.大學生移動學習實證研究[J].開放教育研究,2009,15(2):22-27.
[6]張素芹,吳連生.獨立學院“C語言程序設計”教學改革實踐[J]. 計算機教育.2010
[7]顧鈞.程序設計語言課程的概念體系及教學策略探討[J].中國成人教育.2010
[8]李望秀.高校教學中的移動學習[D].長沙:湖南師范大學.2008
[9]徐楠.M_Learning在現代遠程開放教育中的應用研究[D].南京:南京師范大學.2005
[10]efeixin.10086.cn/product/category_15.html
一、犯罪客體
本罪侵犯的直接客體是計算機信息系統安全保護管理秩序和計算機信息系統所有人的合法權利。本罪的行為對象是計算機病毒等破壞性程序。
為了更好地研究制作、傳播計算機病毒等破壞性程序罪,我們首先要對計算機病毒等破壞性程序的概念及特征加以了解。
計算機病毒等破壞性程序的概念及特征:
1.計算機病毒的定義
關于計算機病毒的概念,國內外有許多看法:
(1)計算機病毒之父弗雷德·科恩博士(Fred Cohen)1984 年把計算機病毒定義為:“計算機病毒是一種計算機程序,它通過修改其它程序把自身或其演化體插入它們中,從而感染它們。”(注:Cohen, F.,1984.“Computer Viruses-Theory and Experiments”,IFIP TC -11Conference,Toronto,1984.)并于1988年著文強調:“計算機病毒不是利用操作系統的錯誤或缺陷的程序。它是正常的用戶程序,它僅使用那些每天都使用的正常操作。 ”(注:Cohen, F. , 1988. “On theimplications of Computer Viruses and Methods of Defense” 《Computers & Security》7(1988)P167.)
(2)Hambung大學計算機病毒測試中心的Vesselin Bontchev 認為:“計算機病毒是一種自我復制程序,它通過修改其它程序或它們的環境來‘感染’它們, 使得一旦調用‘被感染’的程序就意味著(implies)調用‘病毒’的演化體,在多數情況下, 意味著調用與‘病毒’功能相似的拷貝。 ”(注:Vesselin Bontchev, Are “Good”Computer Viruses Still a bad Idea?: Http: // drsolomon.Com/ftp/papers.)
(3)美國Command Software Systems 公司的安全專家認為:“計算機病毒是一種程序,在某環境下,在你未知或未經你同意,通過控制你的計算機系統, 復制自身、 修改執行代碼, 實施破壞。 ”(注:Sarah Gordon:《Computer and Secuity》14 (1995)391—402.)
(4)1994年2月18日《中華人民共和國計算機信息系統安全保護條例》第28條給計算機病毒所下的定義是:“計算機病毒,是指編制或者在計算機程序中插入的破壞計算機功能或者毀壞數據,影響計算機使用,并能自我復制的一組計算機指令或者程序代碼。”
(5 )我國有學者把計算機病毒定義為:“計算機病毒是一種程序,它用修改其它程序或與其它程序有關信息的方法,將自身的精確拷貝或者可能演化的拷貝放入或鏈入其他程序,從而感染其他程序。”(注:張漢亭:《計算機病毒與反病毒技術》,清華大學出版社,1996年版。)
上述(1)、(2)、(5)對計算機病毒的定義與(3)、(4 )定義的區別是前種觀點認為計算機病毒是具有感染性,但不一定具有破壞性的計算機程序,而后種觀點認為計算機病毒是不僅具有感染性,還必須具有破壞性的計算機程序。是否具有破壞性是二者的根本區別。本文研究的計算機病毒是指《中華人民共和國計算機信息系統安全保護條例》第28條所規定:“計算機病毒,是指編制或者在計算機程序中插入的破壞計算機功能或者毀壞數據,影響計算機使用,并能自我復制的一組計算機指令或者程序代碼。”很顯然,上述規定的計算機病毒僅限于具有破壞性功能的程序。因此,這種定義下的計算機病毒具有以下主要特征:
(1 )感染性:就是指計算機病毒具有把自身的拷貝放入其他程序的特性。
(2)潛伏性:入侵系統的病毒可能有一個“冬眠”期, 其間病毒不做任何騷擾性示意動作,也不做任何破壞動作。病毒入侵后,不露聲色,處于“靜觀待機”狀態,人們很難發現它們。這種隱蔽自己使用權人難以發現的特性稱為潛伏性。
(3)可觸發性:病毒因某個事件或數值的出現, 誘使病毒實施感染或進行攻擊的特性稱為可觸發性。
(4)破壞性:病毒破壞文件或數據, 擾亂系統正常工作的特性稱為破壞性。
2.計算機病毒的分類
計算機病毒一般分為四類:
(1)文件型病毒(File Viruses):
文件型病毒感染宿主程序時,將病毒代碼附加到其上,一般是附加到其頭部或尾部。它通常感染任意。COM和或。EXE,文件,有些也感染。SYS,。OVL,。PRG和MNU等可執行文件。
文件型病毒可以是直接行動型或常駐內存型。直接行動病毒每當攜帶它的程序執行時就選擇一個或多個程序去感染。常住內存病毒是,被其感染的程序第一次執行時,該病毒就隱藏于存儲器中,其后,當其他程序執行時或當滿足某些條件時就感染它們。Vienna(維也納病毒)是直接行動病毒的例子,多數病毒是常駐型病毒。
(2)引導型病毒(System or Boot Sector Virus):
感染磁盤系統區可執行代碼。在DOS系統,有許多引導型病毒, 它們攻擊BOOT扇區和硬盤的主引導扇區。例如Michelangelo(米開郎基羅),Brain(巴基斯坦),Stoned(石頭病毒)等就是引導型病毒。 本類病毒總是常駐內存。
有少數病毒被稱為混合型病毒(Multi-partite Viruses),它們既感染文件又感染扇區,同時具有文件型病毒和引導型病毒的功能。
(3)鏈式病毒(SYSTEM or CLUSTER Virus):
鏈式病毒的病毒代碼不直接附著在宿主程序上,而是通過修改文件目錄表使得在調用宿主程序時,首先執行病毒,然后再執行宿主程序。注意,宿主程序并沒有被改動,而是文件目錄表被改動。DIR -Ⅱ病毒是典型的鏈式病毒。也有人認為本類病毒是文件型病毒的子類。
(4)宏病毒(Macro Virus):
宏病毒是由一個或多個宏組成的能遞歸復制自身的集合。這里,“遞歸復制”是指:一染毒文件能將病毒傳染給另一文件,而被傳染的文件又繼續傳染其他文件,…。
宏病毒不是破壞執行文件,而是破壞數據文件。典型的宏病毒是WM/Concept.A.
3.其它破壞性計算機程序
因為計算機病毒只是破壞性程序的一種主要表現形式,破壞性計算機程序還有許多其他表現形式,常見的主要有以下幾種:
(1)設備炸彈(Device Bomb):一種程序,它由于某特定的設備(如COM端口、磁盤驅動器D等)的出現而運行,通常伴隨著破壞性行為。
(2)邏輯炸彈(Logic Bomb ):由于某些系統條件的出現或缺少而自動激活執行的程序。典型的邏輯炸彈是當程序設計者的名字從公司工資表去掉時,程序就停止運行。在運行特定時間后或在特定日期被激活的邏輯炸彈稱為時間炸彈。邏輯炸彈與病毒的區別是邏輯炸彈沒有傳染性,不自我復制。
(3)野免(Rabbit ):通過無限制地復制自身來耗盡系統資源(如CPU時間、磁盤空間、終端I/O等)的程序。它與病毒的區別是, 它不感染其他程序。
(4)特洛伊木馬(Trojan Horse):任何提供了隱藏的、 用戶不希望的功能的程序。即似乎是提供了一些合乎用戶需要的功能,但由于在其中包含了一些用戶不知道的未經授權的代碼,使得該程序有一些不為用戶所知的(也可能是不希望的)功能。這些額外的功能往往是有害的。典型的特洛伊木馬程序是AIDS,它聲稱是愛滋病數據庫,當運行時它實際上毀壞硬盤。特洛伊木馬程序與病毒的區別是,前者是不依附于任何載體而獨立存在,而病毒則須依附于其他載體且具有傳染性。
(5)蠕蟲(Worm):計算機蠕蟲是一個程序或程序系列, 它采取截取口令字并在系統中試圖做非法動作的方式直接攻擊計算機。蠕蟲與計算機病毒不同,它不采用將自身拷貝附加到其他程序中的方式來復制自己。蠕蟲一般由許多代碼模式塊構成,欲將其隱藏在操作系統的文件中不太可能,因為它太大了。蠕蟲與病毒的區別在于,病毒對計算機系統的攻擊不依賴于操作系統設計中的錯誤和缺陷,而蠕蟲是非法入侵者,它要竊取口令,特權,要借助于操作系統本身的錯誤和缺陷。
蠕蟲通常造成的后果是當蠕蟲的傳播與系統所有者的期望相抵觸,由于過多的拷貝使系統超載導致網絡崩潰。
二、犯罪客觀方面
本罪的客觀方面表現為故意制作、傳播計算機病毒等破壞性程序,影響計算機系統正常運行,后果嚴重的行為。
這里,制作是指利用計算機編程技術編制計算機病毒等破壞性程序;傳播是指將自己或者其他人制作的計算機病毒等破壞性程序置入計算機信息系統或者將攜帶計算機病毒等破壞性程序的計算機軟件或數據文件加以散發或銷售或者將計算機病毒等破壞性程序原代碼予以公開等。
計算機病毒的傳播方式主要有以下八種:
(1 )軟磁盤或光盤:計算機病毒主要通過軟磁盤或光盤從一臺計算機傳播到另一臺計算機(或系統)。
(2)E-mail:由于宏病毒的出現和因特網的迅猛發展,E -mail(電子郵件)已成為計算機病毒傳播的主要方式之一。
(3)病毒交換電子廣告牌(Virus exchange BBS )病毒交換電子廣告牌是計算機病毒傳播者最常使用的方法。該系統鼓勵用戶交換病毒信息,生成新病毒等。
(4)病毒交換網(Virus Exchange Networks)這些網絡常被稱為VX-Net(病毒交換網),NukEnet.他們中一些自稱“病毒研究BBS ”。例如,維吉尼亞病毒研究所就以“黑軸電子廣告牌系統”著稱,它是病毒制作組織的世界中心。
(5)病毒分配站點(Virus Distribution sites)。 隨著因特網的迅猛發展,許多網站成了傳播病毒的場所,例如常常會發現一些大學的網站成為病毒的傳播站點。
(6 )病毒分配“機器人”和文件“服務器”(VirusDistribution Robots and file servers)。使用被稱為“機器人”和“服務器”的自動分配程序來傳播計算機病毒。通過電子郵件與服務器相聯系或向機器人索取文件,用戶就可以匿名地通過因特網獲取計算機病毒。
(7)書籍(Virus Instruction books)。關于如何編制計算機病毒的書籍也是傳播病毒的一種方式。 例如Mark Ludwig1990 年所著“The Little Black Book of Computer Viruses ”一書就包含計算機病毒的原代碼。
(8)銷售病毒(Viruses for sale)。 有一些人專門出售計算機病毒。例如在美國的某些雜志上刊登銷售病毒的廣告為合法。一些政府機構和企業從病毒交換系統或病毒傳播者那里購買或獲取計算機病毒以測試其防病毒軟件的性能。
本罪是結果犯,要成立本罪必須有特定的犯罪結果,即行為人的制作、傳播行為影響了計算機系統的正常運行,后果嚴重。如果行為人僅僅有制作、傳播計算機病毒等破壞性程序的行為,但未造成嚴重后果的,不構成本罪。
三、犯罪主觀方面
本罪的主觀方面只能是故意,即明知自己制作、傳播的是計算機病毒等破壞性程序,而且認識到計算機病毒等破壞性程序一旦輸入計算機系統將會造成嚴重后果卻仍故意制作或傳播。過失不構成本罪。
制作、傳播計算機病毒等破壞性程序的動機各異,目前主要有以下幾種:
(1)為科學研究及防病毒:如計算機病毒之父F.Cohen就是為解決計算機理論問題則研制計算機病毒;許多防計算機病毒專家及廠商就是為防病毒而研制計算機病毒;
(2)顯示個人能力:1988年11月2日,23歲的康乃爾大學的研究生Robert T. Morris 就是為了顯示個人能力而編制了著名的InternetWorm;
(3)防止非法拷貝:1987年10 月攻擊美國特拉華大學的巴基斯坦病毒,即Brain 病毒(由巴基斯坦的巴錫特和阿姆杰德兩兄弟編寫)就是為了防止盜版而編制;
(4 )出售(經濟原因):當前西方有些人制作病毒是為了向政府機構及防病毒產品研制機構出售其編制的計算機病毒以獲取經濟利益;
(5 )惡作劇:行為人編制計算機病毒等破壞性程序完全出于捉弄人,以獲得刺激和樂趣。如蘋果病毒就是出于惡作劇;
(6)報復:1996年9月大連市華鷹尋呼臺的計算機管理員張某被解雇,為了報復,他離職前在計算機系統中設置了邏輯炸彈,造成重大經濟損失;(注:陳興實、付東陽:《計算機、計算機犯罪、計算機犯罪的對策》,中國檢察出版社1998年版,第97頁。)
(7)出于政治、軍事上目的(作為武器):如海灣戰爭中, 美方事先將計算機病毒置入伊拉克防空指揮系統中,使伊拉克的防空系統在戰時基本陷入癱瘓。另據報道,泰米爾游擊隊利用E-Mail 炸彈攻擊斯里蘭卡大使館,使得在相當一段時間內使館內無人可以使用E-mail ;(注:《Computers & Security》17 (1998)No.3, P194.)
(8)勒索:1989年12 月美國的人類學博士鮑伯編制的含有計算機病毒的有關愛滋病信息的磁盤,將逾萬片磁盤由巴拿馬的西布格公司免費郵送世界各地,在說明書中要挾用戶必須向西布格公司支付378 美元,否則將破壞其應用程序。這就是以勒索為目的制作、傳播計算機病毒等破壞性程序的例子;
(9)不正當競爭:即出于不正當競爭的目的制作、 傳播計算機病毒等破壞性程序。例如我國就有人將計算機病毒等破壞性程序置入防計算機病毒軟件中,迫使用戶繼續購買其所制作或銷售的更高版本的防病毒軟件,以擴大其產品的市場占有率和銷售額。(注:蔣浩、于志剛:“論制作、傳播破壞性計算機程序罪”,載《法學家》1997年第5期,第18—24頁。)
關鍵詞:預算系統;工作流;系統集成
一、全面預算系統的相關理論界定
全面預算是指經濟體在一定時間范圍內,對自身內部的財務、管理控制等方面,實施總體的預算管理,主要包括業務、財務(預算)兩大塊。業務上概括地說,主要有銷等預算;財務上就是現金流方面和預計財務報表等。其重要性如下:全面預算系統對經濟體內部控制的完善非常有利;能夠拓寬經濟體財務管理的范疇,從戰略角度提高了財務管理的重要性;全面預算系統對經濟體各業務部門的協調合作關系也有著積極的促進作用,通過預算,能將經濟體的各部門統一到計劃中,明確部門自身的作用和重要性,做到有系統的分工合作。
二、全面預算編制的組織結構、內容模式和流程
1.組織結構及內容模式
以企業為例,一般是在董事會下面直接設置預算管理委員會這一專職部門,對預算編制和審核起主要負責作用。會計部門負責具體的業務執行。所以企業管理層和企業財務部門的負責人一般是預算管理業務的領導者。全面預算管理也可以根據不同業務設置不同的預算部門,然后成立一個綜合性質的預算管理辦公室,負責協調組織個業務部門的預算管理工作,并最后交由財務部門統一協調。企業各層級都可以按照這個模式來設置預算管理組織機構。全面預算的內容模式可主要分為業務上的、財務上的、資本上的、籌資上的預算四個方面。
2.全面預算流程
一般流程是:預算編制與下達;預算編制審批與調整審批;預算滾動調整;執行跟蹤分析與考核評價;建立科學的預算考評機制。
三、工作流在經費預算系統中的設計概論
1.工作流系統作為全面預算系統的主要支撐技術系統的優勢:
技術相對較為成熟,可作為核心的信息技術作支撐,從而保證全面預算信息系統的可擴展性、穩定性和操作的高效;工作流技術由于與人工作業的高度仿真和分析方法上的一致,對預算編制過程中的不合理現象,能夠有助于使用者的提前發現,并及時有效地改進,對完善預算計劃十分有利,預防預算失控。工作流技術由于將各信息系統統一于預算管理的現實流程中,可以有助于使用該系統的經濟體節省IT投資資金,也有效規避了系統更新上的風險。工作流技術如果應用在多級工作流層面上,那么基層工作流是全面預算管理各流程的有機組合;第二級工作流系統是其他信息系統與全面預算管理系統的流程、數據接口上的有機整合;第三級工作流系統可以整合各分系統的流程,使其更有益于整體框架的可擴展性。
2.工作流技術及其要素的簡要分析
工作流技術從非IT專業的財務工作者看來,是原來人工完成的業務流程和整體或部分的內容的信息程序化,在設計計算機軟件時,完全模仿人工業務流程和內容,計算機領域概念上的信息、文件、任務按照現實業務中所指定的規程來行動,這些信息文件在軟件使用者之間傳遞。按照通俗的理解,工作流技術就是計算機程序嚴格按照原來人力進行的業務的流程和制度,用電子化信息化的方式來執行原來人力所執行的業務程序。
其中工作流理念設計的計算機程序引擎,對全面預算管理的基礎程序要素進行定義、調用、安排執行順序、控制實例、添加工作項目等。具體有過程定義的解釋,應用工具的調用、程序執行順序的安排、過程實例的控制、工作表中工作項目的添加等等。
從數據上看,工作流數據一般有控制數據、應用數據和信息數據。工作流技術設計的軟件系統主要采用面向服務架構(SOA)的設計方法。面向服務的體系結構,可以理解為計算機程序設計上的一種組建模型,將程序的不同功能模塊(也可視作服務)通過SOA定義好的接口和語法契約加以聯系,計算機程序上的接口在程序設計上是比較中立的,獨立于編程語言、操作系統和硬件平臺。然而軟件系統的各項程序模塊和服務都要靠接口這種通用和統一的方式來執行交互。SOA將應用程序的不同服務通過這些服務之間良好定義的接口和契約聯系起來,良好的面向服務架構能夠使工作的運營效率得到顯著提高。面向服務的體系結構一般要有粗粒度服務接口、松藕合、標準化接口、大數據量的低頻訪問、基于文本的消息傳遞、獨立的功能實體等基本特征。
3. 總體架構設計
一般來說,采用工作流技術設計的全面預算管理系統采用服務器/客戶端的網絡架構,在系統的底層用工作流系統做基礎程序職稱,SOA架構則是采用WCF技術來執行的,將全面預算管理系統設計為分布式的各個業務程序模塊,方便遠程調用。在全面預算管理系統的最直接面對使用者的是Web客戶端子系統,通過Response/Request與web服務端進行交流。Web服務端子系統是以IIS6.0為主Web服務器,包括多個子模塊與其他系統交互。
采用工作流設計理念、技術的全面預算系統的數據庫,主要包括:業務系統、工作流相關、組織信息構成等方面的數據庫。業務數據庫還要有全面預算數據庫和WEB數據庫。
4.全面預算系統功能設計概述
4.1從模塊上看主要包括四大模塊,及各自下設的若干小模塊,列舉如下:
預算編制模塊,其中包括:業務預算模塊(及下設更細模塊);財務和資金預算模塊(及下設更細模塊);資本預算模塊;生產性投資支出預算模塊。月度滾動計劃編制模塊,包括財務計劃、業務計劃和資金計劃模塊。全面預算管理的跟蹤分析模塊流程為:對要分析的項目進行選取、對所需要的業務數據進行采集、對預算和業務數據進行比較,并生成預算管理所需要的各種報表及分析表。
4.2基于工作流技術設計的全面預算管理信息系統的引擎設計
.NetFramework4.0的系統軟件環境下,全面預算系統工作流引擎要用到很多公共核心服務,來對工作流程實例來進行管理。總體控制工作流引擎包含所有運行時服務對象.其中:WFMain服務程序是核心部件,對過程定義和控制過程實例進行解釋和執行,然后按照過程定義己確定的業務邏輯調用各項活動和服務。除了WFMain服務程序外,還要有幾個應用服務,負責對外部遞交數據的所用工作進行控制。在出口處有包括郵件和用戶通知服務。入口部分工作流用戶通過工作流客戶端進行預算數據編制或調整服務;
4.3系統集成設計簡介
在邏輯上可以分為:工作流程序系統、全面預算管理系統、webservice程序系統、其他業務程序系統,在這個四個集成程序模塊外部,在封裝一個WEB服務程序,來實現這幾個系統間及其與外部系統的相互調用。
簡而言之用戶使用基于工作流設計的全面預算管理信息系統時,首先用到的是預算管理的系統界面,呈現在用戶面前的是預算管理的通用或特殊的業務和流程的進入界面。然后根據全面預算流程不同階段和流程使用相應的系統程序,并通過互聯網程序進行調用前述程序和結果等,并與其它管理信息系統進行整合,從而實現數據的通用和高效分析利用。
參考文獻:
[1]魏春奇.構建以戰略為導向的全面預算管理制度[J].會計之友,2007,7(28):10一11.
【關鍵詞】循環程序設計;迭代法;高次方根
循環結構是結構化程序設計中三大基本結構之一,也是計算機程序設計語言教學的重點和難點之一[1]。循環結構通過重復執行一組操作,能夠把復雜的、不易直接求解的問題變換為操作簡單,易于處理的迭代求解問題。這也體現了解決數學問題時常常采用的化歸思想。
本文基于數值計算中采用迭代法求解二次方根的實例,對相應的問題和求解方法進行拓展,并通過理論分析和C語言編程實現,讓學生從深度和廣度上對迭代方法及其應用有更加深刻的理解和認識。
1、基本案例
為了求解 的值(2的算術平方根),數值計算[2]中采用經典的迭代方法:
令x= ,則有,
. (1)
由式(1)知,x的值可通過迭代方式求解,即
. (2)
經過多次迭代,可以計算出 的值。
計算科學的基本問題是能行性問題[3]。上述迭代方法具有可行性嗎?分析如下:
首先,式(2)中x的計算需要一個初值,通過不斷地迭代更新x的值。為了便于處理,不妨設初值為任意的正值。
情況1:當初值0
. (3)
不等式(3)說明,當0
進一步地,由代數不等式 知,
. (4)
等號成立當且僅當x= 。這說明小于 的初值經一次迭代后,產生的新x必然大于 。
情況2:當初值0 時,由式(1)的推導過程知,
. (5)
不等式(5)說明,當x> 時,式(2)的計算過程,即由 更新x,會產生比初值更小的新的x值。再由式(4)知,當x> 時,更新過程產生的x值不會小于 ;由于新的x值在逐漸縮小,說明最終會收斂至 。
上述分析說明,當初值0 時,更新過程使得x值逐漸變小,最終收斂于 。
上述過程也可由圖1進行可視化證明。當初值x< 時,由于 。假設 ,通過移項知,須 。由圖1知,此時曲線y=1/x的值大于直線y=x/2的上值。所以,假設成立,且產生了大于 的新值。當初值x> 時,類似的推導知,假設 ,須 。由圖1知,假設亦成立,且更新過程x總是不小于 。當x= 時,1/x+x/2=1/ + /2= ,得到最終的解x。證畢。
圖1 直線y=x/2和曲線y=1/x.
上述的證明過程說明,式(2)的迭代方法具有能行性,能夠計算 的值。
事實上,對于任意的正數p,令x= ,由式(1)的推導過程知,
. (6)
通過與求解 類似的推導過程知,式(7)能夠計算任意正數p的算術平方根,方法同樣具有能行性。
. (7)
教學意義:本節能夠讓學生加深理解由循環結構形成的迭代方法。采用迭代方法求解復雜的問題時,通過把問題分解為若干步驟,每步完成一個相對簡單的問題。由于這種化歸思想廣泛存在于數值計算或者科學計算之中,通過引導,能夠加深學生對迭代法的理解。
2、案例拓展
進一步地,對任意正數p的任意m( 且為自然數)次方根,能夠通過上述方式求解 嗎?
首先,可考慮m=3時的情況。令x= ,則有x3=p。與式(1)類似,
. (8)
如何對式(8)進行類似于式(1)的改造,且使得產生的更新過程會收斂至 ,是構造相應迭代過程的關鍵。
事實上,代數不等式 是式(9)的特例,
. (9)
求解 的迭代過程最終會收斂到 本身,這是由于式(9)(n=2時)中不等式右端產生的最小值正好為 (也可參考圖1)。因此,在構造求解 的過程中,式(9)的右端需要直接產生 。由式(9)知,此時需要構造式(10)的形式,
. (10)
進一步地,由式(8)知,
. (11)
顯然,
. (12)
所以,式(13)可以用于迭代求解 ,
. (13)
相應的收斂性證明與 的情況類似,不再累贅。
進而,對任意不小于2的自然數m,對應的問題是求解x= ,則有xm=p。與式(1)和式(8)類似,
. (14)
由不等式(9)知,式(14)右端,即 ,具有最小值 。在實際的更新過程中,可采用式(15)的簡化形式,
. (15)
式(15)的收斂性證明如下:
情況1:當初值0
. (16)
說明經一次迭代更新,產生的新值x大于 。
情況2:當初值0 時,由式(14),(15)和式(16)知, ,說明此時由式(15)產生的新值x在逐漸變小,但不會小于 。該更新過程使得x趨向于 ,當x= 時,式(15)的迭代過程收斂。證畢。
上述推導過程說明,式(15)能夠用于迭代計算 。而且,平方根和立方根的求解是m=2和m=3時的特例。
教學意義:把求解平方根的問題,泛化到求解任意高次方根的問題,有助于引導學生深化思維。上節和本節的收斂性證明也能夠鍛煉學生運用數學知識解決問題的能力,提高理論水平;這一理論推導過程,也可以讓學生更加清楚上述迭代過程能夠求解高次方根的原因,有助于加深對計算科學中可行性問題的認識;本案例通過最基本的加減乘除運算解決了求高次方根的問題,從運算角度同樣體現了化歸思想;而且,該案例能夠讓學生更好地理解和運用循環結構解決實際問題。
在實際教學中,把求解平方根和立方根的情況推廣至任意高次方根的問題,可以作為課外作業,讓學生自行完成,以培養數學思維和動手能力。
3、程序實現
基于對 , 和 的求解說明,本節給出相應的C語言算法(程序)描述。
求根的過程,不管p值大于1,或者小于1,根總有向1靠近的趨勢。這說明x的值可以簡單地初始化為1。為了加速程序的運行,我們也可以考慮其它的初始化方法。如,論文[4]給出了初始化的一個上界。
教學意義:通過程序實現,對于任意的正數p,Program 1 和Program 2分別能夠求解平方根和立方根,Program 3能夠直接求解任意的高次方根。對問題的深化思考有助于拓展學生的視野,激發學生的學習興趣,培養通過編程解決問題的能力和成就感。
4、小結
本文把迭代法求解平方根的案例,拓展到求解任意正數的不小于2的正整數次方根問題,分析了迭代求解的理論基礎,證明了迭代方法的收斂性,最終給出了C語言程序代碼。本文設計的教學案例在提升學生的學習能力,拓展學生的知識面,豐富教學內容方面具有多個優點:1)理解和掌握循環結構,2) 理解和運用數學不等式求解極值問題,3)鍛煉數學思維能力,培養科研型人才,4) 加深理解計算科學中的能行性問題。
參考文獻:
[1] 孫英,徐順瓊,李興美. C 語言中循環結構程序課的教學設計與探討.計算機教育 [J], 2009,12:186-187.
[2] F. 施依德[美]著, 羅亮生 包雪松 王國英 譯. 數值分析 [M], 第二版. 第1章第1頁. 北京:科學出版社, 2002.
[3] 趙致琢.計算科學導論 [M]. 第3章第69頁. 北京: 科學出版社, 2004.
[4] 劉紅超, 陳惠汝.用迭代法計算預定精確度下的算術平方根 [J]. 黃岡師范學院學報, 2004, 24(3): 24-26.
基金項目:
中國博士后科學基金(2011M501189)。
關鍵詞:數據結構;算法;C++語言;案例驅動
1研究背景
“數據結構”的概念最早是C.A.R.Hoare于1966年提出的。在他的經典論文《數據結構筆記》中,他首次系統地論述了一組數據結構的構造、表示和操作等問題。1973年,D.E.Knuth在《計算機程序設計技巧》第一卷中給出了關于“信息結構”的系統論述。1976年,N.Wirtnh用“算法+數據結構=程序”這個公式表達了算法與數據結構的聯系和它們在程序中的地位[1]。從此,數據結構確立了在計算機相關專業中的核心基礎課程地位。
數據結構是一門關于非數值數據在計算機中表示、變換及處理的課程。這里的數據,實質是指計算機所能表示的各種不同數據對象(性質相同的數據元素的集合)的集合。對于每一具體的數據對象,數據元素之間的關系都不是孤立的。數據元素之間的內在聯系被稱之為結構。從數據元素之間的關系特征分析,各種數據對象的數據元素之間的關系僅呈以下四種結構之一:集合結構、線性結構、樹形結構、圖形結構。
數據結構課程的主要內容,是針對以上四種結構,先從邏輯層面討論結構的關系特征及抽象操作;再討論結構在計算機中的存儲表示(映像);并在存儲表示的基礎上給出相應結構的基本操作及實現;最后討論各種結構的應用。
已有教材編寫的思路莫不如此。但許多教材過于抽象而甚少工程背景,原因在于那些教材描述算法所使用的語言工具常是偽代碼指令[2-3],或在涉及數據結構轉化于應用時往往不能完整地展開。因此,許多剛學完計算機高級語言、編程能力尚且不足的學生為此而深感困惑。
在長期的教學過程中,我們認為數據結構是一門兼具理論性與實踐性的課程,也是在掌握程序設計語言后加強與提高學生程序設計能力的課程。因此,我們在編寫數據結構教材時,以基本數據結構的主要內容為主線,在充分討論結構的邏輯特征基礎上給出結構在計算機中經典的存儲表示(映像),并在存儲表示的基礎上,用C++語言實現結構下的各個基本操作(建立結構的順序類或鏈式類)。我們強調數據結構的應用,以模板的形式給出各種不同數據對象應用數據結構(線性結構、樹形結構、圖形結構、集合結構)的多個實例。每一算法或程序的編寫高效、易讀,并遵循程序設計的規范,從而使學習者將數據結構與工程應用有機結合。
2教材編寫的幾個要點
2.1教學大綱及教材內容
歷經三十多年的發展,數據結構課程的主要討論范疇已基本取得共識。盡管計算機應用領域仍在不斷擴大,并產生了許多新的數據結構和算法,但數據結構最基本、最核心的內容還是各種經典教材中反復強調的最具有代表性的那些知識。2006年,教育部高等學校計算機科學與技術教學指導委員會編制了《高等學校計算機科學與技術專業發展戰略研究報告暨專業規范》[4],其中,算法與數據結構涉及AL1、AL2、AL3、AL4、AL5、PF2、PF3、PF4等多個知識單元,知識點包括遞歸,面向對象程序設計的基本理論,基本數據結構(棧、隊列、鏈表、串、數組、廣義表、樹、圖、哈希表等),常用排序算法,常用查找技術,算法分析基礎等。2009年,教育部考試中心制訂了全國碩士研究生入學統一考試關于數據結構的考試大綱。以上內容構成了我們編寫教材的大綱依據。
我們編寫的教材[5]共七章,內容如下。
1) 第一章:緒論。
內容包括數據、數據元素、數據對象、數據結構、數據類型、抽象數據類型、算法的概念、算法時間復雜度和空間復雜度的分析等。
2) 第二章:線性表。
內容包括線性表的基本概念和類型定義、線性表的順序存儲結構、線性表順序類的實現、線性表的鏈接存儲結構、線性表單鏈表類的實現、循環鏈表及雙向鏈表的存儲結構、線性表的應用等。
3) 第三章:其他線性結構。
內容包括棧的存儲及操作實現、棧的應用舉例、遞歸、隊列的定義和基本操作、字符串、數組及矩陣的存儲壓縮、廣義表等。
4) 第四章:樹型結構。
內容包括樹、森林的定義及基本術語、二叉樹的結構定義、二叉樹的存儲結構、二叉樹的遍歷、二叉樹基本操作的實現、樹和森林的遍歷、樹型結構的應用(算術表達式求值、樹與等價問題、赫夫曼樹及赫夫曼編碼)等。
5) 第五章:圖。
內容包括圖的定義和術語、圖的存儲結構、圖的基本操作、圖的遍歷、圖的應用(最小生成樹、最短路徑、拓撲排序和關鍵路徑、最短路徑)等。
6) 第六章:查找。
內容包括靜態查找表(順序查找、折半查找、分塊查找),動態查找表(二叉排序樹、平衡二叉樹、B-樹和B+樹),哈希查找等。
7) 第七章:排序。
內容包括插入類排序、分劃類排序、選擇類排序、歸并類排序、基數排序、外部排序介紹等。
在教材的編寫過程中,我們注重在體系完整、結構合理、概念清晰的基礎上形成自己的特色。如對于線性表,強調注重在順序及鏈式存儲映像下基本操作的實現,對于棧和隊列等操作上受限制的線性結構,強調注重相關環境下的應用,對于樹、圖等非線性結構,強調注重遍歷及遍歷的應用,對于查找和排序等,強調注重在消化各種經典算法的基礎上時間效率的評估。
2.2選擇C++語言描述算法
本教材的另一個特點是將面向對象的方法引入到數據結構領域。面向對象技術不僅是一種程序設計方法學,而且是一種認識方法學,數據結構討論的正是數據的描述與處理,與面向對象的認知方法具有天然的聯系。面向對象程序設計語言提供的封裝、繼承、多態和泛型程序設計等機制,為數據結構抽象數據類型的程序實現提供了很好的描述工具。
此外,面向對象的最大好處是復用、復用、再復用。數據結構中涉及的各類結構下的基本操作,在實際應用中也是常用的基本操作,而選擇面向對象的高級語言C++作為描述算法的工具,既能將高級語言程序設計與數據結構緊密結合,又能通過數據結構進一步認識C++中的STL(標準模板庫),從而為實際編程的復用帶來方便。顯然,在數據結構的學習過程中,面向對象的主流語言C++較偽碼語言更值得推崇。
2.3典型案例設計及舉例
基于案例驅動的教學模式設計是以興趣引導出發、以培養學生的設計能力為宗旨的教學模式,即通過對具體實例的演示、講解,引導學生利用已學的知識,學會分析問題的方法,培養學生解決問題的能力[6],以達到對問題更高層次的認知。在數據結構教材編寫過程中,我們首先在存儲表示的基礎上,以類的方式實現相應結構的抽象數據類型,然后精心設計案例,通過模板的方式,使用類解決各個不同的應用問題,且對每一案例的解題都附有主函數,以確保應用的完整性。
例如,對于二叉樹的學習,遍歷是課程的重點,其重要性不僅在于遍歷操作自身,更重要的是,它還是許多樹形結構應用的基礎。因此,我們設計了算術表達式求值這一案例。在這一案例中,使用二叉樹的先序遍歷次序和中序遍歷次序建立二叉表達式樹,使用二叉樹后序遍歷的思想對表達式求值,通過這一案例的學習,將二叉樹三種重要的遍歷融于一處。
圖1是表達式用二叉樹表示的例子。
圖1算術表達式二叉樹
在實現了用二叉鏈表結構定義的表達式類BinaryExpTree后,利用表達式的前綴式及中綴式建立二叉表達式樹的函數如圖2中的算法1所示。其中
ch1為表達式的前綴表示,ch2為表達式的中綴表示,low、high分別為中綴次序的起始和最終位置,本函數根據先序次序和中序次序的形成規律,運用先序遞歸遍歷的思想逐個為先序次序中的第k個元素(k的初值為0)生成二叉鏈表中的結點。
在圖3中,設在數組ch1中存有二叉表達式樹的前綴表示,而在數組ch2中存有二叉表達式樹的中綴表示。k指示了當前子樹的根結點位置,在建立了根結點后,查找ch1[k]在ch2 中的位置i,從而形成新的劃分L(low――i-1)、D(i)、R(i+1――high)。
K加1,對左右兩部分依次遞歸地建樹,直至某一子序列出現low > high,則子樹建畢。
void BinaryExpTree :: _Create ( BTnode* &T,char ch1,char ch2,
int low,int high,int &k )
//利用表達式的前綴式及中綴式建立二叉表達式樹
int i;
if(low > high)
T = NULL;
else{
T = new BTnode;
T->data = ch1[k];
//查找k在中序中的位置,從而劃分D L R
for ( i = low;i
if(ch2[i] == ch1[k]){
k++;
_Create (T->Lchild,ch1,ch2,low,i-1,k); //建立左子樹
_Create (T->Rchild,ch1,ch2,i+1,high,k); //建立左子樹
}
}
}
圖2算法1:建立二叉表達式樹
圖3先序次序和中序次序之間的關系
在建立了二叉算術表達式樹后,用后序遍歷的方式對表達式數求值,如圖4中的算法2所示。
int BinaryExpTree ::_Evaluate(BTnode* &T)
{ // 在建立了二叉算術表達式樹后,用后序遍歷的方式對表達式樹求值
if(T){
if(!T->Lchild && !T->Rchild )
return T->data C'0';//字符型轉換成整型
return _Opreate(_Evaluate(T->Lchild),T->data,_Evaluate(T->Rchild));
}
return 0;
}
圖4算法2:對表達式樹求值
限于篇幅,其他函數及主函數不一一列舉。
需要說明的是,上述表達式求值的過程僅是二叉樹遍歷的應用舉例,真正應用于算術表達式求值尚有許多問題,如該方法輸入數據是表達式的前綴式及中綴式、僅限于二元運算符、操作數是字符類型、表達式中的運算符不能重復等。
我們在教材的附件(程序光盤)中另給出了用棧的方式建立二叉表達式樹的方法。該方法可直接用任意的算術表達式做輸入數據、支持單目運算、支持各種類型的操作數。解決同一個問題,采用不同的方案
實現,無疑起到了開拓學者視野、加深問題認知的作用。
3結語
教材是根據教學大綱(課程標準)編寫的系統反映學科內容的教學用書,是人們按照一定的教學目標、遵循相應的教學規律,組織并發展的科學技術理論及知識系統。合適的教材將協助學者更好地達到學習目標,期待我們的新編教材能接受學習者的檢驗并受到歡迎。
參考文獻:
[1] 張乃孝. 編寫“數據結構”教材的幾點體會[C]//中國計算機學會,全國高等學校教學研究中心,全國高等學校教學研究會. 大學計算機課程報告論壇論文集. 北京:高等教育出版社,2007:543-547.
[2] 嚴蔚敏,吳偉民.數據結構[M].北京:清華大學出版社,1997.
[3] Horrowitz E,Sahni S. Fundamentals of Data Structures[M].Pitmen Publishing Limited,1976.
[4] 教育部高等學校計算機科學與技術教學指導委員會. 高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行)[M]. 北京:高等教育出版社,2006:233-234.
[5] 萬健,王立波.數據結構實用教程[M].北京:電子工業出版社,2011.
[6] 陶影,張斌. 數據結構實驗教學應重視算法設計與分析能力的培養[J]. 實驗室研究與探索,2008,27(12):119-122.
Compiling Data Structure Textbook by Case Driving
WANG Libo, WAN Jian
(School of Computer, Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: This article introduces basic concepts of Data Structure, discusses understanding of Data Structure course. Main points are put forward in the process of compiling, stressing the importance of case driving teaching mode in teaching material compilation, forming characteristics of the material itself.