朱真峰 吳云鵬
[摘 要] 與文科課程相比,理工科課程知識點的分析需要有較強的邏輯思維,不易理解和掌握。這種現(xiàn)象使得理工科教學課堂普遍較為沉悶,在一定程度上會影響知識的傳授效果。針對這一教學實際,以信息學科中的“C語言程序設計”教學為例,利用聯(lián)系的普遍性原理,嘗試通過遷移學習方法,對課本知識點進行深度挖掘和廣度拓展,通過這兩個維度的剖析,深入淺出地進行知識講解,從而激發(fā)學生的學習熱情,引發(fā)學生的思考,改善知識傳授和技能提升效果。
[關鍵詞] 遷移學習;知識拓展;C語言程序設計;互動教學
[基金項目] 2020年度國家自然科學基金青年科學基金項目“視頻中復雜交互集體行為識別及語義分析研究”(62002330)
[作者簡介] 朱真峰(1980—),男,河南南陽人,博士,鄭州大學信息工程學院副教授,主要從事機器學習、數(shù)據(jù)挖掘及計算機視覺研究;吳云鵬(1987—),男,浙江蘭溪人,博士,鄭州大學信息工程學院講師(通信作者),主要從事模式識別與數(shù)據(jù)挖掘研究。
[中圖分類號] G642? ?[文獻標識碼] A? ?[文章編號] 1674-9324(2021)16-0149-04? ? [收稿日期] 2021-01-27
在授課過程中,照本宣科式的教學無疑會引發(fā)學生的不滿。對于同樣是理工科出身的教師而言,如何能夠既講解清楚理工學科相對嚴謹?shù)闹R體系,又能活躍課堂氣氛,這著實是一種挑戰(zhàn)。教學過程是教與學的統(tǒng)一[1]。在目前的課程教學過程中,教師如果能夠在相對豐富的知識體系基礎上,對學生學習進行引導,不但能夠活躍課堂學習氣氛,引發(fā)學生的思考,也能夠引導學生度過積極、充實的大學學習生活[2]。為了在一定程度上解決或者緩解上述教學問題,基于多年教學實踐,本文探討采用遷移學習方法的教學模式。遷移學習,不管是作為機器學習方法還是人類學習知識的方法,都是一種在已有知識或者技能的基礎上,通過知識遷移,相比非遷移方法,更加高效地解決當前問題的方法[3-6]。
遷移學習在教學過程中也有廣泛的應用。段禮祥[7]利用跨專業(yè)研究生熟悉的領域知識,把醫(yī)學領域的體檢、聽診器等概念遷移到“機械故障診斷”課程的教學之中。馬芳等[8]提出通過遷移學習激發(fā)研究生的探究興趣和創(chuàng)新意識,同時說明教師也需要不斷更新知識體系和提升創(chuàng)新能力。陳智等[9]提出在翻轉課堂教學中,促進正遷移,避免負遷移,以提高學生的應用能力、學習能力和創(chuàng)新能力,等等。
本文通過豐富的實例探討遷移學習方法在理工科課堂教學中的應用。
一、基于知識遷移的“C語言程序設計”教學
本節(jié)通過涉及哲學、數(shù)學等學科的多個C語言知識點教學實例,說明知識遷移在豐富教學內容,活躍教學氛圍中的作用和效果[ 10 ]。
(一)基本概念
本節(jié)主要說明編程課中的一些基礎知識。例如,變量,雙目運算和標識符等。
1.變量模型。在進行C語言編程時,首先需要對可能使用的變量進行定義。定義變量除了自定義標識符外,還需要遵循兩個原則:見名知意、量體裁衣。例如,在C語言中,采用int age可以定義整型變量age,表示年齡。因為年齡是整數(shù)形式,所以定義成了整型。至于年齡為何要定義成整型,涉及建模的問題。只要活著,年齡一直在增加,應該定義成浮點數(shù)更加準確。但是,多數(shù)的應用并不需要過于精確的年齡格式。所以,把年齡變量簡化成時間的階梯函數(shù),每過一年在整體上增加一歲,反而比較方便。如果需要,可以用結構體定義出生的年月日,從中可推算出當前年份更加準確的年齡。
看似簡單的變量定義,會直接影響隨后的數(shù)據(jù)加工過程及結果。這也隱含了數(shù)據(jù)在變化過程中的不變性:內在連貫性或者類型一致性,這涉及具體問題的建模。
2.雙目運算。C語言中存在類型轉換問題:當多個不同類型的數(shù)進行數(shù)學運算時,較低類型的數(shù)據(jù)會自動轉換成較高類型的數(shù)據(jù),從而讓它們在同一級別下參加計算,得到相應的結果。
講解此處時,筆者會在課堂上引入一個形象的問題:
1個橘子+1個蘋果=? (1)
有的同學反應會很快:兩個水果!這樣的拓展鍛煉了學生的抽象思維,同時在師生互動中活躍了課堂氣氛。進一步地,對于抽象思維問題,也可以再引入其他問題。例如,引導學生思考臺球與弓、弩、彈弓和槍支等的內在關系[ 11 ]。這能夠引導學生思考事物之間的共性,以及具體問題具體分析等。
3.三類標識符。C語言中有標識符的概念,并分成了三類:關鍵字標識符、預定義標識符和用戶自定義的標識符。關鍵字標識符在C語言系統(tǒng)中有特定含義,程序設計者不得重新定義。如char,break,sizeof等。預定義標識符有庫函數(shù)和預編譯命令。如printf,include等。用戶最好也不要賦予這類標識符新的含義。否則,這些標識符會失去原有的含義,造成編程混亂。用戶自定義的標識符一般是編程者按照標識符的命名規(guī)則定義的一些變量,可以根據(jù)需要隨意定義和使用。
這三類標識符中。類似古代王朝,第一類可以認為是皇室成員的名字,不能亂用。第二類是朝中大臣的名字,最好也不要亂用。否則,會帶來很多麻煩。第三類相當于普通百姓,只要滿足近親忌諱重名等方面的要求,使用時可以相對靈活。
(二)深層概念
本節(jié)主要說明編程中的幾個重要概念。例如,結構化,模塊化,復雜度等。
1.結構化程序設計。結構化編程涉及順序、條件和循環(huán)三種基本結構。此處可從人類大腦的工作方式或者學生生活中的做事習慣講起。學生的日常工作體現(xiàn)著以時間為順序的做事方式。如果有同學來訪,有些事情可能就需要調整。從更長的時間跨度觀察,做的事情總是在周而復始地向前推進。看似是在重復上課,但知識逐漸得到積累。從這些生活中的例子可以看出,三種基本結構源于生活。
這看似簡單的模式,在理論上已經(jīng)證明:順序、選擇和循環(huán)三種結構可以解決任意的結構化編程問題[ 12 ]。事實上,這三種基本結構符合奧卡姆剃刀(Occams Razor)原理。該理論認為,在建模時,如無必要,勿增實體。道家也有類似的觀點:大道至簡。這條原理也可以描述為:在能解決問題的前提下,方法越簡單越好,濃縮成四個字:簡約實用。
2.模塊化與分形。結構化編程需要對問題自頂向下,逐層分解,最終形成若干模塊;每個模塊會對應一個(子)函數(shù),這些函數(shù)在主函數(shù)的統(tǒng)一調用下形成一個有機的整體,能夠解決初始的編程問題。
如果把主函數(shù)和所有被調用的子函數(shù)繪制在一起,會形成一棵調用樹。一般地,每個函數(shù)由三部分組成:輸入部分、處理部分和輸出部分,它們的結構大致相同。所以,從任何一個調用樹的結點看,它的子結點形成的樹和整個調用樹結構相似。相同或者相似的結構在微觀上不斷重復,這就是分形(fractal)模式。所以,可以認為模塊化的編程具有分形結構。
3.復雜度與優(yōu)化問題?!癈語言”或者“數(shù)據(jù)結構”課程涉及算法時間復雜度和空間復雜度等概念。這兩種復雜度存在一定的相互制約關系,對解決同一個問題的多種算法,如果空間復雜度較高,時間復雜度往往會較低;反之,如果時間復雜度較高,空間復雜度往往會較低。所以,針對不同的實際需求,可以對兩種方案進行折中處理。這和數(shù)學中帶約束的最優(yōu)化問題相似。而且,問題和約束條件一般可以相互轉換。例如造橋問題,在造價不高于某項建設經(jīng)費的情況下,如何建造盡可能堅固的大橋;或者,在堅固程度不低于某種標準的情況下,如何讓造價盡可能低。還有商品出售價和銷售量之間的制約關系問題等。
(三)編程案例的深入分析
本節(jié)深入分析了幾個編程實例,內容涉及哲學和數(shù)學等方面的知識。
1.方程的求解。高中時有一道經(jīng)典的方程問題:
ax■2+bx+c=0. (2)
其中,a,b和c是系數(shù),是x未知數(shù)。
任課教師把式子(2)書寫在黑板上,讓學生考慮進行編程計算時的思路或者步驟。這個方程并沒有說明a≠0,不能直接用韋達定理;所以,需要分情況討論。該編程示例可以訓練學生的嚴謹思維能力。換言之,看問題要全面。
另外,可以進一步引導學生注意或者思考事物的兩面性。當任課教師認為直接用不加清洗的雞蛋看上去不衛(wèi)生,卻會增加人體免疫力時,相信即使是內向的學生也會逐漸變得開朗,會積極地應對學習和生活中的各種事情,更加懂得全面地看問題的重要性。
2.循環(huán)結構的深意。有許多問題,一次性解決比較困難。如果通過一個多次重復計算,每次向前推進一些,經(jīng)過若干輪處理(優(yōu)化)后,一般能夠相對容易地得到預期結果。這種解決問題的思路對應編程中的循環(huán)結構。例如,數(shù)據(jù)計算常常采用迭代法計算開方[ 13 ]:
x■=■ (3)
式(3)把數(shù)值2的開方問題歸結為簡單的除法和加法兩種基本運算。對于任意的初始化的正數(shù)x■,上式可以計算出后繼數(shù)x■,進而是x■,x■,…每次迭代把結果向前推進一點,通過幾次迭代計算,式(3)最終會收斂到了■。對式(3)進行深入分析,我們還可以得知此式收斂的原因。進一步地,對式(3)進行分析和擴展后,還可以解決更復雜的開方問題[ 14 ]。
循環(huán)結構以化繁為簡,小步推進的方式進行工作,可以認為是一種量變引起質變的過程。簡單的問題重復做,就可以獲得不一樣的結果。
3.素數(shù)判定算法的循環(huán)上限。通過循環(huán)進行素數(shù)的判定是“C語言程序設計”教學中的經(jīng)典案例之一。一般都是從素數(shù)的定義出發(fā),計算除了1和該數(shù)本身以外,是否存在其他可以整除的數(shù)。對于正整數(shù)n(n>=3),依次除以從2到n-1的所有數(shù)。如果都除不盡,n就是素數(shù);否則,n是合數(shù)。
上述計算方法最多進行n-2次除法,就可得到結果。經(jīng)過分析,除數(shù)的上限可以下調至■,最多進行■-1次除法即可。
此處可以引導學生思考其中的原因。如果需要提示,可以讓學生根據(jù)合數(shù)的特點進行分析。還可以引導學生思考:如果輸入的數(shù)據(jù)就是合數(shù),這個下調的上限是否有用;輸入素數(shù)時又如何。進一步地,還有孿生素數(shù)的判定問題。
二、教研學相長
在“C語言”等專業(yè)課的教學過程中,上述的擴展教學方式也在一定程度上得到了學生的認可。在對任課教師的教學評價環(huán)節(jié),學生普遍會認為任課教師知識面比較廣,上課比較風趣,會鼓勵有新穎想法的同學,不會輕易否定學生。這本身也是一種正能量的遷移,有助于學生身心的健康發(fā)展。
一般地,任課教師如果具備相對寬泛的知識結構,會更容易達到寓教于樂的效果。這種教學效果也給教師提出了不斷進修的要求,如同遷移學習的別名:終身學習。終身學習也是工程教育專業(yè)認證中的一項要求。要想培養(yǎng)出具有終身學習能力的學生,任課教師首先要具備終身學習能力,并能將其貫穿于專業(yè)課程的教學實踐之中。
教研成果也可以進一步拓展學生對知識理解的深度和寬度。例如,論文[ 14 ]在數(shù)值計算中采用迭代法實現(xiàn)開方[ 13 ]的基礎上,采用泛化的不等式結論,通過循環(huán)結構,實現(xiàn)了對實數(shù)開任意正整數(shù)次方的運算。朱真峰等[ 15 ]從數(shù)據(jù)庫定義角度,提出了“系統(tǒng)化原理”課程中眾多知識點的整體思維導圖。這些內容可以拓展學生的知識面,加深對基礎知識的理解,充分認知數(shù)學的重要性,培養(yǎng)學生的全局性思維,等等。
三、結語
本文采用遷移學習思想,在“C語言”課程中引入與課程內容相關的豐富實例,對課本知識進行深度和廣度的拓展。這種方式能夠引發(fā)學生思考,活躍課程氣氛,更加有效地傳授知識。本文結合“C語言”課程的上述分析,在隨后的教學過程中有待進一步豐富和完善。
參考文獻
[1]楊斌鑫,王希云.數(shù)據(jù)計算及應用專業(yè)的建設與實
踐——信息與計算科學專業(yè)在大數(shù)據(jù)時代下的內涵式發(fā)展[J].教育教學論壇,2020(53):382-384.
[2]李文騫.基于OBE理念的程序設計類課程教學改革初探[J].教育教學論壇,2020(28):288-289.
[3]王雪松,潘杰,程玉虎.知識遷移學習方法及應用[M].北京:科學出版社,2016:1.
[4]Yang Qiang, Zhang Yu, Dai Wenyuan, et al. Transfer Learning[M]. Cambridge: Cambridge University Press, 2020:7-11.
[5]Sinno Jialin Pan, Yang Qiang. A Survey on Transfer Lear-
ning[J]. IEEE Transactions on Knowledge and Data Enginee-
ring(TKDE),2010(22):1345-1359.
[6]ZHU Zhen-feng, ZHU Xing-quan, GUO Yue-fei, et al. Transfer Incremental Learning for Pattern Classification[C]. The 19th ACM International Conference on Information and Knowledge Management (CIKM),2010:1709-1712.
[7]段禮祥.遷移學習在專業(yè)課程教學中的實踐研究[J].課程教育研究,2017(46):55-56.
[8]馬芳,馬學.探索遷移學習促進研究生課堂教學的實踐應用[J].中國高等醫(yī)學教育,2018(4):86-87.
[9]陳智,梁娟,謝兵.學習遷移理論在翻轉課堂教學中的應用[J].教育現(xiàn)代化,2018(5):233-235.
[10]趙娜,覃科,何金花.以程序設計能力培養(yǎng)為核心的C語言教學改革[J].教育教學論壇,2020(46):171-173.
[11]朱真峰,孫建新.臺球運動中計算主球進攻方向的精確模型及實用方法[J].河南師范大學學報,2014(42):172-174.
[12]唐稚松.論指令系統(tǒng)的遞歸性[J].數(shù)學學報,1965(15):842-860.
[13][美]Scheid Francis,羅亮生,包雪英.數(shù)值分析(2版)[M].王國英,譯.北京:科學出版社,2002:1.
[14]朱真峰.迭代算法的可行性及實用性[J].鄭州師范教育,2015(4):23-25.
[15]朱真峰,田偵.基于思維導圖的數(shù)據(jù)庫原理課程總體認知分析[J].計算機教育,2020(4):92-97.
Role of Transfer Learning in Activating Science and Engineering Classroom Teaching: Taking C Language Programming Course as an Example
ZHU Zhen-feng, WU Yun-peng
(School of Information Engineering, Zhengzhou University, Zhengzhou, Henan 450001, China)
Abstract: Compared with liberal art courses, understanding knowledge points in science and engineering courses requires strong logical thinking, and it is difficult to understand and master for students. This phenomenon makes the teaching atmosphere of science and engineering courses dull and reduces the effect of teaching to some extent. In view of the teaching practice, taking the C Language Programming course of the information discipline as an example, and inspired by the principle of universal connectivity, this paper attempts to expand the depth and breadth of knowledge of the textbook by adopting transfer learning method. Through the analysis of these two dimensions, we try to explain profound theories in simple language, so as to stimulate students' enthusiasm for learning, arouse students' thinking, and improve the knowledge imparting and skills improvement effect.
Key words: transfer learning; expansion of knowledge; C Language Programming; interactive teaching