龍顯忠(南京郵電大學計算機學院、軟件學院,南京 210023)
Intel多核程序設(shè)計課程教學改革建議
龍顯忠
(南京郵電大學計算機學院、軟件學院,南京 210023)
隨著計算機網(wǎng)絡和多媒體技術(shù)的發(fā)展,需要處理的數(shù)據(jù)呈現(xiàn)出一系列特征,例如:數(shù)據(jù)量大、數(shù)據(jù)類型多樣化、數(shù)據(jù)變化速度快等,即:我們已經(jīng)進入一個大數(shù)據(jù)時代。為了快速有效地處理這種類型的數(shù)據(jù),無論是在計算機硬件方面還是對相應的編程技能都提出了更高的要求。從早前的單核處理器到現(xiàn)如今的多核處理器,從單線程編程到多線程編程的改變都體現(xiàn)了計算機技術(shù)的發(fā)展。相對于傳統(tǒng)的串行計算處理技術(shù),當下流行的并行計算模型包括:消息傳遞接口(Message Passing Interface,MPI)、共享存儲并行編程(Open Multi Processing、OpenMP)、Hadoop MapReduce、Spark等。利用這些模型對大數(shù)據(jù)進行處理,可以提升計算的速度和精度。因此,如何培養(yǎng)學生學習處理大數(shù)據(jù)的計算機硬件知識和編程技能也已成為亟待解決的問題。此外,基于多核的思想,許多科研工作者在此基礎(chǔ)上進行了研究,例如:多核架構(gòu)下基于OpenMP的Huffman壓縮算法并行程序設(shè)計研究[1]、基于多核的并行程序設(shè)計及優(yōu)化[2]、基于多核環(huán)境下的多線程并行程序設(shè)計方法研究[3]。無論是教學還是科研,高校開設(shè)Intel多核程序設(shè)計課程已經(jīng)成為必然,該課程旨在讓學習者能夠從計算機硬件和程序開發(fā)兩個角度進行學習。它是以Intel公司生產(chǎn)的多核處理器為背景,詳細介紹了多核體系結(jié)構(gòu)和多核處理器的相關(guān)知識,并講解了在多核平臺上進行軟件開發(fā)的理論與方法[4-5]。在該課程的學習過程中,需要學生們已經(jīng)掌握C或C++語言的編程技巧,了解計算機系統(tǒng)的構(gòu)成,所以,多核程序設(shè)計可以認為是《C/C++語言程序設(shè)計》、《計算機系統(tǒng)結(jié)構(gòu)》、《操作系統(tǒng)》等相關(guān)課程的后續(xù)課程。然而,在實際的教學過程中,我們發(fā)現(xiàn)存在一些問題,例如:學生對學習該課程的重要性認識不足,部分學生對前期所學的計算機語言出現(xiàn)遺忘現(xiàn)象,課堂所學理論不能夠很好地應用到實際的編程中。針對上述問題,本文擬從教學內(nèi)容、教學方法、實踐教學和改革考核方式等方面提出一些建議。
目前開設(shè)多核程序設(shè)計課程的高校大多都將它作為計算機專業(yè)的限選課,一般都在大三第二學期進行講授。然而,在整個大學期間,大三這一學年所要學習的專業(yè)課都非常多,學生的學業(yè)壓力大。不少學生一開始是被它的“多核”名字所吸引才選修這門課程,他們在學習的過程中會發(fā)現(xiàn)雖然該課程與之前學過的計算機系統(tǒng)結(jié)構(gòu)或者操作系統(tǒng)在一些知識點上有重合,但是在涉及到多線程編程方面仍然顯得很陌生,特別是對眾多的線程庫函數(shù)需要花很大的精力和時間去熟悉。另外,大多數(shù)學生之前也沒有接觸過多核軟件工具,例如Intel C++編譯器、Intel VTune性能分析器、線程檢查器、線程檔案器等,對如何使用這些工具來編輯并調(diào)試分析自己的程序仍舊存在許多疑問。同時也要求大家掌握使用Microsoft Visual Studio軟件調(diào)用線程庫函數(shù)去編寫多線程程序。由于本課程的課時比較少,授課內(nèi)容較多,同學的自學能力不足,導致大多數(shù)學生逐漸失去學習本課程的興趣。
因為受到總的授課學時限制,該課程安排的集體上機次數(shù)較少,有限的上機次數(shù)教師只能給部分學生解答他們遇到的編程問題。同時,學生們課后動手編寫程序的自覺性不高,對調(diào)試程序過程中出現(xiàn)的問題不能獨立地分析思考。少量學生在編程的過程中,當遇到對C或C++語言出現(xiàn)遺忘的情況時,不能主動地去復習一下之前學過的知識點。另外,應試教育思想仍舊在一定程度上影響著當代大學生,一些學生認為只要自己能夠順利通過期末考試拿到學分就行了,這種錯誤的想法導致他們不能潛心地去通過多編寫程序來提升自己的編程能力?;谏鲜鲈?,很多學生上機之后只是寫個實驗報告匆匆交差,不能從根本上鍛煉自己的編程能力。
多核程序設(shè)計課程的教學目的是為了讓學生們了解多核體系結(jié)構(gòu)和多核處理器的相關(guān)知識,并在多核平臺上編寫程序,培養(yǎng)并提高學生的多線程編程能力,從而使他們能夠使用所學的理論知識解決實際應用中出現(xiàn)的問題。然而,目前高校多核程序設(shè)計實踐教學的基本模式是教師安排與課堂所講知識點相關(guān)的編程任務,學生通過上機去驗證課堂所學的例題。因此,學生們只是通過上機對課堂所學的理論知識進行了一次鞏固練習,很少有教師能夠?qū)⒄n程的理論和實際應用中的問題進行結(jié)合去布置相關(guān)作業(yè)。這樣就導致了學生所學的東西都脫離不了書本,不能密切聯(lián)系實際做到活學活用的目的。
由于課程授課學時的限制,教師應該有重點地去選擇一些章節(jié)來講解,對一些跟前續(xù)課程有重合的知識點進行簡單介紹或者直接省去不講。對于教材上的例題也是有針對性地去講,把剩下的一些題目留給同學們課后自己思考,培養(yǎng)學生獨立學習能力。除了講授教材上涉及到的一些重要知識點外,也需要給學生們介紹在相關(guān)的文獻中是如何結(jié)合這些知識點進行應用的。力爭在教學的過程中也能夠引導部分學生對科研產(chǎn)生興趣,拓展學生們的視野,不能僅僅是為了學習課本上的知識而學習。另外,因為計算機技術(shù)的發(fā)展速度比較快,所以教師還應該在上課前,通過查閱資料更新并補充課本中沒有涉及到的知識點,讓學生們能夠了解到最前沿的信息。
興趣往往是一個人學習的最好驅(qū)動力,在開始講授多核程序設(shè)計課程時,教師應該向?qū)W生闡述學習這門課的重要性,可以列舉一些眾所周知的例子,例如:在當前大數(shù)據(jù)時代背景下,通過在多核平臺上進行并行程序的開發(fā)可以達到應用所需的實時性和準確性。在激發(fā)學生們學習該課程的興趣并讓他們明白開設(shè)這門課程的必要性之后,能夠在一定程度上讓他們自覺地去認真學習。同時,還應該鍛煉學生舉一反三的學習能力,例如,在學習Win32線程同步實現(xiàn)的時候,我們知道有五種同步實現(xiàn)的方式,即:全局變量、事件、臨界區(qū)、互斥量、信號量。為了完成某個功能,要讓學生知道既可以分別使用這五種方式中的一種去編程也可以結(jié)合使用其中的幾種。此外,在作業(yè)布置方面,也可以布置一些只有通過查閱課外資料才能作答的題目,培養(yǎng)他們收集信息自我學習的能力。
多核程序設(shè)計是一門既有理論教學又有實踐環(huán)節(jié)的課程,在實際的教學過程中,基本上是先講授一部分理論知識之后再進行上機操作的。在上機前應該鼓勵學生在自己的電腦中安裝編程所需的軟件,并按照課本中的說明配置好編程環(huán)境,這樣做的好處是即使同學在學校機房上機的過程中沒能完成當堂的編程任務,也能在課后通過操作自己的電腦來接著調(diào)試。另外,也可以嘗試在課程的理論知識學習到一定程度的時候給學生布置一道稍微大點的編程題,使學生在后續(xù)的學習過程中能夠帶著問題不斷地思考和積累,到期末課程結(jié)束時再完成整個程序的編寫工作。
目前的考核方式主要還是采用期末考試,考核內(nèi)容基本上是課本上所講授的一些理論知識點,沒有突出實際應用。因此,如果條件成熟的話,可以考慮增加上機考試,通過機考可以考查學生編寫和調(diào)試程序的能力。另外,還應該加大對學生平時成績的考核,主要包括出勤、課堂回答問題、作業(yè)、實驗報告等。
本文首先分析了高校開設(shè)多核程序設(shè)計課程的必要性以及存在的一些問題,包括:學生興趣不足、編程能力有待提高、理論脫離實際應用。針對這些問題,提出了從教學內(nèi)容、教學方法、實踐教學、考核改革等四個方面進行解決,從而做到豐富課堂所教內(nèi)容,培養(yǎng)學生獨立學習的能力,提高學生的編程技能。
[1]胡榮.多核架構(gòu)下基于OpenMP的Huffman壓縮算法并行程序設(shè)計研究[D].長沙:湖南大學,2011:1-57.
[2]王堃.基于多核的并行程序設(shè)計及優(yōu)化[D].南京:南京大學,2012:1-69.
[3]王晗.基于多核環(huán)境下的多線程并行程序設(shè)計方法研究[D].鄭州:中原工學院,2014:1-57.
[4]多核系列教材編寫組.多核程序設(shè)計[M].北京:清華大學出版社,2007
[5]陳天洲,曹捷,王靖淇.《多核程序設(shè)計》概述[J].計算機教育,2007,13:39-41.
Multi-Core Technology;Programming Practice Ability;Parallel Programming;Course Teaching
Suggestion on Teaching Reformation of Intel Multi-Core Programming Course
LONG Xian-zhong
(School of Computer Science&Technology,School of Software,Nanjing University of Posts and Telecommunications,Nanjing 210023)
南京郵電大學引進人才科研啟動基金項目(No.NY214168)
1007-1423(2015)27-0024-03
10.3969/j.issn.1007-1423.2015.27.007
龍顯忠(1985-),男,河南信陽人,博士,研究方向為模式識別、機器學習
2015-08-11
2015-09-20
Intel多核程序設(shè)計課程作為高校計算機科學與技術(shù)專業(yè)的專業(yè)課,對于培養(yǎng)學生的編程實踐能力具有重要意義。在實際的課程教學中往往會出現(xiàn)學生不能夠?qū)⒗碚撆c實際應用聯(lián)系起來、上課能聽懂但是不能獨立編寫程序?;谝陨蠁栴},從改進教學內(nèi)容和方法、加強動手能力的鍛煉,以及改革考核方式等方面提出相關(guān)的建議。
多核技術(shù);編程實踐能力;并行程序設(shè)計;課程教學
As a professional course for college students of computer science and technology,Intel Multi-Core Programming course has important significance for training students'programming practice ability.In the process of learning,students cannot connect the theory to the practical application and write procedures independently.Based on the above problems,proposes some suggestion from teaching content,teaching method,practice teaching and assessment reformation.