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é)生寫的話
我有我語言
主站蜘蛛池模板: 国产99视频精品免费观看9e| 视频一区视频二区日韩专区| 亚洲欧洲日韩综合色天使| 香蕉伊思人视频| 亚欧美国产综合| 精品午夜国产福利观看| 国产精品黑色丝袜的老师| 福利视频久久| 亚洲精品视频免费| 色AV色 综合网站| 福利一区在线| 久久综合干| 国产日韩精品欧美一区灰| 中文字幕在线不卡视频| 久久综合九色综合97婷婷| 欧美一区中文字幕| 制服丝袜一区二区三区在线| 国产精品一区二区国产主播| 婷婷色中文网| 永久天堂网Av| 免费一级毛片在线观看| 国产精品无码一二三视频| 天天综合网亚洲网站| 国产午夜一级毛片| 国产超碰在线观看| 久久精品视频一| 久久99国产乱子伦精品免| 亚洲一区二区日韩欧美gif| 国产尤物在线播放| 波多野结衣的av一区二区三区| 欧美亚洲国产一区| 午夜久久影院| 亚洲综合中文字幕国产精品欧美| 国产精品中文免费福利| 99草精品视频| 久久精品欧美一区二区| 久久九九热视频| 亚洲AV无码一二区三区在线播放| 国产久操视频| 日韩精品亚洲人旧成在线| 亚洲国产精品日韩欧美一区| 国产h视频在线观看视频| 一级成人a毛片免费播放| 国产精品精品视频| 成人精品免费视频| 91午夜福利在线观看| 无码一区18禁| 国产精品短篇二区| 亚洲高清无在码在线无弹窗| 亚洲69视频| 免费一级大毛片a一观看不卡| 色婷婷天天综合在线| 日本人妻丰满熟妇区| 久久无码av三级| 国产成a人片在线播放| 久久国语对白| 亚洲IV视频免费在线光看| 激情无码字幕综合| 青青草国产一区二区三区| 国产在线拍偷自揄观看视频网站| 色窝窝免费一区二区三区| 国产成人综合网在线观看| 熟妇丰满人妻| 欧美日韩在线亚洲国产人| 久久99蜜桃精品久久久久小说| 亚洲欧美在线精品一区二区| 久久动漫精品| 欧美日韩综合网| 午夜精品久久久久久久无码软件| 亚洲无码精品在线播放| 色综合热无码热国产| 亚洲欧美另类日本| 91无码网站| 免费可以看的无遮挡av无码 | 亚洲人成影视在线观看| 综合色区亚洲熟妇在线| 91无码人妻精品一区| 亚洲无线一二三四区男男| 97精品久久久大香线焦| 日韩高清一区 | 国内精品小视频福利网址| 国产在线小视频|