非計算機專業C語言教學模式分析
目前國內各個高校大多在非計算機專業開設了計算機語言課程,C語言作為一種廣泛流行的結構化程序設計語言,成為了大多數高校非計算機專業計算機語言課程的教學語言.下面是小編搜集整理的相關內容的論文,歡迎大家閱讀參考。
摘要:針對目前為非計算機專業開設的C語言程序設計課程教學現狀,提出一種與專業相結合的S&C(Specialized&ComputationalThinking)式C語言程序設計教學模式,在培養學生計算思維的同時,為后續專業課程的學習打下良好基礎。
關鍵詞:C語言;專業相結合;計算思維
一、引言
目前很多高校都在推行為非計算機專業開設的程序設計類課程改革,研究如何全面提高教學效果。將計算思維融入程序設計是當前課程教學的研究熱點[1];很多教育專家和一線教師都提出了以培養計算思維為目標的程序設計類課程教學改革方案[2,3]。C語言程序設計屬于此類課程,在注重培養計算思維的同時,更重要的是將教學內容與學生本專業相結合。因此,提出一種融入計算思維、與專業相結合(以下簡稱S&C)的C語言程序設計教學模式。
二、計算思維的專業化培養
計算思維是信息時代中的每個人都應當具備的一種思維方式,培養計算思維能力已成為計算機基礎教學的核心任務[4]。程序設計類課程屬于計算機基礎課程體系,但是學習的內容和要求是相對的,對不同的人群應該有不同的要求[5]。對非計算機專業學生而言,程序設計語言更像是一個工具,是其在從事本專業工作中可以使用的一個工具。因此,任課教師應考慮到專業需求,將計算思維與專業應用進行融合,讓學生感受到利用計算思維求解問題過程中的魅力[4]。計算思維教育的目的是培養一種思維習慣,一種像計算機科學家思考問題那樣的習慣[6],雖然計算本身也是一門學科,但是其具有促進其他學科發展的作用,不應該將計算思維局限于此,而是應用于各專業領域。
三、C語言程序設計與專業相結合
為非計算機專業開設的C語言程序設計課程,授課深度和廣度有別于計算機專業,很多高校將它作為一門通識課程,使用同一個教學大綱,難以與專業課程緊密銜接。實際上,隨著計算機的普及,程序設計語言的使用不再是IT人的專利,很多行業都會涉及到軟件開發、編寫應用程序。如單片機等智能芯片的開發語言就是以C語言為主[7],學生程序設計水平高低可能直接影響他們的就業和職業發展[8]。因此,有高校教師提出自動化專業的C語言程序設計課程改由自動化教研室承擔[9]。但這種做法是否有違開設C語言程序設計課程的初衷?C語言是程序設計的入門語言,最重要的是建立C語言與專業的關聯,培養一種獨特的處理問題的思維方式,更適合由計算機專業教師授課,在后續專業課程中再由專業課教師進一步引導學生的應用實踐。但教學內容要向專業靠攏,能夠認識到專業課程和C語言之間的聯系點在哪里,并由此制定出相對獨立的教學大綱和專業化教學方案。
四、S&C式C語言教學模式
(一)課程設置
雖然學習C語言不需要什么必須的先修課程,但經過授課教師分析[8],與計算機專業學生不同,非計算機專業學生只是孤立地學習C語言,建議將C語言與相關課程配套開設,以自動化專業為例,在同一學期內,先開設C語言程序設計,在課程中后期再開設單片機課程,這樣既可以加強學生理論聯系實際的能力,又使學生對C語言的學習目的和從業方向更加明確。
(二)教學目標和教學內容
C語言程序設計的教學目標應體現基礎性與專業性;A性是針對后續課程來講的,學生通過該門課程的學習掌握一定的算法和常用子程序,學會用C語言編寫程序,為后續課程打下堅實的基礎;專業性是指學生在掌握C語言的各種語法與程序結構的基礎上,不僅能夠根據實際問題設計算法、編寫出解決問題的程序,還可以運用計算思維解決生活中或專業領域的問題。計算思維主要不是靠講課得來的,而是在學習和應用計算機過程中培養的[5],但理論依然是實踐的基礎。因此,應將思維訓練融入到教學內容中,并將計算思維具體化為對以下幾項能力的培養。
1.抽象。從本質上講,程序設計語言是對人類問題求解過程的抽象,例如,數據與數據類型、表達式、流程控制、函數等都是數據抽象、計算、邏輯推理以及問題約簡等人類問題求解思維方法的物化[10]。使用C語言進行程序設計的過程就是利用計算的手段求解問題的過程,這一過程中對問題定義和形式化,以及建立問題的邏輯模型就是對問題的抽象過程,而抽象是計算思維的基本方法。
2.多樣性思維。C語言中變量的使用是編程的基礎,也是最基本的概念。C語言提供了多種數據類型,如整型、浮點型、字符型、數組、指針、結構體及枚舉型等。在求解實際問題時,會涉及到各種各樣的數據,如整數、小數、字符,還有一些復雜的對象,如學生個人信息、考試成績等,為處理這些不同類型的數據,除了要分析數據的對象特征,還要了解各種數據類型之間的差異及其使用方法,通過大量練習掌握并靈活應用這些數據類型,這對于訓練學生多樣性思維有極大幫助。
3.問題分解。C語言是一門模塊化程序設計語言,在求解一個復雜問題時,一般采用逐步分解、分而治之的方法,即將一個大問題分解成若干相對較易求解的小問題,再分別進行求解。C語言的函數就是程序的基本組成單位,在編寫一個復雜程序時,將整個程序的功能劃分為若干功能較為單一的程序模塊,即用函數實現每個單一功能,然后再將所有函數像搭積木一般,組合起來。函數有其獨立性,即要保證高內聚,低耦合;但卻不是孤立的,使學生理解調用函數和被調用函數的相關知識和二者之間的相關性。
4.算法。算法是解決問題的方法和求解問題的步驟。解決同一問題會有不同算法,算法設計是C語言程序設計的核心。引導學生學會利用已有知識,學會從多個角度分析問題,采用不同的類型、結構都能解決問題;同時,引導學生進一步分析各算法的差異,不僅可以鞏固知識點,還能加深學生對不同數據類型、程序結構化的認識。在教學內容中設置一些與專業應用相關的案例,增加趣味性的同時,激發學生的學習興趣,增強與本專業的聯系。
5.遞歸。遞歸就是用自身定義自身的方法。C語言允許使用遞歸,以應用遞歸求解的問題為例,使學生理解遞歸的工作原理。例如,利用公式n!=n×(n-1)!求一個自然數的階乘,可以用以下函數進行計算。intfact(intn){if(n<=1)return1;elsereturnn*fact(n-1);}跟蹤i=fact(3)這條語句的執行過程,從中了解遞歸函數逐層調用和展開的過程。
6.程序。程序是為實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合,在系統的IPO模型中,程序是算法的實現。C語言以順序結構、選擇結構和循環結構作為基本的程序結構。學生在求解問題時選取合適的.程序結構,練習使用相應結構的語句,訓練其結構化思維;編程過程中,為了實現程序的整體性功能,要考慮如何協調各類函數,從而強化一體性思維;任何程序,無論是簡單的還是復雜的,都按照一定秩序有序執行,為解決不同問題要采用不同要素、結構組成程序,這可以強化學生的有序性思維。7.動態性思維。C語言中很多知識點的運用都體現了動態思維。例如,根據計算對象的類型使用不同類型的變量,在多種類型數值進行混合運算時,其結果又能根據精度要求動態地向高精度類型轉換;循環結構中,循環變量值的變化是程序動態性的最佳體現,在單步調試時,能夠清楚地觀察到循環變量及相關變量值的每一步變化;在函數定義中形參的設定也是訓練動態性思維的重要知識點,每次調用函數時,函數所接收到的實參都是不同的,只有具有動態性思維,才能真正理解函數實參和形參的概念。
(3)教學方法
在課程教學中,教師應具有不同的角色,課程前期,教師是講授者、主導者,以講授法為主,通過對比記憶等方法幫助學生接受C語言各種定義的方式和語法結構;課程中后期,教師是協助者、引導者,采用翻轉課堂教學法,讓學生成為課堂主體。教師應設計好課前任務,及時獲得反饋以調整課上活動;課上進行分組討論和以專業性案例為主的任務拓展,引導學生舉一反三,研究規律,掌握方法,讓學生認識到C語言程序設計與專業學科的密切關系。翻轉課堂的有效實施需要一個過程,既是學生接受、適應和主動參與的過程,也是教師根據不同課程班逐步調整實施方案的過程。教學方法的有效性以學生的學習自主性為前提,而激發學生的學習動機似乎一直是教師與學生之間的較力。C語言與專業相結合可以在一定程度上提高學生學習興趣,因為大多數學生是依據自身興趣選擇專業的,但這還不夠。依據ARCS模型,增強學習者動機的四個要素:Attention、Relevance、Confidence和Sat-isfaction。在教學開始階段,引入一個C語言開發的專業案例吸引學生注意,激發學生想進一步探究的好奇心;進而建立C語言與專業學科的關聯,使學生清楚教學目標和學習內容的價值;在課前任務中布置一些較簡單的任務,以此增強學生的學習信心,課堂上進行任務拓展時提供一些有些難度而學生又能解決的問題,讓他們感覺到自己的能力“非凡”,最后讓學生明確自己取得的成果是自己具有能力并付出努力的成果;在實踐環節布置的項目任務為學生提供了在一種真實或模擬的情境中運用知識的機會,感受到學習的價值、學習的快樂,從中獲得滿足;對學生的學習結果提供反饋,如對課堂表現好的學生給予口頭表揚,維持后續的學習動機,面對全班公布考核方式的評分標準,讓學生感受到教師評價的公平性。
(4)實踐環節
為了鼓勵學生積極進行實踐,應該不斷加強C語言實驗平臺建設,在校內使用OJ(OnlineJudge)系統[11]。但要使OJ系統更好地發揮效用,教師必須對題目進行正確描述和引導,以及對測試用例考慮充分,增加與專業聯系密切的實驗內容,減少驗證性實驗內容;布置合作式項目任務,并以此作為大學生研究性學習和創新性項目,訓練學生在實際工作中協調、合作和創造能力。學生還可以利用OJ系統進行階段性測試,促進自主性學習。
(5)考核方式
課程的考核方式決定著教師如何教這門課,也決定著學生如何學習。目前C語言程序設計課程的考核方式為“平時表現+期末考試”的形式,期末考試采用無紙化上機考試,是評定學生成績的主要方面,排除了考試各環節中人為因素的影響。試題庫涵蓋教學大綱規定的所有知識點,難度適宜、重點突出。但全面考核學生的程序設計能力不能僅依賴于期末考試,應重視平時課堂和實踐環節的考核,采用作業自評和同伴互評的評分機制。自評是學生比對評分標準自查;同伴互評是學生通過相互批改作業相互學習,是形成性評價的有效手段,能夠幫助學生更積極主動地參與課程學習,增加了再次回顧知識、溫習知識和總結自身所得的機會,促進更深層次的思考。為了使這一評分機制能有效開展,教師要制定一個好的評分標準,不同的“評委”依據這個評分標準對同一個作業進行評判應得出同樣的判斷;考慮到同伴互評中可能出現的問題,如學生不遵照評分標準打分等,做出相應的對策,使學生能夠自覺以評分標準為指導,高質量地完成作業,然后根據評語對照評分標準修改完善自己的作業。
五、結語
應用型大學非計算機專業的計算機應用教育,應以能力為導向,使學生具備在各個領域應用計算機的能力。作為應用性較強的專業基礎課,C語言程序設計能否學好關乎到后期專業課程學習的效果。根據專業特點,采取與專業相結合的C語言教學模式,培養學生將計算機處理問題的思維方式運用于本專業領域的能力,為各學科問題求解帶來一種思想、策略、方法和手段上的變化,促進各學科的突破性發展。
參考文獻:
[1]劉軍.面向計算思維的程序設計教學實踐[J].計算機教育,2015,(14):116-118.
[2]喬淑云,黃剛.程序設計類教學改革與計算思維之培養[J].計算機教育,2012,(19):17-19,23.
[3]聶蘭順,戰德臣,宋巧紅.計算思維的教學內容與方法研究———以“算法”和“系統”兩種問題求解的計算思維為例[J].工業和信息化教育,2013,(6):21-27.
[4]馮博琴.對于計算思維能力培養“落地”問題的探討[J].中國大學教學,2012,(9):6-9.
[5]譚浩強.研究計算思維,堅持面向應用[J].計算機教育,2012,(21):45-49,56.
[6]陳國良.計算思維的表述體系[J].中國大學教學,2013,(12):22-26.
[7]盧振利.應用型本科院校自動化相關專業中51單片機項目C語言六步編程法教學研究[J].電工技術•理論與實踐,2015,(5):228-229.
[8]俞敏.對自動化專業C語言教學的思考[J].高校教育研究,2009,(3):135,137.
[9]陳麗敏,邵長友.基于自動化專業C語言課程教學改革的研究[J].中國電力教育,2013,(31):76,90.
[10]郝興偉.大學計算機———計算思維的視角[M].第3版.北京:高等教育出版社,2014.
[11]廖雪花,厲蘭潔,唐思娩.基于OnlineJudge的C語言程序設計實驗課教學改革研究[J].計算機教育,2016,(6):130-133.
【非計算機專業C語言教學模式分析】相關文章: