李飛 邱虹坤 孫玉霞 蔣寧 王亞杰



關鍵詞:五子棋;計算思維;程序設計
中圖分類號:G642 文獻標識碼:A
文章編號:1009-3044(2023)10-0142-03
1引言
隨著信息技術的不斷發展,很多學科與計算機技術的融合越來越密切,對大學生計算機應用能力的要求也越來越強烈,用計算機解決問題的能力逐漸成為衡量大學生素質的標準之一。許多高校都為非計算機專業學生開設計算機程序設計類的必修課,程序設計基礎作為一門計算機主干基礎課程,其目標是讓學生掌握一門計算機語言,培養學生用計算機調試程序和解決實際問題的能力,為后續的專業課的學習提供技術支持。
近年來,計算思維成為計算機相關課程改革的主要方向,需要解決的是如何將計算思維能力的培養落實到教學內容和過程中的問題。在2020年主題為“新時代、新計算、新教育”的計算機教育大會上,針對人工智能快速發展下,計算機教育的發展創新思路問題受到關注,會議提出要將人工智能賦能計算機課程教學中[1]。
計算機博弈又稱機器博弈,是指讓計算機模擬人的思維進行棋類等游戲的對弈。計算機博弈是計算機思維培養的重要載體,是人工智能領域的重要研究方向之一[2]。它涉及的方法主要包括:博弈問題的提出、棋盤的數據描述、棋面的評估模型、搜索算法的選擇、算法的實現與優化、人機交互處理等方面,這些內容剛好與計算思維的思想相一致,非常適合培養學生的計算思維能力。
目前,很多學生沉迷于網絡和電子游戲,以何種方式引導青年學生遠離網絡的危害一直是困擾家長和教師的難題[2]。而多個高校的實踐證明,計算機博弈項目能迎合青年學生的愉悅、冒險、好奇和高對抗需求,讓他們在快樂中分析、編程、斗智,既長知識,也長能力,既培養了計算機實踐與創新能力,也培養了計算思維、科研思維和團隊合作精神。筆者將博弈項目——五子棋程序的部分基礎內容編寫成適合程序設計基礎教學使用的案例,讓學生在博弈游戲中學習,不但調動了學習積極性,還提高了課程的挑戰度和創新性符合“兩性一度”的一流課程要求,取得了良好的教學效果。
2計算思維及人工智能概述
周以真教授在2006年提出計算思維(CT,Compu?tational Thinking)的概念,將其定義為運用計算機科學知識進行問題解、系統設計、人類行為理解等一系列思維活動。隨著計算機科學迅猛發展,計算思維對很多領域的發展產生了深刻的影響[3-4]。在我國,中科院自動化所的王飛躍教授提出,目前的小學和初高等教學都引入了計算思維,但是仍然沒有被提到一定的廣度和高度,只有借助計算思維之力才能提高全民族整體素質[4]。教育部高等學校大學計算機課程教學指導委員會在《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》中達成了C9共識,確定了以計算思維為核心的計算機基礎課程的教學改革[6-8]。
人工智能(AI,Artificial Intelligence)是計算機科學的新分支,該領域的研究包括機器人、語言識別、圖像識別、大數據處理等。其研究的主要目標是使機器能完成一些需要人類智能才能完成的復雜工作。近些年,人工智能的普及沖擊著教育教學領域,許多高校不但開設了人工智能學院,在教育教學形態上,也發生了巨大變化,比如用機器閱卷取代人工批閱,使教師脫離了大量的重復性工作,用虛擬現實技術開展“沉浸式”教學,使學生在玩中學、在學中玩。在計算基礎教學中,如何設計教學內容將計算思維“落地”,如何將人工智能與教學內容融合是值得我們思考的問題。
3五子棋博弈項目概述
五子棋(FIR,Five in a row)又稱五子連珠,是一項起源于中國的棋類游戲。它是國際計算機奧林匹克大賽的競賽項目,也是我國大學生計算機博弈大賽的競賽項目。是一種集戰略、戰術和機會于一體的棋類游戲項目。下棋的棋盤與圍棋棋盤相似,由縱橫各15 條等距離的平行線組成,交叉形成225個落子點,如圖1所示。下棋的規則是:黑方先行,落天元點位(棋盤中心),黑白方輪流落子,每次落一子,先形成五子連珠的一方獲勝。在正式比賽中有隨機開局、指定開局、三手交換和五手N打等規則的加入,既增加了棋的難度,同時也增加了棋的趣味性和機會性。
4課堂教學實例設計
現存教學案例中存在一些弊端,比如案例不統一、缺乏系統性和連貫性等問題,使課程教學不能達到預期的目標。針對上述問題,結合大學生計算機博弈項目,設計了一系列基于棋類游戲程序的教學案例[9-10]。在本文中,筆者選出五子棋程序中適合C語言教學的元素,設計成基礎案例,以任務驅動形式不斷完善案例,逐漸融入多個知識點,達到“寓教于樂”的目的。項目調動了學生的學習興趣,得到了較好的學習效果,部分實例如表1所示。
限于篇幅,選出兩個案例詳細描述。
實例一:五子棋的界面設計
C語言程序的執行結果是DOS 命令形式的,因此,初學者認為表示一個棋盤是很難實現的。該實例利用循環控制線條的輸出,使學生對C語言程序另眼相看。由于方便顯示,用表格表示棋盤,每一個單元格表示實際棋盤上的交叉點。部分代碼如下:
上述代碼運行后得到圖2這樣的棋盤:
實例二:統計黑白子個數
在該實例中,利用了多分支選擇結構語句實現落子個數的統計。適合在選擇結構程序設計的時候講解。通過該實例讓學生體會二維數組和if-else語句在解決實際問題中的用途。
5 上機實驗題目設計
程序設計基礎的實驗項目分成普通上機實驗和專項實驗。普通上機實驗的任務要求學生利用課堂2至4個學時獨立完成相同實驗內容,鍛煉學生的程序編寫和上機調試能力。而專項實驗任務要求在幾周的課外學時完成,2至3人一組,合作完成一項比較復雜的編程任務。在驗收環節,學生要演示和講解自己的工作,回答老師提出的問題。這不但鍛煉了學生的編程實踐能力,還引導他們在表達溝通、團隊合作的方面不斷自我提升。
程序設計基礎的上機實驗任務難度要適中,在短學時內可以實現。將五子棋程序中適合的元素提取出,制作成一部分實驗任務,讓學生在課內通過編譯環境實現將枯燥的編程實驗變成有趣味的游戲挑戰,增加了學習樂趣。實驗內容包括:統計棋盤上白子的數目和黑子的數目;產生落子位置(可用隨機落子法),判斷某一位置是否有落子;判斷是否行棋結束,如果結束,哪方獲勝。
綜合專項實驗是程序設計基礎課程實驗部分的最后一個實驗項目,要求學生完成一個復雜的綜合性的程序設計題目,任務有一定的難度。其中組長負責分工、總體程序框架建立及其他功能整合,組員合作完成。其目的是既要鞏固學生對C語言知識的綜合運用能力和用計算機解決復雜問題的能力,同時培養學生的溝通表達能力和團隊合作精神。根據五子棋項目的特點,設計了一個綜合專項實驗案例,如表2所示。該題目有若干個功能,最后綜合成一個簡單的五子棋競賽程序,能夠實現人機對弈的過程。
該綜合案例的設計,不僅鞏固了學生對程序設計基礎各個知識點的掌握,又將博弈游戲的趣味性和創新性融入課程,讓學生組隊實現一個完整的工程類項目,具有挑戰性,符合一流課程的“兩性一度”的要求。
6教學效果
大部分學生認為程序設計基礎課程內容比較枯燥乏味,缺乏興趣。陳舊的教學案例也已經不適應時代的教學方式,很多同學渴望學習先進性、前沿性的新內容。計算機博弈提供了很好的案例元素,它既有趣味性,又有前沿性,能很好地喚醒大學生的好奇心,激發學習興趣和潛能。從2019年逐漸引入博弈案例教學以來,學生的學習興趣和學習效果明顯提升。圖3是2019年至2021年對我校機械專業學生《計算機基礎》課程的成績統計圖。雖然由于疫情原因,部分課時采用線上方式進行,但是學生并沒有因此受到太多影響,從圖中可以看出學生的平均成績和及格率明顯提升,越來越多的學生對博弈項目產生了濃厚興趣,參加校級和省級博弈比賽的人數逐年提升。
通過課程實踐證明,利用博弈元素進行教學案例的設計,既能增強學生的學習興趣,又能鼓勵學生參加校內外博弈競賽,一舉兩得。學生還可以依托博弈申報大學生創新項目。希望這種案例設計方式能對計算機基礎教學提供參考和幫助。