[摘要]文章闡述在大學開設計算機基礎課程的必要性,針對目前教學現(xiàn)狀描述的問題,提出在計算機基礎教學中如何靈活運用計算思維,圍繞計算思維的抽象特性和關注點分離特性,培養(yǎng)學生的計算思維能力,以達到改革計算機基礎教學內(nèi)容及教學方法的目的。
[關鍵詞]計算機基礎計算思維信息技術程序設計關注點分離
[中圖分類號]G642[文獻標識碼]A[文章編號]2095-3437(2014)02-0082-02
一、計算機基礎課程開設的必要性
隨著社會信息化不斷地發(fā)展,計算機技術更多地融入其它學科和專業(yè)課的教學中,以計算機技術為核心的信息技術已成為很多專業(yè)課教學內(nèi)容的有機組成部分,各專業(yè)對學生的計算機應用能力也有了更加明確和具體的要求。
2006年,由教育部高教司委托、教指委主持編制的《關于進一步加強高等學校計算機基礎教學的意見暨計算機基礎課程教學基本要求》文件明確提出了進一步加強計算機基礎教學的若干建議,確立了“4領域×3層次”計算機基礎教學內(nèi)容知識結構的總體構架,構建了“1+X”的課程設置方案,并將“大學計算機基礎”作為第一門課程。
二、教學現(xiàn)狀
大學非計算機專業(yè)的計算機基礎理論課涵蓋了很多計算機專業(yè)知識,比如:計算機組成原理、操作系統(tǒng)、網(wǎng)絡等。這些知識點本身比較抽象,難以理解,也不易聽懂,學生普遍認為它們與本專業(yè)無關,再加上部分教師自身知識量儲備不夠從而影響了教學效果。所以很多學生學習興趣不高并反映到學校,導致大學計算機基礎課的教學得不到學校的足夠重視,學時被壓縮甚至被取消。在這樣嚴峻的形勢下,計算機基礎教學面臨著巨大的挑戰(zhàn),計算機基礎教學內(nèi)容和教學方法的改革也就勢在必行。
三、計算思維
計算思維一詞由美國卡內(nèi)基·梅隆大學周以真教授于2006年提出,周教授認為計算思維應該是21世紀每個人必須具備的基本技能。計算思維是一種新的思維方法,它的本質(zhì)就是抽象和自動化,即如何按照計算機求解問題的基本方法去考慮問題的求解,進行系統(tǒng)設計并理解人類行為,以便構建出相應的算法和基本程序。依據(jù)周教授的觀點,它包含了簡約、轉(zhuǎn)化、嵌入、仿真、關注點分解、遞歸思維、并行處理等思維方法,具體內(nèi)容在此就不贅述了。
2010年7月,在由西安交通大學主辦的“九校聯(lián)盟(C9)計算機基礎課程研討會”上,第一次明確地把“計算思維能力的培養(yǎng)”作為計算機基礎教學的核心任務,并進一步確立了計算機基礎教學在大學教育中的基礎地位。
四、信息技術基礎課程中計算思維的運用
南京工業(yè)大學現(xiàn)在將南京大學出版社出版的大學計算機信息技術教程作為大一新生計算機的入門課程,該教材包含計算機信息技術概述、計算機組成原理、計算機軟件、計算機網(wǎng)絡、數(shù)字媒體及數(shù)據(jù)庫等知識點。開設這門課程的目的是拓展學生的視野,為后續(xù)課程的學習做好必要的知識準備,使他們在各自的專業(yè)中能夠有意識地借鑒、引入計算機科學中的一些理念、技術和方法,期望他們能在一個較高的層次上利用計算機、認識并處理計算機應用中可能出現(xiàn)的問題。那么,在教學過程中有意識地運用計算思維的理念,就可以幫助學生理解計算機中一些比較抽象的概念。
比如,我們可能最常問到的問題是:數(shù)據(jù)是怎么保存到計算機中的?音頻、視頻和圖片為什么可以在計算機中展現(xiàn)出來?計算機和以前的磁帶、膠片有什么區(qū)別?這些都不得不涉及到二進制,所以二進制實際上貫穿了大部分知識點。那么,我們在授課中不能只是為講二進制而講二進制,還需要讓學生了解到為什么用二進制?原來大多數(shù)電子器件都只需要兩種狀態(tài),這一點決定了使用二進制更加方便也容易計算。這正說明了使用計算機思維和人腦思維的區(qū)別,試想如果使用從學數(shù)學開始就知道的十進制,那計算機實現(xiàn)起來該是多么的復雜!二進制正好體現(xiàn)了計算思維中的簡約。
再比如,計算機軟件章節(jié)中會講到“文件系統(tǒng)”這個概念。教師可以先提出“文件以什么組織形式保存在計算機里”、“文件內(nèi)的數(shù)據(jù)是不是連續(xù)存放在計算機里”、“文件怎么存放更安全”等一系列問題,其目的是培養(yǎng)學生計算思維的能力。然后教師介紹NTFS文件系統(tǒng)與FAT32文件系統(tǒng)的區(qū)別,讓學生明白NTFS文件系統(tǒng)更加安全以及文件內(nèi)容非連續(xù)存放的好處,同時讓學生理解計算思維就是“按照預防、保護及通過冗余、容錯、糾錯的方式,并從最壞情況進行系統(tǒng)恢復的一種思維方法”。
還比如,數(shù)字媒體章節(jié)中,先讓學生計算一分鐘的非壓縮視頻文件大小,接著提問這些非壓縮視頻在網(wǎng)絡帶寬受限情況下傳輸會發(fā)生什么問題?如何解決該問題?這很自然就引出了數(shù)字媒體壓縮的概念,也讓學生明白了計算機處理能力與存儲容量之間的矛盾,從而體現(xiàn)了計算思維也是“在時間和空間之間,在處理能力和存儲容量之間進行折中的思維方法”。
五、程序設計基礎課程中計算思維的運用
在前述信息技術基礎課程中計算思維能力的培養(yǎng),會為后續(xù)程序設計基礎課程的學習打下良好的基礎,這兩門課程本身就是一脈相承的。例如:二進制會體現(xiàn)在程序設計的邏輯條件中,文件數(shù)據(jù)非連續(xù)存放會體現(xiàn)在程序設計的數(shù)據(jù)結構中,數(shù)字媒體壓縮會體現(xiàn)在相關有損或無損壓縮算法中。然而程序設計課程中計算思維的培養(yǎng)會更加困難些,因為每門編程語言都有自己固定的語法,也比較抽象,而抽象正是計算思維的本質(zhì)之一,如果不經(jīng)過適當?shù)乃季S訓練,學生很可能最后出現(xiàn)“只會背程序不會寫程序”的尷尬境地。
計算機編程語言知識點繁多,分散但是又相互關聯(lián),如果教師的教學方法不當?shù)脑挘苋菀鬃寣W生迷失方向?qū)е聦W生產(chǎn)生厭學心理。教學中常出現(xiàn)的問題是:填鴨式教學、照本宣科、不注重知識點間的內(nèi)在聯(lián)系。鑒于此,筆者在C++程序設計教學中嘗試采用了如下解決辦法:
1.要求學生預習下次上課(理論課)內(nèi)容,不強求深入研究,只需了解主要知識點,并布置簡單的預習作業(yè)。
2.強調(diào)上機實驗課的重要性。實驗課是語言課非常重要的環(huán)節(jié),它用來鞏固和幫助學生理解編程語言抽象的語法和語句,是計算思維的實踐。在上實驗課前,我們會準備一些與本次實驗相關的習題或輔助的閱讀材料,這些習題和材料有助于引導學生將人腦里的編程算法轉(zhuǎn)換成計算機能實現(xiàn)的算法,即培養(yǎng)學生的計算思維能力。上機前學生必須完成代碼的草稿版本并在上機課時給任課教師檢查,上實驗課時學生只能調(diào)試程序,同時教師要教授學生調(diào)試程序的方法。調(diào)試方法往往是教師容易忽視的環(huán)節(jié),如果學生知道怎么調(diào)試程序,也就知道程序的運行過程和計算機的思維方式,更容易發(fā)現(xiàn)程序中的錯誤。
3.實驗課結束時要求學生上交實驗報告,實驗報告上的程序代碼應該是正確的代碼,并且要總結本次實驗心得。實驗心得通常是代碼出錯的原因,也是重新理清編程思路并鍛煉邏輯思維能力的過程。
4.上理論課時注意章節(jié)之間知識點的銜接,可以采用與日常生活比較貼近的項目(案例)驅(qū)動的形式將C++大部分的知識點貫穿起來,比如:飛機票售票系統(tǒng)。在第一節(jié)理論課時,就告訴學生本學期要完成的最終案例的詳細功能需求,然后在每次上課時都圍繞這個案例提出一些問題,同時需要學生配合積極開動腦筋尋找問題的解決辦法,接著由這些問題很自然地引出新的知識點,這樣可以一點一點完善進而完成案例的一個一個功能,從而慢慢培養(yǎng)學生如何采用抽象和分解來控制龐雜的任務,也就是計算思維的關注點分離。
關于“關注點分離”,筆者認為這是計算思維非常重要的一個特性,而在C++程序設計課中也處處體現(xiàn)了這一特性。例如:“類的派生”章節(jié)中,學生也許理解派生類的概念,但是未必理解派生類究竟可以用在什么地方。學生畢竟沒有項目工程經(jīng)驗,也很少有條件學以致用,所以往往知其然但不知其用。這就要求教師在授課中介紹一些項目的架構和設計模式,比如:三層架構、簡單工廠設計模式等等,它們完美地應用了“關注點分離”,也完美地解釋了什么是“類的派生”。有意識地給學生加強外延知識學習,是培養(yǎng)計算思維的一種較好的方式。
六、結語
計算思維的培養(yǎng)是一個系統(tǒng)工程,不僅要培養(yǎng)學生的計算思維能力,更重要的是首先要培養(yǎng)教師的計算思維能力。以前的教學方法包括使用的教材都不太適合計算思維能力的養(yǎng)成,所以教學內(nèi)容和教學方法的改革刻不容緩。但是計算思維能力培養(yǎng)落實到計算機基礎教學,難度很大,這需要我們共同探討,還需要教育界各部門的足夠重視。
[參考文獻]
[1]周以真.計算思維[J].中國計算機學會通訊,2007,(11):83-85.
[2]何欽銘,陸漢權,馮博琴.計算機基礎教學的核心任務是計算思維能力的培養(yǎng)[J].中國大學教學,2010,(9).
[3]何明昕.關注點分離在計算思維和軟件工程中的方法論意義[J].計算機科學,2009,36(4):60-63.
[4]趙璐,呂俊,李斌.VisualC++程序設計教程[M].南京:南京大學出版社,2009.
[責任編輯:左蕓]