前言:想要寫出一篇引人入勝的文章?我們特意為您整理了高校計算機程序設計課程介紹及啟示范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:以美國德州農工大學計算機系開設的兩門程序設計課程為例,分別介紹程序設計基礎課程CSCE121和程序設計高級課程CSCE314的課程目標、課程安排和評分機制,分析課堂講課、課后作業(yè)、上機實驗、課后答疑、教學資源等各個環(huán)節(jié)的教學特色,總結在培養(yǎng)學生計算思維、不同編程語言對比教學等方面對我國高校程序設計課程的教學啟示。
關鍵詞:美國高校;程序設計;計算思維;對比教學
0引言
程序設計課程是高校計算機相關專業(yè)的重要課程,中國高校計算機專業(yè)通常會以C語言、C++語言或者Java語言作為載體,為學生講授程序設計思想和奠定程序設計技術基礎。美國在計算機領域取得的研究成果一直處于領先地位,這無疑離不開美國高校優(yōu)質的計算機教育水平。不少學者利用在美國訪學等機會深入了解美國高校的教學機制,學習其先進的教學理念,給出不少啟示,關注的課程有軟件工程[1]、計算機科學原理[2]、電路與電子技術[3]、操作系統(tǒng)[4]、程序設計[5-6]等。文獻[5]和文獻[6]分別介紹美國羅格斯大學和斯坦福大學程序設計課程的教學體系,不同大學的教學體系設置也各不相同。筆者利用在美國德州農工大學訪學一年的機會,通過旁聽課程以及與授課人員交流,對該校計算機程序設計課程的教學進行調研,總結其課程特點,分析對國內相關課程的教學啟示。
1美國德州農工大學
美國德州農工大學(TexasA&MUniversity,TAMU)是一所世界著名的公立研究型大學,全美規(guī)模第六大的大學。學校成立于1876年,主校區(qū)位于美國德克薩斯州的卡城(CollegeStation)。德州農工大學在2018年USNews的大學排名中位列第69位,在美國公立大學中排名第25位。工程學院是德州農工大學最大的一個學院,擁有教師650人以上,學生19000人以上,2018年在USNews的全美最佳工程學院排名中位列第12位。工程學院下設14個系,計算機科學與工程系是其中的一個系,該系在機器人、機器視覺、人工智能等研究領域成果卓著。和國內大學類似,德州農工大學也將程序設計課程分為基礎課程和高級課程,供不同基礎的學生進行修讀。
2程序設計基礎課程
2.1課程目標
程序設計基礎課程的課程名為程序設計與概念導論(introductiontoprogramdesignandconcepts),課程編號為CSCE121[7]。學習該門課程只需要有一些基本的編程經(jīng)驗,如高中階段學過編程課程即可。課程目標是以C++語言為載體,讓學生了解計算機程序結構、設計和開發(fā)的概念,人們如何與計算機溝通,計算機如何影響社會,并理解面向對象的編程概念(對象、類、繼承、多態(tài)、封裝等),學會用高級編程語言C++編寫計算機程序,進行算法設計與實現(xiàn),提高解決問題的能力,培養(yǎng)計算思維。
2.2課程安排
1)課堂講課。課程在每年的春季學期開設,每周2次課堂講課,每次75min,共計15周。每次課程的講義資料和程序源碼都可以在課程網(wǎng)站上下載。授課內容主要是通過各種示例介紹面向對象的程序設計方法。在第一節(jié)課上,主講教師給學生提供Linux和Git之父LinusTorvalds寫的一篇文章“TheBeautyofProgramming”,很好地激發(fā)學生的學習興趣。在第二節(jié)課上,主講教師將C++的操作符、注釋方式、輸入輸出、變量、程序結構、預編譯指令等語法層面的內容全部羅列出來,供有一定編程基礎的學生與之前學過的編程語言進行對比。與國內大學對C++每個語法知識點細細講解不同,美國大學該課程的教學結合程序示例重點講解指針、抽象、容器、模板等面向對象難點內容,學生課下必須提前進行預習,才能跟上課程節(jié)奏。2)課后作業(yè)。每次課都會有課后作業(yè)。課后作業(yè)主要基于已經(jīng)學過的知識,但也會覆蓋即將學到的內容,要求提交到學校的eCampus管理系統(tǒng)中,課堂上將針對課后作業(yè)中的問題進行充分討論。3)上機實驗。課程每周都配套安排1次上機實驗課,每次50min,在機房進行;除了剛開始的兩周以及期中考試周,其余每周上機課都在后半段安排上機測試環(huán)節(jié),注重每節(jié)課學生學習效果的反饋。上機課由助教進行指導,助教通常為主講教師的博士生。每次上機課的內容都非常詳盡地展示在課程網(wǎng)站上,包括這節(jié)課的目標、上機任務、參考資料、擴展思考題、致謝等。上機課的任務難度隨著課程進度逐步遞增,其中很多任務都帶有啟發(fā)性,如給定一個實際問題,補充完整某個函數(shù),或者給定某一段代碼,讓學生發(fā)現(xiàn)代碼中的缺陷并進行修訂,這些缺陷往往不是簡單的語法層面的錯誤,而是更高級別的程序設計層面的問題,如缺乏程序安全性考慮等。上機課程的設計考慮到不同學生的基礎,對于比較難的上機題目,在題目下方點擊一個可以展開的“提示”按鈕,即可看到對該題目解決方案的提示信息,給完成編程實驗有困難的學生使用。此外,針對能快速完成實驗任務的學生,額外提供擴展思考題供學生提高練習。4)課后答疑。除了上課和上機之外,主講教師和每位助教每周均有1次60min的答疑時間,此外,每門課程還特別配備幾位同行教師(peerteachers),這些同行教師同樣可以在每周指定的時間段內為這門課有困難的學生提供指導和幫助。由于美國大學的學生多數(shù)是住在校外的,為了便于師生溝通,美國很多高校都在使用Piazza網(wǎng)站搭建師生課后溝通的橋梁。該網(wǎng)站是一款專門為教師、助教和學生服務的問答互動平臺,集wiki和論壇模式為一體,可以實現(xiàn)隨時隨地的師生線上互動,支持移動手機IOS和Android應用[8]。主講教師會在Piazza上為自己的課程創(chuàng)建一個問答中心,并在第一節(jié)后告知學生加入課程,之后學生和教師可以在上面分享問題和答案,平臺也能方便地查找問題和答案。不同的用戶可以對同一個問題進行回答,而每位用戶的問答記錄也都會保存。如果學生急需一個問題的答案,可以對問題設置標簽;教師可以查看問題標簽的數(shù)量,有選擇地在課堂上詳細講解某些問題。5)教學資源。課程沒有指定的教材,只有參考書目,包括《AComputerScienceTapestry》《ProgrammingPrinciplesandPracticeUsingC++》以及經(jīng)典的《C++Primer》。主講教師的講義是最主要的教學資源,教師會經(jīng)常更新講義內容,使學生獲得最新的知識和信息。
2.3評分機制
課程的成績組成:上機測驗占15%,兩次期中考試各占20%,期末考試占45%。課程網(wǎng)站上顯示,往年第一次期中考試的最高分為100分,最低分為0分,平均分為68.5分;第二次期中考試的最高分為100分,最低分為0分,平均分為50.4分。綜上可見,評分總體是偏低的。期中和期末考試都是紙卷考試,主要以程序設計題為主,也有少量的多選題??荚囋试S學生攜帶參考資料,但對攜帶的材料有明確規(guī)定,學生可以攜帶5張A4尺寸的紙張,正反面均可以做筆記,并且告知學生考試的題目基于平時課后作業(yè)和上機練習的內容,但不會是類似的題目。
3程序設計高級課程
3.1課程目標
程序設計高級課程的名稱是編程語言(programminglanguage),編號為CSCE314[9],要求具有一定的計算機基礎并且已經(jīng)完成數(shù)據(jù)結構與算法這門課的學生學習。課程介紹兩種不同的高級編程語言,一種是函數(shù)式編程語言Haskell,另一種是面向對象編程語言Java。課程的教學目標是使學生在學完課程后能夠更有效地使用現(xiàn)代編程語言,更容易地學習其他新的編程語言,并對語言結構、通用抽象機制和程序運行效率有更深入的理解。Haskell是一種標準化的、通用純函數(shù)式編程語言,有非限定性語義和強靜態(tài)類型,主要的執(zhí)行環(huán)境是GHC。國內很少有高校會教授Haskell這門編程語言,往往只介紹更加大眾化的C、C++、Java編程語言,而將Haskell和Java放在同一門課程中講授也很特別,旨在對比兩種不同編程思想的語言,讓學生學會用函數(shù)式編程方法設計和實現(xiàn)程序,同時了解面向對象語言的主要特征,獲得自主學習更多編程語言的能力。
3.2課程安排
課程在每年的春季和秋季學期均可以選修,每周3次課堂講課,每次75min,共計15周。1—7周介紹Haskell語言,第8周進行期中考試,9—15周介紹Java語言。課程共安排10次課后作業(yè),在課程網(wǎng)站上有每次作業(yè)的詳細要求,包括作業(yè)目標、指導建議、作業(yè)題目、致謝和測試用例。每次作業(yè)都由若干編程題組成,多數(shù)題目提供代碼框架或部分代碼,甚至有的題目為了使學生更清楚題目要求,還提供示例代碼。比較特別的是,教師為每道題目提供測試程序,學生只需下載并導入測試程序,便可以自動執(zhí)行測試用例對自己的程序進行測試,判斷程序的運行情況。作業(yè)中的題目有一些是經(jīng)典的數(shù)學編程題(如中國余數(shù)理論),課程網(wǎng)站上會給出詳細的問題背景資料,并在致謝中列出問題來源,甚至對首次將該問題作為編程練習題的人加以感謝,體現(xiàn)美國對知識產權的重視。課程的參考書目包括劍橋大學出版社的《ProgramminginHaskell》以及KenArnold等人撰寫的《TheJavaProgrammingLanguage》。學校圖書館可以下載參考書的電子版,還提供大量與課程有關的網(wǎng)絡資源鏈接供學生參考,因此,學生課后自主學習的工作量很大。
3.3評分機制
課程的成績組成:課堂測驗占10%,課后作業(yè)占30%,期中考試占30%,期末考試占30%。實際上,主講教師對自己所授課程的評分機制有絕對的自主權,每個學期都可以進行調整,但通常期末考試都不會超過總成績的50%,更看重學生平時的階段性表現(xiàn),注重學習過程。如果學生超過截止日期提交作業(yè),除非有學校認可的不可抗力原因,否則每遲交一天,成績將減少25%。學校對學術誠信非常重視,明確規(guī)定學生之間可以接受的合作和不可接受的合作??梢越邮艿暮献靼ㄓ懻擃}目以理解其含義、討論解決該問題的可行解決方案,但具體的解決方案必須由學生獨立構建和編寫,還要明確說明別人給予的任何幫助以及引用的任何資源,包括人、書、論文、解決方案、網(wǎng)頁或其他。不可接受的合作包括剽竊他人和給他人提供剽竊。他們認為剽竊是最嚴重的學術不端行為,破壞同事之間的信任,影響研究的正常傳播,在學生守則中明確規(guī)定對學術不端行為的處罰條例。德州農工大學的學生自稱為Aggie,每一位Aggie在入學時都要簽署一份學術誠信聲明:每一位Aggie都不會撒謊、欺騙、偷竊和容忍做這些事的人。在上交任何學術相關的材料之前,每位學生還會要求打印并簽署誠信誓詞:以我的名譽擔保,作為一名Aggie,我在這份學術工作中既沒有給予也沒有接受任何未經(jīng)授權的幫助。
4課程分析與啟示
1)重視培養(yǎng)學生的計算思維能力。程序設計課程不能過多關注某個編程語言本身的語法知識,而忽略對學生計算思維能力的培養(yǎng)。國內程序設計課程往往對編程語言本身介紹過多,要求學生熟練掌握編程語言的每一個知識點,而對具體問題解決時的算法設計、方案對比、性能分析都做得不夠,往往直接拋出具體的算法,讓學生學習如何將算法變成代碼。只有多讓學生分析問題、設計算法,才能更好地鍛煉學生的邏輯思維能力。2)重視不同編程思想語言的對比教學。程序設計課程的教學主旨是讓學生學會如何用計算機程序結構和邏輯框架解決實際問題,然而,編程語言更新?lián)Q代非常快,讓學生快速掌握不同的編程語言思想并能在今后的工作中快速學習新的編程語言非常重要。國內高校每門程序設計課程只專注某一門編程語言,如C、C++或Java,沒有將不同的編程語言放在一起進行對比教學。不同編程思想語言的對比教學,可以將學生的注意力從某一門語言的語法規(guī)則轉移到不同語言的編程思想上,體會不同語言的特性和優(yōu)缺點。3)注重學生平時學習過程??己松铣绦蛟O計課程期末考試成績不會超過總成績的50%,而是更注重每個階段的學習驗收,將大量的隨堂測試、上機實驗、上機測試、課后作業(yè)、期中考試均作為學生的評分依據(jù)。國內很多高校仍然以期末考試作為主要的考核手段,期末考試通常會占比70%以上,這樣很容易導致學生不注重平時積累,只想著期末考試前突擊,對學習以動手實踐為主的程序設計課程是非常不利的。4)照顧不同編程基礎的學生。美國很多高中開設計算機課程,不少學生具有一定的編程基礎,因此課程網(wǎng)站上的作業(yè)布置會考慮到不同編程基礎的學生需求。對于編程基礎薄弱的學生,有難度的題目都會提供解題提示信息,但開始提示信息是隱藏的,也并不鼓勵學生在充分思考前查看;而對于編程基礎較好的學生,擴展的思考題會極大地激發(fā)學生的學習熱情,豐富有趣的問題背景資料也能極大地拓寬學生的知識面。5)注重課下師生互動交流。每門課程都安排教師、助教、同行教師每周有固定的辦公室答疑時間,都開設Piazza課程問答中心,可以實現(xiàn)充分的師生互動交流,便于及時解答學生的疑問。國內高校教師課后主要通過Email和學生進行聯(lián)絡,有些教師也建立課程的QQ群或者微信群,但是QQ群或微信群中學生的提問和教師的回答不能有效保留,因此,很可能會出現(xiàn)重復回答同一問題或者學生沒有看到答案重復提問的情況,問題和答案也不方面查找,浪費師生的寶貴時間。6)自主靈活調整教學計劃。主講教師具有絕對的自主權,每學期教師的教學計劃都會作出調整,包括課件、案例、參考資料、作業(yè)、評分標準等,以確保教學內容緊跟最新技術和知識。國內高校的教學計劃調整往往是由上至下的,學院領導要求調整教學大綱和教學計劃時,所有教師在同一節(jié)點進行調整,并且教授同一門課程的教師講什么內容、做什么作業(yè)、怎么評分都要保持嚴格一致,不利于教師發(fā)揮各自優(yōu)勢,作出新的教學嘗試。7)注重知識產權和學術誠信。美國非常注重知識產權,哪怕是某個數(shù)學問題用計算機編程實現(xiàn),都會注明誰第一個將這個問題用計算機實現(xiàn),潛移默化地培養(yǎng)學生對知識產權的尊重。此外,非常注重學術誠信,對哪些屬于正常合作、哪些屬于抄襲都有明確的定義,并通過讓所有學生簽署誠信承諾書強化誠信意識,對違反學術誠信的處罰非常嚴厲,而一般學生也不會觸犯誠信守則。
5結語
計算機程序設計課程是高校計算機相關專業(yè)的核心基礎課程,學好程序設計課程是學習其他專業(yè)課程的基礎。總體而言,我國高校計算機專業(yè)學生的編程能力要強于計算思維能力,算法實現(xiàn)能力要優(yōu)于算法設計能力,在程序設計課程的教學中更好地培養(yǎng)學生的計算思維能力,仍然是學校和教師努力的方向。一方面,對于教師而言,在課堂上要注重培養(yǎng)學生的計算思維能力,可以考慮將不同編程思想的語言放在同一門課中進行對比教學,注重學生平時學習過程和兼顧不同基礎的學生;另一方面,對于學校而言,要加大課程輔助教學平臺、師生互動交流平臺的建設,并支持教師能夠自主靈活調整教學計劃,發(fā)揮個人的教學特色,還要建立有效機制保護知識產權和確保學術誠信。
作者:許真珍 單位:大連理工大學軟件學院