伍 星 熊 壯 曾 一
摘要:本文結合非計算機專業程序設計課程教學實踐,討論了現階段非計算機專業中影響培養學生創新能力的制約因素,提出了從教學內容、課堂教學、實驗教學和考核方式四個環節進行教學改革,幫助學生逐步形成自覺創新的習慣,進而具有創新意識、創新精神與創新能力。
關鍵詞:程序設計;創新;能力培養
中圖分類號:G642 文獻標識碼:B
創新是人的基本特征,人類就是在不斷地“首創前所未有”的過程中發展起來的,積極主動的創新意識、創新精神和創新能力需要后天的教育培養和實踐鍛煉,實施素質教育要以“培養學生的創新精神和實踐能力為重點”。作為現代信息技術主體的計算機的產生,本身就是創新的結果。計算機軟硬件的發展日新月異,使得計算機教學沒有固定的教學內容和教學模式,而程序設計作為一門開闊學生視野、提高數據訪問能力的課程,要求學生必須具有極強的動手能力,因此面向非計算機專業的程序設計課程可以作為培養大學生創新能力的工具,幫助學生在學習的過程中獨立提出新問題、新思路、新方法、新見解。
1學生創新能力培養的制約因素
1.1教學內容滯后
目前存在多種程序設計語言,并且不斷有新的程序設計語言被設計出來,集成化的快速開發工具也層出不窮,而高校中非計算機專業主要采用C語言作為程序設計課程的學習語言。對于一些工科專業(比如自動化、通信),C語言的學習存在必要性,但對大多數無需底層程序設計的專業而言,C語言的教學只是進行程序設計理論的學習,而學生學習完成后,離解決實際問題還有較大的差距,教學過程過分集中于具體語法的掌握,讓學生覺得非常枯燥,難以吸引學生的學習興趣。計算機基礎課程教學中的一些教師忽視了對新的程序設計語言、開發環境和編程思想的了解和掌握,導致教學內容多年不變。教師對教學內容本身不進行創新,何來引導學生進行創新?
1.2教學方式老套
目前,程序設計課程一般采用課堂教學和實驗上機兩個教學環節,課堂教學以教師講授知識點為主,而實驗課程是學生針對一些知識點進行上機驗證,這種教學方式最后一般采用理論考試成績作為最重要的考核方式,這種教學方式對動手能力強,具有創新精神,不肯死記硬背的學生是不公平的,不利于培養學生的創新精神。
1.3理論與實踐脫節
高校程序設計課程重理論輕實踐,即使安排了大量的實驗課程,實驗課程的內容也脫離現實。學生可以學好理論課,并具有一定的編寫程序的能力,但是一遇到編寫程序解決實際問題時就無從下手。為了改善這種局面,我們不僅要增加實驗課程的學時,還要對現有的實驗教學內容進行改革,從現實生活中抽取實例,讓學生進行練習,在實踐中培養學生的創新能力。
2培養創新能力的教學改革
針對上述制約因素,我們在實際教學過程中進行了四個方面的改革,以培養學生的創新能力。
2.1教學內容的改革
(1) 程序設計語言的選擇
目前,我校理工專業學生均以C語言作為程序設計教學語言,雖然C語言本身具有很多的優點,但作為非計算機專業學生(如我校的管理、數學、物理、土木、建筑、化工專業的學生)的程序設計語言存在兩點不足:(1)C語言開發的程序運行在DOS環境,運行結果界面單一,教學過分集中于具體語法的掌握,讓學生覺得非常枯燥,難以吸引學生的學習興趣;(2)非計算機專業學生學習程序設計語言是為了能夠編寫快速處理信息并將結果進行可視化展現,這些需要編寫的程序都是Windows環境下的程序,而C語言的學習雖然掌握了程序設計的基本理論,但對面向實際應用的程序編寫還有較大的差距,因此我們選擇C#最為程序設計課程的教學語言。C#是Microsoft開發的最新的程序設計語言,支持面向對象的程序設計方法,有完善的集成開發環境,可以用來開發各種類型(窗體程序、Web程序、數據庫程序、網絡程序)、不同規模和復雜程度的應用程序。選擇C#語言,學生不僅可以學習程序設計的理論,還可以快速開發面向應用的Windows程序,開發出有意義、容易吸引學生的應用程序,讓學生覺得這是一門可以解決實際問題的課程,激發學生學習熱情。
(2) 教學內容的分層
教學內容分為兩個層次:基礎知識和核心實例。基礎知識的內容要求簡潔,便于學生快速掌握,比如窗體中直線、圓的繪制,讓學生實現核心實例時覺得基礎知識點比較熟悉,以降低學生對核心實例陌生程度。核心實例程序是面向實際的應用程序,教師對任務進行分解,講解如何逐步完成整個任務,讓學生體會解決實際問題的具體過程。比如“五子棋”中棋譜和棋子的繪制,不僅需要分別使用繪制直線和繪制的基本知識,還需要窗體發生改變后重繪棋譜、通過鼠標單擊的位置決定棋子繪制位置的知識。由于核心實例程序比較復雜,通過一次教學使學生掌握存在困難,因此教師需要制作詳細的課件,將核心實例分解為子任務,指導學生一步步實現子任務的功能。
2.2教學方式的改革
教學實踐中引入“任務驅動”模式,“任務驅動”是一種建立在建構主義教學理論基礎上的教學法,讓學生在一個典型任務的驅動下展開學習,引導學生由簡到繁、由易到難、循序漸進地完成一系列任務,將教材中的零散實例匯聚為核心實例。比如將簡單控件(按鈕、文本框、標簽框、單選按鈕等)的使用匯聚到基于窗體的計算器的設計。教師對核心實例的子任務分解,對功能實現進行詳細的講解,并實際使用Visual Studio2005進行代碼實現。通過核心實例的教學幫助學生提高分析問題、解決問題的能力。
核心實例的選擇必須從對學生的吸引力和實現難度兩個角度考慮。源于學生現實生活中的核心實例能夠吸引學生興趣,比如簡單游戲、個人信息管理、網絡訪問等方面的小應用,而且也可以讓學生看到自己學習的技能能干有意義的事情。吸引力強的核心實例能激發學生的挑戰困難的決心和斗志,讓學生真正做到主動學習。核心實例的難度是一個必須考慮現實的問題,難度過高會打擊學習積極性,而難度過低對學生動手能力的提高意義不大。核心實例實現難度的設置分為基本要求和高級要求兩個層次,對于編程能力不強的學生,要求實現基本要求,而對具有較強編程能力的學生,要求掌握高級要求,并進行相應的獎勵。例如教學過程開始時,我們構建了一個大型的任務:聯機對戰五子棋。這樣的任務對計算機專業學生難度較低,而對非計算機專業的學生還是有一定挑戰性的,并且能夠吸引教學班中大多數學生的興趣。完成該任務涉及數組的使用、程序的控制結構、窗體和控件的使用、圖形繪制、網絡訪問等多個方面的子任務,而每個子任務又是一個小的核心實例,實現這些小的核心實例都需要學習相應章節的知識并進行綜合應用。
2.3實驗教學的改革
課堂教學中,教師把各個知識點串起來,并通過核心實例的講解提高學生解決問題的能力,但是程序編寫能力的培養不可能只靠課堂教學實現,還必須大力加強動手實踐環節。相對于課堂教學,實驗教學環節顯得更為重要,將實驗分為基礎知識點練習和綜合實例練習,但基礎知識點的練習是為綜合實例的實現進行知識儲備。
實驗內容應該面向實際應用,分為個人實驗和小組實驗兩類。個人實驗鍛煉每個學生獨立解決問題的能力,實驗題目難度適中。小組實驗鍛煉學生的寫作能力,實驗內容由學生自己設計,但項目實現的功能由教師指定,難度由教師控制,應該有較大的難度,需要學生超越書本,查閱新知識解決問題。小組實驗采用競賽方式,以完成時間和項目質量作為評價指標,項目完成后,每個組對自己的項目進行展示和說明,并回答其他同學的提問。
2.4考核方式的改革
為培養學生的創新能力,我們拋棄傳統的理論考試模式,采用上機直接編程的考核方法。考題是一個小規模的應用程序,學生必須在指定的時間內獨立完成,教師根據實現的功能和完成的質量進行評分。考慮到非計算機專業的學生不可能花大量的時間進行程序設計,如果直接采用上機編程考試,會給學生帶來巨大的壓力,因此我們在考試之前給學生出20道較高難度的題目,比如冒泡排序中動態交換過程的可視化展示、能夠實現加、減、乘、除功能的計算器實現、用戶注冊器的實現等。每道題目列出應掌握的知識點和正確答案(完成項目),這些知識點將會出現在考試項目中。這些程序復雜,篇幅巨大,機械記憶行不通,因此考核可以全面檢測學生的動手能力,促使學生平時就要多上機、多實踐,把創新能力的提高融入日常學習中。
3結束語
C#作為程序教學語言,給學生提供了快速編寫Windows程序、解決實際問題的工具;核心實例讓學生理解解決實際問題的過程和編程方法;實驗環節讓學生自由發揮,挖掘潛在的創造因子;考核方式讓動手能力強、主動學習、勇于創新的學生獲得積極地肯定,激勵學生的創新欲望。通過這幾方面的改革,程序設計課程可以作為培養非計算機專業學生創新能力的工具,讓學生的創新思維在學習過程中獲得全面提升,實現學生素質的提高。
參考文獻:
[1] 趙利敏. 淺談高校計算機教學中學生創新能力的培養[J]. 教育與職業,2007(3):110-111.
[2] 孟淑琴,劉芬. 基于創新能力培養的計算機基礎教學[J]. 中國職業技術教育,2006(30):48-49.
[3] 李芳,崔尚森,徐麗. 計算機教育中學生創新能力培養的探討[J]. 教育與職業,2007(17):121-122.
[4] 趙飛,荊光輝,張潤澤. 如何培養大學新生計算機語言編程能力[J]. 計算機教育,2007(5):13-15.