時間:2022-05-06 03:23:42
導言:作為寫作愛好者,不可錯過為您精心挑選的1篇c語言課程設計論文,它們將為您的寫作提供全新的視角,我們衷心期待您的閱讀,并希望這些內容能為您提供靈感和參考。
[摘要]本文通過對C語言課程設計中的教學方法、考核手段的介紹,探討了在實踐中逐步提高學生軟件開發能力的方法。
[關鍵詞]課程設計 教學方法 考核手段 能力培養
一、引言
近年來,各高校越來越重視對學生實踐能力的培養,各類課程設計在教學中所占的比重明顯增加。對于計算機系的學生,尤其是以培養應用型人才為目標的學生,開設各類課程設計課就顯得尤為重要。
本文以C語言課程設計為例,介紹了在實際教學中所采用的教學計劃、教學方法以及考核手段,通過對各個教學環節的分析和總結,探討了如何在實踐中培養學生的軟件開發能力的方法。
二、C語言課程設計教學計劃
C語言技術是計算機最重要的應用領域之一,也是發展較快的領域之一。其應用早已滲透到各個行業,C語言系統的開發、管理與維護是計算機專業人員必須要掌握的基本技能。因此在完成了理論教學之后,后續的C語言課程設計的安排是很關鍵的。
我們根據學生的實際情況,制定了相應的教學計劃。要求選修C語言課程設計的同學必須先修C語言原理,具有程序設計的基礎。課程的主要內容包括C語言設計概述、需求分析、概念結構設計、邏輯結構設計、C語言的物理設計、C語言的實施和C語言系統的管理維護。本課程以實踐為主,教學目標是使學生能獨立設計C語言應用系統,掌握C語言設計的過程和方法。根據本課程的特點,充分重視上機實踐的環節,課程在機房上,有利于學生學習。
本課程安排在一個學期內,教學周數為18周,每周6學時。每周具體內容安排如表1。
三、各階段教學方法
由于各階段的任務不同,要求也不相同,因此分階段采用不同的教學方法,以一個學生熟悉的、容易理解的C語言項目開發過程為主線,貫穿整個教學過程,將相對枯燥的理論知識與實踐聯系起來。
題目選取階段是C語言課程設計的初始階段,也是決定能否達到教學目標的關鍵性階段。如果題目選取得太大、太難,或者是學生不熟悉、很難接觸到的領域,做起來太困難,會影響學生的積極性,勢必會影響到后期的學習效果。而題目太簡單,又達不到教學標準。因此在本階段,采取教師提供參考題目,學生自主選擇的方法。教師根據開題報告整理出小組題目以及成員,并簡要分析選題的難易程度。在第二周的開題討論上讓每小組派代表進行發言,大家分析討論題目的可行性,對于選題不合理的,重新修改。這階段可以充分調動學生的積極性,活躍大家的思維,實際教學效果良好,很多學生的選題都具有現實應用意義。
題目確定完之后,就要進行需求分析。很多學生認識不到這部分的重要性,選定題目后就想開始代碼的編寫工作,往往做了一半就進行不下去。因此教師在課堂上要通過實例充分講解需求的分析重要性,講解具體的需求分析方法,使學生理解需求分析是整個設計過程的基礎,同時掌握基本的需求分析技能。在需求分析階段,要盡可能收集課題的完備需求,可以利用不同小組互相模擬實際用戶的形式,增加學生的交流能力和開發興趣。在需求分析階段,要完成系統的數據流圖和數據字典。高質量的完成需求分析工作可以鞏固學生在理論課上學到的數據流圖、數據字典等基礎理論知識,并提高學生的歸納總結能力。
確定用戶需求后,進入系統設計階段。系統設計階段要完成應用系統的設計和C語言設計。應用系統的設計要完成課題應用軟件的架構設計和具體功能模塊的劃分。C語言設計要結合應用系統的設計,逐步完成C語言的概念結構設計、邏輯結構設計和物理設計。概念結構設計階段是整個C語言設計的關鍵,該階段通過對用戶需求進行綜合、歸納與抽象,形成一個獨立于具體DBMS的概念模型;邏輯結構設計階段要將概念結構轉換為某個DBMS所支持的數據模型,并對其進行優化;物理設計階段要為邏輯數據模型選取一個最適合應用環境的物理結構。C語言設計不但可以加深學生對ER圖等理論知識的理解,還有助于提高學生的軟件系統設計能力。
系統實現階段,教師對采用的教學案例代碼進行演示,針對不同的程序設計語言對C語言的連接部分進行講解,并給出相應的示例代碼。此階段主要是學生動手編寫代碼,完成系統功能。要指導學生編寫高質量的代碼,包括變量的命名方法、代碼的書寫規則、代碼的注釋規則等。這階段教師可采用啟發式教學,對于學生在設計中遇到的問題,要引導他們學會查找資料,自己思考解決。
系統測試階段,包括單元測試和集成測試。要指導學生進行測試用例的編寫,掌握正確的測試方法。對于C語言系統,還要進行C語言的性能測試和容量測試。通過系統測試,使學生掌握正確的測試方法,有效提高軟件的質量。
四、考核方式
教師在每個階段都會進行檢查,對完成情況進行記錄。開題階段,要求學生以小組為單位,完成開題報告,并確定選題是否合理。在需求分析階段,要求每組上交需求分析。在接下來的系統設計、實現及測試階段,要求學生詳細記錄設計思想、設計方法、實現過程及測試結果,整理出完整的課程設計報告書。最后由教師綜合考慮以下幾方面的因素,給出總評成績,包括文檔的完成情況、開發環境的選取、系統功能實現情況、用戶界面的設計以及現場演示答辯的效果。通過以上方式,較綜合、客觀地評價了學生的文字及語言的表達能力以及系統設計、程序開發的能力。
五、結束語
教學實踐表明,這種形式的C語言課程設計,可以使學生有效地鞏固對基礎理論知識的掌握,可以使學生系統地了解軟件開發流程,提高學生的軟件工程化開發能力,增強學生的就業競爭力,并且可以建立學生的團隊意識,提高學生的交流和協作能力。
回想學習C語言的過程中,既有快樂又有煩惱。
從領到書的那一刻,我就很郁悶,《C語言程序設計》到底事學什么的,有什么用。剛開始上課時,還在迷茫這門課程是用來做什么的。不過,這些感受都是在對這門課程不了解的情況下產生的。后來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產生了興趣。尤其是學到語句和函數時,上機操作程序,經過編譯,調試和運行后,出現界面,當時覺得很好奇,想真正的學好這門課程。通過半個學期的學習,我掌握了基本知識。
下學期開始時,被通知要進行三周的課程設計。當時有點懵,感覺學的東西很少,很零散,不知該怎么練到一起,就要課程設計,是不是太難為我們了。
第一天基本上都是在看書,把基本知識再熟悉一邊。到了下午的時候,老師發過來三道練習題,從這幾道練習題上我得到了不少啟發,然后我們組把整個程序的思路理清了,開始著手寫程序。
第一周結束的時候,我感覺自己收獲挺大的,從一開始的迷茫,不知道從何下手到把程序中的幾個模塊編寫出來,心里挺開心的。但是,到了第二周,我們由不得不再次陷入困境。在整個程序的編寫過程中。最難的就是修改和刪除這兩個模塊,這也是我們第二周要解決的重點問題。
開始編寫修改和刪除時,很頭疼,去向其他人尋求幫助,在別人的幫助和提示下,我編完了修改程序,但編譯時老出錯,修改后的內容將文本內的信息全部覆蓋了。困難之時,我們組的其他人,幫助了我,完成了修改和刪除。這樣的話,整個程序基本上全部完成了,就剩下完善工作了。我們組寫了兩個程序,最后,兩個程序相互組合,互補,大功告成
雖然設計時完成了,但是我覺得其中還是由一些不足之處:
1.警告句。程序中缺少一些警告句,例如:“是否真的刪除(y/n)?”。
2.重名的情況。由于考慮的不周全,沒有設計遇到重名的情況該怎么處理。
3.選擇單一。我們設計的程序中,只設計了按名字選擇,進行操作,忽略了重名的情況。
整個程序完成了,還有很多不完善的地方,希望自己以后辦事的時候要認真,仔細,考慮周全。
短短的三周課程設計結束了,但是這段時間里,我又學到了更多C知識,如:對象數組,string類,文件流等,同時我也被提醒以后辦事的時候要認真,仔細,考慮周全。,也看到了團隊精神和互幫互助的重要性。這一點會讓我終生受益。通過三周的課程設計,我覺得自己肚子里的墨水多了,收獲也挺大的,這三周過的挺充實!
1合理組織教學內容
我校C語言教研組在指定教學計劃、教學大綱時,明確了教學目標是“通過講授C語言的特點以及各種語句和基本函數的使用,使學生學會基本的C語言程序的編寫、調試等操作,領會結構化程序設計的內涵,訓練程序設計的基本思想和方法,為今后開發軟件打下基礎,為學習后續課程(如數據結構)作好準備”。不僅要求學生學習理論,還必須能較熟練地上機操作,有較強的動手能力。作為工科專業接觸的第一門工具語言,最能反映理論與實踐的相結合。本課程所選用的教材在內容組織上,雖然依邏輯思維方式進行了歸類,但難點還是較為集中,跨度大;概念講得多,分析少;語言深硬,不夠形象,較難理解。針對該問題,C語言教研組對教學內容重新進行了規劃。第一,適當壓縮部分難度較大,但實用性不強的內容,如:文件指針。第二,擴充部分難度較大且十分重要的內容,如:傳值與傳地址的對比。第三,充分利用互聯網資源,總結歸類相關知識點,如:可以將運算符優先級總結為朗朗上口的七字口訣:單算關邏條賦逗。第四、將全國計算機二級C語言等級考試真題融入理論和實踐教學中。采用上述手段之后,明顯發現學生對學好C語言的信心增加許多,學習積極性也就隨之得到了提高。
2靈活使用教學方法
由于C語言程序設計是學生接觸到的第一門語言工具類課程,難度大、學生不易接受,為此我校C語言全體任課教師進行集體備課,積極與學生保持互動溝通,隨時根據大多數學生實際接受情況適當調整教學計劃,靈活使用教學方法,如下所示:在理論課上,采取的是激發學生學習動機的教學方法。在課堂上,要充分認識到學生是主題,教師主要是起引導作用,引導學生自發學習、自主思考。因此,需要改變以往“填鴨式”教學方法,充分調動學生學習的積極性。為此,在每次上課之前,都需要做好充分的準備,精心的設計好教學案例,這些案例最好能夠“看得見,摸得著,和生活密切相關”。例如,講到子函數時,在做課堂引入的時候,可以先給學生們演示一個五子棋的程序,讓學生直觀的了解到每個C語言程序都是由一個main函數和若干個子函數構成。在上機課上,采取的是分組討論式的教學方法,將所有同學分成若干個小組,沒個小組設置一個組長,所安排的每個組長都必須具備兩個條件:掌握VC6.“0斷點”調試方法,理論知識扎實。我認為上機課主要是鍛煉代碼的編寫、調試能力,所以應該采取討論為主、講授為輔的方式。
3充分利用教學手段
在教學過程中,運用多媒體技術輔助教學,有利于激發學生的學習興趣,能發展學生的主體能力;同時由于多媒體信息量大,也能夠優化教學過程。第一、依托利用Claroline開源平臺建立了C語言網絡課程,詳見南京理工大學泰州科技學院網絡教學平臺,設置有課程簡介、課程資料、課程計劃、學習討論等模塊,為學生提供了“第二課堂”,可以很好的彌補課堂教學的不足。第二,利用QQ、微信等即時通訊軟件進行多渠道答疑,增強師生之前的溝通與交流。第三,開設網絡教學博客,對日常學生反饋較多的問題予以解答。
4結束語
作為一名C語言課程的教師,對教學模式的探索與研究是永無止境的,在今后的教學過程中,一定要繼續關注“C語言課程設計”的基本概念和程序設計方法,讓學生掌握分析問題、解決問題的能力,還需要通過加強上機環節來增強學生的動手能力。只有不斷的探索行之有效的教學方法,吸取前人的教學經驗與教訓,才能在今后的教學工作中不斷突破自我,邁入新的臺階。
作者:譚立興 單位:南京理工大學泰州科技學院計算機科學與技術系
1課程設計平臺的改革
為了激發學生的興趣,可以采用Funcode平臺進行課程設計。Funcode平臺是一款基于游戲設計和動畫界面的C\C++\Java綜合實驗教學平臺,該平臺以游戲設計為“噱頭”,吸引學生的學習興趣,雖然如此,該平臺通過精選大量的游戲案例,還是很好地將程序設計知識點和游戲設計緊密地結合起來,始終緊扣C語言知識點,為C語言課程設計教學提供了一個很好的工具。
1.1圖形方式的游戲界面編輯Funcode平臺采用圖形界面方式的游戲編輯環境,直觀、美觀、簡潔易用。圖1所示為正在設計中的游戲,左側矩形框中為最終運行時可見的游戲界面,可以從右側中的“魚”(Funcode中稱為“精靈”,任何類似的圖片都是精靈,不同的精靈以精靈名區分)中任意拖拽一條“魚”到左側矩形框中,即可在游戲界面中增加一條魚。
1.2提供功能函數,屏蔽對圖形的復雜處理Funcode平臺提供了大量功能函數,屏蔽對圖形對象的復雜處理,使學生能夠專注于程序設計和游戲邏輯功能的實現。例如:功能函數voiddSetSpriteLinearVelocityX(constchar*szName,constfloatfVelX)可以使精靈以某一速度水平運動。讓圖1左側中的魚(假設該魚命名為fish0)游動起來,學生只需用一條函數調用語句dSetSpriteLinearVeloctyX(“fish0”,30)即可實現;亦可通過調用功能函數dSetSpriteLinearVelocity(“fish0”,30,30)使魚水平方向和垂直方向分速度均為30,即在屏幕上“斜向”游動;功能函數dSetSpriteFlipX(“fish0”,true)調用可以使魚水平翻轉,即實現“掉頭”功能。
1.3整體邏輯框架簡潔,功能強大Funcode平臺整體邏輯框架由7個主要函數模塊組成,分別是主函數模塊、鼠標移動事件模塊、鼠標單擊事件模塊、按鍵事件模塊、按鍵彈起事件模塊、對象碰撞事件模塊、對象與邊界碰撞事件模塊。其主函數模塊如以下程序代碼所示,通過主函數模塊控制整個游戲的運行和界面刷新。其他的6個函數模塊幾乎包含了游戲設計中需要處理的所有事件,并且向學生屏蔽了事件激發所需要的復雜判斷過程,所有的鼠標事件、鍵盤事件、碰撞事件均為自動激發,這很大程度上降低了設計難度,使學生可以專注于游戲邏輯功能的實現。例如:要實現圖1中的“魚”游到右側邊界時掉頭向左游邏輯功能,在Funcode平臺下,當圖1中的“魚”游到右側邊界時,“對象與邊界碰撞”模塊將會自動激發,該模塊的初始程序代碼如下所示。此時,學生無需判斷和處理“魚”是否游到邊界(這對大學一年級學生而言比較困難),只需要知道“魚”游到邊界后會自動調用“對象與邊界碰撞”模塊對應的dOnSpriteColWorldLimit函數即可。因此,學生只要能夠根據游戲功能在該函數中正確地編寫相應的代碼就可以了,具體實現“掉頭向左游”邏輯功能的完整程序代碼如下所示。顯然,這樣就極大地簡化了對圖形對象和事件的處理,學生就可以把更多的精力投入到游戲邏輯功能的實現和代碼的編寫和調試中。
1.4開放式環境,極大地激發學生創新能力Funcode提供了開放式的開發環境,除了完成Funcode提供的課程設計案例以外,學生也可以按照自己的思路,添加素材,大膽創新,設計和開發真正屬于自己的游戲,這樣能極大地激發學生的程序設計熱情。例如:一組學生開發的“大魚吃小魚”游戲,當大魚吃小魚得分達到一定的分值時,可以生出“魚寶寶”,尾隨大魚游動,生動有趣。
2教學內容和方法的改革
基于Funcode平臺,在教學內容和方法的改革上,以激發學生興趣,調動學生學習主動性為主要目標,在此基礎上,貫穿整個課程設計的各個階段,采用多種教學方式和方法培養學生各方面的綜合素質。
2.1選題階段在選題內容上,典型游戲設計和自主創新相結合。改變原有的設計內容變為基于Funcode平臺游戲設計。設計內容分為兩類:一類是典型的可在Funcode平臺上實現的游戲,比如坦克大戰、打地鼠等;另一類是學生自選題目,要學生根據Funcode平臺功能,發揮自己的想象力,創造自己的游戲。教師要通過討論、引導等方式,鼓勵學生自己設計游戲,培養其創新意識和創新能力。題目選定之后,要求學生將游戲整體功能用功能模塊和流程圖的方式清楚地表示出來,并且要能夠準確地描述各模塊之間的關系,鍛煉學生的抽象思維和邏輯思維能力。在選題方式上,要堅持組內討論和師生互動相結合。組內討論有利于游戲功能的完善,有利于發揮所有同學的創新潛力,有利于調動學生參與的積極性。通過教師和學生的討論交流,教師要控制游戲功能的實現復雜度,既要保證設計的工作量,又要保證控制在可實現的范圍內。
2.2設計階段在課程設計過程中,要避免“學生問,教師答”的教學模式,教師要積極地參與到所有學生的設計中,主動和學生交流討論,掌握他們的設計情況;善于通過引導啟發,培養學生各方面的綜合素質。在設計中,要及時發現并指出存在的問題;對于學生提出的問題,要善于引導他們積極獨立思考,盡量讓其自主分析,找到原因,進而找到解決問題的方法,這一方面可以培養學生獨立思考,分析問題和解決問題的能力,另一方面可以增強學生的成就感和自信心,有利于調動學生參與實踐的熱情。對于游戲功能的實現,要讓學生畫出流程圖或實現步驟,體會程序設計中的抽象思維和邏輯思維。比如對于“打飛蟲”游戲,當“拍子”拍中“飛蟲”時,對應Funcode抽象概念為“拍子”對象和“飛蟲”對象發生碰撞事件,由于碰撞事件自動激發,所以拍中“飛蟲”后對應的游戲功能實現邏輯應該在碰撞事件中表達。對于該碰撞事件的處理,要求學生首先畫出拍中“飛蟲”后的處理邏輯,體會程序設計中的邏輯思維。比如:使“飛蟲”圖像從界面消失在“飛蟲”鏈表中刪除該飛蟲顯示拍中特效根據拍中的“飛蟲”類型計分刷新游戲界面上顯示的實時得分值。課程設計要求按組進行,設計中要求分工合理,任務明確,緊密協作,嚴格按照日程安排,完成設計任務。要求每2天一次,將每人獨立設計的模塊進行整合并測試,同時要求學生定期開展討論,鼓勵他們對設計中存在的問題,積極和同組同學交流溝通,要善于發揮集體的力量,解決問題。在協作設計中,培養學生的團隊合作意識。此外,在游戲的設計過程中,必然會存在一些較難實現或者知識點超出課本內容的功能,從經驗來看,大多數學生都會無奈地選擇放棄該功能。此時,教師一定要向學生強調自主學習的重要意義,讓他們認識到課堂教學中講的內容大多是最基礎的核心知識點,而實際的應用中要涉及的知識卻遠非如此,并積極鼓勵和指導學生學習和掌握相關知識點。
2.3考評階段為了進一步培養學生興趣,調動其積極性,考核采用每組分別進行講解和演示,交流心得體會,其他組同學和教師進行打分的形式。打分項分為游戲功能、工作量、流暢性、創新性、美觀性等5個方面。演示中鼓勵其他組的同學提問和試玩游戲,盡量找出游戲設計的缺陷,通過多種方式培養學生的展示能力和競爭意識。最后,教師再進行總結性點評,指出設計的優缺點。
3教學效果
從調動學生學習積極性方面來看,在整個課程設計過程中,學生始終保持著極高的熱情。教師為課程設計建立了QQ群,提供全天答疑服務,從QQ群討論情況來看,學生提問很多,討論熱烈,而且絕大多數在課外時間。此外,課程設計結束后,很多學生指出,Funcode平臺美中不足的是:自己創造出的游戲最終生成的可執行程序離開Funcode平臺不能運行,非常令人遺憾。這也可以從一個側面反映了學生的熱情和對自己勞動成果的珍惜。從課程設計內容來看,學生大多是按照自己的想法設計的,游戲功能可謂五花八門,創新能力得到了很好的培養和鍛煉。更重要的一點是達到了課程設計的教學目的,學生對程序設計的理解更加深刻,鞏固了C語言學習成果,能夠將游戲功能的實現邏輯用計算機語言準確地表達出來。在程序設計中遇到的具體問題,學生能夠提出自己的解決思路,并通過編寫程序表達自己的思路,很好地將課堂上學到的理論知識應用于實際問題的解決,抽象思維和邏輯思維能力、程序設計實踐動手能力均得到了很好的鍛煉。例如:圖2所示為學生設計的游戲初始界面。該游戲實現的功能有:游戲實時倒計時;游戲實時顯示得分;通過鍵盤控制游戲的開始、暫停和游戲場景的切換;用鼠標控制“拍子”進行移動和拍打;打到大蚊子、小蚊子積分不同,打到堅果則減分,且打中目標有圖片特效產生;蚊子的產生地點、時間、數量和產生時的飛行速度都是隨機的,且飛行速度隨著積分級別越來越快;游戲結束時顯示得分最高的三條歷史記錄等。此游戲中,學生自己編寫代碼(不包括自動生成的代碼)行數在800行以上,使用的C語言知識點涵蓋了數組、鏈表、函數、變量作用域、多分支結構、循環結構等。
4結語
Funcode平臺簡單易行、圖形界面化的游戲界面編輯方式,使學生有很大的熱情根據自己的意愿去設計華麗精美的游戲,簡單的游戲設計主框架和平臺提供的圖形處理接口函數極大地降低了游戲設計的難度,使學生能夠專注于游戲功能的設計和游戲邏輯的實現。功能強大,提供了大多數游戲開發所必需的基本函數模塊,完全開放,學生可以根據自己的思路,發揮創造力和想象力,設計出真正的自己的游戲,極大地調動了學生對程序設計的興趣和熱情。總之,40個學時的C語言課程設計中,學生對程序設計的興趣和熱情被激發出來,絕大多數學生體會到了程序設計的樂趣,對程序設計的認識更加深刻,各方面的綜合能力得到了鍛煉和提高,取得了較好的教學效果。
作者:武航星姚琳張敏單位:北京科技大學計算機與通信工程學院
一、傳統C語言課程設計教學模式
C語言是最基本的計算機編程,是計算機、電子信息類等相關專業學生的專業入門課,在其學習過程中,要求必須掌握編程的技能。但是C語言的學習有其特點,規則比較多、知識點多,涉及到的編程程序等也比較難懂,在運行上代碼的要求較高,程序執行效率高,因此更講究教學和學習的方式方法,但是在我們的教學中,目前教學方法比較單一,隨著信息化的發展,傳統的教學模式已經無法適應,亟需改革。
1、傳統型
這種教學模式,也是最常用的,課堂上以老師為主,學生只能被動的接受知識的傳授。通過最直接“填鴨”式照本宣科,不管學生接受與否,最后的考核也是以知識點的記住與否,造成學生死記硬背,不能真正掌握知識。其基本模式為:學習——回答——糾錯——總結。這種模式下,使得教師在教材以外的發揮余地極小,基本是“照本宣科”,強行灌輸C語言的概念、特點、編程程序、基本的方法等,整個教學過程缺乏靈活機動、具有啟發性的內容,學生被動的接受知識、被動的記憶、被檢查、被考試、被批評等,日復一日的教條式訓練,不能有效地激發學生的主觀能動性與創造熱情。
2、任務型
C語言教學區別于其他學科,在理論知識的傳授之外,還需要培養學生的實際動手能力,因此,很多學校也采用“任務型”教學模式,基本模式為:根據具體要求提出任務—鼓勵學生設計方案—實際操作—解決任務。在日常的教學中,學校大多會利用電腦等鍛煉學生的實際動手能力,利用實際操作,鍛煉編程、邏輯等能力,從而掌握C語言的基本知識。例如翻轉課堂模式,教師將知識傳授環節制作成教學微課,課前提供給學生預習,通過預習使課堂的實踐性練習目的性更明確,教師隨堂對學生遇到問題進行指導分析,從而培養學生獨立思考能力和實際操作能力。這種模式的采用,相對于傳統模式,有其進步性,這也是C語言等專業性、操作性學科區別于其他學科的特點決定的,在這種模式下更取決于教師自身的素質、知識、能力等,是整個課程的掌控者、引導者,他們的能力直接關系著教學成果。
二、信息化背景下面臨的挑戰
隨著科技的發展,信息化在教學領域的應用越來越普遍,信息技術的日新月異,也使得其在課堂上,已經不僅僅是局限于簡單地計算機和多媒體運用,移動技術、智能化與虛擬技術等為我們的教學提供了新的思路和方法,如何能使我們的教學與高速發展的信息化相結合,是教育領域不斷探索的課題。C語言程序設計等課程具有很強的專業性要求,主要是建立在計算機信息技術的基礎上,對于信息化的反應更為靈敏,傳統的課堂上,以教師為中心的“面對面”的教育模式面臨著挑戰和沖擊,用技術手段的靈活性與便利性來增強課程學習的興趣和接受能力。隨著新技術的廣泛應用,會促使傳統的教學模式發生變革,以教師為中心的教學模式逐漸轉化為互動式教學模式,達到更好的教育效果。在C語言課程設計教學領域,進行信息化教學改革的嘗試,充分利用信息技術,變革教學手段和模式,是信息化發展的必然要求。只有實現C語言課程的信息化教學改革,使得教育信息化能夠普遍運用,才能展現出信息技術在推動C語言教學中的強大威力和廣闊前景。
三、教學模式改革的基本對策
教學模式直接反映出一定的教學理念,也直接決定著教學成果。隨著信息化的發展,教育信息化逐漸打破傳統的教學模式,在這樣的背景下,C語言教學模式的改革任務艱巨,如何構建新型的信息化教學模式也是我們在實踐中不斷摸索的問題。
1、充分利用信息化的科技手段
信息化的科技手段,給我們的教育領域帶來變革,尤其是計算機領域的學習,其主要是建立在信息化發展的基礎上,因此在教學中,更要與時俱進,與信息化的發展程度相互依存,相互輔助,C語言課程設計教學中,可以充分利用信息化的科技手段,如計算機技術、云計算技術、多媒體技術、網絡技術、虛擬現實技術、通信技術、移動學習技術、人工智能、傳感器技術等,這些技術的發展,帶來C語言教育領域的變革。為提高C語言教學質量,激發學生學習C語言的積極性,我們可以在課程建設過程中充分利用現代技術帶來的便利與多樣性,以及趣味性。如在教學課件設計上,利用多媒體技術,圖、文、動畫并茂,減少其枯燥的理論傳授,增加趣味性;利用網絡技術,實現在線教育,建立“C語言程序設計”網站,分組進行網站維護,運用編程能力進行更新;應用現代的通信技術,建立微信學習群,讓學生分享自己的學習經驗,共享學習資源。
2、案例引導式教學模式
改革C語言教學模式,另一探索的模式為案例引導式教學模式,C語言的教學,是為了培養學生讀程序、調試程序、寫(仿照)程序的能力以及規范性編程的能力,學習最主要的目的是為了應用,對于編程的應用,只有具體的應用場景,即案例,才能更容易被接受,更易懂。案例引導式教學模式,在別的專業課教授中,常被使用,主要特點就是用案例去引導知識點的掌握,對案例進行分析,通過分析啟發學生的思路,將學生帶入到具體的案例中,讓學生有一種“身臨其境”的代入感,從而掌握具體的知識,學會在這種場景下解決問題的方法,這種模式的教學更有針對性、系統性。案例引導式教學模式在C語言課程設計教學中的運用是指針對C語言課程的每一個核心知識點,建立配套的案例,通過這些案例的學習和掌握,使得學生在例子的佐證下,更加了解C語言的應用,這種案例的設計,和我們的書本知識相結合,把理論知識融入到具體的案例中,進行綜合性的闡述,如具體的計算機程序的編寫,設計游戲環節,運用所學的C語言知識設計網站,并使之運行,可以在班吉內分組進行維護等,并加以各種領域成功案例或者失敗經驗的案例,讓學生能夠更進一步了解其應用范圍、能力、領域等。
3、實踐教學模式
C語言課程設計的學習,所需的能力不再是死記硬背,而是更注重實踐和應用,因此我們在教學過程中,不能只傳授書本知識,還要鍛煉學生的動手能力和編程能力,實踐教學模式應運而生,依靠大量的實踐,將所學的知識轉化為實際操作,得到進一步的應用。信息化技術為這種教學模式提供支撐服務,我們可以在課堂上設計各種實踐環節,也可以在課堂后與各種軟件公司、游戲公司、網絡公司等合作,增加實踐機會,讓學生在具體的實踐環節中,真正了解C語言的知識,并主動內化這些知識,變為實際操作能力。在這種教學模式改革中,如何能夠更好的提高實踐能力需要通過各個環節的相互配合,如課程設計上,增強實驗、實訓環節,讓學生在熟練掌握C語言語法、程序結構的基本理論的同時,通過大量的實踐操作,進一步掌握C語言的知識,學會編碼;同是,積極與各軟件、互聯網、網絡公司簽訂實踐基地,讓學生可以在實際應用中,邊做邊學,提高學生邏輯思維、實際操作能力,真正實現教學目的,熟練掌握計算機編程能力。
作者:王桂華 單位:營口職業技術學院
1開設課程設計的目的及意義
高等職業教育的目標及側重點不同于普通高等教育,其培養的學生在畢業后應能直接上崗,具有熟練的實踐操作技能。教育部《關于以就業為導向深化高等職業教育改革的若干意見》中指出,高職教育應“堅持培養面向生產、建設、管理、服務第一線需要的‘下得去、留得住、用得上’,實踐能力強、具有良好職業道德的高技能人才”。
因此,加強實踐性課程教學,對保證人才培養質量顯得尤為重要。我院為貫徹《關于全面提高高等職業教育教學質量的若干意見》(教高[2006]16號文件)精神,針對區域經濟發展的要求,靈活調整和設置專業課程,以就業為導向,加快專業課程對應的課程設計改革。目前,我院按照由淺入深、不斷深化的教學規律,構建了實踐教學三層次四環節的實踐課程體系(圖1)。實踐教學三層次包括基本技能、專業拓展、綜合創新,四環節包括實驗、實習實訓、設計和課外實踐。“C語言課程設計”是我院信息類專業的必修專業基礎課程設計,在“C語言程序設計”課程教學結束后的下一學期進行,歷時2周,40學時。課程開設的目的在于培養學生分析問題和解決問題的能力,為學生提供一個動手、動腦、獨立實踐的機會。
2項目教學法的簡單介紹
2.1項目教學法“項目教學法”是基于建構主義教學理論的一種教和學的模式。著名的瑞士心理學家皮亞杰認為,知識不是通過教師傳授得到的,而是學生在一定的情境下,借助他人的幫助,利用必要的學習資料,通過意義建構的方式而獲得的。美國項目管理專家約翰·賓認為:“項目是要在一定時間里,在預算規定范圍內需達到預定質量水平的一項一次性任務。”
“項目教學法”是通過實施一個完整的項目而進行的教學活動,旨在把學生融入有意義的任務完成的過程中,讓學生積極地學習,自主地進行知識的建構,在課堂教學中把理論與實踐教學有機地結合起來,充分發掘學生的創造潛能,提高學生解決實際問題的綜合能力。因此,在教學活動中,教師將需要解決的問題或需要完成的任務以項目的形式交給學生,在教師的指導下,以小組工作方式,由學生自己按照實際工作的完整程序,共同制定計劃,共同或分工完成整個項目。
在項目教學中,學習過程成為一個人人參與的創造實踐活動,注重的不是最終的結果,而是完成項目的過程。在高等職業技術教育中,項目是指以生產或制作一樣具體的、具有實際應用價值的產品的工作任務。在技術領域,很多小產品或一些復雜產品的模型都可以作為項目,如:在信息類專業,可以開展微機組裝、網站建設、信息管理系統開發、局域網構建、單片機制作、多媒體課件制作等項目;在電子類專業,可以開展報警器、LED、門鈴、家電組裝等項目;在商業、財會和服務行業,所有具有整體特性并有可見成果的工作也都可以作為項目,如商品展示、產品廣告設計、營銷策劃等。
2.2項目教學法的基本特征項目教學法與傳統的教學法相比,有很大的區別,主要表現在改變了傳統的3個中心:以教師為中心轉變為以學生為中心;以課本為中心轉變為以“項目”為中心;以課堂為中心轉變為以實際經驗為中心。項目教學法具有以下特點:(1)實踐性。項目“源”于企業,項目的主題與真實世界密切聯系,由淺入深,選擇的項目具有典型性、實用性。(2)自主性。提供學生根據自己的興趣選擇內容和展示形式的決策機會,讓學生能夠自主地進行學習,從而有效地促進學生創造能力的發展。(3)發展性。長期項目與階段項目相結合,構成了實現教學目標的認知過程。(4)評價特殊性。項目型教學的評價注重學生在項目活動中能力發展的過程,測評內容包括學生參與活動各環節的表現及作業質量,避免了傳統的一張試卷定成績的弊端。測評可以采用自評、小組評、教師綜合評等方法。教師只有明確并抓住項目化教學特點,才能更好地完成教學目標。
3項目教學法在“C語言課程設計”中的實施
3.1教學內容為了更好地開展課程設計教學,經過多次實踐和摸索,總結出學生在具體實施項目中一般存在2個方面的知識不足:第一,在教學內容上,由于前導課程在教學上受學時影響,很多教師對指針、結構體、共用體和文件基本操作的知識介紹不甚完善、系統,更難談上輔以實例加以消化。對此,針對學生在這些知識點上的掌握程度,利用4~6個學時,實施區別式的、輔導性的、實例化教學。第二,學生對項目管理知識知之甚少,針對此情況,采用2個階段實施有別于常規教學的補課行動。第1階段為項目準備階段,利用2~4個學時,安排曾經做過項目且做得比較好的學生,現身介紹項目的準備工作(包括如何選題、如何查找資料、如何復習C語言知識)、項目實施過程要完成的工作(包括如何做市場調查、如何做需求規格分析說明書、如何做概要設計說明書、如何做詳細設計說明書、如何選擇使用代碼編碼器代碼編寫注意事項)、項目驗收及作業提交的工作(包括程序測試事項、如何寫課程設計報告)等。在學生介紹中,教師穿插講解,輔以點評。第2階段為項目實施階段,教師應針對學生發生的問題,及時給予指導,直到學生弄懂為止。
3.2教學要求切實保證教學質量和教學效果,本著“學以致用”的原則,要求學生做到以下3點:第一要做到“學有三備”,即:在項目實施前做好知識儲備,在項目實施中做好安全防備,項目結束時做好被評準備。第二要寫好“三書一報告”。“三書”即每個項目組要做需求規格說明書、概要設計說明書、詳細設計說明書,“一報告”即人人都要做課程設計報告。第三要做“四自”參與者。“一自”即自律,要求學生自覺履行學生守則和項目實施有關規則,不遲到、不早退、不缺席,實施點名制度,若無特殊原因,有5次曠課者自愿以重修論處;“二自”即自尊,要求學生尊重知識、尊重學習規律、尊重項目組成員、尊重教師、尊重自己;“三自”即自信,要求學生相信自己能夠按時、按量、按質完成工作內容,遇到困難時,沉著、冷靜,理性地尋找問題解決的辦法;“四自”即自強,要求學生不滿足自己已有的成績和以往與課題項目組共同取得的成績,用創新和超越的思想,做出比以前哪怕是前進一小步的事情。同時也要求教師做好相應的工作,如做好項目整體規劃、精心準備、努力激發學生參與行為、為人師表、表揚為主、批評為輔、多分析、精點評等。
3.3項目實施進程項目教學法是一種生動、靈活、多樣化的教學方法。在項目實施過程中,既不能生搬硬套地利用一個時間標準,又不能影響項目實施的整體進程,因此對時間的靈活處理是非常關鍵的,也是值得商榷的。
3.4明確項目內容,幫助學生立項立項首先要審題。當學生拿到項目列表時,最不能忽略的問題,就是提醒學生審題。審題恰當對學生以后開展各項工作是關鍵。審題時,學生首先要考慮自己的長、缺處,做到揚長避短,也就是說審題就是學生自己審自己完成該項目有多大的能力,有沒有信心。只有學生明白自己,才可以避免以后實施項目過程中走彎路。同時既要建議學生在組建項目組時,考慮所在組的其他學生的長處和短處,又要盡量避免使被學生認定的差等學生沒人愿意與其組合,而成績好的學生又抱團的現象發生。
根據近幾年帶課程設計的經驗,關于如何合理選擇項目,建議教師應從學生的角度考慮以下4個因素,協助學生做好選題:(1)規模。項目規模太大會影響項目的完整性,項目規模太小難以體現課程的實踐性。(2)難度。項目難度一定要適中,既要激發學生學習的興趣又不能影響學生的自信心。(3)實用性。項目的選擇應該是現實世界真實的工作任務,具有一定的現實和實用性。(4)趣味性。興趣是最好的老師,所以在選擇項目時應考慮其趣味性,讓學生有更大熱情投入項目。
摘 要: 通過一份問卷調查,發現C語言課程設計這門課程存在諸多問題。借鑒學生提供的建議,分別從課程設計的時間安排、課堂教學及課程設計的命題方面進行了改革,相信這些改革措施一定會取得很好的教學效果。此外還對學生反映比較多的問題,比如“編譯錯誤不好發現、也不好修改”提供了一個很好的解決方案。所有這些教學改革措施的最終落腳點都是要為國家培養出更多、更優秀的建設人才。
關鍵詞: C語言 課程設計 問卷調查
1.引言
C 語言作為一門程序設計語言的入門課程,很好體現了程序設計的靈魂,是進一步學習其他語言或者計算機技術的理論基礎。“課程設計”在中國絕大多數高校已經開設很多年,那么什么是“課程設計”呢?簡單地說,“課程設計”是一門這樣的課程:學生利用所學的書本知識來解決現實生活中的各種實際問題。本文從一份簡單的關于C語言課程設計的問卷調查說起,系統地總結了C語言課程設計存在的優點和不足,并針對這些不足提出了一些可行的改進措施。希望這些措施能夠落到實處,能夠對相關的課程起到借鑒作用,以便為中國高校培養更多更優秀的人才發揮一點作用。
在計算機發展的歷史上,還沒有哪一種程序設計語言能像C語言這樣應用廣泛。C語言不是一種“很高級”的語言,也不“龐大”,并且不專用于某一個特定的應用領域[1]。由前面的敘述可知,學習C語言對大學理科生,尤其對計算機學院的學生而言非常重要。筆者在一次C語言課程設計課上進行了一次問卷調查,問卷調查的內容參見圖1。盡管這個問卷調查非常簡單,可是通過它能發現C語言課程設計存在的問題。筆者對該問卷調查的結果進行了匯總,首先看學生是怎樣評價C語言課程設計優點的,如圖2所示。其實學生們提到的這些優點教師早已知道,本文重點關注的是學生們提到的不足和建議。
那么C語言課程設計在我校開設的過程中存在哪些缺點和不足呢?有關的詳細信息如圖3所示。筆者將學生們提出的缺點與不足分為五個類別,這五個類別分別是:(1)關于時間安排和課時量的問題;(2)關于課堂教學的問題;(3)編譯與調試方面的問題;(4)關于教師輔導方面的問題;(5)關于題目方面的問題。筆者將在第3部分對這些存在的問題給出可行的解決方案。最后看看學生們給出的建議都是什么?詳細信息參見圖4,筆者提出的課程設計改革方案也參考了學生們提出的建議。
2.相關工作
曾輝等人[2]指出了當前C語言程序設計課程教學中存在的問題,分析了問題產生的原因,論述了教學改革的必要性,探討了教學中如何提高學生積極性、教學方法和手段等幾個方面的教學改革問題。張敏霞[3]根據當前大學生的具體情況,針對如何有效地進行程序設計語言課程的教學,提高學生的程序設計能力和計算機素質提出了幾點具體的措施。殷秀云[4]指出傳統的C語言程序設計課程的授課方式和考核方式存在一定的局限性,進一步加大了學生掌握C語言編程方法的難度。因此,如何改變這種現狀,以適應不斷發展的社會的需要,已經是一個亟待解決的問題。馬杰等人[5]針對C語言教學中存在的若干問題,提出了從任務驅動、培養學生興趣、改革教學內容和方法、加強實驗教學環節及改革考核機制五個方面進行教學改革,以提高學生的編程能力,變被動學習為主動學習,培養自學的能力。謝競博[6]從教學目的、教材選擇、教學方法、實踐教學及考核方式等方面,闡述了它們與教學效果的關系,詳細分析了目前教學中存在的一些普遍問題的成因,并從幾個方面分別提出了一些可行的改革建議。陳婷[7]論述了在應用型本科C語言程序設計教學實踐中,根據應用型本科教育培養要求,對課程合理定位,采用“階梯式”、“案例式”課堂教學方法,以“項目驅動式”實踐教學為核心,同時搭建多種自主學習平臺,采用更科學和完善的考核方式,較好地兼顧了學生的不同需求,激發了學生的學習積極性。
劉三滿[8]結合學生的學習心理和認知規律,分析了C語言教學問題的主客觀原因,提出了“先過程,后對象”的教學理念,從教材建設、教學內容安排上闡述了教學內容的具體組織實施過程,從教學思路、教學觀念、教學手段幾方面探討了教學方法的改革。謝中科[9]闡述了C語言程序設計課程的教學改革與實踐,提出了通過激發大學生的學習興趣、創新熱情、教學互動等手段來建立大學生的編程思想,培養大學生的程序設計能力和創新意識。通過課程設計,培養大學生運用C語言解決實際問題的能力和創新能力。劉曉鋒等人[10]從教師、學生和教學內容等方面介紹了在《C語言程序設計》課程建設中,以程序設計和實驗為主,更新教學內容,改革傳統的授課方式的探索,闡述了注重能力培養,提高學生的學習興趣,充分調動學生的主動性、創造性的重要意義。
3.改革措施
前面部分,學生們針對C語言課程設計指出了一些缺點,同時提出了一些好的建議,在本部分將有針對性地提出一些改進的措施:(1)關于課程設計時間安排的改進:將C語言課程設計的開課時間定在學生學完C語言之后的下一個學期初。(2)關于課堂教學方面的改進:任課教師申請一個QQ或者微信群,在學校正式放假前,任課教師通過該群把課程設計的題目發送到每個學生的手中。下學期開學后的前幾周進行課程設計的集體輔導,然后進行答辯驗收。任課教師可以將沒講完的課程內容及對課程設計題目的大體梳理都錄制成視頻,然后將該視頻文件上傳到群文件里供學生們分享。群是實現師生互動的一個最重要的媒介,借助它可以突破時間和空間的限制。任課教師在放假前將題目發送到每個學生手里的一個最大好處是:學生們可以利用假期里的大量時間,充分地思考和準備這些課程設計題目。(3)關于題目方面的改進:允許學生自由命題,但是需要任課教師最終把關,以決定該命題是否適合作為課程設計的題目。此外,任課教師也可以考慮讓企業幫助出題。
前面學生們提出“編譯錯誤不好發現、也不好修改”的問題,筆者認為可以通過下面的方法進行解決:第一,首先告訴學生這是C語言的特點之一:語法限制不太嚴格,程序設計自由度大。一般的高級語言語法檢查比較嚴,能檢查出幾乎所有的語法錯誤,而C語言允許程序編寫者有較大的自由度,因此放寬了語法檢查。“限制”與“靈活”是一對矛盾,限制嚴格,就失去靈活性;而強調靈活,就必然放松限制。第二,教會學生進行單步(Step Through)調試、設置斷點(Breakpoint)等調試程序的技巧,必要時還可以通過額外添加一些輸出語句輔助進行程序調試。第三,任課教師將常見的編譯出錯信息進行匯總,然后上傳到群文件里供學生分享。其實對編譯出錯信息進行總結,不如直接告訴學生記住C語言的一些專業術語,表1中列出了其中的一些,相信這對學生調試程序將會起到很大的幫助作用。另外,還要告訴學生從一開始就要形成良好的編程風格,比如適當地添加注釋(Comment),程序要有縮進(Indent),給變量、函數、數據結構等起名字時要做到見名知意等。
4.結語
從一份C語言課程設計的問卷調查入手,筆者根據學生指出的缺點和提出的建議對該課程進行了嘗試性的改革,分別從課程設計的時間安排方面、課堂教學方面及課程設計的命題方面進行了改革,筆者相信這些改革措施一定會取得很好的教學效果。另外,筆者還對學生反映比較多的問題“編譯錯誤不好發現、也不好修改”提供了很好的解決方案。將按照文中提出的一些觀點編寫《C語言課程設計》一書,該書將嚴格貫徹執行講練結合的原則,對課程設計過程中可能涉及各個知識點通過舉例子的方式進行講解,例子的選擇標準是不僅能說明問題而且要求最簡單。
摘 要 表現性評價又被稱為“基于表現的評價”、“真實性評價”。表現性評價是根據學生實際完成一項特定任務或工作的表現而做出評價,即是從學生實際的行為表現來評價。目的是評價學生整體性的學習成果,通過解決問題的實際歷程,經發現問題、觀察、提出假設、推理、控制變量、測量、歸納、詮釋資料、研究判斷做出決定,這整個過程都是屬于表現性測驗的評價范圍。本文以C語言課程設計為例討論如何針對實踐性較強的課程構建表現性評價。
關鍵詞 表現性評價 量規 課程設計
1構建表現性評價基本思路
構建表現性評價就是制定評價目標、選擇評價內容、開發和設計評價方法的,還包括評價者的參與、選擇評價時間和場所、記錄、收集和整理評價信息的,以及制定評價標準和表現標準等。依據這樣的開發步驟,對C語言課程設計表現性評價的設計和實施做出了整體規劃,該設想的總體思路如下圖所示:
2表現性評價目標的制定
學習目標是課程學習活動的出發點和歸宿,它指導教與學,向其他人傳達教學意圖,并提供評價學生學業的指導意見,是評價學生的重要依據。表現性評價的評價目標和課程的培養目標是一致的。在評價之前只有清晰的知道C語言課程要培養什么樣的學生,才能把握好教學與評價的方向,最終達成目標。
C語言程序設計是一門典型的具有操作性和實踐性特點的計算機科學課程。該課程的學習目標體系包括下列內容:
(1)知識類目標:理解并掌握課程要求的基本知識,加深對已學知識的理解,進一步提高原有技能;在熟練掌握陳述性知識的同時,更加注重對知識的應用。
(2)能力類目標:培養學生的創新意識、刨造思維能力和動手實踐能力;培養學生信息意識和主動獲取信息,處理信息的能力;培養學生的群體意識和學會溝通與合作交往的能力;培養問題意識和獨立發現問題、提出問題、解決問題的能力;培養和提高管理能力等。
(3)情感類目標:現代學習觀、科學精神和態度、社會責任感和使命感和交往能力等。課程設計的學習目標在課程學習目標的基礎之上,更強調實踐能力的提高,培養計算機程序設計的能力和素質,以及思維方法。經上述分析,與課程學習目標相對應,課程設計的表現性評價目標也應包含三個維度:對知識習得的評價、對能力的評價和對情感態度價值觀的評價。對上述三方面的評價目的具體描述如下表所示。
3選擇表現性評價任務
評價任務指的是一種與教學目標緊密相連的,而且能夠為學生創造展示自己進步與能力的機會的一種具體的行為,能反映現實生活中的活動、表現和挑戰的任務,建立在學習與評價的聯系基礎之上,考慮學生的興趣和能力。C語言課程設計任務,更加突出應用性和實用性,拓展知識面。通過課程設計,進一步熟悉掌握數據類型、分支控制、循環控制、函數的定義及調用、結構體及數組、指針、文件操作、編譯預處理等知識;達到系統理解、綜合運用課程知識的學習目標;學會用C語言程序解決實際問題的方法;掌握程序的局部測試、調試方法,建立程序系統測試、調試的基本概念和思想,學會較大程序的系統測試、調試方法。
一般的C語言課程設計項目包括小型系統設計、圖形圖像設計和游戲程序設計基本過程包括以下6個步驟:
3.1程序的功能設計
功能設計是課程設計的第一個環節,其任務是根據課程設計題目的描述和要求,確定程序要實現的功能,并把功能劃分為不同的層次,確定各層功能的上下級關系,然后繪制出分級描述的程序功能框圖。
3.2程序的數據設計
程序的數據設計主要包括對以下各類數據進行設計:對程序中用到的主要數據確定數據類型;對程序中用到的結構體數據定義其結構類型;定義程序中使用到的全局變量、外部變量等;定義程序中通用的符號常量;確定文件的數據類型,如二進制文件、文本文件等。
3.3程序的函數設計
一個綜合性的程序,需要設計若干個函數。各個函數功能各異,使用的層次也不盡相同。為了使總體設計協調有序的進行,需要在程序編碼之前,對主要的函數做出預先設計,即所謂的函數設計。程序的函數設計包括函數的功能設計和函數調用設計兩個方面。
3.4函數編程及調試
函數編程及調試是實現程序功能的核心階段,函數編程及調試是實現程序功能的核心階段,需要注意以下問題:課程設計具有一定的綜合性,其程序通常由多個函數構成,每個函數都有獨立的功能,實現特定的操作;有些函數之間有調用和被調用的關系,在進行函數設計時需要注意順序問題,有點函數先設計,有點函數后設計,而沒有調用關系的函數可以并列設計;程序設計是一個循序漸進的過程。有點函數在程序設計前的函數設計階段就被考慮到了,而有的函數是在程序設計過程中因需要才產生的。但無論哪個函數,都會經歷由簡單到功能完善定型的過程。
3.5整體調試
整體調試是程序設計的必要階段,是在前期程序設計調試基礎上進行的基本過程。需要設計準備一個較大規模的數據集,按照課程設計題目的功能要求,對組裝完成的程序逐項進行功能測試和調試,直至確認程序達到了設計目標為止。
3.6設計總結
設計總結是課程設計的最終階段,通過對課程設計的各個過程進行系統全面地總結,按照指導教師的具體要求,形成課程設計報告。
4建立量規
量規(Rubric)是一種結構化的定量評價標準。往往是從與評價目標相關的多個方面詳細規定評級指標,具有操作性好、準備性高的特點。量規是評價的工具,學生的作品、成長記錄、學習成果或者學習過程中的其他表現(行為、認知、態度)都是量規的評價對象。同時量規也是一個教學工具和學習工具,可以指導教師的教學和學生的學習過程,模糊了教學、學習和評價之間的界限,評價工具也從而成為了教學工具和學習工具。量規設計的出發點和著落點是指標和等級地選擇與確立。設計評價量規就是,以課程、教學、評價三者統一,突出學生主體性和促進學生發展的評價目的為設計原則,在明確學習目的和目標的基礎上,列出評價指標和制定評價等級。對C語言課程設計內容加以分析,制定出課程設計過程中的幾個量規。
4.1 C語言課程設計任務設計量規(教師)
該量規主要是對學生在對課程設計任務進行分析、提出解決方案、制定完成任務的相應計劃的表現進行評價時所使用的量規。該量規中的評價項目主要包括問題分析、任務劃分、程序架構等。根據評價項目完成情況好壞不同給出不同分值的具體表現,在評價過程中對照量規評價學生的表現。
4.2小組合作量規(教師)
該量規是由教師為各個小組整體表現進行評價的量規工具,小組的表現應包括幫助、傾聽、參與、勸說、問題及尊重等幾個方面,教師根據對各小組的觀察情況,對各項評分,并計算總分,以此作為小組合作表現的成績。
4.3小組成員相互關系表現量規(學生自評,互評)
小組成員之間的關系是否融洽,合作是否愉快,常常對整體工作效果有著至關重要的作用,因此,該量規也就比不可少了。該量規是從小組成員之間相互觀察到角度來制定的,其主要評價項目包括合作、參與、態度、獨立性、交流和應答等,每個小組成員都要為其他小組成員打分,計算評價分。這樣每個同學都可以看到自己在本小組中和其他成員間的關系如何,在以后的人際交往當中即可吸取經驗,更好地與他人融洽相處。
5總結
評價與教學是一個硬幣的兩面,雖然兩者有不同的“圖案”,但總是不可分割的共同體。目前,在教育領域中,我們面臨的許多真實困難都來與教學和評價的分離。如果我們準備可信的方式評價學生,真正服務于促進學生深入學習的最終目標,教學與評價必將再次結合。
【摘 要】本文就三本院校工科電子類專業的程序設計語言的教學進行了探討,針對三本學生基礎偏弱,自我能動性稍顯不足的特點,將程序設計的教學分成了兩個相關聯的部分,理論知識的講解和動手環節的實踐,并對實踐環節中的兩個部分――分散知識點和綜合應用分別給出了設計思路。
【關鍵詞】C語言;理論教學;實踐教學;課程設計
目前各個高等學校尤其是三本工科院校中,所選用的編程教學語言,由以前的面向過程化的語言Pascal語言向C語言過渡,這個也正是C語言廣泛使用的一個例證,C語言作為一個對底層有較強控制能力的語言,對于初學者來說,還是不容易掌握。為了編程語言的教學,各個學校都在探索適合自己學生的教學方式。本文針對電子類的嵌入式方向專業的特殊性,采用了將理論和實踐分開進行的方式,這樣做,可以讓學生對程序設計語言由淺入深地接受,在這個過程中,很自然地有純粹的理論過度到實踐編程的環節。
一、程序設計語言的教學思路
嵌入式方向C語言的教學,偏向于嵌入式底層的應用,在課程的安排上,結合三本院校學生的特點,將理論和實踐分別安排的兩個學期完成,第一個學期,主要是針對理論學習,第二個學期,開設課程設計的實踐環節。在理論教學環節中,側重點是理論的講解,可以不必太在乎細微的語法細節,而將主要精力放在程序設計語言的思想上。作為教師在講授C語言理論知識時,只要將過程化C語言的重點思想交代清楚了就可以了,在教學內容的安排上,一定要將結構體,指針和文件的相關知識進行講解,這也決定了在理論學時的環節中,無法對個別函數的細節進行展開的原因,而這些理論環節的教學,學時可以控制在45~48之間。
二、C語言課程設計教學內容的設計
在教學內容上,由于實踐課程的特殊性結合程序設計的特點,實踐環節可以用兩種方式完成,以便和前面的理論學時的知識進行銜接,這兩個環節分別是單個知識點的聯系和綜合的課程設計的獨立完成。
1. 單個知識點的實踐
就單個知識點而言,都以專題練習的方式進行,在講授的過程中,結合工程中的使用,每個專題,可以設計出獨立的實踐報告內容,程序設計語言的教學,除了掌握基本的語法規則之外,最重要的是同時要會調試程序,也就是要掌握調試程序的技巧。所以,課堂實踐環節的內容的設計,不但包括了能夠寫出程序代碼,而且還要會應用調試工具對程序進行調試,下面就是本人在進行數組,指針和結構體的綜合專題中進行的課堂任務的設計:
任務描述:從鍵盤錄入N個學生的信息(包括姓名,學號,成績),統計出平均分,并將成績最低分,最高分的學生的信息輸出。
該課堂實踐內容設計的思路,主要是要學生掌握結構體的定義方法,理解數組的元素可以是結構體變量,同時要牢固掌握指針的本質就是內存地址,通過指針可以方便地操作用戶空間的任何數據。
通過上面的實踐內容,結合筆者的實際操作,學生在記錄了指針地址的變化過程之后,不但掌握了查看內存的調試方法,而且對指針的本質有了感性的認識。
2. 綜合課程設計
可以選取有一定規模的小系統讓學生完成,在筆者的教學中,幾年來了均采用了學生信息教學管理系統進行授課,隨著經驗的增加,這個小系統對于學生而言,有很好的鍛煉價值。
這個環節的實踐,可以不占用教學計劃學時,而留給學生課后組隊或者獨立調試完成,這是因為,學生通過前面分散的專項知識點的練習,已經學會了怎樣調試程序,而且,各個知識點通過練習之后,已經掌握得差不多了,這個綜合任務,就是為了他們能夠融匯以前所學的各個知識點。所以布置給學生之后,就可以在適當的時候進行答辯考核了。
三、C語言課程教學課堂組織形式的比較
作為實踐課程,其教學有特殊性,筆者通過三個學期的探索,分別采用了兩種課時組織方式,現在對兩種方式的優缺點分別進行比對:
分散課時方式:就是按照理論課的安排,周學時2-4個學時進行安排。
周末集中方式:每個周末安排16個學時,進行集中訓練。
對于分散授課的方式,學生的出勤率低于集中的方式,對于實踐性質的課程,這種集中的方式進行授課,學生的出勤率會高于普通的方式。就學生課堂任務的完成情況而言,兩者基本上都能按照要求完成要求的85%以上的內容。就課程銜進行考量,根據實際操作來看,集中方式明顯優于分散的方式,這個記憶的遺忘興致相符合。從考核結果來看,分散方式所參與的三屆學生中,要優于集中方式,這個結果的出現,有部分原因是由于考核時間和上課時間之間的空隙拉的太長了。下次的安排,將會安排在課程結束之后的一周時間進行,這留出來的一周時間,就是讓學生來獨立完成自己的任務。
本文對三本學校中開展C課程設計的思路進行探討和實踐,提出了將C語言的教學分為理論部分和實踐部分的思路,并把實踐部分的練習分為專題知識練習和綜合獨立完成的任務兩個部分,在課堂的實踐中有較好的效果。最后論文還對課程設計的學時組織方式進行不同方式的實踐嘗試,為找到適合三本學生C語言教學的方法提供了一定的參考對象。
摘 要 項目教學是要通過一個較為完整的項目進行教學活動,其主要目的是為了能把學生融入到有意義的任務中,并充分發揮學生的創造潛能,提高解決實際問題的能力。通過對“C語言課程設計”課堂的教學,用項目教學法進行教學,取得了較為滿意的教學成果。對于如何利用選擇項目、實施項目、評估項目,進行了初步探究,并介紹了項目教學中需要注意的事項,為推廣項目式教學法運用,提供了一些借鑒。
關鍵詞 項目教學 C語言 教學實施 教學成果
1 開設的目的和意義
較之于高等教育而言,高等職業教育無論在目標性還是教學的側重點上,均存在著較大的差異性,后者通過對學生進行培養,畢業后可直接參加具體的工作,因其已經熟練的掌握了操作技能和技巧,所以能夠獨立完成工作任務。根據高職院校學生就業指導意見,當前高等職業教育教學應面向生產、管理以及建設和服務等一線行業,為這些部門和工作崗位輸送人才,以下得去、用得上和留得住為基本原則,培養實踐能力較強具有較好的職業道德的高技能人才。因此,要加強實踐性課程教學,對保證人才培養質量顯得尤為重要。
我院為了貫徹這種精神,立足區域經濟發展現實情況,對專業課程進行了靈活的調整,其中以就業為主要導向,不斷加快應用課程設計與創新。就當前我院工作實際情況來看,以由淺入深和逐漸深化為主要教學規律,并在此基礎上構建了教學三層次、四環節之實踐課程系統。實踐教學的三個層次是:基本技能,專業拓展,綜合創新;四個環節是:實驗培訓,實驗實訓,設計和課外實踐。
比如,C語言課程,作為信息類專業的基礎課程,程序設計都是在課程教學完成后進行,共有四十個學時,歷時兩周。為學生提供一個動手、動腦、獨立實踐的機會。
2 項目教學法簡介
項目教學法是基于構建主義教學理論的一種教與學的模式。瑞士著名的心理學家皮亞杰認為:知識不是通過教師傳授得到的,而是學生在一定的情境下,借助他人的幫助,利用必要的學習資料,通過意義構建的方式獲得的。美國項目管理專家約翰·賓認為:項目是要在一定時間里,在預算規定的范圍之內需要達到預定質量水平的一項一次性任務。
項目教學法是通過實施一個完整的項目進行教學活動,將學生融入到任務的過程中,讓學生進行主動地學習,自主性地進行知識構建,在課堂教學中把理論與實踐教學有機的結合起來,能充分地發揮學生的創造潛能,提高學生解決實際問題的能力。因此,在實際教學過程中,教師要將需要解決的問題或需要完成的任務以項目的形式交給學生,讓學生在老師的指導下,用工作小組的方式,由學生自己按照實際的工作程序,共同制定計劃,共同或者分工完成整個項目。在項目教學過程中,學習過程稱為人人都參與的實踐過程,注重的不是結果,而是整個項目完成的過程。
對于高等職業院校的技術教育教學而言,項目主要是指生產或者制造有應用價值的具體產品之任務。從技術領域來看,多數小產品、復雜產品等模型制作均可作為具體的項目,比如信息類專業開展網站建設、計算機組裝以及建設局域網項目,電子類專業可開展報警器制作、加點組裝等項目。
3 其基本特征
項目教學法與傳統教學法相比具有較大的差別。主要表現在改變了傳統教學中的三個中心:以教師為中心轉變為以學生為中心;以課本為中心轉變為以項目為中心;以課堂為中心轉變為以實際經驗為中心。項目教學法具有以下的特點:
實踐性:項目源于企業,項目的主題與真實世界是緊密聯系的,由淺入深,選擇的項目具有典型性和使用性;自主性:提供學生根據個人興趣進行選擇的內容和展示的機會,讓學生進行自主的學習,從而有效地促進了其創造力的發展;發展性:長期的項目結合,構成了實現教學目標的認知過程;評價的特殊性:項目性教學更注重的是學生在項目活動中能力的發展過程,評測的內容包括學生參加各項活動的表現,避免了傳統的成績定好壞的弊端。評測可以采用自評、小組評、教師綜合評等方法、教師只有明確并抓住其教學的特點,才能更好地完成教學目標。
4 其在C語言課程設計中的實施
為更好進行課程設計教育教學,在多次實踐基礎上,總結出具體項目實施中主要注意的兩個方面:
其一,教學內容主要事項。前導課因教學課時的影響,所以教師為趕教學進度,對結構體、基本操作以及共用體等知識的介紹不充分,也不夠完善,更談不上輔助實例進行講解。對此,要根據學生對這些知識點的掌握程度,利用5個學時,實施區別式、輔導式的教學。
其二,由于學生對于項目管理的知識較少,針對此種情況,可以采用兩個階段實施補課行動。第一個階段,安排曾經做得比較好的學生進行講解相關經驗;第二階段,為項目實施階段,教師應該針對學生發生的問題,及時給與指導,直到學生弄懂為止。
總之,通過此種教學方法,教師在觀察學生、幫助學生的過程中,既開闊了視野,也提高了專業水平。項目教學法是師生共同完成項目、共同取得進步的好方法。
摘要: C語言課程設計是一門實踐性非常強的課程。本文主要討論了獨立學院C語言課程設計的教學。在教學過程中,針對獨立學院學生的特點,設計了一套行之有效的教學流程。學生在教師指導下全程參與完整的項目開發,教學效果良好。最后結合課程實際情況,分析了教學過程中存在的問題,并提出了相應的解決辦法。
關鍵詞: 課程設計;教學改革;項目教學法;軟件開發
0 引言
獨立學院是我國高等教育辦學體制改革創新的重要成果。為了造就適應企業需求的高素質應用型人才,結合獨立學院學生基礎水平,在獨立學院的教學工作中應加強對學生實踐動手能力的培養。為此,在《C程序設計》理論教學及實驗教學的基礎上,我院針對非計算機專業學生開展了一項實踐教學環節:C語言課程設計。此課程自開設以來,受到學生的廣泛歡迎。在做課程設計的過程中,同學們既融會貫通了C語言基本語法,同時又通過項目實戰切實提高了動手編程、調試程序的能力。對于學生來說,獨立完成一個完整的項目,帶來的成就感和自信心,有利于后續學習的開展。
1 C語言課程設計教學現狀與教學亮點
C語言課程設計開課時間為大一下學期,共計32學時,授課對象為電子科技大學成都學院微電子技術系本、專科生。針對教學對象的差異,分別制定了專科、本科教學大綱,同時在多媒體課件的制作上,講求簡潔、美觀并突出教學重點。
盡管已經學習過C語言,但多數同學在經過一個學期之后,忘記大半,掌握的知識點零碎、構不成系統,所以在進行項目開發之前,必須進行C語言基礎知識的串講。在串講過程中,通過回顧已學內容、演示典型例題,達到溫故知新的效果。這就要求教師精心準備串講上機練習題。題目要有的放矢,同時又與后續項目開發有一定相關。數組、函數、指針、結構體、文件操作,各布置一道綜合練習題目。這樣一步一個腳印地把項目開發之前的技術知識準備工作做好。
1.1 教學過程設計合理 C課程設計整個教學過程如圖1所示,分為準備、開發、匯報三個階段。為了杜絕部分同學對實驗課抱著蒙混過關的僥幸心理,要做好該課程的課前動員工作。課前動員工作主要體現兩個要點:一是敦促C語言基礎知識不扎實的同學重視概念和基礎,因為沒有良好的基礎,急于編程只會導致錯誤百出。二是使同學明確本門課程考核評分標準,端正其學習態度,激發其學習熱情,為后續教學的開展做好準備。自由分組以二至三人一組為宜,每組推選一名基礎好的同學,擔任開發組長。組長帶領組員進行自主選題、開發設計、書寫設計報告、參加答辯等工作。
1.2 題目選擇多樣化 選擇一個難度適中、具有一定的趣味性并與同學生活息息相關的題目是開展課程設計的首要任務。題目太難會嚴重打擊同學的自信心和積極性;題目簡單會導致同學對C語言不夠重視,學不到東西。進過嚴格篩選,仔細比較,同時結合《C程序設計》課堂教學經驗,歸納出適合學生現有水平的題目主要有兩大類:一是各種管理系統,比如學生成績管理系統、運動會成績管理系統、圖書管理系統等;二是各類小游戲,比如貪吃蛇游戲、搬箱子游戲、掃雷游戲等。允許學生根據自己的興趣愛好自擬題目,但需經過教師審查通過。
教師同時提供多個題目并簡單講解每個題目的設計需求、難度、涉及到的知識點以及完成后的代碼量等,供學生自由選擇。題目多樣性、難度階梯性帶來的效果有兩方面:一方面學生能選到自己感興趣,適合自己水平的題目;另一方面可以最大程度地避免互相抄襲等情況的發生。
考慮到獨立學院的學生總的來說編程基礎不夠扎實,為了讓同學盡快入門,明確到底要做什么,在需求分析階段,教師需要當堂分別操作一個管理系統的程序以及一個小游戲程序,演示其功能。這樣一來學生可以對項目開發建立起直觀印象,同時對用C語言開發界面做到心里有數。
1.3 引導為主 課程設計過程中,學生的角色定位為初級開發人員。教師做為指導者對其具體開發過程進行監督指導。很多同學一遇到問題,就特別依賴老師,希望老師幫忙調試或者直接給出解決方法。針對同學提問,教師應采取引導的方式,啟發同學獨立思考,而不直接給出問題的答案。同時鼓勵學生網上查閱相關文檔或者帖子,通過網絡解決問題。一段時間后,如果該同學還是不能自行解決,教師再給出解決方法。這樣做不但可以提高同學獨立分析問題、自主解決問題的能力,還可以鍛煉其與項目組其他同學合作交流并獲取新知識的能力。
對于同學提出的奇思妙想,教師應予熱情的鼓勵。同學在開發過程中,能夠有自己的想法是一件好事,教師可以和同學探討其想法,并盡可能地幫助其付諸實踐。對于部分好學的同學,教師可以通過介紹參考教材、推薦開發網站等,讓這一部分同學依照自己的興趣自學。
1.4 關注教學細節 學生水平參差不齊這一特點在獨立學院三本學生中體現的特別明顯,所以在教學過程中,不能搞“一刀切”。根據筆者的教學經驗,同學中兩級分化情形嚴重,呈“啞鈴型”結構。針對這一特點,結合非計算機專業對C語言能力的要求,在教學目標的制定上,需要提高辨識度,按照“高、中、低”區分學生水平,對學生做階梯型的要求。
作為一門實驗上機課程,尤其需要保證教學時間的連貫性。時間太短,學生剛有思路就下課了,導致半途而廢;時間太長,學生長期呆在實驗室上一門課程導致疲勞,降低學習效率。經過探索,以四節課為一大節課最為適宜。
1.5 考核全面 合理的評分機制有利于提高學生的學習積極性。作為注重動手能力的實踐實驗課,C語言課程設計的考核方法自然不能沿用理論課的考核方式。
獨立學院的培養方向是應用型人才,要求學生將來進入企業能夠快速融入項目團隊,這就需要全面考核同學的動手能力、工程概念以及人品素質。C課程設計的考核兼顧了團隊與個人表現,關注動手能力與基礎知識的考察。本門課程總分100分,各項具體分值分配如圖2所示。
課堂表現包括考勤、開發過程中的認真程度、團隊合作精神等方面。實驗報告寫作內容主要包括:需求分析、系統設計框圖、關鍵算法實現等。通過書寫實驗報告,提高學生書面表達技巧,鍛煉其書寫開發文檔的能力。
在課程設計的最后,我們安排了項目答辯。答辯環節考核學生語言表達能力、臨場應變能力以及對相關知識的理解,為同學提供了一個展示自我的舞臺。答辯過程分為三個環節:演示講解環節、學生提問環節、教師提問環節,每個環節各占10分。在演示講解環節中,首先由項目組長操作演示可執行程序,并介紹各個組員的分工、開發過程中遇到的問題以及解決辦法、程序的創新點等。在學生提問環節和教師提問環節中,大家可以對自己感興趣的問題進行提問,教師在此過程中需要作適當引導。最后綜合各個環節得分,當場給出每組答辯分數。在答辯結束后,教師應對表現良好的團隊予以表揚和肯定。最后,要求同學上交實驗報告冊。
2 課程后期建設目標及思考
為了在實踐中提高學生的綜合素質,達到C課程設計“動手、動腦、動嘴、動筆”的教學目標,在教學內容的安排上尤其要突出以下幾點:
2.1 在教學過程中有意識地向學生灌輸軟件工程的思想、項目管理的相關知識。
2.2 在教學中應注意培養學生養成良好的編程習慣。按照國內知名公司的編程規范來做要求。
2.3 注重培養學生自學能力和獨立思考能力以及團隊合作精神。
2.4 教學時間安排在實踐專周,這樣學生有整天的時間投入到項目開發過程中去,從而保證了教學效果的連續性。
3 總結
C課程設計從完成一個小項目出發,全面增強了學生的動手能力,使學生在從事C程序開發時,能系統地考慮問題,合理安排項目進度,熟悉開發過程,能有效地與他人合作和交往,同時培養了其工作責任心,為以后走上工作崗位打下了初步的基礎。
在C語言課程設計教學過程中,充分認識到要讓作為初學者的學生,在短時間內掌握并熟練使用C語言獨立完成項目,較難做到。作為教師,一定要認真備課,合理安排教學內容,提供精簡的練習案例。同時在教學過程中以引導為主,激發學生的潛能,讓學生自主學習。實踐證明,課程設計結課后,絕大多數同學都對C語言編程產生了濃厚的興趣。
摘要: 本文提出了成果為本的教學改革實踐,通過研究課程的教學目標,轉換為學生的學習目標,根據學生的學習目標列出可量化可考核的學習成果形式,根據學習成果設計教學內容和教學活動,制定與學習成果相關的考核評價體系,根據考核結果改進后續教學,形成教學中的良性循環。
關鍵詞: 成果為本;C語言;綜合課程設計;教學改革
0 引言
《C語言綜合課程設計》是計算機相關專業的一門專業基礎課,實踐性較強,是學生在學習完《C語言程序設計基礎》課程后的一次全面綜合項目訓練。這門課程的教學目標是讓學生掌握基于結構化的小型項目開發流程,其中包括功能分析、模塊劃分、算法設計、編碼實現;掌握課程設計報告的撰寫,用軟件工程的思想來描述項目的開發過程。為了加深學生對C語言知識的綜合運用,切實提高學生的程序編寫能力,對《C語言綜合課程設計》課程教學方法進行了改革。
1 教學中存在的問題
該課程教學效果的好壞直接影響后續專業課程的學習,提高教學效果,增強學生的學習興趣,是我們這次教學改革的目標。在本校該課程的以往教學中,存在以下問題:①課程人數較多,涉及計算機科學與技術、信息管理與信息系統、軟件工程、網絡工程四個專業的500多名學生,學生程序設計基礎差別較大,有針對性的教學比較困難;② 有些學生對課程重視程度不夠,不明確課程學習目標;③周課時為2,課程內容較多,深入講解困難;④采用案例驅動法教學,課內主要進行案例分析和問題討論,大量的編碼任務要求學生在課外完成,這對學生課外學習的主動性要求較高,同時老師的課外輔導壓力也很大;⑤考核方式采用大作業方式,不能很好地反映學生理論和實踐兩方面的學習效果。
2 基于成果為本的教學改革探討
成果為本的教育是“以人人都能學會為前提,以學生為中心、成果為導向而設計的”教育模式,強調能力培養和能力訓練。該教學理念是20世紀90年代開始興起的一種教育模式,該教育理念最早在美國、英國、澳大利亞、新西蘭等地實施并取得了較好的反饋。近年來香港教育資助委員會在香港的高等院校中逐步開展成果為本的教學改革,其中香港理工大學早在2004年初已開始將成果為本的教學理念納入該校的課程教學中,在教學及評估方面取得了顯著的成績。在這種教育理念下,教師不僅要能運用現有的教育水平和科研要求實施教學,而且要培養學生應對未來、適應未來的能力。
本次根據實際教學中存在的問題,將成果為本的教育理念應用到《C語言綜合課程設計》的教學中,提高教學效果。教學改革的思路為:根據該課程的教學大綱,明確課程教學目標,并轉換為學生的學習目標,根據學生的學習目標列出可量化可考核的學習成果形式,根據學習成果設計教學內容和教學活動,制定與學習成果相關的考核評價體系,經考核明確課程教學與課程目標之間的差距,為后續教學提供參考,使課程目標與教學實施過程形成了良性的閉環控制系統。
3 課程教學實施
在教學目標上,以適應應用型本科教材改革的需要為目標,充分體現專業特色,有所創新和突破。走訪IT公司和企業了解他們對人才的需求規格,明確教學目標中的知識目標、素質目標和能力目標。修訂教學大綱,并轉換為學生的學習目標,建立ASK模型(Attitude素質;Skill能力;Knowledge知識)。
課程學習目標是指學生通過該課程的學習后,能夠做什么,具有什么樣的能力和技能,教師在制定學習成果目標時應當考慮該課程需要傳授哪些知識給學生,學生應達到什么樣的理解程度以及如何體現學生是否理解這些知識。George Brown學院提出的觀點認為課程學習目標的制定需要保證成果是可衡量評估的,便于在教學過程中檢查成果的完成情況,成果應當與學生的實際能力有關,并具有一定的社會意義,成果目標的數量以4~5個為宜,成果過多會導致學生的專注度降低,影響學習效果。制定與學習目標相匹配的成果形式和教學方法,形成《C語言綜合課程設計》課程“基于成果為本的教學設計”方案。(表1)
教學實施中,根據課程學習目標,設計三個教學項目,分別為“手機通訊錄管理系統”,考查結構體、指針、文件的操作,“家庭財務管理系統”,考查鏈表、指針、文件的操作,“時鐘的設計”,考查圖像界面設計。由3位學生組成開發小組針對不同項目,輪值項目負責人,明確分工、模擬項目開發流程,依據開發環節進行任務分解,并在各個開發環節撰寫開發文檔,最終形成課程設計報告。課堂以學生研討為主,教師講解為輔;課下以學生獨立編碼為主,教師引導為輔。項目完成后,學生演示項目進行答辯,展示項目
成果。
4 總結
基于成果為本的教學模式可以幫助學生清晰明確地定義課程的學習目標和學完課程后需要掌握的知識和能力。在《C語言綜合課程設計》教學改革中,明確了學生學習目標和學習成果形式,將學習目標、學習成果和考核形成進行統一。教學中采用項目教學法等多種教學方法,完成配套教案、講稿、課程多媒體教學文件(PPT)、網絡課程等教學資源建設,提高學生學習興趣和增強學生的就業能力。
摘 要: 針對C語言實踐教學中存在的問題,提出在C語言課程設計的教學中采用項目驅動的分組教學模式。融合軟件工程思想,從項目設計、分組劃分、模塊化思想應用、編程思想訓練、測試、考核方式等多個方面改革實踐教學環節,因材施教,使得學生在解決實際問題的過程中,通過分工協作,提高自主學習能力,培養起團隊合作精神,從而提高教學效果和教育質量。
關鍵詞: C語言課程設計; 項目驅動; 分組教學; 模塊化思想; 協作
0 引言
當今社會,隨著信息技術的高速發展,各種程序設計語言蓬勃發展,如C、C++、JAVA、C#等。在這些語言中,C語言是各高等院校的計算機及相關專業的一門核心基礎課程,它的學習效果會極大程度影響學生后續相關課程,如數據結構、操作系統、算法分析以及其他高級語言的學習。
作為一種實踐性很強的程序設計語言,C語言課程的教學一般采用理論教學結合上機實踐的模式,理論教學以講授語法和基本算法為主,上機實踐則主要練習簡單程序的編寫,通常以驗證性實驗為主,以掌握、鞏固基礎的語法為目的。從教學效果來看,學生雖然掌握了不少語法知識,但在面對實際問題時,往往不能靈活應用。為了進一步拓展學生的實踐編程能力,我們學院繼兩個學期的C語言教學后開設了“C語言課程設計”課程,該課程以設計性和綜合性實驗為主,重點培養和鍛煉學生獨立分析問題,解決實際問題能力。根據這一教學目標,我們結合日常教學,針對實踐教學中存在的不足,開展項目驅動的分組教學方法,使學生形成自主和協作型的學習模式。
1 教學現狀
C語言是一種面向過程的結構化程序設計語言,具有數據類型較多、表達式豐富、語法結構復雜、語法規則繁多等特點,其授課對象往往又是第一次接觸程序設計語言的低年級學生,這些都給學生學習和教師教學帶來了難度。通過對學生進行教學效果調查,發現在“理論+實驗”的教學模式中,由于課時限制等各種因素,實際教學常存在著如下問題。
⑴ 實驗訓練以知識點訓練為主,與實際應用存在脫節。
在理論課后的上機練習,通常是針對特定語法設計,形式上采用練習書上的例子、驗證某個語法或者實現一些簡單的相關算法,驗證性實驗占了多數。這種訓練模式雖然能夠加深學生對各種語法細節的認識,但同時導致的問題是,學生容易孤立地去看待各章節的語法,割裂了各知識之間的聯系,在編程時以模仿改寫書上的程序為主,欠缺工程型知識,處于被動灌輸的學習狀態,常常會覺得語法知識點繁瑣、內容枯燥,很難調動積極性,當面對實際工程問題時,程序規模一大,就束手無策,無法有機地綜合應用所學知識去解決問題。
⑵ 沒有形成系統化的分析過程。
由于教學和教材均側重于對語法進行講授和剖析,未強調分析及測試的重要性,也沒有將軟件工程的思想融合在實踐教學中,因此,長久以來,學生養成一接觸題目就馬上開始編寫代碼的習慣,并且,運行時往往僅按照預先設定的正確的輸入數據,去驗證自己的所編的程序是否正確。
⑶ 忽略算法邏輯思維能力的培養。
從學習效果來看,學生常存在著兩種誤區,一種是將參與和獲得計算機等級考試證書作為學習目的,這就導致他們習慣于程序填空題形式的編程方式,獨立編程能力欠缺;一種是對C語言中的指針、遞歸問題存在畏難情緒,又認為就業時可以選擇其他語言工具如Java來避免這些難點,沒有認識到指針和遞歸的真正價值在于學習它們過程中得到的思維深度[1],忽略了推理能力、抽象思考能力方面的培養。
⑷ 實踐操作能力不強。
學生的實驗操作能力不強主要表現在對程序運行中一些常見編譯問題無法很快做出反應,不會依據提示信息去判斷發生錯誤的原因,對一些運行問題更是束手無策,通常一有問題產生,就轉向尋找配套的實驗指導書中所提供的正確答案,或者依賴教師指出問題所在,幫忙改正錯誤。
2 項目驅動的分組教學方法的具體實施
建構主義學習理論認為,個體的認知發展與學習過程密切相關,知識獲取是以學習者為中心,利用“情境”、“協作”、“會話”等學習要素,通過意義建構的方式而獲得。針對C語言課程設計這一門實踐性非常強的課程,我們采用項目驅動的分組教學方法,在建構主義學習理論基礎上進行教學設計,以學生為中心,融合軟件工程思想,以培養學生的程序設計能力、創新能力、邏輯思維能力和協作精神為主線,通過項目任務引導他們主動學習,去深入理解軟件設計思想,并加深對重要知識點的理解。為了將課內實踐和課外自學有機結合起來,我們將15個學時的上機實踐分為5次,集中安排在5天內,每次上機后留充足時間,要求學生去查閱資料,提升獲取信息、解讀信息的能力。整個教學過程中,需要在多個教學環節注意改革和創新。
2.1 項目設計
項目的提出是能否調動學生學習積極性的關鍵。目前隨著信息化建設的深入,軟件在各個行業都獲得了廣泛應用,其實際應用領域非常廣泛。課程設計應該提供一個良好的學習“情境”,要結合教學目標,來模擬演練實際軟件開發過程。項目的設計需要遵循以下幾點:①選擇學生比較熟悉的領域,貼近學生生活和學習方面的應用,避免選擇需要較強專業背景、業務邏輯復雜的應用,例如可以選擇學生選課、書籍管理、宿舍管理等,而盡量不要去選擇企業人事管理之類的應用。這樣可以方便學生理解或完整需求,激發他們用程序去解決現實生活問題的興趣。②功能上要有層次性,可劃分為一般性要求和可拓展性要求,一般性要求指出必須實現的功能,可拓展性要求則指出可以擴展的功能,引導學生去探索和想象,可以方便開展梯隊型教學。③從項目的編碼實現考慮,要能涵蓋C語言中的結構體或聯合體等復雜數據類型,體現函數和指針這條主線,以促進學生去綜合運用和深入理解這些重要的知識點。
2.2 分組劃分
一個軟件的開發僅依靠個人力量往往是無法實現的。軟件生命周期的各個階段需要軟件小組開發人員協作完成[2],因此,在課程設計教學中,我們采用分組教學模式來培養學生的團隊合作意識和團隊精神,來充分體現合作與競爭、分層教學與因材施教[3],并且還可以通過幫帶方式和組內討論消化掉一部分問題。分組是否合理、有效,直接影響協作模式能否取得良好的教學效果。在C語言課程設計實踐中,我們按照任務量安排人數,學生分為以3-5人一組,按照組內搭配合理,組件平衡原則分配,在分組時充分考慮到學生的個體能力差異,使學生能在交流合作過程中取長補短。分組觀點認為組內成員之間的合作關系可以有“頭腦風暴”式、模擬課題式、同伴互助式、角色扮演式和組合式[4]。這里,我們可以結合軟件開發的分工特點,將角色扮演應用到課程設計的分組中,由小組組長擔當開發經理角色,其他人員針對其特長分別擔當需求分析師、架構設計師、開發人員、測試人員等角色,根據開發階段的不同,各成員可以扮演不同類型的角色。
2.3 培養學生用模塊化思想對實際問題進行分析和設計
結構化方法強調以模塊為中心,采用模塊化、自頂向下、逐步求精設計過程。項目驅動的教學要培養學生用模塊化思想思考復雜問題,即將程序劃分成獨立命名且可獨立訪問的模塊,最后裝配集成模塊完成指定的功能。指導過程中,不僅需要糾正學生一接觸題目馬上編碼的習慣,而且需要糾正學生在main方法中編寫所有代碼的習慣,這種方式會使得整個函數變得龐雜,代碼冗余大,不利于分工協作,也給閱讀和維護帶來很大的困難。當學生在程序分解主函數和若干個其他函數時,發現常存在著隨意分解、隨心所欲定義函數的現象,針對這一情況,教師可以先以一個項目為例,如成績管理系統,演示模塊的分解過程,說明內聚性和耦合性要求[5]。在實際項目應用時,要求學生按功能分解,模塊內的函數做到功能盡量單一,留出接口供其他模塊調用,一個模塊對應一個文件,便于分工協作。各小組在完成按模塊劃分的軟件體系結構圖后,才被允許進入下一個詳細設計編碼階段。
2.4 強化編程思想的訓練,加深對重要知識點的理解
算法是程序設計的靈魂,教學中需要成功訓練好學生的頭腦,使他們變得足夠熟練、敏捷和靈活,需要訓練學生在多個抽象層次上同時思考問題[1]。因此,實踐過程中,要求學生熟練應用程序流程圖或偽代碼等工具設計算法,在組內展開討論,比較不同算法實現方案的優劣,以及如何在完成程序的功能基礎上,改善程序結構,優化算法,進一步提高運行效率和空間利用率。
對C語言而言,訓練學生的編程思想,離不開指針、函數參數傳遞這些重要概念,是否真正理解這些概念也與能否成為一個優秀程序員直接相關。在學生編碼時,可幫助他們建立內存模型,通過跟蹤每條語句的執行情況,感受不同數據類型在內存中所占用的空間,直觀地觀察內存布局變化、變量的生命周期、變量狀態的變化等,去深入理解這些概念尤其是指針的本質。
程序設計的另一目的是要培養學生的操作能力,其中很重要的一點就是提高調試能力。調試的方便與否與程序書寫風格密切相關,學生通常不注意代碼的規范化,出現沒有層次縮進,標記符隨意命名、詞不達意,也沒有必要的注釋等現象,這些給查錯和閱讀帶來了很大的不便,不利于分組模式下的協作開發和維護,因此,實踐教學時應該培養學生注意良好程序風格。此外,教學時還需糾正部分學生寫代碼一寫到底的習慣,讓學生認識到程序的編寫是一個調試-修改-調試的反復迭代過程,要在多次錯誤或失敗中獲取調試經驗。在學生出現錯誤時,要引導學生根據錯誤和警告信息,分析辨別是語法錯誤還是邏輯錯誤,并鼓勵學生使用調試工具,應用斷點跟蹤和對分查找等調試方法,去主動地發現和解決問題。
測試在軟件開發中占重要地位,軟件測試的工作量往往占軟件開發總工作量的40%以上。從學生實踐情況調查來看,測試往往是初學C語言的學生特別容易忽略的,普遍出現一些諸如不重視人機交互界面設計,沒有輸入提示或出錯提示信息,僅使用在預定范圍內、滿足預定格式要求的正確數據進行測試等問題。項目驅動的教學尤其應該注重培養學生的測試意識,指導學生學會設計簡單的有效測試用例和無效測試用例,并開展組內測試和組間測試,以提高測試效率和質量。
2.5 考核方式改革
對不容易理解的常量、變量和語句有注釋\&5%\&函數、變量取名較規范易懂\&5%\&函數功能是否滿足功能內聚\&15%\&調試手段\&會單步運行到任何一個語句,查看變量值\&5%\&會斷點調試\&5%\&總結報告\&用流程圖或偽代碼描述一個函數的算法\&10%\&有小組分工情況說明和各自的經驗總結\&5%\&語言簡練,條理清楚,圖表規范,附程序清單\&10%\&]
分組形式的課程設計需采用彈性考核機制,個人考核、組內考核和教師考核有機結合方式。課程設計考核成績=個人自我評價(15%)+組內評價(35%)+教師評價(50%)。自我評價是促進學生反思的一種有效手段,組內評價可以觀察學生組內交流協調時有沒有突出表現,而為避免少數學生抄襲實驗報告,教師評價采用答辯形式,考核學生的實際操作能力、對數據結構設計和算法的理解程度,以及功能和算法上的應用亮點。考核的具體內容和評分標準可以多元化,比如對一個用鏈表實現圖書信息管理系統的項目,可以按表1來指定具體考核標準。
3 結束語
本學院的C語言課程設計教學實踐表明,通過項目驅動的分組教學法的實施,能充分調動學生的學習積極性,學生的編程邏輯性和實踐能力都得到了明顯提高。在模仿實際開發環境過程中,學生對項目開展的整個流程和各環節的具體要求程有了切實了解,積累了一定的項目開發經驗,培養起了團隊協作能力。為了能更好地提高學生實踐能力,為他們將來從事軟件開發工作奠定扎實基礎,我們還需要在今后的實踐教學中繼續開拓和探索,以期達到更好的實踐效果。