在線客服

咨詢熱線

程序設計教學中培養計算思維能力的路徑與方法

作者:未知

  摘要:在信息技術飛速發展的新形勢下,程序設計教學中培養學生的計算思維能力具有重要的意義與作用,該文提出了程序設計教學中培養計算思維能力的意義與作用,提出在教學過程中應重視養成學生計算思維的意識,并通過案例教學、研究性教學等路徑,給出了培養學生掌握計算思維、提升計算思維能力的一些方法。
  關鍵詞:程序設計;計算思維;案例教學;研究性教學
  中圖分類號:G642 文獻標識碼:A
  文章編號:1009-3044(2019)29-0088-02
  目前,計算機的應用已深入到人類學習、工作和生活的方方面面,學生無論學習的是哪個學科,將來從事的是哪個行業,都能接觸到計算機的應用。然而隨著信息技術、人工智能的飛速發展,信息社會對人才的要求已不再是僅僅掌握計算機的基礎知識和基本操作,使用計算機的簡單功能,做些日常性的事務來提高工作效率,更需要他們具備計算思維能力,在工作中,能結合所學的專業知識有所創新,有效的使用計算機完成某些應用開發,解決一些實際遇到的復雜問題。如何把一些實際問題轉化為計算機所能解決的問題,這種轉換能力就是計算思維能力,在高等教育中,培養學生的計算思維能力是目前大家較為關注的問題之一。程序設計語言教學是高等教育階段的一個必要的組成部分,它對培養學生的信息素養和計算思維具有重要的地位和作用。為適應當前教學改革的發展,使計算思維的培養真正落到實處,以滿足高等學校計算機基礎教育對創新型人才培養的要求,本文就程序設計語言教學中如何培養學生的計算思維能力,提出了一些實施的路徑和方法。
  1程序設計課程中,培養計算思維能力的意義與作用
  人類的科學思維總體上有如下三種:以觀察和歸納自然泡括人類社會活動)規律為特征的實證思維;以推理和演繹為特征的邏輯思維;以抽象化和自動化為特征的計算思維。美國卡內基梅隆大學的周以真教授認為,計算思維是運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣大的一系列思維活動。
  從以上對計算思維的論述中可以看出,對計算思維的培養過程,就是學習如何嚴謹科學的分析問題、尋找解決思路、設計解決方案的過程,這和程序設計課程的培養目標是一致的,程序設計是一門應用性很強的課程,強調學生對知識的實際運用能力,程序設計課程的教學目標不僅要使學生掌握某門程序設計語言的基本語法知識,其核心任務還在于培養學生具備靈活應用這些知識的能力,掌握用計算思維的方法去解決今后工作和學習中遇到的各類非通用計算問題,如果一個計算機程序具備了解決某個問題的功能,實際上所體現的是程序設計者對于該問題的分析和解決思路,顯然,學習程序設計能促進和加強學生計算思維的培養和訓練,使計算思維的培養落到實處,能有效地培養學生掌握創新思維方法,具備學以致用的能力,既滿足信息社會對大學生的基本要求,同時對培養復合創新型人才也有著十分重要的意義。
  其次,計算思維的培養與形成,不僅對人的一生,無論是工作還是生活,也會帶來極大的好處。蘋果公司創始人Steve Jobs曾經說過:“在工作中是否要編程,未必那么重要,但你可以把它當成一面鏡子,一面你思考的鏡子。我認為學習如何思考是最有價值的。這個國家的每個人都應該學習如何編寫程序,因為它教會你如何上思考。正如人們學習法律未必要當上律師,但學習法律可以告訴你如何從法律的角度思考問題。同樣地,編程是一種稍微不同的思考方法。因此,我認為計算機科學是一門基礎學科。每個人應該在一生中花費一年的時間學習如何編程。”這說明程序設計課程實際上也是一種培養學生在遇到任何復雜問題時如何思考的課程,計算思維將是每個人都會使用到的一種基本技能。
  2程序設計課程中,培養計算思維能力的路徑與方法
  2.1強化程序設計中分析、建模和抽象能力的培養,養成計算思維的意識
  計算機程序是指令的有序集合,程序設計課程的教學重點主要包含兩個主要方面:一是各種指令的功能和使用方法,即編程語言的語法知識,包含了程序中用到的常量、變量、表達式、各種語句、控制結構、數據結構的表示及機器對它們的處理過程等知識點;二是計算思維的培養,即如何針對實際問題進行分析、建模,并從中抽象出指令代碼,然后將它們有序的組織起來以完成特定的功能。第一方面是程序設計的基石,第二方面是程序設計的靈魂,熟練掌握一門編程語言的語法及編程技巧固然重要,但對于問題分析、解決思路和完成代碼的抽象能力才是程序設計真正重要的、有價值的環節。
  傳統的教學模式中,由于語法知識內容量大,且這部分內容是課程的基礎,是程序設計的基石,因而占用的課時較多,教師往往是按教材順序逐個講解編程語言的語法知識點,注意力較多地放在對于知識點的傳授上,而訓練學生計算思維的教學環節相應的少一些。雖然教師在講授知識點的應用時也會強調計算思維的在編寫程序中的作用,但由于學生參與較少,因而易造成學生不能意識到它的重要性,忽視對它的訓練。而單靠死記硬背概念和一些設計規則,是不可能真正掌握和領會計算機求解問題所用的思維方法的。由于沒有養成計算思維的意識,在面對實際問題時,學生難以抓住要點,總是直接編寫程序,忽視前期的分析、建模、代碼抽象的過程,造成思維混亂,難以得到預定的結果。因此,如何讓使學生學以致用,重視和把握程序編寫的分析角度、思維要點和代碼抽象的過程,提高學習效果和綜合應用能力,以滿足實際應用要求,是程序設計教學要解決的首要問題。
  經過課程實踐,我們認為:一是應根據教學內容與目標,打破傳統教材知識體系結構,充分體現學生的主體和中心地位,從適合教師講授的角度轉向適合學生學習的方式,在傳授知識的同時注重能力的培養,真正做到既要授之以魚,更要授之以漁,因此在講授編程語言的語法知識之前,首先要使學生了解計算思維在程序設計中的重要地位,通過一些案例強化程序設計教學中分析、建模,代碼抽象過程的重要性,以突出計算思維能力的培養環節,讓學生明白程序代碼只是程序設計者對于某個問題解決方案的計算機實現,而問題分析、解決思路并從中抽象出正確的數據結構、程序結構和各種表達式才是程序設計最重要、最有價值的部分,它必須在編寫代碼之前確定。二是要在后續的教學中,將計算思維巧妙融人教學的各個環節,增加計算思維在課程教學中的比重,精心組織教學過程讓學生積極參與其中,不斷體會計算思維的作用和魅力,有針對性的展開教學,反復強化訓練,以養成學生在解決實際問題時自覺使用計算思維的意識。   2.2實施案例教學,培養學生掌握計算思維的方法
  教學是一門藝術,采用有效的、適合學生學習的途徑和方法才能起到良好的教學效果。雖然學生知道了計算思維的重要性,但如何學會用計算思維的方法去解決問題才是程序設計課程教學的終極目標。程序設計的步驟包含分析問題,算法設計(數學建模)并抽象出具體的實現語句,明確編程步驟,編寫程序,進行程序調試等一系列步驟,學生如何把握實際問題的分析角度、算法設計要點和代碼抽象的過程是教學的難點。教學中我們發現,傳統的“灌輸式”、學生被動接受知識的教學模式,體現了教師的主體和中心地位,導致部分學生沒有真正動腦子去學,無法普遍激發學生的聽課興趣,聽課的專注力不斷下降,對講授的內容常常是零零星星一知半解,這對今后的學習很難形成知識的積淀。
  為了調動學生學習的主動性,激發學生學習興趣與參與度,我們采用了案例教學,通過選取不同的案例,將教學的目標、難點、要點融入其中,讓學生了解要學什么,如何去學,各知識點用在何處,啟發學生在思考思辨中養成自我構建知識的能力和素質。例如,下面的案例是要求設計一個警察抓小偷的程序:
  已知警察抓了A、B、C、D四個偷竊嫌犯,其中只有一個人是真正的小偷,審訊記錄如下:A說“我不是小偷”;B說“C是小偷”;C說“小偷肯定是D”;D說“C在冤枉人”,已知四個人中有三個人說的是真話,一個人說的是假話。請問到底誰是小偷。
  在這個案例中四位嫌疑人的表述是“不確定”的已知條件,“四個人中有三人說的是真話,一人說的是假話。”是唯一確定的已知條件,解決這個問題的方法可采用窮舉法即依次假設、逐個驗證。依次假設嫌疑人是A、B、C、D中的某一人,能滿足上述唯一確定已知條件的假設即為問題的解。具體的Python程序代碼如下:
  但案例教學,不是舉例,要通過精心組織教學環節,創設問題情境,引導學生積極參與,才能了解、體會如何把握解決問題的思維角度與過程。針對該案例,應創設如下的問題供學生思考,該案例的特征是什么?解決這個案例的方法有哪些?如何具體實施并抽象出合適的代碼去實現?并進一步提出它需要解決幾個問題:(1)如何表示A、B、c、D四個嫌犯;(2)如何表示“假設A是小偷”;(3)如何表示審問記錄中四個嫌疑人說的話;(4)如何表示“三句是真話,一句是假話”;(5)如何實現“依次假設”,這些問題涉及了數據、表達式和程序結構等多方面知識,解決了這些問題才能從中抽象出正確的代碼,為后續的編寫程序打下堅實的基礎。
  另外,案例教學要讓學生見多識廣,從一系列類似的或不同的案例中,反復比較、體會,才能學會怎樣根據不同問題的特征,選取不同的算法設計,并學會如何從中抽象出特定的數據結構、程序結構等,最后編寫出正確的程序。需要注意的是為了彌補課時的不足,可采用多種教學形式,如課外練習、實驗課等,拓寬視野,逐步掌握每個問題思維的角度、方法,養成自我構建知識的能力和素質,幫助學生有效掌握計算思維的方法。案例教學與傳統的教學模式相比,它更能活躍課堂互動氛圍,學生主動發現問題、提出問題的意識也大大增強,充分提高了教學與學習的效率。
  2.3引入研究性學習方法,提升學生的計算思維能力
  教學包括教與學兩個方面,講得好不代表學得好,從聽明白到記住,再到最后的會用,需要教師精心設計教學環節,尋找符合學生認知特點和學習規律的教學方法才能實現。案例教學,教師重在引導,啟發思想,而不是直接講解答案,要充分體現學生是學習的主體,教師只是一個引導者,是教學內容的組織者,課堂上如果教師過分發揮自己能講會講的優勢,容易導致重“教”不重“學”,學生看似聽明白了,但印象不深刻,即使學生對講過的知識點記住了,問題情境一旦發生改變依然會無所適從,這說明學生知識的掌握大都不是教師講會的,而是靠學生自己學會、練會的。
  計算思維的本質是抽象和自動化,程序是由一系列抽象的指令字符組成,對于長期適應于漢字表達的學生來說,無論是理解、記憶還是應用,都會有一定的難度。根據課程的這一特點,我們應采用研究性學習的方法,留出足夠的時間讓學生自主研究、學習,由不同的知識點,或引導學生自學自悟,或進行質疑討論,或讓學生進行實驗訓練,使學生通過各種形式運用所學知識去獨立分析解決問題,提高計算思維的能力。例如在抓小偷的案例中,具體的分析、算法設計及每個問題的解答,要讓學生自己去根據教師的引導尋找答案,改變以講為主的教學方式,通過對一系列“是什么”“為什么”和“如何表示”等問題的研究與實現,才能引發學生深入思考,真正了解各算法適應于什么特征的問題、數據結構、程序結構、表達式的抽象會用到哪些知識、主動去關注并記住這些知識細節、體會它們在程序設計中的用途并了解自己的薄弱環節,只有通過學生自己對案例的獨立研究、具體實現,自己構建知識體系,才能在面對實際問題時靈活使用它們,這樣既有效地傳遞了知識,又極大提升了學生計算思維的能力。
  3結束語
  通過程序設計這門課程的教學,培養學生的計算思維能力、較好地完成教學目標并非易事,對教師的教學設計和實施都提出了很高的要求,還需要在今后的教學實踐中,不斷探索更適合的方案,為學生計算思維能力的培養加薪添柴。
轉載注明來源:http://www.361tx.com/8/view-15070531.htm

?
天天啪啪,天天啪一啪,天天啪影院,啪啪在线影院免费