張佳佳, 張廣智, 宗兆云, 張軍華
(中國石油大學(華東) 地球科學與技術學院, 山東 青島 266580)
基于計算思維的匯編語言教學實驗設計
張佳佳, 張廣智, 宗兆云, 張軍華
(中國石油大學(華東) 地球科學與技術學院, 山東 青島 266580)
結合地球物理學專業人才培養目標及學生自身特點,探討了匯編語言實驗課程教學存在的問題,將計算思維引入到匯編語言實驗教學中,利用具體實例闡述了基于計算思維的匯編語言實驗教學設計方法和具體實施過程。實踐結果表明,通過對學生計算思維的訓練,有助于學生掌握應用計算機技術解決實際專業問題的思路和方法,鍛煉學生的科學思維和創新能力。
計算思維; 匯編語言; 實驗教學; 問題抽象; 關注點分離
計算思維是與理論思維、實驗思維互為補充的三大基本科學思維之一[1],其含義是運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動[2]。計算思維的概念已經引起了國內外科學界和教育界的廣泛關注,對學生計算思維能力的培養是目前計算機教育研究的重要課題[3- 4]。匯編語言實驗是地球物理學專業“計算機原理與操作系統”課程的重要實踐環節,旨在培養學生良好的程序設計思維和熟練的編程技能。隨著勘探技術和計算機技術的迅速發展,地球物理學科對計算機的需求越來越高。通常非計算機專業的匯編語言實驗比較注重編程能力的培養,而對計算思維的培養比較欠缺[5- 6]。因此,在匯編語言實驗教學過程中引入計算思維、探索計算思維在匯編語言實驗中的訓練和構建、幫助學生理解和掌握匯編語言編程方法、鍛煉學生運用計算思維解決實際問題的能力,為匯編語言實驗課程教學提供新的思路。
(1) 課程內容抽象,編程繁瑣難學。匯編語言是一種面向機器的低級程序設計語言,需要軟件與硬件相結合,編程與具體的處理器相聯系,所以匯編語言具有很強的理論抽象性以及與硬件的相關性[7]。學生在編寫匯編程序過程中不僅需要考慮程序的邏輯性和算法的可實現性,還要考慮內存分配、尋址和訪問等硬件相關內容,因此匯編語言比高級語言繁瑣,程序結構也比高級語言冗長。另外匯編語言多采用MASM命令行編譯工具和DEBUG調試工具,不如高級語言的可視化集成開發環境簡單方便[8]。學生普遍反映課程概念抽象難懂,語法指令繁瑣,編程調試困難。
(2) 教學偏重理論,輕視實踐環節。由于匯編語言理論抽象,所以大多數授課教師都把教學重心放在理論教學上,對實踐環節比較輕視,教學方法也都是以講授法為主[9]。但是匯編語言知識點比較零散和抽象,單一的講授方法很容易讓學生覺得枯燥乏味。此外編語言程序設計是實踐性很強的課程,學生只有在程序設計的實踐中才能理論聯系實際,真正掌握知識點[10]。如果只側重理論教學而輕視實踐環節,就不能很好地激發學生的學習主動性。
(3) 實驗偏重技能,思維培養欠缺。目前大多數高校非計算機專業的匯編語言實驗課程在計算思維能力培養方面是比較欠缺的,通常把教學重心放在培養學生的計算機應用技能和編程能力上,沒有真正培養學生對計算機的認知能力和應用計算機的問題求解能力[11]。教學中教師也沒有啟發學生去思考和領會計算機科學的思想,沒有重視學生計算思維的培養[12]。
2.1 總體目標
針對目前地球物理學專業的匯編語言實驗教學偏重技能培養的問題,將計算思維引入到匯編語言實驗教學中。教學始終圍繞計算思維的思想進行,充分運用抽象、約簡、關注點分離、自動化和啟發式等一系列計算思維的基本概念和方法[13],引導學生學習和領會計算思維的本質,深入掌握利用計算機技術求解問題的思路,培養學生初步的計算思維能力,同時也為更好地利用計算機解決地球物理學科領域的實際應用問題奠定基礎。
2.2 設計思路
教學過程中要將匯編語言編程技能的訓練和計算思維能力的培養有機地結合起來,將計算思維融入技能訓練中,在學生掌握編程技能的基礎上,逐步地培養學生的計算思維能力。具體過程就是,首先教師要運用計算思維的方法去設計實驗項目,要對實驗項目設置好計算思維訓練點,也就是在實驗項目中需要學生掌握哪些計算思維方法或者哪些地方需要用到計算思維方法;其次是在教學實施過程中,教師要引導學生利用計算思維的方法去分析問題的本質、探索解決問題的方法,使得學生的思維隨著知識的貫通而形成,能力隨著思維的形成而提高。
匯編語言課程知識體系完整,不僅有嚴格的理論知識基礎,而且有豐富的編程實例,很多知識點都能夠為計算思維提供很好的案例。下面就以一個具體的實驗項目為例,探討在匯編語言實驗教學過程中融入計算思維的思路和方法。
3.1 實驗任務和目的
實驗任務:要求學生用匯編語言編程實現從鍵盤輸入4門功課的成績,計算4門功課的總成績并顯示在屏幕上,注意要按照程序模塊的方法來編寫。
實驗目的:要求學生掌握模塊化程序(子程序)設計的方法,掌握模塊之間的參數傳遞方法和連接方式。
3.2 實驗設計和實施
明確實驗任務之后,教師應該按照計算思維的方法去設計和呈現實驗內容,設置計算思維訓練點。學生在教師的引導下利用計算思維去分析實驗任務、明確實驗目標,通過任務驅動的教學模式將計算思維的訓練滲透在整個實驗教學過程中。
3.2.1 問題抽象——構建模型
抽象是計算思維的一個重要本質,含義是通過簡化、轉換、遞歸、嵌入等方法將一個復雜問題轉換成許多簡單的子問題并進行求解的過程,簡單地講,抽象就是一種對問題進行表達或建模的方法[14]。在教學過程中可以引導學生利用抽象的方法對實驗任務或者問題進行建模,首先要求學生從用戶的角度出發對任務或者問題進行抽象,建立一個現實世界的概念模型;然后引導學生從程序員的角度進行抽象,建立一個信息世界的邏輯模型;最后要求學生從計算機實現的角度進行抽象,建立一個機器世界的物理模型。這樣,通過分層逐步抽象的過程,就可以幫助學生實現對任務或者問題的建模。
本次實驗任務,首先抽象得到的概念模型是4門功課成績的求和;其次抽象得到的邏輯模型是4個變量的累加運算;最后抽象得到的物理模型是變量的輸入、存儲、計算和輸出。圖1是具體的問題抽象過程。

圖1 實驗任務的問題抽象過程
3.2.2 關注點分離——設計算法
計算思維的關注點分離方法是先將復雜的問題或任務進行合理的分解,再分別研究問題或任務的不同側面(即關注點),最后綜合各方面的結果形成整體的解決方案[15]。在教學過程中,可以引導學生運用計算思維的關注點分離方法,將實驗任務分解成主程序和子程序若干個子任務,然后再將各個子任務進一步分解成一系列單獨實現某一功能的更小的子任務,這樣分解后的子任務就能與匯編語言的某個知識點相對應。學生運用理論課堂學習的知識就可以實現。一系列的子任務完成之后,就可以整合成為一個完整的任務。
本次實驗任務經過第一次關注點分離,可以將程序劃分為1個主程序模塊和和2個子程序模塊,其中1個子程序模塊完成4門功課成績的輸入,另外1個子程序模塊完成4門功課成績的求和;然后經過第二次關注點分離,主程序模塊又可以細分為提示字符顯示、調用子程序模塊和計算結果顯示等子任務,子程序模塊又可細分為數據輸入、數據運算和參數傳遞等子任務等。圖2是具體的關注點分離過程。

圖2 實驗任務的關注點分離過程
3.2.3 自動化——編程實現
自動化是計算思維的另一個本質,由抽象構建的模型,以及基于關注點分離設計的算法,最終都要通過計算機來實現,自動化是計算思維抽象結果的實現過程,是運用計算機強大的運算能力來實現問題的求解,按照機器程序指令逐步執行算法。在匯編語言實驗過程中,通過編寫程序指令語句,然后再進行編譯、鏈接和執行等,就可以實現計算機的自動化功能。
本次實驗任務中,各個程序模塊之間的地址分配都是由計算機自動完成的,不需要人為干預和設定,如圖3所示,這就充分體現了計算機的自動化功能。同時實驗過程中要求學生利用EDIT編輯好源程序后,再利用MASM匯編以及LINK連接成功后,就會生成可執行程序,運行可執行程序EXE文件就會完成實驗要求。程序功能的實現也是計算機自動化的一個重要體現,圖4為程序的運行結果。

圖3 程序模塊之間的地址分配

圖4 程序的運行結果
3.2.4 啟發式思考——算法或代碼優化
啟發式思考是對已經實現的任務或者解決的問題進行進一步思考,判斷現有結果是否最優或者是否有改進之處等[16]。計算思維的啟發式思考就是對算法進行優化,考慮算法的穩健性、時間復雜度與空間復雜度等特征,或者對程序代碼進行優化,考慮代碼的執行效率、可讀性或可移植性等。通過引導學生對這些問題進行思考,培養學生的計算思維能力。
在本次實驗中可以引導學生對程序代碼進行優化,對反復使用的指令語句可以使用宏指令和重復匯編偽指令簡化程序代碼的書寫,程序代碼如下:
DISPLY MACRO STR;定義DISPLAY宏指令 LEA DX,STR MOV AH,9 INT 21H ENDM IRPC X,1234;重復匯編偽指令,每次用字符串1234中的一個代替X
通過以上的教學設計和實施,教師精心設計實驗任務和環節,并指導學生利用計算思維方法完成實驗任務,還可以讓學生進行小組討論,闡述自己對知識點的理解以及求解問題的思路,最后教師再分析、歸納和總結,進一步深化學生對計算思維的理解,提高運用計算機解決實際問題的能力。
培養學生的計算思維能力已經成為計算機教學的核心任務之一,作為基礎實踐課程的匯編語言實驗更應該將計算思維的培養作為重要教學目標。針對地球物理學專業匯編語言實驗課程存在的問題,將計算思維的思想融入到教學過程中,對計算思維訓練點的精心設計以及引導學生運用計算思維的方法去分析和解決問題,有助于培養學生對計算機的認知能力和應用計算機求解問題的能力。例如在基于計算思維的匯編語言實驗的實施和支持下,地球物理學專業很多學生在美國數學建模大賽、大學生創新訓練計劃項目以及程序設計競賽中取得了非常優異的成績。
References)
[1] 戰德臣,聶蘭順.大學計算機: 計算思維導論[M].北京:電子工業出版社, 2013: 1-5.
[2] Wing J M. Computational Thinking[J].Communications of ACM,2006,49(3):33-35.
[3] 何欽銘,陸漢權,馮博琴.計算機基礎教學的核心任務是計算思維能力的培養:《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》解讀[J].中國大學教學,2010(9):5-9.
[4] 陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學, 2011(1): 7-11,32.
[5] 徐靜,王玨,金莉,等.匯編語言程序設計教學改革探討[J].農業網絡信息, 2013(7): 164-166.
[6] 于慶梅,毛镠,馮國富,等.匯編語言程序設計課程微實驗教學模式探討[J].計算機教育,2014(22):111-114.
[7] 阮忠.匯編語言程序設計課程改革與探索[J].農業網絡信息,2013(7):167-169.
[8] 刁紅軍,楊季文.匯編語言實驗教學與實踐[J].計算機教育,2015(15):97-99.
[9] 王小林,侯漠.匯編語言程序設計實驗教學改革探討[J].計算機光盤軟件與應用,2013 (24):202-203.
[10] 安楊,趙波.“匯編語言程序設計”課程教學改革的研究[J].電氣電子教學學報,2007,29(6): 7-9.
[11] 劉道文.高校非計算機專業計算思維能力培養策略研究與實踐[J].計算機教育, 2013(13):39-43.
[12] 劉光蓉.以計算思維能力培養為導向的C程序設計實驗教學[J].實驗技術與管理, 2013,30(1):154-156.
[13] 董榮勝,古天龍.計算思維與計算機方法論[J].計算機科學,2009(1):1-4,42.
[14] 丁海燕.計算機程序設計課程中計算思維的培養[J].實驗技術與管理,2015,32(12): 16-18.
[15] 何明昕.關注點分離在計算思維和軟件工程中的方法論意義[J].計算機科學, 2009(4):60-63.
[16] 程春玲,張少嫻,陳蕾,等.基于計算思維能力培養的數據庫課程教學研究[J].中國電力教育,2012(8):81-82, 87.
Design of assembly language experimental teaching based on computational thinking
Zhang Jiajia, Zhang Guangzhi, Zong Zhaoyun, Zhang Junhua
(School of Geosciences, China University of Petroleum(Huadong)Qingdao 266580, China)
Computational thinking is the thinking method of a wide range of computer science, and the cultivation of student’s computing thinking ability is an important goal of current computer education. Combining the training target and students’ characteristics of geophysics major, this paper firstly discusses the problems in teaching process of assembly language experiment. By introducing computational thinking, this paper illustrates the application and implementation method of assembly language experiment based on specific examples. Practice has proved that training students’ computational thinking can help them to master the thought and method of the application of computer technology to solve practical problems and train their scientific thinking and innovation abilities.
computational thinking; assembly language; experimental teaching; problem abstraction; separation of concerns
10.16791/j.cnki.sjg.2016.12.051
2016-06-29
國家自然科學
(41404088);山東省本科高校教學改革研究項目(2015M015);中國石油大學(華東)人才培養模式改革重大項目(JY-A201401)
張佳佳(1986—),男,湖北隨州,博士,講師,從事計算機匯編語言的教學與研究工作.
E-mail:zhangjj@upc.edu.cn
P313.1;G642.0
: B
: 1002-4956(2016)12-0200-04