鄭佳琦
(南京明道學校 江蘇 南京 211899)
2017年國務院印發(fā)《新一代人工智能發(fā)展計劃》,義務教育階段響應國家政策積極在中小學開展編程課程。Python語言相較于其他的程序設(shè)計語言具備高解讀性、少語法規(guī)則、無需編譯等優(yōu)點,簡化學生學習過程中的無關(guān)操作,節(jié)省時間和精力專注于自身編程能力的提高和核心思維力的培養(yǎng)。學生經(jīng)過小學圖形化編程的學習,已經(jīng)積累程序設(shè)計的基礎(chǔ)思維,但初中生抽象邏輯能力、計算思維能力較弱,對于代碼書寫存在畏難情緒。而Python作為初中教學科目開始時間不長,如何打消學生面對抽象的程序思維的畏難心理,不讓枯燥的代碼學習磨滅對信息學科的學習熱情,需要教師對于Python課程的教學設(shè)計深入實踐和不斷探索。
筆者作為初中信息技術(shù)教師始終積極探索Python程序教學,依托設(shè)置生動的生活化情景來調(diào)動學生的積極性,轉(zhuǎn)換故事中原本的情節(jié)邏輯為代碼邏輯,教師通過精心設(shè)計的“問題鏈”層層引導,將程序語法循序漸進教授予學生,旨在探究提高學生核心素養(yǎng)力的良好教學方法。
“在教學中注重創(chuàng)設(shè)情景和提出問題,能夠有效促進學科核心素養(yǎng)的培養(yǎng)和發(fā)展?!盵1]史寧中教授的學術(shù)觀點意味著學生核心素養(yǎng)可以在特定的教學情境中培養(yǎng)而成,教師通過創(chuàng)設(shè)與學生生活學習相關(guān)的真實情景,保障學生的學科學習真實、高效地發(fā)生。學生在教師精心設(shè)定的教學環(huán)境中,學習的主動性和求知欲增加,有助于提升學生的核心素養(yǎng)。
在教學情境的設(shè)置上,一般課堂采用課前導入的形式,作為引發(fā)學生興趣的課堂教學點,對于理論知識來說只是最開始的刺激。教師通常都是需要設(shè)置教學任務做到層層遞進,教學情境在中間教學過程中的作用被淡化,但是又會出現(xiàn)在課程的結(jié)尾部分強行串聯(lián)。雖然教學情境不作為課堂的主要部分,但其實可以作為錦上添花的存在,教師合理化設(shè)置教學情境,將故事的帶給學生的起伏
“問題導學式”課堂開展是通過教師提供“預設(shè)問題”為學生認知導向,以學生為本,以問題解決為核心,提高學生學習的主動性為目標的現(xiàn)代化教學模式?!皢栴}導學”的最終的目的是對于學生能力與素養(yǎng)的培養(yǎng),“問”是一種形式,如何通過“問”實現(xiàn)“導學”,才是教師真正要思考的問題[2]。
教師在預設(shè)問題時一定要注意避免“無效提問”。“無效提問”是指問題本身答案早已存在于學生原有的認知水平,學生不能通過問題引發(fā)新的思考,教師也無法通過問題帶動課堂發(fā)展。教師的問題設(shè)置一定要有明確的目的,問題的答案范圍不可過于廣泛,學生能夠經(jīng)過課堂學習總結(jié)得出答案,在回答問題的同時課堂教學得到及時反饋,也可以增加學生學習的成就感,從而提高學生的主動探究性。
教學情境與問題導學皆為有效的教學手段,能夠起到積極推動課程發(fā)展的作用,將情景融入至問題導學型課堂能實現(xiàn)“1+1>2”的效果。套用學生熟悉的情景,也許是耳熟能詳?shù)墓适禄蛘呤巧磉叺恼鎸嵣?,分析其中學生熟悉的邏輯,建立已知的知識結(jié)構(gòu)。程序設(shè)計是一門抽象的概念,初中生理解較為困難,容易萌生半途而廢的心理,需要教師及時添加課堂刺激引發(fā)學生學習激情。合理的教學情境具有邏輯性強、趣味性高、具象性強的特點,結(jié)合教師精心設(shè)計的課程“問題鏈”,將學生已有知識體系和新課程教學相結(jié)合,遵循趣味性的原則,充分啟發(fā)學生的思考,達成課堂教學目標。
教師通過提問的方式引導學生學習,初中信息技術(shù)課堂相較于其他學科上課頻率較低,課程戰(zhàn)線拉鋸較長,課程評價的主要來源于課程本身的激勵和教師帶領(lǐng)學生進行信息科學的競賽。通過教育部制訂的中學生信息競賽等章程不難看出信息競賽的場景性、趣味性,大多數(shù)競賽都是通關(guān)的方式,設(shè)定一個個生動有趣的情景,提出各種各樣在情境中遇到的問題交給學生去完成?;趫鼍跋碌奶釂柗浅>邆浯敫?,課程任務難度合理,層層遞進。問題的設(shè)置不能是學生隨口就能回答,不用經(jīng)過思考和資料借閱的,最好是能夠引發(fā)學生新舊知識遷移或者學生間討論的,稱此類問題是教學中的“有效問題”。
趙福生等人在《Python在中小學教學中的應用》一文中提出“情景陶冶式教學”的策略,為了解決學習程序枯燥乏味的問題,教師創(chuàng)設(shè)了程序的活動情景,讓學生身處情景,在解決有意義的問題過程中探究程序的特點。[3]常規(guī)教學中普通的Python程序語言教學使得課堂效率低下,學生學習熱情隨著編寫程序中調(diào)試失敗的次數(shù)增加而隨之遞減。教師通過構(gòu)建生動的教學情境,提出需要探究的問題,學生隨著教師構(gòu)建的“問題鏈”將問題分析、抽象、建模、編寫代碼、調(diào)試優(yōu)化。
在“Python分支結(jié)構(gòu)——田忌賽馬”一課中,采用情景式“問題導學”教學法,先導入視頻《田忌賽馬》了解三局兩勝的完整策略。教師通過自然語言敘述、流程圖展示、問題鏈啟發(fā)學生分析故事中的程序設(shè)計邏輯,探究實現(xiàn)問題的Python程序算法進行編程調(diào)試,最終完成目標。為保證學生學習的主動性,教師設(shè)置的任務逐步放開學生編程自由度,采用先做后教的策略,引領(lǐng)學生完善自身認知結(jié)構(gòu),打開“以已知探未知的”思維方式。[4]本課例流程分為:創(chuàng)設(shè)情境:教師通過視頻為學生展示《田忌賽馬故事》,在這個環(huán)節(jié)授課時,也有同行教師提出為什么不由學生來講述故事,在這里筆者的思考是:一、故事本身學生都知道,但是本課中所需要的重點:對仗時,齊王先派馬然后田忌才根據(jù)齊王的策略進行調(diào)整,這個重點也是情景能應用于教學的重點之一。問題分解:一個完整的策略學生難以從中剝絲抽繭,教師引導學生了解任務,將三局對戰(zhàn)簡單理解為同一種,再去分析同一種的勝負情況,再分析到勝利的情況。反過來內(nèi)推就是一個層層遞進的教學流程。抽象建模:對于計算機程序來說,無論事故中的齊王還是田忌、三種馬的等級都是抽象的概念,如何將故事中的角色應用到計算機中來解決,在這個教育過程中就是對于學生計算思維的培養(yǎng)。用變量定義齊王和田忌,用數(shù)字1-3表示馬的級別。編寫代碼:編寫代碼的過程也是將學生從自然語言過渡到程序設(shè)計語言,在代碼編寫的教學中教師應建立有效的教學框架,比如先將故事視頻中的原話請學生順著故事邏輯提煉出來,然后教師用流程圖梳理邏輯,然后對應流程圖的過程用代碼書寫,代碼書寫可以從填空開始,讓學生填寫關(guān)鍵的步驟,然后給出語句邏輯讓學生填寫主要條件,最后到多分支語句時鼓勵學生自行嘗試。測試優(yōu)化:學生在測試的過程中難免會遇到問題,遇到問題也是程序編寫課上的重要教學時機,教師可以把經(jīng)典的、易錯點廣播給學生們一起解決,由學生互相進行點評更改,在更改的過程中學生也能避免出錯??偨Y(jié)升華:由于信息技術(shù)課堂不被列入中考學科,評價沒有最終統(tǒng)一的方式,學生容易體會不到信息學科的重要性,所以最后總結(jié)的環(huán)節(jié)是一個非常好的進行總結(jié)回饋的時機,可以用層層追問的方式讓學生進行回答,或者讓學生完成一個問題進行自我檢測,如果想要當堂回饋還可以使用調(diào)查問卷的形式進行檢測。
導入環(huán)節(jié)教師播放《田忌賽馬》故事視頻,設(shè)置學生熟悉的歷史故事情景,在總結(jié)田忌之中獲勝的策略時,教師請學生歸納田忌賽馬三局兩勝的策略,帶領(lǐng)學生分析歷史故事中蘊含的程序設(shè)計邏輯,引領(lǐng)學生將完整策略分解成單一一輪田忌的輸贏情況,層層遞進逐步將大的問題轉(zhuǎn)化為符合學生知識認知和代碼書寫水平的小問題,在問題分解的過程中逐步培養(yǎng)學生的計算思維。
在設(shè)置分支結(jié)構(gòu)一課的教學情境中,常見的就是利用生活中的現(xiàn)象入手,比如垃圾分類、分發(fā)快遞……這些教學情景也都是學生生活中息息相關(guān)的。在選擇教學情景的時候還要考慮是否能進行分解任務和問題設(shè)計,能夠隨著課堂內(nèi)容的深入提出的問題越來越引發(fā)學生思考。
故事中的角色對于程序皆為抽象概念,教師由此提問“計算機用什么表示三種等級的馬?”,引導學生復習變量相關(guān)舊知,定義變量將田忌(t)與齊王(q)兩個抽象的概念輸入到計算機程序中,在這個過程中體會計算機核心素養(yǎng)中的抽象建模理念。
在比較田忌與齊王派出的馬等級高低的環(huán)節(jié),講解程序中的關(guān)系運算符,重點比較“=”與“==”的區(qū)別,防止學生書寫時產(chǎn)生概念混淆。在檢驗學生是否清楚概念時,教師提問“‘t=1’和‘t==1’分別有什么含義?”將含糊的概念帶入到故事情境中請學生自己明確區(qū)別。繼而教師追問分支語句中的必要條件如何用關(guān)系運算符表示,“如何表示田忌派出的馬等級(t)高于齊王派出的馬等級(q)?”學生在探索過程中逐漸能夠?qū)v史故事和程序設(shè)計聯(lián)系在一起,有助于調(diào)動學生的主觀能動性,激發(fā)學生的探索欲。教師圍繞田忌賽馬策略通過三個任務的逐步展開Python分支結(jié)構(gòu)教學。
4.2.1 任務一:單分支語句——分析單局中田忌獲勝情況
簡要描述的過程:
第一步:定義田忌和齊王分別派出的馬種類;
第二步:比較大小,輸出“田忌勝”
根據(jù)教師提供的素材包中1.py程序?qū)f語句空白后的條件補充完整:if ______________:
任務1 流程圖
4.2.2 任務二:雙分支語句——分析單局中田忌戰(zhàn)績的全部情況
經(jīng)由教師講解學生了解if-else語句的語法規(guī)則,從英語知識遷移到程序中,Python程序中包含較多英文作為程序的關(guān)鍵詞,讓學生通過英文單詞理解if和else的含義,結(jié)合數(shù)學中的數(shù)軸教師提問“else后是否還需另寫條件?”從而明確if與else的范圍區(qū)別:if后面需要填寫明確的條件,而其他沒有被提出的條件就是包含在了else當中,務必讓學神明白else在程序中的應用,也就是else中不需要寫任何條件,從而規(guī)避學生書寫代碼中的問題。在任務一的基礎(chǔ)上,將代碼補充完整。
(1)運用input()語句從鍵盤獲取田忌和齊王所派出的馬級別;
(2)運用選擇結(jié)構(gòu)if-else語句判斷兩方馬等級的高低;
(3)運用print()語句分別輸出判斷兩種情況后的結(jié)果。
4.2.3 任務三:多分支語句——完整策略,對比法優(yōu)化代碼
《田忌賽馬》的總策略是田忌要根據(jù)齊王派出的馬等級選擇自己所派等級,有且僅有一種方案取得三局兩勝的獲勝法則。所以在完整策略下,我方編寫的田忌應對策略只需要獲取齊王所派馬的等級,輸出田忌所派等級的馬即可。隨著課堂境況的開展,學生進度也隨之不同,教師可以啟動分層教學,鼓勵進度快的學生開始嘗試用學習到的知識完善總策略,通過問題啟發(fā)學生,“如何利用分支結(jié)構(gòu)實現(xiàn)多種情況的判斷?”學生認知水平不同,大部分同學會嘗試用三條if語句來表達。
(1)運用input()語句從鍵盤獲取齊王所派出的馬級別;
(2)運用三條if語句判斷齊王派馬類別;
(3)運用print()語句輸出田忌派馬的結(jié)果。
學生在完成任務三的時候,大部分學生會選擇用三條但分支語句書寫,將三種情況一一列舉,教師可以先肯定學生的做法,但是單用if語句可實現(xiàn)的情況有限,從代碼的運行速率以及程序邏輯上都有更好的優(yōu)化方案,教師順勢講解ifelif-else多分支語句的語法規(guī)則。
(1)運用input()語句從鍵盤獲取齊王所派出的馬級別;
(2)運用if-elif-else語句判斷齊王派馬類別并輸出結(jié)果
學生在優(yōu)化代碼之后,教師利用對比法展示兩種算法的時間和語法的區(qū)別。由此《田忌賽馬》策略下的Python程序設(shè)計作品基本完成,但是要進行追問,假如有第四種情況應該使用三和關(guān)鍵詞中的哪一個?是否要在關(guān)鍵詞之后添加條件?如果添加條件要書寫那個條件?經(jīng)過層層追問徹底教會學生分支語句的用法。在課程的在教學過程中,學生提出一個新的想法:本程序設(shè)定用1-3編號代表三種馬等級,但如果輸入這三個特定以外的數(shù)字依舊會輸出“田忌派出的是下等馬”的結(jié)果,是不符合情景的設(shè)置。此時教師可以把握此教學的機會,鼓勵學生自行解決問題,學生提出的方案便是將1-3三種情況用if和elif 書寫,將不符合故事邏輯的用else語句來書寫,就可以將此情況完美解決。
經(jīng)過學生自主探究,增加elif語句的條件,待三種情況明確后將其他不符合的情況添加到else語句中并輸出“不符合故事情景”的提示語句。這在課堂當中是“意外之喜”,同樣可以表明經(jīng)過情景式“問題導學”的教法學生不僅能夠接受代碼相關(guān)的語法知識和書寫規(guī)則,還能夠進行創(chuàng)新思考,結(jié)合情景優(yōu)化代碼。
情景式“問題導學”教法結(jié)合了兩種方式的優(yōu)勢,趣味的情景設(shè)置幕布了Python代碼書寫的枯燥,故事中的一波三折激發(fā)學生興趣,通過原有故事邏輯對應學生的代碼邏輯。在教師精心設(shè)置的“問題鏈”中,學生以解決實際問題為出發(fā)點,合理使用“已知探未知”的思維方式,充分開展自主學習,完善自身認知結(jié)構(gòu),使學生的學習在課堂中真正的發(fā)生,提升信息學科核心素養(yǎng)。