□唐未香 劉科峰
計算思維是目前廣為關(guān)注的涉及計算機科學本質(zhì)問題的基本概念。第一次明確使用這一概念的是周以真教授。她認為,計算思維是利用計算機科學的基礎(chǔ)知識去求解問題、設(shè)計系統(tǒng)和理解人類的一系列思維活動;計算思維最根本的內(nèi)容是抽象和自動化[1]。計算思維應(yīng)是每個人的基本技能,不僅要使學生掌握閱讀、寫作和算術(shù)技能,還要使學生學會計算思維。在計算機教學中如何融入計算思維的理念,培養(yǎng)學生的計算思維能力,成為教學研究的焦點[2]。本文以廣州現(xiàn)代信息工程職業(yè)技術(shù)學院為例,列舉了若干培養(yǎng)計算思維的教學實施方法。
當前的計算機類課程教學中,普遍存在著實用主義,即什么實用就教什么。例如在計算機網(wǎng)絡(luò)教學中,有些教師主張少講各層協(xié)議工作原理,多講交換機和路由器的配置,這是一種典型的急功近利思想。實用主義把簡單技術(shù)掌握作為第一要義,忽視求解問題和設(shè)計系統(tǒng)能力的培養(yǎng),缺乏從學生人生發(fā)展的高度看待計算機課程所應(yīng)有的價值[3]。
目前,高校非常注重培養(yǎng)具有創(chuàng)新意識和創(chuàng)新能力的應(yīng)用型人才,加強學生計算思維能力的培養(yǎng),有利于提高學生的創(chuàng)新能力。
計算思維的培養(yǎng)不是通過一門課程的教學就能解決的問題,而是要貫穿于所有計算機課程的教學中。重點應(yīng)從以下三門課程培養(yǎng)計算思維。
(一)基于C++面向?qū)ο蟪绦蛟O(shè)計的計算思維能力培養(yǎng)。程序設(shè)計類課程是計算思維的最佳載體,程序設(shè)計課程中蘊含著計算思維的本質(zhì)抽象和自動化[4]。教學中不但要注重C++基本語法的教學,更重要的是讓學生理解語法定義背后的目的和使用方法,即讓學生明白:為什么需要這樣定義語法規(guī)則,這個語法規(guī)則為什么定義成這樣的形式以及如何使用它。讓學生掌握怎樣實現(xiàn)順序、選擇和循環(huán)結(jié)構(gòu),怎樣實現(xiàn)遞歸。求1+2+……+100的和是教材上的典型例子程序,主要用來說明怎樣實現(xiàn)循環(huán)結(jié)構(gòu),可以將它改成遞歸,即前n項的和為n加上前n-1項的和,使學生既掌握遞歸的實現(xiàn)方法,又明白了求解同樣的問題可用不同途徑。在編程中,培養(yǎng)學生將計算思維和各自專業(yè)知識融入到計算機解題過程,例如對計算機網(wǎng)絡(luò)技術(shù)專業(yè)的學生,講解一些Socket網(wǎng)絡(luò)編程的例子,使學生了解程序設(shè)計在專業(yè)方面的應(yīng)用,從而影響學生的思考問題方式。
類與對象是面向?qū)ο蟪绦蛟O(shè)計最基本、最重要的概念之一,以“物以類聚,人以群分”的古語引入,接著引導學生如何從“張三”、“李四”這樣的學生個體寫出學生類。在教學中,經(jīng)常有學生問:“我們?yōu)槭裁匆獙戭?,我們不寫成類的形式也能編程,有時還簡單一些”。教師向他們解析:如果只處理一個學生的信息,不寫成類的形式,而寫成C語言的形式確實簡單一些,如果要處理很多學生的信息,類可以發(fā)揮它作為模板的優(yōu)勢,大大簡化編程。
(二)基于微機原理的計算思維能力培養(yǎng)。在微機原理的教學中,通過動畫演示指令的執(zhí)行過程,使學生深刻理解計算機是怎樣實現(xiàn)自動計算的。通過匯編語言編程、調(diào)試及分析列表文件,使學生明白:計算機內(nèi)部是一個二進制的世界,通過“0”和“1”這兩個數(shù)字,可把現(xiàn)實世界的字符、聲音、圖像、視頻等各種信息轉(zhuǎn)換成數(shù)據(jù),存儲在計算機中,指令代碼也是通過“0”和“1”的編碼來實現(xiàn)?,F(xiàn)代計算機系統(tǒng)是由軟件和硬件構(gòu)成的一個十分復雜的系統(tǒng)。為了方便計算機的應(yīng)用、開發(fā)和設(shè)計,可以將計算機系統(tǒng)劃分成多個層次或級別。計算機系統(tǒng)可分為:數(shù)字電路層、控制層、機器語言層、操作系統(tǒng)層、匯編語言層、高級語言層、用戶層[5]。TCP/IP體系結(jié)構(gòu)分為:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、運輸層、應(yīng)用層。使學生明白采用層次結(jié)構(gòu)分解處理復雜任務(wù)的方法不是微機原理特有的,其它學科也采用這種方法,我們以后開發(fā)軟件也可能采用這種方法。還可以深入探討匯編語言與高級語言的關(guān)系,例如通過學習32位匯編語言中子程序的調(diào)用,使學生深刻理解高級語言函數(shù)調(diào)用中的參數(shù)傳遞;通過尋址方式的學習,使學生更好地掌握C++中指針的用法。
(三)基于數(shù)據(jù)結(jié)構(gòu)的計算思維能力培養(yǎng)。數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題中計算機的操作對象以及它們之間的關(guān)系和操作的學科。在教學中,并不追求灌輸所有知識點,而是強調(diào)各類數(shù)據(jù)結(jié)構(gòu)的內(nèi)在聯(lián)系,例如可以講解:線性表是基礎(chǔ),如果線性表只允許在表的一端進行插入,而在另一端進行刪除就成了隊列;如果線性表限定僅在表尾進行插入或刪除操作就成了棧。隊列和棧具有部分線性表性質(zhì),又有自己的特性。在二叉樹的教學中,比較二叉樹遞歸遍歷算法和非遞歸遍歷算法,可以看出遞歸遍歷算法較簡單,使學生認識遞歸的方法有時可以簡化程序設(shè)計。數(shù)據(jù)結(jié)構(gòu)是高級程序設(shè)計語言的后續(xù)課程。應(yīng)強化程序設(shè)計訓練,用任務(wù)驅(qū)動教學,給出任務(wù),讓學生尋求多種解決方案,并對方案選優(yōu),再進行算法設(shè)計、編碼和測試。讓學生體會編程思路,對培養(yǎng)學生的創(chuàng)造性思維很有幫助。
隨著時間的推移,計算思維越來越受到高校的重視。本文在分析高校計算機類課程教學基本情況的基礎(chǔ)上,提出了一個加強學生計算思維能力培養(yǎng)的教學改革方案。通過在教學中實施這個方案,學生的分析問題與解決問題的能力增強,取得了較好的教學效果。