前言:中文期刊網精心挑選了計算機程序設計范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
計算機程序設計范文1
一般來講,語言類課程的教材通常如下安排:第一章講授語言的歷史背景、特點、運行機制等。第二章介紹語言的數據類型、運算符和表達式等內容,此時的實踐課基本上不具有實質性內容,通常幾周后學生才有動手操作的機會。課程的講授基本上都以語法為主線,在講授某一章語句語法時,會配有程序說明,但也僅作為內容的示例或驗證來加以講解。這種教學模式的形成有其歷史原因,過去計算機都比較少,學生很難有上機的機會,所以希望上機時減少由于語法錯誤而浪費的時間,一般在上機之前將要運行的程序在紙上寫好,然后仔細檢查,認真驗證,唯恐出現語法錯誤,延長調試時間。這種教學模式一直延續到現在,已完全不符合現在社會發展的需要,其弊端主要有:以教師的講授為中心,學生入手比較晚,積極性不高,所編寫的程序大多是對內容的驗證,創新能力得不到鍛煉和提升。等到學生語法都已學完,能夠做一個綜合性的大型程序設計時,也快接近結課考試時間,學生忙于考試,無心編寫程序,得過且過,效果不是太好[1-3]。
2轉變教學模式
目前計算機的發展速度很快,學校里供學生上機使用的計算機越來越多,上機條件越來越好,編譯平臺也發生了很大的變化,會給編程者以更多的提示,縮短了檢查編譯錯誤所需時間。學生的理論課基本上也能夠在機房上課,教師邊講學生邊做,克服了過去只聽教師講授而看不到真正操作環境的局限,因此,仍然沿用舊的教學模式已不能適應新形勢下人才培養的需要??梢詮囊韵聨讉€方面對課程進行優化研究。1)打破傳統教材的順序,前后結合。傳統教材都是先介紹某種計算機程序設計語言的歷史背景、特點,之后介紹這種語言的一個簡單的小程序,講解框架和基本單位,這個階段可以有一次上機實驗的機會;然后就是算法,接下來是數據類型,對這部分內容的講解要占很長的時間,在這段時間里,學生動手的機會很少,很難建立起對該類語言的印象,而且到后期能夠動手操作的時候這部分內容基本上又都忘了,還需重新加深印象。另外,教師講解時間過長,容易使學生產生厭學情緒。有鑒于此,在講解這部分內容時,我們可以結合后續的知識,比如講解數據類型的同時,可以結合輸入/輸出語句同時進行,針對每種數據類型告知學生如何輸入,如何輸出,并結合實例進行大量練習。一般的教材都將輸入/輸出語句的講解設置在數據類型之后,學生經過數據類型的練習后,再接受輸入/輸出這一章的學習時就很輕松,老師僅做一個總結就可以了。一般來講,每一種語言都有一個程序的框架,首先要知道這個大的框架,然后才能向其中添加自己的代碼。所以講解的順序應該是最簡單的程序,可能只由幾行代碼構成,甚至可能就是一個程序的框架,加上一些簡單的輸入/輸出語句。由此循序漸進,由易到難?,F時期的教學模式可以從以教材章節為中心向以項目為中心來轉變。教學中雖然不嚴格按照教材的章節順序講解,但是項目的選擇也不能過于隨意,要能夠覆蓋教材的知識點,而且能夠符合學生的認知規律。在項目中講授語法知識,直觀不抽象,入手才會比較快。2)雙項目驅動。課上可將一個項目作為主線,比如學生信息管理系統,從這個系統的功能構成一直到每種功能的具體實現都和學生共同完成,課下再以圖書信息管理系統為主線,讓學生仿照課上的實現過程自己設計。在這種思路下,仍然要打破傳統教材的講解順序,比如在學生信息管理系統中,介紹完程序設計的基本方法后,可以確定出本項目的主要功能模塊。如果是C語言課程,就給學生確定出主要函數的框架,但這并不意味著要給學生介紹完整個函數一章的內容,只需告知學生程序是要分模塊設計的,不講函數的實現細節。然后再一個模塊一個模塊地加以實現,其他語言的講授與此類似,期末時,學生便學會了兩個項目的開發。語言類課程可以使用相同的項目,比如學生信息管理系統和圖書信息管理系統,但在完成時可以采用不同的形式,一方面使學生對該項目的功能爛熟于心,另一方面又能對比每種語言的不同點及優缺點,進一步加深印象。3)聽看抄改寫。教授課程采用“聽看抄改寫”五部曲方式,聽教師講解,看老師的操作,學生動手抄寫程序,學生模仿老師的操作自己動手實現,學生仿照已實現的程序改寫。以期達到舉一反三,多多練習的目的。其中增加了一個“抄”的環節,一方面,現在計算機資源的利用率很高,學生很少有機會手寫程序,所以一旦需要手寫程序時(比如面試)就無從下手;另一方面,學生通過手寫程序,確實可以加深很多印象。這五部曲中“聽看”固然重要,但“抄改寫”占的比重更大,老師通過了解學生動手過程中出現的問題總結經驗,發現學生對哪些問題已掌握,哪些問題還不熟悉,還不了解,還需要深入講解,以便加強練習,做到每一個練習都是有針對性的,使學生更快更好地掌握所學的知識。
3轉變教學重心
傳統方式下,每節課基本上都以教師講解為中心,經過上述課程教學模式的轉變之后,很容易使教學重心也發生轉變,即以教師講授為中心向以學生學習為中心轉變,比如上述“抄改寫”的比重和“聽看”的比重相近,學生動手操作的機會增加,能力增強,積極性自然也就高漲。教師也從一節課不停地講解中解放出來,留給自己更多的時間觀察學生,留給學生更多的時間鍛煉自己,學生和教師共同查缺補漏,共同完善教學。在教學過程中,應尊重學生的差異性和多樣性,并采取有效的措施因材施教[4]。轉變教學重心還要以提升學習興趣為基礎。在入門階段,為了吸引學生的注意力,激發他們的學習熱情,使用的程序盡量具有一定的趣味性,可以是一個簡單的小游戲,比如第一節課就讓學生自繪簡筆畫。再如簡單的猜數字游戲,兩人一組,一個學生做,另一個學生玩。后期,隨著學生能力的提高,可以使用越來越復雜的程序,以培養能力為重心,開拓學生的創新思維,學生在已知程序中學習到該語言的基本語法后就可以按照自己的思維給出更具創意性的設計。在課上學習基本語法時,也可以多做游戲,比如教師給出一個關鍵字,一個學生比劃一個學生猜,再比如“跳跳跳”等小游戲。
4輔助工具建設
4.1課程網站建設筆者結合自己多年的教學經驗總結出:采用傳統教學模式與網絡相結合,會收到良好的效果。建立課程教學網站,上傳課件、工具、學生作品等,同時提供討論區、留言板,方便學生之間、師生之間的交流,定期優秀的學生作品,給其他同學提供榜樣和思路,通過這種手段來達到提高學生動手能力,激發學生的學習熱情和興趣。4.2其他教學工具的使用從專門為學生開發的仿真教學系統的使用中可以得出結論:在上述教學手段的基礎上,可再開發一些輔助教學工具,如點名系統、速度測試系統、習題自測系統、仿真系統等。另外,還可以增加一些視頻案例以增強學生的認知和提升學生的興趣[5]。4.3多種考核方式提供多種考核方式,側重考查學生的動手操作能力、創新思維能力。鼓勵學生自主設計程序,對于好的程序作為優秀作品在全班展示,并為下一屆學生留存[6],提供更多學習經驗。
5結語
計算機程序設計范文2
關鍵詞:高職 程序設計 教學 探索
中圖分類號:G633.3 文獻標識碼:A 文章編號:1672-3791(2012)04(c)-0200-01
計算機程序設計一直是高職院校比較難學難教的課程,其抽象的語法結構、費解的編程思想等讓很多學生失去了學習的興致和主動性,為提高教學效率,本文從高職計算機程序設計存在的一些問題著手,對優化計算機程序設計教學進行了一定探索。
1 計算機程序設計教學中存在的問題
1.1 學生基礎不同,學習信心不高
由于課程學習的特點,對于邏輯思維能力和數學基礎要求較高,高職學生很多數學基礎比較薄弱,邏輯思維能力各不相同,所以很多學生學習程序設計過程中會顯示信心不足,更甚至有些學生對計算機程序設計還產生一種恐懼感,自己給自己設置了門檻。
1.2 教材不適應高職學生的學習要求
如今高職教材普遍存在應用技能偏輕、內容陳舊等問題,不能很好的體現高職教育的實用性,因為高職培養的是技術應用型人才,從而不能達到要求,使得培養出來的高職學生不具有自己的特色。
1.3 教學與考核方式比較單一
計算機程序設計的教學一般采用教師講授和學生上機操作的形式,學生在上機操作中一般只是對程序進行調試,調試成功的話就算完成了任務,雖說上機學生有了實踐的過程,但是此過程僅僅使得學生掌握了程序設計的語法和調試的方法,但是不能培養學生利用程序審計分析解決實際問題的能力??己诵问揭话阋浴跋迺r上機解題+閉卷”為主,隨著現代技術的發展,程序設計所要求的分析問題、處理信息、利用合適工具等能力根本無法在這樣的考核中體現,這種考核方式很難考核學生的實際綜合能力。
2 關于計算機程序設計教學的幾點探索
針對上面提出目前存在的幾點問題,為優化計算機程序設計教學,達到良好的教學效果,筆者通過幾年來的教學經歷,主要從以下幾個方面進行了探索。
2.1 完善課程教學大綱及標準,使其內容適應高職人才培養要求
高職教育必須體現是以培養高技術應用型人才為目的的,和普通本科教育不同,而應該根據區域經濟發展和學生就業情況以及各個學校自身的情況來確定教學內容,加強教學的針對性和實用性??梢詮膸c考慮:(1)選取經典傳統或聯系實際的程序設計案例分解組織基礎知識內容。(2)選擇一個現實中規模比較大,比較具有代表性的,以及工程實用較高的案例,即一個整體項目貫徹始終,案例教學與項目教學相結合。(3)教學過程將軟件工程的思想貫穿到課堂中,俗話說“授人以魚不如授人以漁”,在學習程序設計中也要掌握軟件工程的思想,為今后能勝任程序開發做好充分的準備。
2.2 強調動手的重要性,著力提升學生自主學習的意識和能力
程序設計教學應以培養學生的學習能力和編程能力為主,一開始就要給學生強調不動手編程是學不了編程的,而在學生動手的過程中,教師起著關鍵性的引導作用。為切實有效的發揮老師的引導作用,可從以下三個方面著手:(1)課前,通過設計聯系實際的教學案例調動學生動手的興趣。(2)課中,通過提出問題引導學生去動手解決問題。要盡可能多地為學生創造發現問題的機會,通過借助問題引導學生探究問題背后隱藏的知識、技能,強調問題解決中知識運用與獲得的過程性。使學生在實際操作中遇到困難時,學會主動從書本、同學、老師以及網絡等處去尋找支撐知識或解決問題的方法,培養和提高學生自主學習的能力。(3)課后,通過輔以一些強制性措施,比如練習檢查、平時練習記錄考核成績等督促學生動手。
2.3 教師在課堂教學的演示中盡可能多的采用現場編程,發揮教師示范的最大作用
在課堂教學的演示中,將以往純粹的演示已經準備好了的代碼轉變為現場編程,現場編程有其不可忽視的作用。其一,能在學生面前體現老師對知識的熟悉程度,老師的熟練操作能帶給學生對老師的信任,增強他們對學習的信心。其二,能增強課堂互動,在敲代碼的同時邊敲邊講解,對某些應用到的知識點設置適當的提問,引導學生共同思考。其三,將對編程環境的有效利用帶給學生,比如開發環境中的智能提示,變量值的跟蹤,以及自己編程過程中積累到的排查錯誤的經驗等。其四,將規范操作帶給學生,比如良好的編程風格,一些約定俗成的規范等?,F場編程能更方便的將學生引入案例現場,可以更好的幫助學生清晰的理解知識在實際中的應用,使學生能夠更容易的將知識應用于實際。
當然,為了將現場編程融入課堂,發揮其作用的同時也要使預定的授課進度得以順利進行,這就要求我們教師在備課時做足準備。但要想從根本上提高自身編寫代碼的能力與熟練程度,隨時隨地真真正正的給學生以示范以及有效的指導,只能靠不斷豐富和積累自己的項目實踐經驗。這對作為教師的我們也是一個要求與促進。
2.4 靈活設置考核方式,檢測學習的同時考出水平
考核的目的不能單單只是用來檢測學生學習的情況,更應該成為學生認識自己提高自己的一個過程,同時也成為強化教學的一個有力環節。對于象程序設計這類注重實踐與培養開發技能的課程,“限時上機解題+閉卷”這類型的考核方式嚴重束縛了學生的真實發揮,無法讓學生更好的認識自己、戰勝自己。筆者認為程序設計課程的考核應該給予學生足夠的時間和開放的空間。因為在這個互聯網時代,學會搜索、篩選、理解和轉化海量的信息也是一種非常重要的能力,應該借助考核讓這種能力更好的得到提升與發揮。為此,教師應該改變傳統的考核方式,靈活多變,比如采用案例設計與答案的形式,精心設計考核案例選題,給學生時間去思考,去查閱相關信息,包括資源豐富的網絡,當然也要確保學生在網上搜索到的只能有類似的題,而不會出現環境與要求完全相同的題,如此學生也必須理解找到的資料并加以轉化才能用來解答自己的選題。
程序設計是一門比較難學難教的課程,但學習這類課程本身能很好地培養學生的邏輯思維能力、自主學習能力和實踐能力,這同當代教育的基本理念目標是一致的。因此,如何推進這些能力的培養,上好這一門課程,有待我們不斷的探索與努力。
參考文獻
計算機程序設計范文3
關鍵詞:翻轉課堂;程序設計;傳統教學;教學環境;應用
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2016)19-0084-02
翻轉課堂是在充分了解與掌握教育部信息化教學改革目標的基礎上創建的一種新型教學模式,其重要性不容忽視。與傳統教學模式相比,翻轉課堂教學模式有了較大的改變,其旨在強調學生的主體地位。計算機程序設計課程是每個本??茖W生所需要必修的課程,其中專業學生則需要進行更深入的探索與研究,非專業學生只需參與計算機等級考試即可,但同時也需要掌握與理解一門基礎語言編程方式。一般而言,語言編程課對學生來說是較為困難的一門課程,在學習過程中存在較大難度,所以部分學生缺乏學習興趣,甚至部分學生都直接放棄這門課程。但翻轉課堂教學模式在一定程度上提升了學生的學習積極性、開發了學生的思維、增強了學生的自信心、提升了教學質量等,但在具體教學過程中還存在較多問題,因此翻轉課堂在計算機程序設計課程中的合理應用尤為重要。
1 計算機程序設計課程教學現狀
1.1 缺乏合理的課程授課規劃設置
通常,計算機程序設計課堂開設于學生進校后的第一學期,主要原因在于大部分省份在中學階段就已經開設了相應的計算機基礎知識與簡單程序設計課程。然而在具體教學過程中,大部分學生在中學階段根本沒有掌握牢固的基礎知識,學校開設的這些基礎課程并沒有實質意義。加之學生剛走進大學校園,對大學環境與大學生活都充滿著好奇與幻想,且大部分學生還未適應大學的學習模式,盲目延續中學的學習習慣,對計算機的了解與認識也較淺,即他們所掌握的計算機知識主要包括聊天與瀏覽網頁等,在沒有充足計算機基礎知識的基礎上學習計算機程序設計課程,無疑增加了學生的學習難度,及打擊了學生的學習信心??偠灾嬎銠C程序設計課程授課規劃沒有切實考慮到學生學習的實際狀況。
1.2 缺乏科學有效的教學方式
與中學相關課程相比,程序設計語言具有較大的差異性,如VC、VF等知識點,中學學習的知識結構與語言設計課程的合理貫串存在較大的難度,加之教師在制定教學方式時通常過分注重基礎概念與語法規則的講解,沒有考慮到學生分析與處理問題能力的培養,及學生思維的開發,從而導致學生稀里糊涂的學完這門語言,并沒有真正掌握學習內容。因此,大部分學生逐漸產生叛逆心理,甚至是喪失學習計算機程序設計課程的信心,而且教師教的也十分累。
1.3 缺乏寬松的學習環境
計算機程序設計課程具有一定的難度,大部分學生都表示:上課同不懂教師所講內容、課后自己無法自行復習鞏固、請教教師又缺乏合適的機會與平臺、標記出不懂的內容留著下節課向教師請教等,雖然標記出不懂的內容留著下節課向教師請教的方式在一定程度上可以解決部分問題,但同時也積留了大量新課問題。長此以往,程序設計課程不僅教學質量差而且耗時較多。
2 翻轉課堂在計算機程序設計課程中應用的必要性
與傳統教學模式相比,翻轉課堂教學模式具有較大的變化,傳統教學模式旨在強調課上四十五分鐘的教學成效,教師則需要最大限度地利用課堂時間竭盡全力的解決所有問題,然而課時少內容多是計算機程序設計課程存在的普遍現象。傳統課堂教學模式,教師以高高在上的教育者身份自居,盲目灌輸學生相應的語法規則與基礎概念,學生則被動學習,盲目在下面抄寫滿黑板的規則與概念,沒有多余的時間思考、理解,及合理應用。這樣的教學模式無疑增加了學生的學習難度,加之教師在學生沒有完全理解與掌握的情況下繼續灌輸新的知識與內容,所以導致計算機程序設計課堂呈現出死氣沉沉的氣氛。
而翻轉課堂教學模式的出現剛好緩解了這種死氣沉沉的學習環境,課堂環境逐漸自由靈活化,但該模式的實行需要網絡與空間平臺的支持。社會與現代教育技術的快速發展,使得各個高校都創建了校園網,一般口常教學是沒有問題的。而且大部分高校都創建了圖書館與電子閱覽室,也就是說學生不僅可以視自己的手機、電腦與iPad為終端設備連接網絡,而且利用視圖書館與電子閱覽室為終端設備連接網絡,加之現代世界大學城空間平臺也提供了廣闊、良好的平臺,所以這些都為翻轉課堂模式的實行奠定了良好的基礎。
翻轉課堂教學模式是:教師以空間上傳的方式將自己的視頻與課件分享給學生,積極引導學生進行課前預習,即在實際課堂教學前認真觀看視頻、理解視頻內容與完成課前作用,從而為課堂學習奠定良好的基礎,并引導學生將自己無法理解的問題進行重點標記,以便課上解答。實際課堂教學過程中,學生將自己標記的難題向教師提問,教師則幫助學生解開心中疑惑,課堂時間不再緊張,學生不僅對課堂教學有了一定的信心,而且對課堂教學有了基本的了解,提升了學生的學習興趣。當然,教師除了需要幫助學生解開心中疑惑,還需要結合教學的實際情況設計相應的任務與問題,鼓勵與引導學生進行小組合作與討論,這樣的方式既促進了學生之間的友誼、提升了學生的人際交往能力又增強了課堂互動氛圍、創建了愉悅的學習環境。課后,部分學生肯定還會預留一些不懂的問題,這時學生則課堂利用網絡與平臺空間向教師請教,且教師能夠及時準確的在空間給予解答。因此,翻轉課堂教學模式增強了空間與實踐的聯系,拓展了學習環境與學習領域,真正做到了學生隨時隨地學習,教師也能及時準確的了解與掌握學生的學習情況,從而更好地把握教學方式,真正促進所有學生共同進步。
3 翻轉課堂在計算機程序設計課程中的應用
與其他課程相比,計算機程序設計課程較繁雜與空洞,具有一定的難度,學生在學習語法結構時無法承受。然而翻轉課堂教學模式旨在強調完轉變繁雜與空間的課堂,取而代之的是生動化的課程,并創建和諧的師生相處模式,增強師生、生生之間的溝通與互動。例如,在學習VF程序設計中的循環結構時,學生難以掌握與理解的問題主要包括:如何在理解與熟知簡明扼要語法規則的基礎上實現單循環、如何依據單循環解決帶條件的循環、如何判斷何時使用多循環等問題。這些問題都是課堂教學中普遍存在的難點。
翻轉課堂教學模式的合理應用,首先教學需要以空間上傳的方式向學生分享自己用心制作的動態課件,教育與引導學生自行學習與掌握循環語句的語法規則,生動形象的視頻與課件可以幫助學生產生初步的概念。在學生觀看課件的時候教師需要有目的有針對的設計相應的問題,讓學生在觀看完后進行解答,以便及時鞏固知識點。其次教師需要及時通過空間了解與掌握學生課前習題完成的實際情況,做到對學生的學習情況有基本的了解,處理起來也有一定的把握。最后教師需要在課堂教學過程中為學生解答心中的疑惑,及歸納整合學生課前預習的實際情況,在此基礎上確定任務目標,如告知學生帶條件的多循環通常在哪些類型題目上出現的幾率較高,及解決方式。選取一個類似案例,引導學生進行分小組合作與討論,增加學生之間的溝通,讓學生先自己完成,在完成過程中遇到不懂的地位教學需要及時給予幫助與解答。這樣的學習方式不僅開發了學生的思維、提升了學生解決問題的能力而且營造了良好的學習氛圍,而且在課堂上就能完成本節基本的重難點,這無疑減輕了學生課后的壓力,即學生便可以輕松地完成課后作業,以及通過課件與視頻預習下一個知識點。
4 結束語
綜上所述,翻轉課堂教學模式既是計算機程序設計課堂教學的正確方向,又對學生學習起著積極促進作用,即提升了學生的學習熱情、培養了學生自主學習意識、發揮了學生的學習主體地位等,教師不再是高高在上的教育者,而是以引導者身份輔助學生學習。這種創新型教學模式是一個循序漸進的過程,且計算機課程設計課程教學過程中存在的問題不容忽視,因此結合學生學習的實際情況合理應用翻轉課堂教學模式至關重要。
參考文獻:
計算機程序設計范文4
摘要:“計算機程序設計語言”課程是計算機科學與技術學科核心的課程之一,極大地影響著學生對計算機領域的理解和興趣。本文針對教學過程中存在的問題,提出了層次化教學目標思想。以面向對象語言C++為例,介紹基于層次化教學目標體系的具體思想和內容,并提出與之相適用的課程及實驗設計,達到優化教學方法,提高教學質量的目的。
關鍵詞:計算機程序設計語言;層次化教學;C++
中圖分類號:G642
文獻標識碼:A
1“計算機程序設計語言”教學現狀
“計算機程序設計語言”是普通高校計算機教育的基本專業課程,在計算機領域的各個專業的課程體系中都處于核心的地位。這門課程不僅可使學生獲得基本的程序設計能力及鍛煉學生的邏輯思維能力,它還極大地影響著學生對計算機領域的興趣和理解,對引導和培養學生在計算機工程及理論方面的研究興趣起著先導性和基礎性的作用。因此,“計算機程序設計語言”的教學質量成為影響大學本科計算機教學質量和效果的一個關鍵的因素。
影響課程教學質量的主要三個因素為教學內容、教學方法和實驗設計。當前,大部分教師受傳統教學模式的影響,教學的重點都放在程序語言的基本語法的講授,課堂所設計的程序實例大部分圍繞語法規則的演示和說明,這種模式同樣也影響到實驗環節的設計。這種就事論事,形而上學的教學模式具有許多明顯的弊端,主要體現在以下幾方面:
(1) 不利于培養學生的學習興趣
許多從事程序設計語言教學的教師(包括筆者)都有這樣的感受:每講授一門新的程序設計語言課,初期學生都抱著積極,對獲取知識的極大熱情投入課程的學習,但隨著教學過程的深入,這種熱情往往不能持久。導致這種局面的原因固然有教師本身的教學方法和教學手段的缺陷,但根本原因還是教學內容的設置不科學。在單純以講授語法規則這種教學模式下,學生難以保持長久的學習興趣和動力。
(2) 不利于學生建立綜合化,系統化的知識體系
程序設計語言是表達設計者思想和計算機計算邏輯的符號系統,具有多層面、多視角的內涵。要把學生培養為具有高素質的程序設計人員,僅僅熟悉沒有精神的符號及符號規則遠遠不夠,這需要學生具備設計高質量程序的綜合化的知識體系,而當前的程序設計語言的教學現狀并不能滿足這種需求。
(3) 不利于培養學生解決實際問題的綜合能力及創新意識和思想
當前,素質教育成為各級教育系統,包括高等院校所關注的熱點,知識高等院校所關注的“素質”內涵不同。筆者認為高校大學畢業生應具備的素質包括:綜合化、系統化的專業知識體系;應有已有的知識體系解決實際問題的能力;具有創新的意識和思想??傮w而言,大部分教師對程序設計語言課程所采取的教學不利于這種素質的培養。
針對這種現狀,結合我國高等教育發展的現狀,本文提出程序設計語言的層次化教學目標的思想,并以面向對象程序語言為例,論述在層次化教學目標驅動下的課程設計。
2層次化的教學目標
各項教學活動有效展開的基本條件是合理的教學目標的確定,但單一的教學目標并不能適用當前中國復雜的高等教育現狀。社會經濟的快速發展產生了明顯的多類型、層次化的人才需求,這種趨勢在各類軟件公司里表現得尤其明顯。為了適用這種人才需求的轉變,高等教育領域在這些年相應地發生了巨大的變化,各種類型、各種不同層次的教育機構大量出現,改變了過去高等教育機構單純負責培養具有從事復雜腦力勞動的高級專業人才的狀況。這些變化最終體現為教師的工作,體現為教師針對不同的教學對象所制定的教學目標體系。
當前,由于社會信息化的發展,各類計算機類課程已經滲透到各個學科,例如筆者所在的蘇州大學,幾乎所有的院系都設置了信息技術類的有關課程,大約超過一半的院系設置了“計算機程序設計語言”的課程,因此“計算機語言設計課程”的教學質量是總體教學質量評估的重要組成部分。筆者多年來一直在蘇州大學承擔程序設計語言的課程,包括一類本科計算機專業基礎課程、二類本科專業基礎課和公共基礎課程。大量的教學實踐表明單一的教學目標不能適用多樣化的教學對象、多樣化的人才需求和程序設計語言知識邏輯在廣度和深度方面所具有的層次化的特點。下面將論述程序設計語言課程的層次化的教學目標體系及各層的具體內涵。
2.1低級目標
該目標要求掌握標準化的程序語言語法體系,以學生掌握基本的標準語法體系為基本要求,并能初步應用語言開發較小型的簡單應用程序,具備初步的程序設計能力。低級目標要使得學生對所學知識“知其然”,課程教學內容主要圍繞標準的語法規則,課堂和實驗環節所選定的程序實例大多圍繞著驗證和演示語法規則及語法規則之間的聯系進行設計。在以低級目標驅動的教學中,因為重在基本知識的傳授,因此核心教學內容的選擇是第一位的要素。當然每門程序設計語言課程都有其固有的核心內容,例如,在C++語言中,核心的教學內容為:面向對象的概念、繼承、多態、模板及異常等,即使如此,還需要根據教學對象,對教學內容和授課方式進行選擇和取舍。總的原則是圍繞重點概念和知識采取“精講多練”和“突出重點”的方式進行教學。
2.2中級目標
中級目標則要要求學生圍繞目標程序設計語言,具備系統化的程序設計方法和技巧,逐漸使學生“知其所以然”。該層目標不僅要讓學生掌握“語法”,還要讓學生掌握“語義”;不僅讓學生掌握語言本身,還要讓學生擴展思維,了解、理解更多的外延的知識;不僅要讓學生掌握基本的程序設計方法,要讓學生初步掌握系統化的程序設計方法和建立起程序質量的觀點。程序設計語言的外延知識涉及計算機專業許多重要的核心課程,包括編譯原理、算法分析與設計、計算機組成與結構、離散數學、數據結構和軟件工程等。當然,不可能指望通過一門課程的學習,使學生有效地、完整地掌握所有這些知識,只能使與實現中級目標有緊密聯系的知識能滲入到重點的知識講授和實驗的安排中。
2.3高級目標
不管是初級目標的“知其然”,還是中級目標的“知其所以然”,都是知識學習,而高級目標階段的重點是運用知識,體驗知識,要求學生具備利用目標程序設計語言解決一定復雜度和規模的實際問題的能力,建立抽象的程序設計思想、方法和質量的觀點。高級目標的教學內容的重點在如何在所講授的語言框架里解決一定規模的應用問題,并從具體的實現里提煉出抽象的設計思想,分析實現的質量,總結好的實現方法和設計思想。
確立了教學目標,下一步的焦點為圍繞實現具體的教學目標,制定各教學環節的具體的教學內容和教學手段,主要包括課堂教學環節和上機實踐環節。結合筆者的教學實踐,下一節將圍繞這方面的內容展開論述。
3層次化的目標引導的課程設計
C++語言因其強大的功能及廣泛的實用性而日益成為當前高校理工類專業程序設計的主流教學語言,因此本節將以C++為例,討論層次化教學目標思想如何在教學實踐中得到貫徹。C++程序設計語言的教學涉及課堂教學和實踐教學兩個環節,下面將就這兩方面展開論述。
3.1課堂教學
確定目標課程的教學內容是開展有效的課堂教學,取得既定的教學目標的前提和基本要求。針對本文所提出的層次化的教學目標體系的基本內涵,C++程序語言的課堂教學內容在深度和廣度上也應該展現出層次化,遞進性的特點。
在低級目標中,掌握本程序語言的基本語法體系是最重要的目標,在教學內容的設計上,應確定語言的最核心最重要的語法現象。過程化程序設計向對象化程序設計是C++語言的最重要的特征,因此“對象”和“類”,以及由此產生的“繼承”,“封裝”,“多態”和“異常” 成為最核心的教學內容。在教學時應集中注意力于這些類對象的關鍵個性技術,圍繞關鍵技術“精講多練”,使學生深刻理解面向對象C++的這些關鍵技術;要有重點,不能面面俱到,有所失,才能有所得。
低級目標是為了使學生掌握知識,使其“知其然”,那么中級目標則要逐漸使受教育者“知其所以然”,教學的重點從對語法的訓練轉向對語義的理解,包括靜態結構語義和程序執行語義。在C++的教學中,以C++對象模型作為教學內容的重點,通過從靜態的程序代碼結構和運行的程序狀態兩方面展開課堂教學,這樣在知識語言的“所以然”的基礎上,學生不僅知道什么是“多態”,并且知識“多態”是怎么實現的;什么是運行時類型檢查(RTTI),運行時類型檢查能提供什么程序設計策略等;許多的外延知識能沿課堂展開,例如編譯原理、算法分析與設計等。由Stanley B. Lippman所著的《Inside The C++ Object Model》為我們設計課程材料提供了方向性的指導。
低級目標和中級目標都是針對知識的學習,而高級目標則針對知識運用,提高運用知識進行設計的能力。此層次涉及知識的學習、理解和綜合運用,要在有限的時間內,實現教學目標,在課程教學內容的選取和設計及課時的安排上,具有一定的難度,對教者和學者都具有一定的挑戰性?!霸O計模式”可以成為本層次的基本或延展性的教學內容。設計模式雖然不與具體的設計語言有著必然的、密切的聯系,但事實上各種技術性、或純教學性的書籍中,都把面向對象語言作為實現各種設計思想的不二選擇。通過設計模式內容的講授,可以使得學生對面向對象的基礎知識有更深刻的理解,同時增強靈活運用所學知識的能力,體驗面向對象程序設計方法學所帶來的設計上的“美”,激發學生的創造力。
當然,上面針對課堂教學內容的論述僅僅進行了基本的界定和論述,需要通過下面幾方面來貫徹實施,以達到各個層次的教學目標:
(1) 通過教者的努力,設計出豐富的、具體的課程素材;
(2) 針對不同的教學內容,設計多樣化的教學手段和方法;
(3) 針對不同的教學內容布置合理的作業和考核方法。
3.2實踐教學
在程序設計語言的教學中,課堂教學和上機實踐教學是并重的環節,不可偏廢,一起決定著教學的質量和教學目標的取得。如何設計安排上機環節通過大量的教學實踐,已經總結出了大量的行之有效的方法。下文就實驗內容及實驗的組織形式進行一些必要的、有益的討論。
結合課堂內容,以往的實踐環節主要由學生編制一些小的程序,進行語法現象的演示及驗證。但筆者通過大量的教學實踐發現:這種普遍采用的,且行之有效的方法,對于學生鞏固知識,提高調試程序的能力和技巧具有顯著的效果。但隨著教學的深入,這種方法也顯示出種種的弊端,例如:學生專著于知識點,必然缺乏對知識的整體把握;學生容不易形成良好的編程習慣等。針對這種情況,筆者在實踐的環節中,增加“讀程序”的分量。教師提供一些高質量的程序范例讓學生進行閱讀、理解,并對范例的程序風格和設計方法進行總結比較,以提高學者的綜合能力,尤其是到了后期,所提供的范例更具有綜合性、全面性和示范性,能極大地提高學生掌握知識的深度和廣度,激發他們的學習熱情。
在實踐人員的組織形式上,一般在程序設計語言的教學中,都是學生獨立進行的。在教學實踐中,也可引進一些軟件開發中的方法,比如采用小組制的形式,根據實踐內容的不同,小組或大或小。即使是在低層目標為導向的教學中,也可采用小組的方法進行實踐環節的教學,不過此時小組人數不宜過多,最佳數目為二人。采用這樣的方法,有以下的益處:
(1) 便于學生進行交流,以達到取長補短的目的;
(2) 提高教學效率,以較少教學活動取得同樣甚至更好的效果;
(3) 培養團隊合作精神等。
在以中級和高級目標為導向的教學中,實踐環節應從語法演示和驗證為重點轉變為以知識的理解和知識的運用為重點,因此除了結合教學內容設計相應的實踐內容外,最顯著的特點是增加綜合性的項目開發環節,以達到知識的綜合掌握和運用。
當前以語法的演示和驗證目的實踐環節的設計具有大量的教學實踐可資借鑒和學習,但針對更高兩層教學目標的實踐環節則缺乏有效的素材和經驗可以利用,需要通過進一步的教學實踐活動加以積累和總結。當前的一些做法是借用開發一個具有一定規模的項目來彌補純語法的演示和驗證實踐方法的不足。
4結論
本文針對當前在程序設計語言的教學中存在的問題,提出了多層次教學目標的觀念,并介紹了各層次目標的具體內容和以此目標為導向的主要的教學環節的設計。各個層次的教學內容和教學方法手段并不是彼此割裂的,如何針對各種不同的教學對象進行合理的課程設計,以提高教學質量有待于進一步的大量的教學實踐活動。下一步最主要的工作總結探索各種教學資源以及相應的考核方法,尤其是用于中級目標和高級目標為導向的教學活動。
參考文獻:
[1] 吳乃陵. 面向對象C++程序設計教學改革[J]. 電氣電子教學學報,2003,25(2):9-11.
[2] 徐宏,聶影,黃征華,等. 計算機程序設計語言的教學探索[J]. 教學研究,2004(2):89-93.
[3] 沈軍. 程序設計語言類課程的教學思路研究[J]. 高等工程教育研究,2001(1):80-82.
[4] Stanley B. Lippman. Inside The C++ Object Model [M]. Addison-Wesley Publisher, 1996.
[5] Erich Gamma, Richard Helm, Ralph Johnson ,et al. Design Pattern: Elements of Reusable Object Oriented Software [M]. Addison-Wesley Publisher,1995.
Research on Teaching of Programming Language
CHEN Dong-huo,YAO Wang-shu
(School of Computer Science and Technology, Soochow University, Suzhou 215006, China )
計算機程序設計范文5
【關鍵詞】轉換優化 計算機 程序設計
通常在設計程序時,要考慮時間和空間的平衡以追求合理的時間和空間。通過合理的數據存儲以及操作,空間復雜度可以有效地降低時間復雜度。單純的追求時間或者空間之一,則有可能造成無法接受的錯誤。例如如果時間復雜度過于高,則程序的時間響應速度會非常慢,當輸入問題的數據量達到一定規模,程序可能會無限長的運行下去。同樣,由于計算機的內存空間是有限的,當空間要求過大時,程序可能會用光所有的內存空間,這樣程序會因為空間不足無法繼續運行。一下我們以一個簡單的實際問題來表述時間和空間的轉化, 以及平衡的復雜度安排的重要性。
假設我們有如下問題:輸入n個整數(n>1),返回這n個數據是否有重復。
1 首先我們考慮最簡單不用臨時存儲的情況,程序數據如下:
對輸入的每一個數據依次執行:
查看每一個其他的數字,對當前數據進行比較:
如果相同,則返回程序結果有重復。
如果不同,則對下一個數字進行分析。
我們對如上的設計進行分析,在最快的情況,前兩個數就有重復,那么一次比較就知道有重復。在最壞的情況下,?即n個數字沒有重復,對每一個數字,我們都要進行n(實際上是n-1次,我們用n來近似)次比較。所以當不用臨時存儲總的運算量是n*n次比較。在實際問題中,由于我們不知道問題的情況,無法預測有沒有重復或者在哪里重復,所以我們要一直用最壞的情況進行分析。在此問題中時間復雜度是n*n,沒有用到輔助空間。
2 程序優化
此程序可以進行優化,對每個數據和其他數據比較時,不用和該數之前的數據比較,因為該次比較已經被執行過了。比如:對1,2,3,這個問題進行比較,首先我們比較1與2,1與3,然后我們開始對第二個數分析,這時不用繼續比較2與1,因為1與2已經執行過,只需要比較2與3程序修改
所以修改程序如下:
對輸入的每一個數據依次執行:
查看每一個在此數據之后的數字,對當前數據進行比較:
如果相同,則返回程序結果有重復。
如果不同,則對下一個數字進行分析。
我們對如上的設計進行分析,在最壞的情況下,即n個數字沒有重復,對第一個數字,我們要進行n(實際上是n-1次,我們用n來近似)次比較,第二個數字n-1次比較,第三個數字n-2次比較……所以當不用臨時存儲總的運算量是n(n+1)/2次比較,沒有用到輔助空間。
最后我們用一個帶有臨時存儲空間的算法:我們把每一個數據存到臨時空間里(注:此臨時空間能提供非??斓拇鎯筒榭床僮?,忽略存儲和查看的操作時間),查看當前數據是否已經在存儲空間內,如果有,則返回是,如果沒有,則繼續下一個數據:
3 創建一個臨時的空存儲空間
對輸入的每一個數據依次執行:
查看存儲空間是否有這個數據
如果有,則返回程序結果有重復。
如果沒有,則對下一個數字進行分析,并且將當前數據儲存到存儲空間。
我們對如上的設計進行分析,在最壞的情況下,即n個數字沒有重復,對每一個數字,我們都要進行1次查看,所以當使用臨時存儲總的運算量是n,額外的輔助空間大小也為n。
到此,我們的程序設計完畢,為什么利用輔助存儲降低時間復雜度重要呢?我們進行如下分析:
假設有計算機A,每微秒執行一次指令,那么此計算機每秒鐘可以執行106次指令。假設程序的輸入為10個數,那么三個程序所需要的時間依次為T1=10*10/106=0.0001秒,T2=(10*11/2)/106=0.000055秒,T3=10/106=0.00001。在輸入規模不大時候,相差不大。如果輸入為10000個數,三個程序所需要的時間為T1=104*104/106=100秒,T2=(10000*10001/2)/106=0.000055=50.005秒,而T3=10000/106=0.01秒。可以計算,當輸入為一百萬個數字時,第一個程序需要運行27小時,而第三個程序只需要一秒鐘!
我們換另外一種分析方法,如果我們有另外一條比較快的電腦B,每秒鐘可以進行109運算,則B電腦比A電腦快1000倍!我們用慢電腦A處理有額外空間的程序,快電腦B處理沒有額外存儲的第一個程序,那么當輸入為10萬個整數時,A電腦需要0.1秒處理該問題,B電腦需要10秒處理該問題!A電腦在本身速度比B小1000倍的時候,計算速度反而可以可以比B快100倍??梢娨粋€優化的算法可以迅速的提高電腦響應速度,而不需要花費太多成本在提高電腦本身的速率上面。
可以看出,當問題規模變大時,額外的輔助存儲可以大規模的降低時間復雜度。有些讀者可能會質疑額外的存儲可能會很大,但是以這個問題為例,最差的情況下需要10000個整數的存儲空間。一個整數占4B,10000個整數只需要40KB的存儲空間,小于一張小圖片的大小,幾乎相當于一個純文本文件的大小。由此可見適當的利用空間存儲可以有效的減少額外存儲。
在實際應用中,遇到的問題會比本例子更復雜,而且數據規模會更大。但是,合理的利用空間和時間,會有效地提高程序效率,因此我們在設計程序時,要合理的利用空間來降低時間復雜度。
計算機程序設計范文6
關鍵詞:計算機程序設計;教學評價平臺;程序自動化批改
文章編號:1672-5913(2013)18-0091-04
中圖分類號:G642
0 引言
計算機程序設計課程是高等院校計算機專業的必修課程,主要講授C、C++、Java等程序設計語言。作為實踐性要求很高的一類課程,計算機程序設計課程教學評價的核心內容是對學生實際編程能力的評價。各類紙質考試成績并不能全面反映教學效果,而且要想從中獲得有用的信息用于相關教學評價工作,必然會花費大量的時間和精力。隨著教學改革的不斷深入,目前逐漸興起利用計算機網絡平臺開展大量的考試工作,給課程教學評價工作帶來新的思路和方法。但是由于缺乏對學生實際編程能力的自動化評價方法,已有的網絡考試平臺在對學生編寫的計算機程序進行評價時,仍是基于人工方式,并未從真正意義上減少評價工作所花費的時間和精力,這使得運用已有的網絡考試平臺進行計算機程序設計課程教學評價時,具有一定的局限性。如何實現對學生編程能力的自動化評價方法,搭建基于網絡考試的計算機程序設計課程自動化教學評價平臺,強化對學生實際編程能力的考察,是我們改革探索的焦點和核心。
1 指導思想
1.1 強化全過程考核
傳統的計算機程序設計課程實踐教學環節,對學生的學習過程管理不夠充分,往往只考核最終的實驗報告和程序代碼,對程序的實現過程缺乏評價管理。這種終結式評價存在很多弊端。對于學生來說,這種評價方式容易導致學生只重視最終程序的實現,而忽視對編程過程的經驗積累,學生難以及時發現編程過程中的問題所在,學習缺少主動性。同時,終結式評價也容易引起抄襲現象。對于教師來說,這種評價方式使教師在教學過程中難以準確把握學生對計算機程序設計的掌握程度及教學中存在的問題,也無法根據學生的學習狀態及時有效地調整教學策略。
1967年美國芝加哥大學教授Michael Scriven提出形成性評價(Formative Assessment),強調教師在教學過程中利用多種機會和手段評估學生的學習狀況,以獲得有益的教學信息指導教學,促進教學健康發展,最終促進學生學習進步。與終結式評價不同,形成性評價關注學生的學習過程,給予學生獲得多次評價的機會,有助于改善學生的焦慮情緒,增強其學習自信心,激發其學習積極性并保持學習的持久性。形成性評價既是教師獲取教學反饋信息、改進教學管理、保證教學質量的重要依據,又是學生調整學習策略、改進學習方法、提高學習效率的有效手段。
借鑒形成性評價方法,在計算機程序設計課程教學評價中,強化全過程考核。從課程教學準備階段,到課程教學執行階段,管理學生作業、項目實踐過程等關鍵教學活動,實現教師與學生跨時間地點的交流,記錄教師在教學和交流活動中的情況,為教學評價提供參考依據。將學生的成績評定滲透到各個教學環節和教學活動中,對學生各個學習環節的完成程度和情況進行評價,以客觀評價學生對知識的掌握和應用情況,促使學生真正重視平常的學習,使教學與評價融為一體,做到在評價中學習,在學習中評價。
1.2 評價指標多元化
傳統的計算機程序設計課程教學評價以教師對學生的期末試卷和實驗程序評價為主,多是對學生理論知識掌握程度和程序實現功能完整性方面的考核,評價指標單一,主觀性大,不足以全面評價學生的學習主動性、學習效果和實際編程能力??陀^全面的綜合評價可以激發學生的學習積極性,增強學生編程動手實踐的主動性,從而保證教學質量的提高。同時,自動化的評價手段將教師從繁瑣的評價事務中解脫出來,從而將更多的精力投入充實教學內容和設計任務中,更好地引導學生學習。
2 教學評價平臺設計
計算機程序設計課程自動化教學評價平臺的總體目標是構建基于B/S架構的計算機程序設計實踐平臺,開展學生編程能力綜合評價體系的研究和探討。
2.1 系統功能模塊
計算機程序設計課程自動化教學評價平臺功能設計見表1。教學評價平臺的主要功能模塊包括:基礎數據管理、課程資源展示與學習、實踐準備、實踐執行、綜合評價、實踐情況統計查詢和師生互動。
功能設計滿足如下要求:
(1)將計算機程序設計課程的習題、課件、相關技術資料等資源網絡化,面向學生開放,方便學生在線學習。
(2)平臺以自動化評價為主、人工評價為輔的方式評價學生所完成的程序,使學生能夠自主進行編程練習。
(3)平臺隨時記錄學生的學習過程(在線學習時間、編寫程序耗時、錯誤程序提交次數、程序錯誤原因、互動情況等),同時根據學生學習狀況,為學生提供后續學習建議等。
2.2 系統流程
計算機程序設計課程自動化教學評價平臺基于B/S架構,通過瀏覽器向學生提供自主學習、資源瀏覽、程序自動評價等功能,向教師提供資源管理以及學生上機實踐的全程掌控服務。系統總體流程如圖1所示。
程序自動批改是系統的核心功能。本文借鑒軟件黑盒測試方法,通過編譯、運行、運行結果比對等步驟實現程序的自動批改,程序自動批改流程如圖2所示。其中,對于不同的程序語言選用不同的編譯程序進行編譯操作,例如,Java語言選用iavac.exe,C/C++語言可選用VC的cl.exe。當程序不能成功編譯,或者程序不能運行,或者程序的運行結果與測試用例的預期結果不符時,均判斷為錯誤程序,并輸出相應的錯誤原因。
2.3 教學評價指標
為了盡可能全面客觀地評價學生的編程能力和學習效果,筆者從學習態度、編程正確率、編程思想運用程度等方面制訂了相應指標,具體內容見表2。其中學習態度方面包括出勤率、網絡資源自主學習情況、師生互動情況、編程實踐完成情況等指標,反映學生的學習積極性;編程正確率方面包括編寫程序耗時、錯誤程序提交次數、常見錯誤原因等指標,反映學生能否在較短時間里編寫出符合要求的程序,相關指標主要由程序自動批改功能完成;編程思想運用程度則主要反映程序的質量,程序是否具有模塊化、可擴展、可移植等優點,主要由人工評價的方式進行,包括學生自我評價、學生互評、教師評價等,通過人工閱讀代碼的方式分析總結出程序代碼的優點。對于上述3方面的指標,表2給出了相應的權重,以計算學生的最終成績。當然,指標權重的確立可依據自身教學特點和教學大綱的具體要求,在執行時通過系統進行動態調整。
2.4 系統實現
計算機程序設計課程自動化教學評價平臺采用Java EE技術開發,開發工具使用Eclipse 3.4,應用服務器使用Tomcat 7.0,數據庫服務器使用SQL Server 2005。
3 實施效果
計算機程序設計課程自動化教學評價平臺在重慶大學計算機學院的面向對象程序設計與C++課程中進行試運行。學生可以通過網絡利用本系統進行自主學習和編程實踐練習。系統自動批改學生程序,全程記錄學生學習和編程的實踐情況。如果在學習中遇到疑難問題,可以利用網上留言、主題討論、Q&A等方式進行師生在線交流。通過教學評價平臺的使用,讓學生的編程練習不再局限于實驗課時間,學生在課外時間也能自由地進行編程練習并及時獲得教學評價平臺對程序的批改結果。同時,通過將教學評價平臺統計出的學生學習時長、提問次數、實踐項目完成個數等數據作為課程成績的組成部分,促使學生重視編程實踐練習,學生平均在線編程練習時間得到了提高。目前,本系統使用情況正常,獲得學生好評。
4 結語
計算機程序設計是計算機本科專業的重要教學內容之一。為了更好地強化學生的實際編程能力,我們在計算機程序設計課程中需要不斷改進教學方式,完善評價方法。教學實踐表明,借助程序自動批改技術和網絡考試平臺,為進一步完善計算機程序設計課程教學評價提供了一種有效的解決思路,能夠充分調動學生自主學習的積極性,強化培養學生實際編程能力。在后續研究中,還需通過更多學生的使用驗證,對評價內容、評價方式、評價主體進行擴展,進一步科學化完善評價指標體系,并隨著技術發展,繼續開展平臺建設,使其功能日趨完善。
參考文獻:
[1]周肆清,楊莉軍,李利明,“數據庫應用基礎”開放式實驗平臺與實驗過程綜合自動評價系統研究[J],計算機教育,2011(22):104-108