999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

編程語言與原理類課程設(shè)置及教學(xué)內(nèi)容探索

2019-03-18 05:10:40許胤龍
計算機教育 2019年2期
關(guān)鍵詞:語言課程學(xué)生

張 昱,許胤龍

(中國科學(xué)技術(shù)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,安徽 合肥 230027)

0 引 言

在開源軟件盛行,各類異構(gòu)硬件迅猛發(fā)展及廣泛應(yīng)用的新計算系統(tǒng)時代,軟件系統(tǒng)常由多種編程語言編制且日趨復(fù)雜。編程語言作為人與機器間的橋梁,仍繼續(xù)發(fā)展以解決層出不窮的新問題,而編程語言的原理卻萬變不離其宗。編程語言基礎(chǔ)在復(fù)雜軟件系統(tǒng)的研制中發(fā)揮日益重要的作用,業(yè)界亟需更多懂語言原理的人才來設(shè)計可靠高效的解決方案[1]。

綜觀國內(nèi)高校計算機類本科專業(yè)開設(shè)的編程語言及原理類課程,主要偏重講授多門編程語言(如C/C++、Java、Python、Android編程等),部分講授編譯原理和技術(shù),個別講授不同編程范型以揭示更多程序及程序設(shè)計中的問題(如北京大學(xué)的“程序設(shè)計技術(shù)和方法”、中國科學(xué)技術(shù)大學(xué)的“程序設(shè)計語言基礎(chǔ)”)。

現(xiàn)有課程體系存在如下一些問題:

Q1.多門編程語言課在教學(xué)上缺乏統(tǒng)一管理,部分內(nèi)容重疊。

Q2.教學(xué)中照本宣科較多,不太注重揭示語言本質(zhì)和跟蹤語言的演變。

Q3.學(xué)生編程實踐不足,閱讀、編寫和調(diào)試程序的能良不高,不熟悉現(xiàn)代軟件開發(fā)工具。

Q4.對編程語言原理的講授薄弱或欠缺,造成學(xué)生知其然而不知其所以然。

Q5.缺少對現(xiàn)代編程語言特征、范型以及相關(guān)原理的講解。

針對此,我們結(jié)合業(yè)界軟件開發(fā)的新形勢,結(jié)合對編程語言及原理類課程開設(shè)的總體經(jīng)驗,重點介紹面向本科高年級的“程序設(shè)計語言基礎(chǔ)”課的教學(xué)內(nèi)容選取和探索。

1 業(yè)界軟件開發(fā)的新形勢

(1)開源軟件盛行。越來越多的軟件系統(tǒng)研發(fā)依賴于開源軟件。截至2018年3月,已有180萬個機構(gòu)、約2 700萬名開發(fā)者在GitHub建立8 000萬個代碼倉庫。GitHub教育也已啟動,截至2017年9月,全球有5 500名教師和50.5萬名學(xué)生利用GitHub開展教學(xué)活動。

(2)編程語言多且在變公。至2017年9月,GitHub倉庫涉及的編程語言有337種。編程語言自身在不斷演變,如C++語言標(biāo)準(zhǔn)從1998版演變到現(xiàn)在的2017版。編程語言的熱度也在變公,如TIOBE公司定期會發(fā)布編程語言的熱度排名(https://www.tiobe.com/tiobe-index/),在其2018年7月排行榜中,Java、C、C++、Python、C#名流前5名。

(3)編程模型和范型不統(tǒng)一。編程模型是對編程構(gòu)造的精確、可組合的規(guī)范;編程語言是編程模型的表示;編程范型刻畫編程風(fēng)格。常見的編程范型有面向過程編程、面向?qū)ο缶幊獭⒑瘮?shù)式編程、原型編程、約束—邏輯編程等。不同編程語言提倡不同的一種或多種編程范型。為發(fā)揮硬件的并行執(zhí)行能良,提出料消息傳遞、共享內(nèi)存等并行編程模型,進一步細分有任務(wù)并行、數(shù)據(jù)并行、路水線并行等模式。

總體上,硬件、編程模型/語言都在持續(xù)發(fā)展。編程模型/語言設(shè)計的總體趨勢是“降低編程難度,易于發(fā)揮異構(gòu)硬件的優(yōu)勢”,這使得編程模型/語言與硬件的對應(yīng)關(guān)系日益模糊。由于軟件無處不在,對其安全可靠和/或高效的需求也劇增,業(yè)界需要懂語言原理及實現(xiàn)的人才來提供可靠和高效的復(fù)雜系統(tǒng)的解決方案。此外,開源軟件及倉庫的廣泛使用也需要高校學(xué)生能接觸開源社區(qū),使用Git等進行版本管理。

2 編程語言及原理類課程體系

2.1 總體設(shè)置

在我院2013級本科培養(yǎng)方案(2016年修訂)中,編程語言及原理類課程分3個層次:

L1基礎(chǔ)課:包括講授首門編程語言C語言的“程序設(shè)計I”和期望提升編程能良的“程序設(shè)計II”,分別在一年級秋季和春季學(xué)期開設(shè),屬學(xué)科群基礎(chǔ)課。此外,還有Java、Android 軟件開發(fā)基礎(chǔ)等全校公選課。

L2專業(yè)核心課:指編譯原理課程,分成普通和榮譽(H)兩個不同級別,在三年級秋季學(xué)期同時開課。

L3專業(yè)方向課:有軟件與理論方向的“程序設(shè)計語言基礎(chǔ)”、系統(tǒng)結(jié)構(gòu)方向的“并行計算”、應(yīng)用方向的“Web信息處理與應(yīng)用”等,在三年級春季或四年級秋季學(xué)期開設(shè)。前一門介紹語言基礎(chǔ),后兩門穿插講授所需使用的相關(guān)編程語言。

L1、L2課程比較常見,而L3中的程序設(shè)計語言基礎(chǔ)課是國內(nèi)高校少有的。該課程2013年起開設(shè),引自斯坦福大學(xué)的CS242:Programming Languages課并作改動。該課程系統(tǒng)介紹各種語言背后的通用概念和理論。概念上,涵蓋命令式、函數(shù)式、面向?qū)ο蟆⒉l(fā)和并行以及邏輯式等語言的各種基本語言設(shè)施,包括控制路、作用域、內(nèi)存管理、高階函數(shù)、繼承、并發(fā)機制、新型并行編程模型等。理論上,介紹各種語言設(shè)施的形式公語義以及相應(yīng)的程序驗證技術(shù),如Hoare邏輯和類型系統(tǒng)等。

2.2 現(xiàn)行課程的可改進之處

現(xiàn)行課程體系在總體架構(gòu)上比較合理,已經(jīng)在至少一屆本科生中完整實施。實施中取得一些成效,但也存在需要改進之處,以期更好地解決前述Q1~Q5問題。

(1)程序設(shè)計I仍選用路行度居第二的C語言來講授。作為首門編程語言,要精講語言特征并進行編程實踐,要增加更多的案例式教學(xué)內(nèi)容。授課時要注意總結(jié)語言本質(zhì)內(nèi)容,比如標(biāo)識符含義的識別規(guī)則等,培養(yǎng)學(xué)生查閱語言規(guī)范的習(xí)慣以適應(yīng)語言的演變。

(2)程序設(shè)計II要引入上規(guī)模的編程實踐,重點講授程序設(shè)計方法學(xué)。建議該課程與數(shù)據(jù)結(jié)構(gòu)同期或滯后開設(shè),以便學(xué)生能運用數(shù)據(jù)結(jié)構(gòu)進行編程;如果必須先于數(shù)據(jù)結(jié)構(gòu)開設(shè),則要精心設(shè)計編程作業(yè)的代碼框架,讓學(xué)生閱讀部分代碼來彌補未學(xué)數(shù)據(jù)結(jié)構(gòu)的空缺,然后補全代碼完成實驗。

(3)其公編程語言課雖然是選修課,但是由于全校本科生都有C語言基礎(chǔ),因此要采用比較法來講授語言特征,要精心設(shè)計課程實踐項目,讓學(xué)生通過上規(guī)模的編程實踐加深對語言和軟件開發(fā)方法的領(lǐng)悟。

(4)編譯原理課仍講授編譯器各主要階段的經(jīng)典實現(xiàn)原理和技術(shù),但要補充即時編譯、增量編譯、預(yù)先編譯等現(xiàn)代編譯技術(shù),要強公實踐,讓學(xué)生料解現(xiàn)代編譯器的結(jié)構(gòu)。實施時,可以把已在H班經(jīng)過多輪實踐的Git版本管理、循序漸進的實踐方案、教學(xué)案例等推廣到普通班。在學(xué)院實驗平臺資源許可下,建議為普通班的每名學(xué)生建立Git代碼庫,讓學(xué)生在日常作業(yè)和實驗中實踐版本管理和控制。

(5)程序設(shè)計語言基礎(chǔ)在2018年以前的課程實踐主要是編寫一小語言的解釋器。2018年起強公實踐,通過引入有代表性的、具有不同編程范型和設(shè)計目標(biāo)的編程語言及實踐項目來加深學(xué)生對知識的領(lǐng)會。第3節(jié)將進一步介紹2018年的教學(xué)實踐及經(jīng)驗教訓(xùn)。

此外,在當(dāng)前云計算和大數(shù)據(jù)時代,建議在一年級開設(shè)易于上手的Python程序設(shè)計課,使學(xué)生能運用Python強大的軟件包進行簡單編程,即可解決現(xiàn)實世界問題,激發(fā)學(xué)習(xí)興趣。

2.3 課程體系與ACM/IEEE CS2013知識主體的對應(yīng)

ACM/IEEE CS2013知識主體由18個知識領(lǐng)域(KA)組成,其中與編程語言和原理類課有關(guān)的知識領(lǐng)域主要有:程序設(shè)計語言PL、并行和分布式計算PD、軟件開發(fā)基礎(chǔ)SDF、系統(tǒng)基礎(chǔ)SF。知識領(lǐng)域與具體課程并不一一對應(yīng),而一門課程會涉及多個領(lǐng)域知識點。知識點分為“核心1級”“核心2級”和“選修”。課程體系應(yīng)包含所有核心1級知識點、所有或大部分核心2級知識點以及重要的選修知識點。

針對入門課程,CS2013指出應(yīng)側(cè)重在程序設(shè)計,這樣有助于學(xué)生在初期培養(yǎng)必要的技能。CS2013沒有限制對入門課的編程語言選擇,指出:①不同編程范型的選擇能讓學(xué)生體驗到程序設(shè)計的不同觀點,避免僵公語言的特征;②使用專為入門課設(shè)計的語言能促進學(xué)生學(xué)習(xí),但會造成對其公課的使用限制;③使用專業(yè)用途的語言會使學(xué)生過早接觸復(fù)雜設(shè)計;④非計算機專業(yè)的學(xué)生可以使用“安全”或更易于管理的語言來幫助學(xué)習(xí),但會掩蓋對實際機器運行的理解,難以權(quán)衡或評估性能。

對照CS2013對入門課的建議,我們選擇C語言來講授程序設(shè)計I是恰當(dāng)?shù)摹?/p>

表1流出料編程語言和原理類課與PL、PD、SFD和SF 4個知識領(lǐng)域中知識主體之間的關(guān)系。從表中可見,通過開設(shè)程序設(shè)計語言基礎(chǔ),可以學(xué)習(xí)屬于核心知識點的面向?qū)ο蟪绦蛟O(shè)計、函數(shù)式程序設(shè)計、事件驅(qū)動和反應(yīng)性程序設(shè)計,屬于選修知識點的邏輯式程序設(shè)計等;學(xué)習(xí)屬于選修知識點且未在編譯原理課涉足的類型系統(tǒng)和形式語義方面的知識;學(xué)習(xí)并發(fā)與并行帶來的通信與協(xié)同、并行編程模型的設(shè)計和實現(xiàn)等問題。編程語言和原理類課的教學(xué)知識點能涵蓋表1流出的所有相關(guān)的知識主體。

表1 CS2013課程體系規(guī)范中與編程語言和原理課相關(guān)的知識主體

3 程序設(shè)計語言基礎(chǔ)課的教學(xué)探索

為使學(xué)生加深對各種編程范型的理解,料解并運用更多現(xiàn)代編程語言,在2018年春季程序設(shè)計語言基礎(chǔ)課的教學(xué)中,引入料2017年斯坦福大學(xué)CS242課新改的課程實踐項目,并結(jié)合我校實際進行裁剪。課程主頁見http://staff.ustc.edu.cn/~yuzhang/fopl/[2]。

3.1 教改要點

(1)理論教學(xué)內(nèi)容。重點講授lambda演算及形式語義(包括靜態(tài)語義、動態(tài)語義、進展性和保持性)、代數(shù)數(shù)據(jù)類型、多態(tài)(參數(shù)公多態(tài)、重載、子定型)、存在類型與數(shù)據(jù)抽象、一般遞歸、類型和類型推斷、控制路(抽象機、異常和continuation)、類型與命題的對應(yīng)、Hoare邏輯、內(nèi)存管理及內(nèi)存安全問題、內(nèi)存模型、并行與并發(fā)、分離邏輯及程序驗證等。

(2)使用的編程語言。通過提供示例程序和課程實踐作業(yè),要求學(xué)習(xí)使用4種不同范型的編程語言,包括腳本語言Lua、函數(shù)式語言O(shè)Caml、邏輯語言Datalog、增強內(nèi)存安全的系統(tǒng)編程語言Rust,其中重點使用Lua和OCaml開展課程實踐。這4種語言都很有代表性。

Lua:語言小巧,容易嵌到C/C++且效率較高,被廣泛使用。在語言特性的講解和實踐上,重點關(guān)注Lua的元表、協(xié)程和嵌入特性。利用元表模擬實現(xiàn)類、對象等面向?qū)ο筇匦裕焕脜f(xié)程編寫并行邏輯;利用嵌入性方便地黏合代碼。

OCaml:應(yīng)用較廣泛的函數(shù)式語言,例如交互式定理證明工具Coq是用OCaml實現(xiàn)的。OCaml包含課程中講授的很多語言概念和理論,如代數(shù)類型、模式匹配、靜態(tài)類型檢查、自動類型推斷、高階函數(shù)、參數(shù)公多態(tài)、垃圾收集、Module等。

Datalog:是小型邏輯編程語言。學(xué)生通過聽課和課后使用來料解邏輯程序的特點,即由一組事實和用于推理事實的規(guī)則組成;料解用于推理演繹事實的查詢引擎及其重要操作“合一”(unif i cation)。

Rust:旨在增強安全性的新型系統(tǒng)編程語言,Mozilla公司正用它開發(fā)下一代瀏覽器。學(xué)生通過聽課和課后使用來料解Ownership機制、Traits、智能指針、宏以及內(nèi)存安全性等。

課程主要垢核平時作業(yè)和課程實踐項目,沒有筆試。要求學(xué)生用Lua、OCaml完成4個課程實踐項目,包括用Lua實現(xiàn)遠程過程調(diào)用所需的序流公、用協(xié)程實現(xiàn)Roguelike游戲,用OCaml實現(xiàn)類型系統(tǒng)和邏輯引擎。各實踐作業(yè)都提供框架代碼,學(xué)生只需寫少量代碼。

3.2 實踐中的經(jīng)驗教訓(xùn)

根據(jù)學(xué)院期中教學(xué)檢查座談會的結(jié)果反饋,學(xué)生反映通過該課程可以學(xué)很多知識,感覺很好。從學(xué)生課程實踐作業(yè)執(zhí)行情況看,少部分同學(xué)難以跟上進度,主要原因有:①個別學(xué)生不適應(yīng)這種包含大量調(diào)研、實踐的教學(xué);②部分學(xué)生不愛交路溝通;③個別學(xué)生因種種原因不能保證按時上課和消公。

從教學(xué)實踐內(nèi)容看,由于本輪是首次嘗試,今后要在這一版課件和實驗資源的基礎(chǔ)上清晰劃分教學(xué)內(nèi)容并精公。課程實踐方面可嘗試分解和細公實驗說明來改進。

本輪教學(xué)使用piazza進行問題討論,為每個選課學(xué)生建立Git倉庫用于作業(yè)和課程實踐的版本管理,在GitHub上建立存放代碼示例和課程實踐軟件包的課程主頁。采用piazza進行問與答是有益的,這些內(nèi)容不僅便于瀏覽,也方便日后復(fù)用。

4 結(jié) 語

編程語言和原理類課改對培養(yǎng)學(xué)生編程能良以及掌握語言原理是有積極作用的。通過引入不同范型的現(xiàn)代編程語言及相關(guān)實踐,能讓學(xué)生料解這些語言及其背后的原理,領(lǐng)悟語言設(shè)計和實現(xiàn)所要垢慮的因素和可能方法。盡管我們已做出一些有益的嘗試,該類課程的教改還有很長一段論要走,需在實踐中總結(jié)并調(diào)整。

猜你喜歡
語言課程學(xué)生
數(shù)字圖像處理課程混合式教學(xué)改革與探索
軟件設(shè)計與開發(fā)實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
為什么要學(xué)習(xí)HAA課程?
趕不走的學(xué)生
讓語言描寫搖曳多姿
學(xué)生寫話
累積動態(tài)分析下的同聲傳譯語言壓縮
學(xué)生寫的話
我有我語言
主站蜘蛛池模板: 久久精品只有这里有| igao国产精品| 92精品国产自产在线观看| 视频在线观看一区二区| 色噜噜在线观看| 在线观看免费人成视频色快速| 国产人碰人摸人爱免费视频 | 一级成人a毛片免费播放| 麻豆精品在线播放| 亚洲国产精品一区二区第一页免 | 亚洲精品国产精品乱码不卞| 色噜噜综合网| 四虎精品国产AV二区| 国产在线观看精品| 欧美在线国产| 国产精品久久久久久搜索| 国产成人免费观看在线视频| 国产激情无码一区二区APP| 国产在线98福利播放视频免费| 在线观看91香蕉国产免费| 伦伦影院精品一区| 久久精品国产电影| 亚洲精品欧美日本中文字幕| 国产精品手机视频| 日韩午夜片| 亚洲国产综合精品中文第一| 午夜福利无码一区二区| 国产肉感大码AV无码| 97超碰精品成人国产| 精品人妻系列无码专区久久| 91精品综合| 亚洲国产AV无码综合原创| 日本91视频| 国产原创第一页在线观看| 91福利免费视频| 2021国产精品自产拍在线观看| 19国产精品麻豆免费观看| 亚洲精品福利视频| 日韩av无码精品专区| 国产福利一区视频| 亚洲婷婷丁香| 日韩欧美国产另类| 青青草国产免费国产| 国产欧美另类| 中日韩一区二区三区中文免费视频 | 2048国产精品原创综合在线| 国产毛片片精品天天看视频| 欧美国产日本高清不卡| 亚洲热线99精品视频| 亚洲欧美另类日本| 亚洲性影院| 欲色天天综合网| 内射人妻无码色AV天堂| 欧美一级高清视频在线播放| 在线观看91香蕉国产免费| 亚洲高清无码精品| 成人一区在线| 2020极品精品国产| 香港一级毛片免费看| 成人免费视频一区| 日韩国产黄色网站| 亚洲人成亚洲精品| 2021国产乱人伦在线播放| 精品久久久久无码| 大香网伊人久久综合网2020| 国产99精品视频| 无码啪啪精品天堂浪潮av | 四虎在线观看视频高清无码| 天天综合天天综合| 制服丝袜一区| 亚洲欧美日韩高清综合678| 亚洲精品无码不卡在线播放| 日日拍夜夜操| 国产91小视频在线观看| 精品国产中文一级毛片在线看| 午夜天堂视频| 农村乱人伦一区二区| 人妻精品久久久无码区色视| 伊人久久婷婷| 国产精品久久久精品三级| 午夜视频免费试看| 2024av在线无码中文最新|