吳海峰,張翠娟
(安慶師范大學(xué)計算機與信息學(xué)院,安徽安慶246133)
習(xí)近平總書記在全國高校思政工作會議上強調(diào),高校思想政治工作關(guān)系高校培養(yǎng)什么樣的人、如何培養(yǎng)人、為誰培養(yǎng)人這個根本問題[1]。傳統(tǒng)觀念認(rèn)為,思政教育是思政課程的責(zé)任,跟專業(yè)課程沒有關(guān)系。然而,專業(yè)課程也包含了大量的思政教育的元素,課程思政建設(shè)是解決培養(yǎng)人問題的重要舉措。2020年5月,教育部印發(fā)《高等學(xué)校課程思政建設(shè)指導(dǎo)綱要》[2],指出工學(xué)類專業(yè)課程,“要注重強化學(xué)生工程倫理教育,培養(yǎng)學(xué)生精益求精的大國工匠精神,激發(fā)學(xué)生科技報國的家國情懷和使命擔(dān)當(dāng)”。結(jié)合課程特點和專業(yè)特性,深入挖掘?qū)I(yè)課程的思政內(nèi)涵,是每位教師應(yīng)該承擔(dān)的責(zé)任和使命。通過分析和深入挖掘,“C語言程序設(shè)計”課程思政教育的內(nèi)涵應(yīng)包含[3-9]:(1)樹立社會主義核心價值觀,(2)培養(yǎng)精益求精的工匠精神,(3)培養(yǎng)團隊協(xié)作精神和創(chuàng)新意識,(4)強化工程倫理教育。本文通過闡述在“C語言程序設(shè)計”的各教學(xué)環(huán)節(jié)如何開展課程思政教學(xué),充分展示專業(yè)課程所蘊含的思政元素和所承載的思政教育功能。
在導(dǎo)入新課時,結(jié)合與知識點相關(guān)的當(dāng)前新聞熱點事件或者歷史事件,展開分析和挖掘事件背后的思政元素,引導(dǎo)學(xué)生樹立社會主義核心價值觀,在潛移默化中完成思政教育。下面結(jié)合“數(shù)組的應(yīng)用——加密與解密”來進行詳細(xì)闡述。
通過復(fù)習(xí)數(shù)組的定義和性質(zhì),總結(jié)數(shù)組的特征:“同一數(shù)組內(nèi)的元素,數(shù)據(jù)類型相同”,從而引出對抗擊新冠肺炎疫情的人民戰(zhàn)爭中涌現(xiàn)出的英雄人物的分組。通過講述中國政府在抗擊新冠疫情的快速反應(yīng)和有效舉措,與西方國家進行對比,讓學(xué)生體會社會主義制度的優(yōu)越性,激發(fā)學(xué)生的愛國情懷。在展示英雄人物圖片時,介紹英雄人物的感人事跡,激勵學(xué)生向英雄人物學(xué)習(xí),運用自己的專業(yè)知識和技能為國家和人民做貢獻。
通過設(shè)問“那么各組英雄人物的信息在計算機中是怎樣存儲的?”和回答“各組英雄人物的信息可以用數(shù)組來進行存儲,但是在數(shù)據(jù)存儲和網(wǎng)絡(luò)傳輸?shù)倪^程中,容易出現(xiàn)信息泄露”,自然過渡到由信息泄露引起的網(wǎng)絡(luò)安全問題。
通過介紹全球信息泄露問題的發(fā)展趨勢和2019年的兩起知名信息泄露事件(Elasticsearch數(shù)據(jù)庫泄露事件和Facebook 8 700萬用戶信息泄露事件),引出習(xí)近平總書記關(guān)于網(wǎng)絡(luò)安全問題的重要講話“沒有網(wǎng)絡(luò)安全就沒有國家安全,沒有信息化就沒有現(xiàn)代化”,將網(wǎng)絡(luò)安全提高到國家安全的戰(zhàn)略高度。對學(xué)生進行網(wǎng)絡(luò)安全意識教育,很自然地介紹幾種常見的網(wǎng)絡(luò)安全技術(shù),指出信息加密技術(shù)是最基礎(chǔ)的網(wǎng)絡(luò)安全技術(shù),引入教學(xué)主題:用數(shù)組實現(xiàn)信息的加密與解密。
在教學(xué)過程中,通過算法分析和代碼實現(xiàn),分為兩個層次逐步培養(yǎng)學(xué)生精益求精的工匠精神。
通過實例帶領(lǐng)學(xué)生詳細(xì)分析算法的實現(xiàn)過程,啟發(fā)學(xué)生完成算法設(shè)計,并在C語言編譯環(huán)境下編寫代碼,直至調(diào)試正確。在帶領(lǐng)學(xué)生編寫代碼的過程中,通過標(biāo)識符的命名規(guī)則、代碼的縮進控制、注釋的添加等各種規(guī)范,培養(yǎng)學(xué)生良好的編程風(fēng)格。下面結(jié)合信息加密問題來詳細(xì)闡述。
【問題描述】用數(shù)組實現(xiàn)四位整型數(shù)據(jù)的加密和解密算法。加密規(guī)則:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。
【算法分析】首先舉例n=3 456,帶領(lǐng)學(xué)生使用加密規(guī)則進行加密,逐步得到加密結(jié)果1098。然后通過加密實現(xiàn)的過程,啟發(fā)學(xué)生得出算法步驟:
(1)加密函數(shù)的形參定義為整型變量n;
(2)使用循環(huán)結(jié)構(gòu)分離出n 的各位數(shù)字,存儲在數(shù)組code 中(n 的個、十、百、千位依次存儲在code[0]、code[1]、code[2]、code[3]中),同時用每位數(shù)字加上5、再除以10的余數(shù)代替該數(shù)字;
(3)使用循環(huán)結(jié)構(gòu)將經(jīng)過加密處理的各位數(shù)字重新組合成加密后的新數(shù)字,注意計算時依次將code[0]、code[1]、code[2]和code[3]作為新數(shù)字的千、百、十、個位。
在講解算法第(2)步時,提問:怎樣把一個整數(shù)的每一位分離出來?通過學(xué)生的回答了解學(xué)生對這一問題的掌握程度,然后舉例進行詳細(xì)分析,提煉出解決問題的算法,帶領(lǐng)學(xué)生編寫函數(shù)代碼。
通過啟發(fā)式講授和互動式教學(xué),將傳統(tǒng)“以老師為中心”的課堂轉(zhuǎn)化成“以學(xué)生為中心”的課堂,教師的作用從“主講”變成“主導(dǎo)”,學(xué)生從“被動學(xué)”變成“主動學(xué)”。
在解決C語言中的典型問題時,倡導(dǎo)一題多解,通過比較不同算法的執(zhí)行效率,真正做到精益求精。下面結(jié)合數(shù)據(jù)排序問題來進行詳細(xì)闡述。
【問題描述】將10個整數(shù)按照從小到大的順序排序。
借鑒學(xué)過的求最小值的方法,通過舉例演示排序過程,引導(dǎo)學(xué)生逐步總結(jié)出交換排序算法。通過數(shù)據(jù)演示發(fā)現(xiàn),在每一輪找未排序數(shù)據(jù)的最小值、放到前面的過程中,要進行多次數(shù)據(jù)交換,算法的效率比較低。
經(jīng)過分析發(fā)現(xiàn),其實每一輪比較和交換都只需確定一個最小值,無需進行多次數(shù)據(jù)交換。優(yōu)化后的算法:只要在每一輪比較中,記錄最小值所在數(shù)組下標(biāo),跟未排序數(shù)據(jù)的第一個進行交換即可。進一步,若未排序數(shù)據(jù)的第一個就是最小值,則無需交換。這就是選擇排序算法。
然后,從理論上分析比較兩種排序算法的效率。交換排序算法的數(shù)據(jù)交換在雙重循環(huán)的內(nèi)循環(huán)中,N個數(shù)據(jù)排序,最壞情況下交換次數(shù)為(N-1)+(N-2)+…+1=N(N-1)/2;而選擇排序算法的數(shù)據(jù)交換在雙重循環(huán)的外循環(huán)中,N個數(shù)據(jù)排序,最壞情況下交換次數(shù)為N-1。兩種排序算法的效率相差很大,所以在遇到復(fù)雜問題時要多思考,不能僅僅滿足于解決問題,還要對原有算法進行優(yōu)化或者找到效率更高的算法,做到精益求精。
在項目教學(xué)實訓(xùn)時,將班級分成若干小組,每組4人左右,分工完成各項任務(wù)。通過小組內(nèi)部合作,培養(yǎng)學(xué)生的團隊合作精神;通過各小組之間的評比,培養(yǎng)學(xué)生的競爭意識和創(chuàng)新意識。下面結(jié)合大數(shù)運算項目實訓(xùn)來詳細(xì)闡述。
【項目描述】大數(shù)運算在科學(xué)計算中大量存在,例如,大數(shù)的加減乘除運算,整數(shù)求階乘等。本項目要求計算100!,并顯示其結(jié)果。
因為項目的難度較大,在布置任務(wù)時,帶領(lǐng)學(xué)生分析項目實現(xiàn)的關(guān)鍵點和解決方法。
關(guān)鍵點1:100!的計算結(jié)果如何存儲?
解決方法:可采用數(shù)組存儲,數(shù)組中每個元素表示100!結(jié)果中的一位數(shù)字。
關(guān)鍵點2:如何確定100!的結(jié)果一共有多少位數(shù)字,即數(shù)組應(yīng)該有多少個元素?
解決方法:假設(shè)10M-1<100!<10M,則不小于M的最小整數(shù)就是100!的結(jié)果中的位數(shù),對該式兩邊取對數(shù),有:M-1 關(guān)鍵點3:如何實現(xiàn)用數(shù)組存儲的大整數(shù)的運算? 解決方法:數(shù)組的第一個元素看作100!結(jié)果的最低位,最后一個元素看作最高位。數(shù)組初始化時,令數(shù)組第一個元素為整數(shù)1,其余為0。把數(shù)組中元素的值組成的數(shù)字看作階乘計算的結(jié)果,計算100!時就是將數(shù)組中每個元素依次乘以2、3、4、…、100的方式得到,將數(shù)組每個元素每次的乘積存回數(shù)組,若數(shù)組元素中的數(shù)值超過10,則需要進位。 在解決方法的基礎(chǔ)上,鼓勵學(xué)生進行完善、改進和創(chuàng)新,提出更好的解決方案。然后對項目任務(wù)進一步明確:項目功能分析、模塊設(shè)計、算法設(shè)計與流程圖、代碼實現(xiàn)與調(diào)試、總結(jié)報告撰寫和程序演示與匯報答辯。要求各小組自己分工,最后進行匯報答辯、驗收和評比。評比時由各小組互相點評打分,說明項目的優(yōu)缺點,引導(dǎo)學(xué)生進一步思考,創(chuàng)造良性競爭環(huán)境,鼓勵公平競爭。 通過演示算法應(yīng)用,體會算法的實際效果,加深對算法的理解,進一步拓展教學(xué)內(nèi)容,向?qū)W生介紹與算法相關(guān)的前沿技術(shù)。結(jié)合國家的產(chǎn)業(yè)布局和發(fā)展戰(zhàn)略,激勵學(xué)生努力學(xué)習(xí),將來投身到國家的信息科技和產(chǎn)業(yè)中。同時,結(jié)合相關(guān)的典型事例,強化工程倫理教育。下面結(jié)合加密與解密算法的應(yīng)用來詳細(xì)闡述。 運用字符串加密算法對專家的姓名、聯(lián)系電話等信息進行加密,運用整型數(shù)據(jù)加密算法對專家的出生年份等信息進行加密。程序演示過程如下:首先,輸出專家的各項明文信息;接著,使用信息加密算法加密,輸出加密后的密文信息,通過明文信息和密文信息的對比,體會加密算法的效果;最后,使用解密算法,對密文信息進行解密得到明文信息,與原始明文信息進行對比,驗證解密算法的正確性。通過程序演示,讓學(xué)生更加形象地體會到加密算法和解密算法的效果,既鍛煉了學(xué)生的編程實踐能力,又增強了學(xué)生的個人隱私保護意識。 總結(jié)加密解密過程,指出信息加密是最基礎(chǔ)的網(wǎng)絡(luò)安全技術(shù),自然過渡到前沿網(wǎng)絡(luò)安全技術(shù)——區(qū)塊鏈技術(shù)。首先,簡要介紹區(qū)塊鏈技術(shù)的概念和特點,舉一個通俗易懂的例子,說明區(qū)塊鏈技術(shù)為什么能夠保證信息安全。然后,介紹區(qū)塊鏈技術(shù)在銀行業(yè)、供應(yīng)鏈管理、防保險欺詐、身份識別和慈善事業(yè)等多個領(lǐng)域的應(yīng)用,教育學(xué)生要運用先進的技術(shù)來提高生產(chǎn)力、服務(wù)社會、保障廣大民眾的權(quán)益和隱私不受侵犯等。最后,引入習(xí)近平總書記在中央政治局第十八次集體學(xué)習(xí)時的講話精神,習(xí)近平總書記強調(diào),把區(qū)塊鏈作為核心技術(shù)自主創(chuàng)新重要突破口,加快推動區(qū)塊鏈技術(shù)和產(chǎn)業(yè)創(chuàng)新發(fā)展,以此激勵學(xué)生認(rèn)真學(xué)習(xí)科學(xué)文化知識,關(guān)心信息技術(shù)的最新發(fā)展動態(tài),關(guān)心國家大事,為實現(xiàn)中華民族偉大復(fù)興而努力奮斗。 教書育人是教師的天職,而課程思政教育是育人的重要手段。高校教師尤其是工科教師,要在教學(xué)過程中有意識地實施課堂思政教育,在教學(xué)時找準(zhǔn)切入點,做好教學(xué)設(shè)計,將思政教育滲透到相應(yīng)的教學(xué)環(huán)節(jié)中,真正做到“潤物細(xì)無聲”。本文深入挖掘了“C語言程序設(shè)計”課程的思政內(nèi)涵,詳細(xì)闡述了在各教學(xué)環(huán)節(jié)中開展課程思政的過程并舉例說明。教學(xué)實踐表明,在教學(xué)中開展課程思政教育,不但沒有沖淡專業(yè)教學(xué)內(nèi)容,而且激發(fā)了學(xué)生的學(xué)習(xí)熱情,課程思政教育和專業(yè)教育相輔相成,對同類課程乃至其他工科課程開展思政課程教學(xué)具有一定的參考價值。4 演示算法應(yīng)用,介紹前沿技術(shù),強化工程倫理教育
5 總 結(jié)