• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    如何解決程序語言教學中的“知易行難”問題

    2018-12-30 11:56:27波,張
    計算機教育 2018年7期
    關鍵詞:數(shù)據(jù)結(jié)構(gòu)編程語法

    楊 波,張 軍

    (貴陽學院 數(shù)學與信息科學學院,貴州 貴陽 550005)

    0 引 言

    掌握一門程序設計語言的基本知識和編程技能并熟練運用于解決實際問題,是高等院校對理工類學生的一項基本要求。各類程序設計語言課程的教學,一方面需要一定課時的理論教學講授語言基礎知識、語法規(guī)則和基本技能,另一方面更需要相當數(shù)量的實踐課時使學生訓練和掌握這些規(guī)則與技能,進而培養(yǎng)和提升他們運用理論知識分析和解決問題的能力。

    在實際的教學反饋中,常常發(fā)現(xiàn)很多學生都存在“課堂上能聽懂語法知識,做實驗時無從著手”的情況,也就是說,不少學生雖然掌握了一門程序語言的基本規(guī)則,卻不具備分析一個一般問題并運用所學語言編程知識解決該問題的能力。在課程考核時,很多學生雖然能正確回答試卷中的理論知識,但是對于一個實際問題的算法或程序設計往往無能為力。近年來,“知易行難”問題已成為從事程序語言教學的教師面臨的一大困擾,越來越多的討論集中于對學生實踐和創(chuàng)新能力的培養(yǎng)和提高[1-5]。針對這一問題,應從教與學雙方進行深入剖析,找出可能的原因并進行相應的處理或改進,以期有效提高程序語言類課程學習的效率,進而培養(yǎng)學生主動進行探索性、創(chuàng)造性學習的能力。

    1 “知易行難”問題的表現(xiàn)及原因分析

    當前,對于本科階段理工科學生而言,要求掌握的主流程序設計語言通常包括C、C++、Java、Python等。這些語言雖然有各自不同的應用背景、語法特征、編程技巧和思想,采用不同數(shù)據(jù)結(jié)構(gòu)表示實際問題中的數(shù)據(jù)對象,但是核心任務仍然是利用順序、選擇、循環(huán)3種基本結(jié)構(gòu)的組合對實際問題的操作步驟進行抽象表達。因此,不論是哪一種語言,其學習過程都是類似的:在初步認識和掌握語法規(guī)則的基礎上,逐步運用語言中的各類工具求解實際問題并得出正確答案。

    1.1 課堂教學中的“知易”

    一門語言的基本構(gòu)件及相應規(guī)則總是有限的。即使像C這樣包含復雜、易錯的指針運算的語言,能運用指針操作的對象也不外乎普通變量、數(shù)組、字符串、函數(shù)及結(jié)構(gòu)體幾類。如果教材組織合理、教學方法得當,學生通常能在給定的理論學時內(nèi)識記和理解各類語言構(gòu)件的運用規(guī)則。在實際教學過程中,學生通常的反饋是在課堂上聽懂基本語法和簡單例程分析沒問題。事實上,不論哪一種程序語言,其在基本知識和技能的教學中并不涉及晦澀難懂的理論知識和抽象概念,教學內(nèi)容具體而實踐性強。對于大多數(shù)學生而言,只要認真聽講,就很容易掌握語法知識和簡單例程分析。

    1.2 實踐教學中的“行難”

    相對于基本語法知識的“知易”,學生在完成課下的編程作業(yè)或?qū)嶒炄蝿諘r,常常感到“無從下手,不知怎么開始”。面對這樣不夠具體的問題反饋,任課教師也很難找到原因所在,特別是一些有多年程序語言教學經(jīng)驗的教師,會疑惑為什么同樣的教學過程,以前的學生基本沒有這樣的問題,近年來卻越來越多學生反饋“聽得懂、不會做”。

    大致上,“行難”問題通常表現(xiàn)為:①面對一個編程任務,不能確定程序所要處理的計算對象是什么;②即使能正確分析出計算對象,也不知道采用哪些程序結(jié)構(gòu)及其組合正確表達數(shù)據(jù)的操作步驟;③能正確給出一個問題的求解算法,但在實現(xiàn)時往往由于語法錯誤較多或經(jīng)驗不足導致調(diào)試通過耗時較多,甚至越改越錯;④對較為復雜的實際問題,不能采用正確、合適的數(shù)據(jù)結(jié)構(gòu)表示其中涉及的對象,也較難對問題進行合理的分解和組合。

    以上表現(xiàn)中,①—③出現(xiàn)在初學者的入門階段,④則常出現(xiàn)在學生基本能完成一些簡單編程任務后的提高階段。

    1.3 “知易行難”的原因

    學生在掌握基本語法規(guī)則后,面對實際問題仍然無從著手、不能寫出正確可行的算法或代碼,從教與學兩方面來看,原因有以下幾種。

    1)教學內(nèi)容相對固化,教學方式較為傳統(tǒng)。

    通常,程序設計語言類教材的內(nèi)容組織架構(gòu)都是以從易到難、從簡單到復雜的順序逐一介紹語言中各種構(gòu)件的使用規(guī)則和基本運用。為適應不同的學習者,教材中的例程和習題也大多為常見簡單數(shù)學或日常問題的求解。教師在安排課堂講授和實驗時,一般以教材內(nèi)容為主,依教材順序按部就班推進教學過程,很少針對學生的程度、專業(yè)方向等進行適當?shù)脑鰟h或取舍;在完成一個語言構(gòu)件的語法知識講授后,安排一定數(shù)量的編程習題作為實驗內(nèi)容,由學生上機完成程序的調(diào)試運行。這樣相對固化的教學內(nèi)容與方式不太可能在最大范圍內(nèi)提升學生對于程序語言學習的興趣度。

    2)相關課程間銜接存在一定誤差。

    程序語言類課程的開設不會早于第二學期,在此之前,學生通常都已學習過計算機文化基礎或計算科學導論課程。這類課程一般著眼于計算機基本操作和常用工具軟件的使用,對于引領學生認識編程邏輯幾乎沒有作用。IT類專業(yè)的課程體系中,算法與數(shù)據(jù)結(jié)構(gòu)類的課程必不可少,開課時間通常晚于第一門程序語言課程。在學生作為初學者第一次接觸程序設計語言時,并不具備算法設計與數(shù)據(jù)結(jié)構(gòu)方面的知識,這樣在學習語言的過程中,就難免出現(xiàn)1.2節(jié)中的第4種表現(xiàn)。

    3)學生獨立思考能力和自主學習能力較弱。

    很多在高校(特別是地方普通院校)任教多年的教師都有一個共同的感受:當下的學生似乎普遍沒有10多年前的學生“聰明”,以前的學生在認知能力、推理能力、自主鉆研等方面的表現(xiàn)普遍好于后來的學生。這種現(xiàn)象的出現(xiàn),大概源于兩個原因:一是近20年來高等院校不斷擴招,大大提高了學生進入大學的幾率,然而事實上不少學生在學習能力和自身素質(zhì)上是達不到10多年前的高校錄取標準的;二是中學階段以升學率為第一指標的應試教育體制,很多升學率高的中學多年來已形成一套完善且相當有效的應試訓練體系,即使是資質(zhì)一般的學生,通過“刷題”之類的機械式訓練,也能取得不錯的高考分數(shù),但這種機械訓練方式在較大程度上扼殺了學生進行獨立思考和自主學習的能力。

    4)環(huán)境影響學習習慣和學習風氣。

    外界環(huán)境中的一些因素對學生的學習習慣和學風有較壞的影響。一些中學教師常以“現(xiàn)在辛苦學,進入大學就輕松”之類的說法激勵學生,這就使得不少學生在完成中學階段繁重的學習任務后,一進入大學就由于目標達成而喪失學習動力;再者,大學的教學方式不再是由老師“看”著學,學生無所適從,找不到正確的學習方法,特別在一些地方普通院校中,由于沒有了教師的督促,學生在課下很少主動自習或深入鉆研;此外,社會上偶有的“知識無用論”以及電子游戲的泛濫,也對一些思想不夠成熟、自制力弱的學生產(chǎn)生了很大影響,導致學生怠惰,無心學習。

    程序語言的學習需要學生有較強的邏輯分析和動手實踐能力,對學生的學習主動性和積極性有較高要求。學生僅僅在課堂上聽懂一門語言的語法規(guī)則和例程分析是遠遠不夠的,需要在課下主動思考、積極動手、勇于探索才能真正熟練掌握這門語言,然而,由于前述3和4兩個原因,能滿足以上要求的學生并不多,這就使得學生在初學一門語言時常常是“聽得懂,不會編”。

    2 對策分析

    2.1 改革課程教學內(nèi)容與教學方式

    首先,要根據(jù)上課對象、學時分配等條件,對教材中的章節(jié)進行合理取舍。如果是入門語言,可將一些對初學者而言難于理解和掌握,且屬于進階提升的內(nèi)容(如C中的外部函數(shù)、動態(tài)內(nèi)存分配、指針數(shù)組、鏈表、位操作等)暫時擱置,待學生能熟練運用語言主要構(gòu)件后,必要時再根據(jù)專業(yè)需要將其作為補充內(nèi)容加入。如果學生之前已學習過其他語言課程,則可將與之前課程重復或相似的內(nèi)容作略化處理(如一些面向?qū)ο笳Z言的教材中仍然會介紹變量、常量、數(shù)據(jù)類型、程序3種基本結(jié)構(gòu)等基礎知識),而將重心放在當前語言的核心特征上。

    其次,拓寬例程分析或?qū)嶒炄蝿盏姆秶?,引入與學生專業(yè)背景相關的實例或問題進行分析與求解。例如,對于電子類專業(yè)學生,可在講授C語言的選擇或循環(huán)結(jié)構(gòu)時演示C代碼中條件判斷對一些受控實體(如智能小車、無人機等)的控制作用,讓學生能真正體會編程在本專業(yè)領域內(nèi)的應用。

    第三,前述兩點對于教師提出了較高的要求,僅靠任課教師一人并不容易做到。教學院部可考慮將相關課程組成課程群,具體到程序語言類課程,可以將各類語言課程和算法與數(shù)據(jù)結(jié)構(gòu)課劃入同一課程群中。針對課程群成立課程教學組,組內(nèi)成員既有分工,又有合作,各成員分別擔任課程群中一門課程的主講教師,同時也為群內(nèi)其他課程提供支持。成員間的合作可以是相關課程間知識點的銜接教學,也可以是共性知識的平臺化教學,如常量、變量、數(shù)據(jù)類型、程序3種基本結(jié)構(gòu)等基本知識可由講授入門語言的教師負責講好講透,各類語言涉及算法和數(shù)據(jù)結(jié)構(gòu)的部分則由數(shù)據(jù)結(jié)構(gòu)課程主講教師負責講解。

    最后,一直以來慣常的“課堂講理論,課下編程序”教學模式使得學生在課下缺乏指導,面對實驗任務無從著手。教師可以在課堂上給出與實驗任務相近但較為簡單的題目,現(xiàn)場引導學生完成任務分析、算法描述、代碼編寫及調(diào)試運行的全過程。學生若能在課堂上完成簡化版任務,則課下再進一步鉆研完成實驗的主動性和興趣度都會得到提高。此外,教師可提供一定數(shù)量與當次實驗內(nèi)容相關的例程,要求學生在課下進行閱讀分析,然后撰寫閱讀分析報告,與實驗報告一起進行評定。

    2.2 適當調(diào)整相關課程教學內(nèi)容

    學習程序語言的核心不在于掌握各構(gòu)件的語法規(guī)則和使用技巧,而在于能將實際問題的操作步驟利用程序結(jié)構(gòu)進行正確、高效的表達,這需要學生具有嚴密、清晰的邏輯思維。Scratch雖然是面向青少年的簡易編程工具[6],但是建模、控制、邏輯、運算等編程要素都在其圖形化界面操作中得到體現(xiàn)。在地方院校中,很多學生進入大學前沒有條件和時間較為系統(tǒng)地接觸程序設計,如果能在他們進校后普遍開設的計算機文化基礎或計算科學導論課程中增加一個章節(jié)講授Scratch,可讓學生對程序設計的各要素有一個初步的感性認識,也為后續(xù)的程序語言學習建立起興趣基礎。

    對IT類專業(yè)學生而言,算法和數(shù)據(jù)結(jié)構(gòu)課程是學生深入程序設計領域的必修基礎課程,需在學生掌握一門基本語言(通常為C、C++或Java)后才能開設。對于第一次接觸程序語言的初學者而言,并沒有算法和數(shù)據(jù)結(jié)構(gòu)方面的知識基礎,在遇到較為復雜的問題時,自然就無法對其中的計算對象和操作步驟進行有效、正確的抽象表達。為彌補這一不足,需在入門的語言課程中適當加入算法和數(shù)據(jù)結(jié)構(gòu)方面的知識;在學習程序3種基本結(jié)構(gòu)的控制語句時,首先強調(diào)其算法描述,然后再講授相關語句的具體使用;在分析典型例程和布置作業(yè)、實驗任務時也要將算法分析作為重點,以期逐漸培養(yǎng)學生分析和解決實際問題的能力。例如,對于2.1節(jié)中的第3點建議,可考慮由算法和數(shù)據(jù)結(jié)構(gòu)類課程負責人將控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的內(nèi)容做成較為簡化、占用學時數(shù)較少的通識型教學資源,語言類課程在學習到相關知識點時,由算法和數(shù)據(jù)結(jié)構(gòu)類算法的主講教師提供支持。

    2.3 將明辨性思維方式引入課堂教學

    很多學生在多年應試教育體制訓練下形成了“老師怎么教就怎么學”的學習習慣,較難在課下主動學習并進行獨立思考。在教學過程中引入明辨性思維方式,有助于引導學生擺脫盲從,養(yǎng)成帶著問題學知識的習慣。

    明辨性思維也稱為批判性思維(critical thinking),原意是指邏輯清晰嚴密的思考,是一種非盲從的、分析的、推理的、反思性的思維方式。明辨性思維“是對思維展開的思維”,進行明辨性思維的目的是考量自己或他人的思維是否符合邏輯,是否符合好的標準,從而做出明智決定或得出正確結(jié)論。明辨性思維具有避免接受或做出不好的論證、排除無關因素干擾、不受情感/偏見/謬誤的支配、不盲從權(quán)威或臆斷等基本特征,具體包括判斷信息的恰當性、區(qū)分理性斷言和情感斷言、區(qū)別事實和觀點、識別不足證據(jù)等21項技能[7]。在程序語言教學中引入明辨性思維,可嘗試以下方法。

    (1)避免灌輸型教學,給學生留主動學習的機會。在程序語言的教學中,給出所講授語言構(gòu)件的主要框架和重點、難點,該構(gòu)件使用中的各種細節(jié)則交由學生補充完善,讓學生在掌握主要使用方法的前提下通過實踐逐漸深入體會。

    (2)通過提出問題增加課堂討論。每堂課可針對所講授知識點設置一些(開放性的)問題,以提問或?qū)W生分組的形式進行充分討論,引導學生從不同角度認識和分析問題,并給出合理的最佳解決辦法。

    (3)課程任務注重培養(yǎng)和提升學生進行獨立思考和探索的能力。教師在布置習題或?qū)嶒炄蝿諘r應摒棄所謂標準答案,強調(diào)方法的多樣性或結(jié)論的非唯一性,鼓勵學生提出不同的思路,及時高度肯定學生給出的有效而與眾不同的解決方案,營造敢于探索和創(chuàng)新的學習氛圍。

    2.4 充分利用第二課堂推動學生主動學習

    強大的程序設計能力一定是來源于大量的實踐,課堂教學范圍內(nèi)的習題或?qū)嶒炄蝿詹⒉荒芴峁┳銐驅(qū)拸V且深入的編程實踐。第二課堂活動的開展,可在很大程度上彌補這一不足。程序語言類課程組的教師應組織學生建立編程或其他與專業(yè)相關的興趣社團,通過社團活動(如講座、競賽、項目開發(fā)等)為學生提供交流、實踐、提升編程技能的機會和平臺,充分發(fā)揮第二課堂對課堂教學的補充和深化作用。

    3 結(jié) 語

    程序語言類課程具有非常強的實踐性,僅僅掌握基本語法知識而缺乏足夠的實踐,學生就不可避免地面臨“知易行難”問題。設計得當?shù)慕虒W內(nèi)容和教學方法,著力于推動學生獨立思考、主動探索、積極實踐,可以讓他們掌握并熟練運用一門程序語言。這不僅可為學生利用計算機技術(shù)解決專業(yè)問題進行技術(shù)儲備,更為重要的是,還可訓練和培養(yǎng)學生進行嚴密邏輯思維、正確分析和求解實際問題的能力,而后者才是一名合格大學畢業(yè)生的核心競爭力。

    猜你喜歡
    數(shù)據(jù)結(jié)構(gòu)編程語法
    我家有只編程貓
    我家有只編程貓
    我家有只編程貓
    我家有只編程貓
    跟蹤導練(二)4
    KEYS
    Keys
    Book 5 Unit 1~Unit 3語法鞏固練習
    “翻轉(zhuǎn)課堂”教學模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學為例
    高職高專數(shù)據(jù)結(jié)構(gòu)教學改革探討
    中國市場(2016年45期)2016-05-17 05:15:48
    祁东县| 滨海县| 五华县| 余姚市| 大安市| 星子县| 永福县| 宁陕县| 台湾省| 大英县| 大洼县| 九江县| 北流市| 平定县| 方城县| 丰都县| 锡林浩特市| 东阳市| 宁都县| 扬州市| 平山县| 界首市| 疏附县| 房山区| 镇平县| 阳东县| 威远县| 通榆县| 临湘市| 宝山区| 砀山县| 云浮市| 洱源县| 宜兴市| 滨海县| 华安县| 芷江| 静乐县| 汉川市| 佛教| 永康市|