陳洪生 吳亮 吳春輝
摘要:計(jì)算思維是以計(jì)算能力和思維能力為基礎(chǔ)的一種思維方式。它是每個(gè)人需要具備的基本技能,也是人類求解問題的一條途徑。任務(wù)驅(qū)動(dòng)教學(xué)法就是將課程的教學(xué)內(nèi)容設(shè)置成與其緊密結(jié)合而富有趣味性和挑戰(zhàn)性的任務(wù)。文章介紹的教學(xué)法就是將計(jì)算思維和任務(wù)驅(qū)動(dòng)教學(xué)法相結(jié)合。它不但可以更好地培養(yǎng)學(xué)生的思維模式,激發(fā)學(xué)生的學(xué)習(xí)積極性,還能達(dá)到較好的教學(xué)效果。
關(guān)鍵詞:計(jì)算思維;思維方式;任務(wù)驅(qū)動(dòng)式;編譯原理課程
中圖分類號(hào):TP314? 文獻(xiàn)標(biāo)志碼:A
0 引言
計(jì)算思維教育的目的是培養(yǎng)一種思維習(xí)慣,一種像計(jì)算機(jī)科學(xué)家思考問題那樣的習(xí)慣。它是每個(gè)人都要學(xué)會(huì)的一種基本技能,所以教師應(yīng)將計(jì)算思維融入課堂教學(xué),讓學(xué)生能掌握這種基本能力。“編譯原理”課程主要講授高級(jí)語言程序是如何進(jìn)行編譯的,在計(jì)算機(jī)的專業(yè)教學(xué)中占據(jù)了很重要的地位。因?yàn)樵撜n程具有一定的理論深度和難度并且涉及很多算法,所以學(xué)生在學(xué)習(xí)過程中就會(huì)出現(xiàn)畏難情緒,導(dǎo)致學(xué)生學(xué)習(xí)積極性不高,從而導(dǎo)致教學(xué)效果不佳。本文提出基于計(jì)算思維的任務(wù)驅(qū)動(dòng)式教學(xué)模式。這種教學(xué)模式是將計(jì)算思維和任務(wù)驅(qū)動(dòng)式的教學(xué)方法相結(jié)合,既能更好地培養(yǎng)學(xué)生的計(jì)算思維模式,又能提高學(xué)生學(xué)習(xí)的積極性。
1 計(jì)算思維概述
國(guó)際上廣泛認(rèn)同的計(jì)算思維定義來自周以真教授。周教授認(rèn)為,計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)的一系列的思維活動(dòng)[1]。
計(jì)算思維是一種概念化的思維方式,不是一種程序化的思維方式,因此,它不能按照預(yù)先編制好的“指令”來逐步思考。計(jì)算思維是一種遞歸思維,是人類求解問題的一條途徑,但絕非要人類像計(jì)算機(jī)那樣思考。計(jì)算機(jī)雖然具有強(qiáng)大的計(jì)算能力,但是計(jì)算機(jī)是枯燥和乏味的。人類聰穎并富有想象力,他們可以賦予計(jì)算機(jī)激情并配備計(jì)算機(jī)強(qiáng)大的計(jì)算能力,他們能用自己的智慧來解決在計(jì)算時(shí)代之前無法解決的問題;計(jì)算思維是數(shù)學(xué)與工程思維的互補(bǔ)和融合;計(jì)算思維是一種人的主觀思想,常被人們用來求解問題、管理日常生活以及與他人進(jìn)行交流和互動(dòng)[2-3]。
2 任務(wù)驅(qū)動(dòng)教學(xué)法的概念和意義
任務(wù)驅(qū)動(dòng)是以構(gòu)建主義教學(xué)理論為基礎(chǔ),既能夠激發(fā)學(xué)生的學(xué)習(xí)動(dòng)機(jī),又與教學(xué)內(nèi)容緊密結(jié)合,以富有趣味性的任務(wù)為載體,學(xué)習(xí)者通過完成某項(xiàng)任務(wù)獲得知識(shí)與技能的一種開放式、探究式教學(xué)模式。任務(wù)驅(qū)動(dòng)式教學(xué)方法體現(xiàn)了以任務(wù)為明線、以提高學(xué)生知識(shí)掌握與技能應(yīng)用為暗線、教師為主導(dǎo)、學(xué)生為主體的基本特征[4-5]。這種教學(xué)模式改變了以往以教師填鴨式、滿堂灌的方式講授知識(shí)的教學(xué)觀念,變成以學(xué)生為主體、教師為輔助,學(xué)生為了完成任務(wù)而自主學(xué)習(xí)自主思考的互動(dòng)式的教學(xué)方式。
在任務(wù)驅(qū)動(dòng)式教學(xué)模式下,教師不再處于整個(gè)課堂教學(xué)中的主宰地位,而在整個(gè)課堂中學(xué)生是主體。教師僅僅是起輔助作用,成為學(xué)生學(xué)習(xí)中的一個(gè)引導(dǎo)者,學(xué)生成為整個(gè)課堂教學(xué)的主人。教師圍繞課程的知識(shí)點(diǎn),發(fā)布學(xué)習(xí)任務(wù),學(xué)生帶著任務(wù)進(jìn)入學(xué)習(xí)環(huán)境,由于學(xué)習(xí)過程中有了任務(wù),有了目的,學(xué)習(xí)起來會(huì)更加認(rèn)真。為了解決任務(wù),學(xué)生會(huì)更主動(dòng)地激活原有的知識(shí)和經(jīng)驗(yàn),通過新舊知識(shí)的銜接,理解、分析并解決任務(wù)。在解決任務(wù)的過程中,教師不能直接告訴學(xué)生應(yīng)當(dāng)如何來解決任務(wù),而是要對(duì)學(xué)生進(jìn)行適當(dāng)?shù)囊龑?dǎo),如需要搜集哪一類資料及從何處獲取有關(guān)的信息資料等,啟發(fā)學(xué)生獨(dú)立思考,倡導(dǎo)學(xué)生之間進(jìn)行討論和交流,通過不同觀點(diǎn)的交鋒、補(bǔ)充,來修正和完善任務(wù)的解決方案。教師鼓勵(lì)學(xué)生自己動(dòng)手通過實(shí)驗(yàn)來完成任務(wù),這樣不但提高了學(xué)生實(shí)際動(dòng)手能力,也能引導(dǎo)學(xué)生更好地理論聯(lián)系實(shí)際。學(xué)生完成課堂發(fā)布的學(xué)習(xí)任務(wù)。在完成任務(wù)的過程中,他們的獨(dú)立思考能力及與他人協(xié)同合作能力都會(huì)得到提高,完成后也會(huì)獲得一種成就感,這樣可以激發(fā)他們的學(xué)習(xí)興趣,從而逐步形成一種認(rèn)真學(xué)習(xí)并主動(dòng)解決問題的良好的學(xué)習(xí)氛圍。這種教學(xué)模式不但極大地提高學(xué)生實(shí)際動(dòng)手能力和思維能力,而且還能使整個(gè)課堂教學(xué)過程充滿激情和人性,能真正地調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性并能使課堂的氛圍活躍起來。
3 基于計(jì)算思維的“編譯原理”課程任務(wù)驅(qū)動(dòng)教學(xué)法應(yīng)用
3.1 “編譯原理”課程中存在的問題
“編譯原理”課程是計(jì)算機(jī)專業(yè)很重要的一門核心課程。本課程講述的是將高級(jí)語言編寫的源代碼轉(zhuǎn)換成目標(biāo)代碼的編譯程序的基本原理和實(shí)現(xiàn)技術(shù)。通過本課程的學(xué)習(xí),學(xué)生應(yīng)掌握文法和形式語言的基礎(chǔ)知識(shí),理解詞法分析器和語法分析器的原理和算法并能編程,理解程序設(shè)計(jì)語言原理。但由于其內(nèi)容較難,算法復(fù)雜難懂,傳統(tǒng)的教學(xué)方法主要是教師根據(jù)教學(xué)進(jìn)度表的要求對(duì)相關(guān)內(nèi)容進(jìn)行講述,通過例題的形式對(duì)算法進(jìn)行演示,學(xué)生課下通過課后練習(xí)來加深對(duì)算法的理解。這種教學(xué)模式枯燥無味,學(xué)生在課堂上被強(qiáng)制要求接受教學(xué)內(nèi)容,從而導(dǎo)致學(xué)生在學(xué)習(xí)過程中缺乏積極性,有的為了完成作業(yè)而相互抄襲。大多數(shù)學(xué)生覺得這門課很難,不愿意好好學(xué)習(xí),導(dǎo)致教學(xué)效果不理想。
3.2 “編譯原理”課程中存在問題的分析
按照以前以教師為主體的“滿堂灌”的教學(xué)方法,學(xué)生學(xué)習(xí)積極性不高,教學(xué)效果不佳。為了提高學(xué)生的學(xué)習(xí)積極性,讓學(xué)生更好地掌握知識(shí),本文提出的任務(wù)驅(qū)動(dòng)式教學(xué)方法可以運(yùn)用在該門課程的教學(xué)過程中。該教學(xué)方法過程如圖1所示。
3.3 “編譯原理”課程中任務(wù)驅(qū)動(dòng)式教學(xué)法的具體實(shí)踐
下面以有限自動(dòng)機(jī)章節(jié)的內(nèi)容為例,來介紹該教學(xué)方法的具體實(shí)施情況。
該教學(xué)過程設(shè)計(jì)如下。
(1)當(dāng)開始學(xué)習(xí)有限自動(dòng)機(jī)時(shí),教師先從易到難地提出該章節(jié)內(nèi)容相關(guān)的任務(wù):①確定的有限自動(dòng)機(jī)和不確定的有限自動(dòng)機(jī)的根本區(qū)別;②不能夠被有限自動(dòng)機(jī)識(shí)別的單詞錯(cuò)誤的原因;③將不確定的有限自動(dòng)機(jī)確定化的算法用程序來實(shí)現(xiàn)。教師讓學(xué)生帶著任務(wù)來學(xué)習(xí)。
(2)逐一給出相關(guān)的定義概念。有限自動(dòng)機(jī)的定義:一個(gè)不確定的有限自動(dòng)機(jī)M是由5個(gè)部分組成,它是一個(gè)五元式,即M=(S,∑,f,s0,D)。其中,S代表有窮狀態(tài)集,∑代表有窮字母表,f是從S×∑*→2S的多值映射,s0代表非空初態(tài)集,D代表終態(tài)集。一個(gè)確定的有限自動(dòng)機(jī)M′由5個(gè)部分組成,它也是一個(gè)五元式,即M′=(S,∑,f,s0,D),其中S代表有窮狀態(tài)集,∑代表有窮字母表,f是從S×∑→S的單值映射,s0代表唯一的初態(tài),D代表終態(tài)集[6]。
有限自動(dòng)機(jī)M (S,∑,f,s0,D)識(shí)別字時(shí),對(duì)于集合∑*中的任何一個(gè)字,若存在一條從初態(tài)結(jié)點(diǎn)s0到終態(tài)結(jié)點(diǎn)集合D中某一個(gè)終態(tài)結(jié)點(diǎn)的通路,這條通路上所有弧的標(biāo)記字符依序連接成的字符串等于α′,則稱字α′能被該有限自動(dòng)機(jī)M所識(shí)別。
不確定的有限自動(dòng)機(jī)的確定化算法(子集法)描述如下:(1)假定集合I是不確定有限自動(dòng)機(jī)M′的狀態(tài)子集,定義集合I的ε閉包ε-CLOSURE(I)為:若狀態(tài)s屬于集合I,則狀態(tài)s也屬于I的ε閉包,即s∈ε-CLOSURE(I),也就是集合中的所有狀態(tài)均屬于該集合的ε閉包;若狀態(tài)s屬于集合I,則從s出發(fā)經(jīng)任意條即一條或多條ε弧而能到達(dá)的那些狀態(tài),s′都應(yīng)屬于該集合的ε閉包,即s′∈ε-CLOSURE(I);(2)假定集合I是不確定有限自動(dòng)機(jī)M′的狀態(tài)子集,b∈∑,定義Ib=ε-CLOSURE(Q),其中,集合Q是從集合I中的任一狀態(tài)結(jié)點(diǎn)出發(fā)經(jīng)過一條b弧而所能到達(dá)的所有的狀態(tài)結(jié)點(diǎn)的集合;(3)假定有限自動(dòng)機(jī)輸入字母表有i個(gè)字符,例如∑={b1,b2,…,bi},則可以構(gòu)造一張含有i+1列的表,該表的每一行都有i+1列,第一列為I 列,第二列為Ib1,第三列依次為Ib2,依次類推,最后一列為Ibi。置該表的首行首列的值為ε-CLOSURE(X)。其中,X為不確定有限自動(dòng)機(jī)的初態(tài)。一般情況下,如果某一行的第一列即I列的值已經(jīng)確定,那么就可以通過上述求Ib的算法分別求出該行的第二列以及后面等列的值,然后檢查第二列和后面列的值,看它們是否與表的第一列的值相同,將與第一列不同的值依次填入下面空行中的第一列。按照上述過程繼續(xù)進(jìn)行,直到該表中所有行的第二列以及后面列的值均在第一列中出現(xiàn)。將構(gòu)造出來的表中第一列即I列中的每個(gè)狀態(tài)子集視為轉(zhuǎn)換后的確定的有限自動(dòng)機(jī)的新的狀態(tài),那么這張表就可以看作是轉(zhuǎn)換后的確定的有限自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)換表,這樣就可以得到一個(gè)確定的有限自動(dòng)機(jī)了,該確定的有限自動(dòng)機(jī)的初態(tài)就是表中第一行第一列的值,終態(tài)為含有原來不確定有限自動(dòng)機(jī)終態(tài)的那些值。
(3)學(xué)習(xí)完該章節(jié)的理論知識(shí)后,要求學(xué)生可以根據(jù)任務(wù)和理論知識(shí)對(duì)任務(wù)進(jìn)行分析,分析哪個(gè)任務(wù)用哪個(gè)知識(shí)點(diǎn)來解決;分析完任務(wù)后,學(xué)生可以完成任務(wù)了。
(4)教師對(duì)任務(wù)完成的成果可以通過作業(yè)、練習(xí)以及編程實(shí)現(xiàn)的方式來檢查。這是任務(wù)驅(qū)動(dòng)式教學(xué)的最后環(huán)節(jié)。
3.4 教學(xué)效果的分析
在上述教學(xué)過程中,不再以教師講解為主體,學(xué)生作為課堂的主人。在學(xué)習(xí)過程中,學(xué)生是帶著“任務(wù)”來學(xué)習(xí)的,那么他們學(xué)習(xí)的專注度和學(xué)習(xí)積極性更高。教師將要講解的整個(gè)課堂知識(shí)分解成小塊的學(xué)習(xí)任務(wù),可以讓學(xué)生對(duì)知識(shí)有更深入的理解而不是被強(qiáng)制要求接受教學(xué)內(nèi)容。為了解決每個(gè)任務(wù),學(xué)生會(huì)自主地進(jìn)行學(xué)習(xí)。遇到困難時(shí),教師鼓勵(lì)并倡導(dǎo)學(xué)生之間進(jìn)行討論和交流。學(xué)生也可以跟教師進(jìn)行溝通,但教師不要直接告訴解決方法,而是要對(duì)學(xué)生一步一步地進(jìn)行引導(dǎo),鼓勵(lì)他們自主解決困難并完成任務(wù)。在分析每個(gè)任務(wù)的過程中,學(xué)生可以從易到難地理解章節(jié)內(nèi)容。在解決了每個(gè)任務(wù)后,學(xué)生掌握了所有與任務(wù)相關(guān)的內(nèi)容。從平時(shí)學(xué)生的課堂表現(xiàn)和作業(yè)的完成情況以及最后該門課程的期末考試情況可以發(fā)現(xiàn),任務(wù)驅(qū)動(dòng)式教學(xué)法在該門課程中是有效果的。
3.5 教學(xué)方法的改進(jìn)
對(duì)于大多數(shù)學(xué)生而言,任務(wù)驅(qū)動(dòng)式教學(xué)方法效果顯著,但有極少數(shù)學(xué)生,由于基礎(chǔ)較差,效果不是很明顯。筆者認(rèn)為可以對(duì)該教學(xué)法做以下改進(jìn):對(duì)于基礎(chǔ)較弱的學(xué)生,可以根據(jù)學(xué)生基礎(chǔ)的不同提出難易不等的任務(wù);對(duì)于基礎(chǔ)差距不大的學(xué)生,可以提出一樣的任務(wù),但是可以引導(dǎo)他們看不同的相關(guān)資料,從而完成任務(wù)。
4 結(jié)語
本文提出了基于計(jì)算思維的任務(wù)驅(qū)動(dòng)式教學(xué)法,以“編譯原理”課程中詞法分析這一章節(jié)為例,應(yīng)用了該教學(xué)法。由于基于計(jì)算思維的任務(wù)驅(qū)動(dòng)式教學(xué)模式的特點(diǎn)是以學(xué)生為主體,教師為主導(dǎo),所以該教學(xué)模式有利于提高學(xué)生的學(xué)習(xí)興趣,提高了學(xué)生自主學(xué)習(xí)的能力以及與他人合作的能力。
參考文獻(xiàn)
[1]WING J M.Computational Thinking[J].Communications of the ACM,2006(3):33-35.
[2]陳國(guó)良,董榮勝.計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J].中國(guó)大學(xué)教學(xué),2021(1):7-11.
[3]李廉.計(jì)算思維-概念與挑戰(zhàn)[J].中國(guó)大學(xué)教學(xué),2012(1):7-12.
[4]劉紅梅.任務(wù)驅(qū)動(dòng)式案例教學(xué)法的構(gòu)建與應(yīng)用[J].江蘇高教,2016(4):71-73.
[5]任浩,葉常春,肖政.任務(wù)驅(qū)動(dòng)教學(xué)法在程序設(shè)計(jì)課程中的實(shí)踐與分析[J].計(jì)算機(jī)工程與科學(xué),2019(41):109-112.
[6]陳火旺,劉春林,譚慶平,等.程序設(shè)計(jì)語言編譯原理[M].3版.北京:國(guó)防工業(yè)出版社,2020.
(編輯 王永超)
Research of computational thinking task-driven teaching method: taking “Compiler Principles” as an example
CHEN? Hongsheng1, WU? Liang2, WU? Chunhui1*
(1.Hubei University of Science and Technology, Xianning 437100, China;
2.No. 1 Middle School of Tongcheng County, Tongcheng 437400, China)
Abstract: Computational thinking is a way of thinking based on the ability of calculation and thinking. It is a basic skill that everyone needs to have, and it is also a way for human beings to solve problems. The task-driven teaching method is to set the teaching content of the course as interesting and challenging tasks that are closely combined with the teaching content. The teaching method introduced in this paper is a combination of computational thinking and task-driven teaching method.It can better train students thinking mode, stimulate students enthusiasm for learning, thus achieving better teaching results.
Key words: computational thinking; way of thinking; task-driven; course of compiler principles