李+波
摘要:通過(guò)參加Microsoft Research Faculty Summit 2013會(huì)議,并實(shí)地考察了西雅圖大學(xué)、斯坦福大學(xué)和加州大學(xué)伯克利分校,結(jié)合網(wǎng)上課程調(diào)研,著重分析了美國(guó)高校第一門(mén)計(jì)算機(jī)課程的基本情況,并與我國(guó)高校非計(jì)算機(jī)專(zhuān)業(yè)第一門(mén)計(jì)算機(jī)課程進(jìn)行了對(duì)比,討論了第一門(mén)課程設(shè)計(jì)中涉及的關(guān)鍵問(wèn)題和相關(guān)技術(shù)爭(zhēng)論。試圖為我國(guó)高校非計(jì)算機(jī)專(zhuān)業(yè)的第一門(mén)計(jì)算機(jī)課程的設(shè)立和教學(xué)改革實(shí)踐提供國(guó)際經(jīng)驗(yàn)。
關(guān)鍵詞:美國(guó)高校;第一門(mén)計(jì)算機(jī)課程;CS1;調(diào)研;對(duì)比
一、第一門(mén)計(jì)算機(jī)課程的界定
美國(guó)高校一般將第一門(mén)計(jì)算機(jī)課程稱(chēng)之為入門(mén)課系列,課程編號(hào)通常為CS1或CS101,部分高校以計(jì)算原理為主要授課內(nèi)容,部分高校以程序設(shè)計(jì)為主要授課內(nèi)容。國(guó)內(nèi)高校非計(jì)算機(jī)專(zhuān)業(yè)的主流課程體系為1+X方案,第一門(mén)計(jì)算機(jī)課程為大學(xué)計(jì)算機(jī)基礎(chǔ),X包括程序設(shè)計(jì)等多門(mén)課程。故美國(guó)的CS1可相應(yīng)地對(duì)應(yīng)國(guó)內(nèi)的大學(xué)計(jì)算機(jī)基礎(chǔ)和程序設(shè)計(jì)兩門(mén)課程。
二、調(diào)研途徑
本次調(diào)研的途徑有三:(1)教指委相關(guān)成員應(yīng)邀參加Microsoft Research Faculty Summit 2013會(huì)議;(2)實(shí)地訪問(wèn)西雅圖大學(xué)、斯坦福大學(xué)和加州大學(xué)伯克利分校;(3)網(wǎng)上課程及MOOC調(diào)研。
Microsoft Research Faculty Summit 2013會(huì)議于2013年7月15、16日在微軟總部Redmond舉行,該會(huì)議圍繞深度學(xué)習(xí)(Deep learning)、大數(shù)據(jù)(Big Data)和云計(jì)算(Cloud computing)三大主題在研究和教學(xué)方面進(jìn)行研討。其中有兩個(gè)與教學(xué)相關(guān)的專(zhuān)題會(huì)議:計(jì)算機(jī)輔助教學(xué)(Computer-Aided Education),面向和通過(guò)瀏覽器的現(xiàn)代編程(Modern Programming for or via Web browser)。另外附設(shè)了一個(gè)展示會(huì)也有微軟研究院在計(jì)算機(jī)輔助教學(xué)方面的研究成果。計(jì)算機(jī)輔助教學(xué)的研究在大規(guī)模開(kāi)放在線課程的背景下需要更多的研究和探索,該領(lǐng)域是一個(gè)研究熱點(diǎn)。面向和通過(guò)瀏覽器的現(xiàn)代編程專(zhuān)題會(huì)議分別就面向Web的編程和通過(guò)Web瀏覽器進(jìn)行編程報(bào)告了相關(guān)研究成果,在發(fā)明新語(yǔ)言(Type Script)來(lái)簡(jiǎn)化Web編程和面向移動(dòng)設(shè)備(Touch Develop)支持學(xué)生隨時(shí)隨地編程取得了進(jìn)步。在附設(shè)的展示會(huì)微軟研究院介紹了.NET Gadgeteer和Lab of Things兩項(xiàng)產(chǎn)品,該產(chǎn)品支持學(xué)生進(jìn)行硬件及物聯(lián)網(wǎng)方面的設(shè)計(jì)和開(kāi)發(fā)。在會(huì)議期間與Coursera的聯(lián)合創(chuàng)始人斯坦福大學(xué)的 Andrew NG教授進(jìn)行了會(huì)談,了解了MOOC的現(xiàn)狀和Coursera的運(yùn)作模式。在會(huì)議結(jié)束之后分別實(shí)地考察了西雅圖大學(xué)、斯坦福大學(xué)和加州大學(xué)伯克利分校。了解了其課程開(kāi)設(shè)情況和課程評(píng)估情況。
網(wǎng)上課程及文獻(xiàn)研究,選擇了10門(mén)知名美國(guó)大學(xué)典型的入門(mén)課程進(jìn)行了系統(tǒng)化的研究,這10門(mén)課程如下:
MIT 6.00: Introduction to Computer Science and Programming;
Stanford CS106A: Programming Methodology;
Stanford CS106B: Programming Abstractions;
Stanford CS107: Programming Paradigms;
CMU CS-15110: Principles of Computing;
UC Berkeley EECS | CS10: The Beauty and Joy of Computing;
Princeton Computer Science 116: The Computational Universe;
PrincetonComputer Science 109: Computers in Our World;
Harvard CS50: Introduction to Computer Science;
Harvard CS101: From Nand to Tetris.
為了評(píng)價(jià)MOOC對(duì)計(jì)算機(jī)基礎(chǔ)課程的影響,另外在課程調(diào)研中增加了Udacity的 CS101的調(diào)研,了解MOOC在第一門(mén)計(jì)算機(jī)課程的應(yīng)用情況。
三、CS1開(kāi)設(shè)情況
通過(guò)對(duì)樣本的分析對(duì)比,主要選擇最有代表性的卡內(nèi)基梅隆大學(xué)(CMU CS-15110)、加州大學(xué)伯克利分校(UC Berkeley CS10)、斯坦福大學(xué)(Standford CS101)和大規(guī)模在線課程Udactiy(Udacity CS101)的四門(mén)入門(mén)課程進(jìn)行調(diào)研。
卡內(nèi)基梅隆大學(xué)的計(jì)算機(jī)科學(xué)學(xué)院在2011年發(fā)布對(duì)其入門(mén)課程系列的改革方案,并從2012年開(kāi)始實(shí)施。其入門(mén)課程系列包括三門(mén)課程:CS-15110(Principles of Computing),CS-15122(Principles of Imperative Computation)和CS-15150(Principles of Functional Computation)。主要的改變有三個(gè)方面的考慮:(1)對(duì)計(jì)算機(jī)專(zhuān)業(yè)和非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生在入門(mén)課程中如何體現(xiàn)計(jì)算思維;(2)強(qiáng)調(diào)軟件系統(tǒng)的高可靠性(highly reliable)及其實(shí)現(xiàn)方式;(3)強(qiáng)調(diào)并行計(jì)算及編程的內(nèi)容。這里重點(diǎn)討論計(jì)算思維方面的情況:計(jì)算思維既對(duì)數(shù)學(xué)、科學(xué)、工程等學(xué)科有支撐作用,又對(duì)人文、藝術(shù)和商業(yè)等學(xué)科產(chǎn)生巨大影響。不但計(jì)算機(jī)專(zhuān)業(yè)學(xué)生要掌握,非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生更要應(yīng)知應(yīng)會(huì)。對(duì)于非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生入門(mén)系列課程要起到雙重作用:掌握實(shí)用的計(jì)算機(jī)科學(xué)的應(yīng)用技能和計(jì)算思維的堅(jiān)實(shí)基礎(chǔ),期望在其今后的職業(yè)生涯中能獲得新的技能。
CMU的CS-15110課程名稱(chēng)為“計(jì)算原理”(Principles of Computing),每屆有900學(xué)生左右,面向所有專(zhuān)業(yè),包括計(jì)算機(jī)專(zhuān)業(yè)。共15周,每周3節(jié)課(1小時(shí))和1節(jié)實(shí)驗(yàn)(2小時(shí)),課外安排5小時(shí)。考核辦法為:平時(shí)作業(yè)占30%、實(shí)驗(yàn)參與占5%、兩次實(shí)驗(yàn)考試占10%、平時(shí)書(shū)面考試占30%、期終書(shū)面考試占25%。從其考核安排可以看出其考試頻繁,作業(yè)和實(shí)驗(yàn)工作量大,特別重視課程的過(guò)程考核。該課程是面向很少或沒(méi)有計(jì)算基礎(chǔ)知識(shí)的學(xué)生,以闡述基本計(jì)算原理為重點(diǎn)的課程,涵蓋以下主題:編程構(gòu)造(排序、選擇、迭代、遞歸),數(shù)據(jù)組織(數(shù)組和列表),抽象(數(shù)據(jù)表示、計(jì)算機(jī)組織、計(jì)算機(jī)網(wǎng)絡(luò)、功能分解和應(yīng)用程序編程接口),問(wèn)題求解的計(jì)算原理(分而治之、隨機(jī)、并發(fā)),計(jì)算理論(復(fù)雜性、不可計(jì)算函數(shù)、啟發(fā)式解決復(fù)雜問(wèn)題、計(jì)算問(wèn)題的分類(lèi))以及與計(jì)算機(jī)科學(xué)相關(guān)的社會(huì)、倫理和法律問(wèn)題。教材選用俄勒岡州立大學(xué)John Conery教授編寫(xiě)的Explorations in Computing: An Introduction to Computer Science(CRC Press, 2011, ISBN: 978-1439812624)。參考書(shū)為MIT的Hal Abelson教授等編寫(xiě)的Blown To Bits: Your Life, Liberty, and Happiness after the Digital Explosion(Addison-Wesley, 2008, ISBN: 978-0137135592)。該課程的具體內(nèi)容見(jiàn)表1,實(shí)驗(yàn)安排見(jiàn)表2。
UC Berkley的入門(mén)課程是CS10,課程名稱(chēng)是“計(jì)算之美、計(jì)算之樂(lè)”(The Beauty and Joy of Computing)。此課程專(zhuān)門(mén)面向?yàn)榉怯?jì)算機(jī)專(zhuān)業(yè),主要的內(nèi)容包括三個(gè)部分:(1)如何將解決問(wèn)題的想法變成計(jì)算機(jī)程序(Big Ideas of Programming),主要包括:抽象、算法、遞歸、編程范型、并發(fā)、分布式計(jì)算;(2)計(jì)算機(jī)學(xué)科的重要思想(Big Ideas of Computing),主要包括:3D圖形、視頻游戲、計(jì)算博弈論的原理、人工智能、人機(jī)交互、云計(jì)算、計(jì)算的極限、計(jì)算對(duì)世界及社會(huì)的影響;(3)通過(guò)豐富的計(jì)算機(jī)應(yīng)用闡明計(jì)算機(jī)如何改變世界(Beauty and Joy),這部分的內(nèi)容通過(guò)完成CS Unplugged項(xiàng)目的活動(dòng)和兩個(gè)同學(xué)一組的進(jìn)行一個(gè)三個(gè)周的結(jié)對(duì)編程項(xiàng)目來(lái)完成此部分的教學(xué)。本課程采用Scratch語(yǔ)言進(jìn)行教學(xué),Scratch是易用的圖形化的編程語(yǔ)言,具有模塊化的程序構(gòu)造和采用在界面上進(jìn)行拖拽方式進(jìn)行編程的特點(diǎn)。為了使學(xué)生得到軟件工程的訓(xùn)練,在編程開(kāi)發(fā)過(guò)程中采用結(jié)對(duì)編程(Pair Programming)的模式進(jìn)行。
表1CMU CS-15110教學(xué)內(nèi)容
周次 每周第一講 每周第二講 每周第三講
Unit 01: History of Computing Overview Pre-Electronic Computing Electronic Computing
Unit 02: Introduction to Ruby Basics For Loops -
Unit 03: Algorithmic Thinking Ranges, Arrays and Iterators Arrays, Sieve of Eratosthenes -
Unit 04: Iteration Linear Search Insertion Sort Introduction to Big O
Unit 05: Recursion Recursive Thinking Binary Search Merge Sort
Unit 06: Organizing Data List-Based Data Structures Hash Tables Non-Linear Data Structures
Unit 07: Data Representation Integer, Floating Point, Text Compression Images and Sound
Unit 08: Computer Organization Boolean Logic, Gates Levels of Abstraction The Machine's Language
Unit 09: Randomness Random Number Generators Games with Random Numbers More Fractals and Cellular Automata*
Unit 10: Concurrency Multitasking/Deadlock Pipelining/Distributed Computing
Unit 11: The Internet Design Principles Layers and Abstraction Encryption
Unit 12: Simulation Basic Concepts, Example Continuous-Time Simulations -
Unit 13: Artificial Intelligence Games and Search Strategies Natural Language Processing Smartest Machine on Earth(NOVA video)
Watson wins Jeopardy!
Unit 14: The Limits of Computing Intractability P and NP Non-computability
Epilogue: The Future of Computing Quantum Computing
表2CMU CS-15110實(shí)驗(yàn)內(nèi)容
Lab 1 Lightbot
Lab 2 Intro to Ruby and irb
Lab 3 Arrays and Loops
Lab 4 More Searching and Sorting
Lab 5 Debugging Practice
Lab 6 Fractals
LAB EXAM 1
Lab 7 Hash Tables
Lab 8 Bitmap Images
Lab 9 Cellular Automata
Lab 10 Review
Lab 11 Graphics in Ruby
Lab 12 Programming a Game
LAB EXAM 2
Stanford大學(xué)的CS101課程名稱(chēng)為“計(jì)算基礎(chǔ)”(Essentials of computing),課程的主要教學(xué)目的是讓學(xué)生了解和理解計(jì)算機(jī)的工作原理、優(yōu)點(diǎn)及缺點(diǎn)。主要內(nèi)容包括編程、數(shù)字化、安全、網(wǎng)絡(luò)。教學(xué)方式主要采用在線課程網(wǎng)站輔助的自學(xué)方式。編程語(yǔ)言采用JavaScript,無(wú)特殊編程工具,所以編程實(shí)驗(yàn)全部在瀏覽器中進(jìn)行。教學(xué)內(nèi)容包括:計(jì)算機(jī)及代碼的特性、哪些問(wèn)題計(jì)算機(jī)可以解、哪些問(wèn)題計(jì)算機(jī)不能解;計(jì)算機(jī)硬件(芯片、CPU、內(nèi)存、硬盤(pán))的工作原理;計(jì)算機(jī)軟件的工作原理,什么是程序、什么是運(yùn)行;數(shù)字圖像、視頻工作原理;編程基本概念;如何組織數(shù)據(jù);因特網(wǎng)工作原理(IP地址、路由、以太網(wǎng)、WIFI)、計(jì)算機(jī)安全。
MOOC平臺(tái)Udacity的CS101課程名稱(chēng)為“計(jì)算機(jī)科學(xué)概論”。本課程以開(kāi)發(fā)一個(gè)搜索引擎為目標(biāo)介紹計(jì)算機(jī)科學(xué)的基本概念及如何掌握程序設(shè)計(jì),編程語(yǔ)言采用Python語(yǔ)言。設(shè)計(jì)搜索引擎的主要設(shè)計(jì)的問(wèn)題是:抽取網(wǎng)頁(yè)中的鏈接(如何從一個(gè)網(wǎng)頁(yè)找出所有鏈接),搜索及收集網(wǎng)頁(yè)(如何管理數(shù)據(jù)),建立逆向索引完成查詢(xún)(使用復(fù)雜數(shù)據(jù)結(jié)構(gòu)-圖、哈希表),對(duì)搜索結(jié)果進(jìn)行排序(如何使用遞歸)。教學(xué)內(nèi)容以開(kāi)發(fā)搜索引擎原型為主線介紹了程序設(shè)計(jì)的基本概念和Python的模塊、類(lèi)型、類(lèi)、繼承、文件及異常。
通過(guò)上面四門(mén)課程和實(shí)地的考察可知美國(guó)高校在第一門(mén)計(jì)算機(jī)課程的開(kāi)設(shè)最顯著的特征是多樣性。多樣性體現(xiàn)在有多種課程類(lèi)型,主要課程類(lèi)型分為以程序設(shè)計(jì)為核心(Programming Focus)和不以程序設(shè)計(jì)為核心(Programming de-focused)的兩大類(lèi)。程序設(shè)計(jì)類(lèi)根據(jù)編程語(yǔ)言及編程范型又有命令式優(yōu)先(Imperative-first)、面向?qū)ο笫絻?yōu)先(Objects-first)和函數(shù)式(Functional-first)三種。非程序設(shè)計(jì)類(lèi)分為寬度優(yōu)先(Breadth-first)、算法優(yōu)先(Algorithms-first)和硬件優(yōu)先(Hardware-first)三種。多樣性還體現(xiàn)教學(xué)內(nèi)容選取的側(cè)重上,有的課程注重知識(shí)性、有的課程注重原理性。
另外在第一門(mén)計(jì)算機(jī)課程的設(shè)計(jì)方面有的高校區(qū)分了專(zhuān)業(yè)與非專(zhuān)業(yè),有的則沒(méi)有區(qū)分;在課程設(shè)計(jì)上有的考慮到有后續(xù)課程,有的無(wú)考慮;課程的性質(zhì)基本都是選修,只是考慮強(qiáng)調(diào)了課程的先修課程要求。
四、中美第一門(mén)計(jì)算機(jī)課程對(duì)比
為了清晰地分析清楚中美第一門(mén)計(jì)算機(jī)課程的異同,可以從10個(gè)方面進(jìn)行對(duì)比形成如下表格。在課程內(nèi)容設(shè)置方面美國(guó)第一門(mén)的課程從Great principle of computing(偉大的計(jì)算原理)、Great Ideas in Computer Science(計(jì)算機(jī)科學(xué)的偉大思想)等角度出發(fā)強(qiáng)調(diào)課程的科學(xué)性及原理性,而中國(guó)的課程內(nèi)容強(qiáng)調(diào)的是知識(shí)性和工具性。例如在講授差分機(jī)這一知識(shí)點(diǎn)時(shí),美國(guó)的課程通過(guò)實(shí)例講解了差分機(jī)的求解方法,而中國(guó)大多數(shù)教科書(shū)只是介紹了差分機(jī)的發(fā)明過(guò)程,同學(xué)不會(huì)了解其工作原理。在課程要求方面,美國(guó)的課程提出了較高要求,例如在CS1中要求同學(xué)開(kāi)發(fā)一個(gè)搜索引擎原型,并圍繞此采用進(jìn)行教學(xué)設(shè)計(jì),學(xué)生覺(jué)得與自己熟悉的搜索有直接聯(lián)系,并覺(jué)得很神秘、很復(fù)雜,通過(guò)學(xué)習(xí)自己能完成這樣一個(gè)系統(tǒng),很有成就感,教學(xué)也有“抓手”。在課外環(huán)節(jié)方面,CMU的CS-15110及伯克利的CS10安排了非常細(xì)致和大量的作業(yè)和實(shí)驗(yàn),配備了龐大的助教隊(duì)伍,能有針對(duì)性地輔導(dǎo)學(xué)生及批改作業(yè)。在教學(xué)理念的物化方面美國(guó)的教師發(fā)明了許多支持第一門(mén)計(jì)算機(jī)課程的適合初學(xué)者的工具、語(yǔ)言,例如Alice、Scratch、Raptor等。具體情況見(jiàn)表3。
表3中美第一門(mén)計(jì)算機(jī)課程對(duì)比
比較項(xiàng)目 美國(guó)大學(xué) 中國(guó)大學(xué) 結(jié)論
計(jì)算思維的影響 多樣,普遍認(rèn)識(shí)是像計(jì)算機(jī)科學(xué)家一樣思考 共識(shí)、概念熱 領(lǐng)先
課程設(shè)置思路 多路徑(Pathways、Threads)實(shí)現(xiàn)多樣性 分類(lèi)分層次 相似
課程模式、風(fēng)格 范型明確、六范型 有三種初步類(lèi)型(何欽銘教授提出) 差距中
內(nèi)容設(shè)置 原理性、科學(xué)性、層次分明
Great Ideas in Computer Science 知識(shí)性、工具性、層次不清(信息素養(yǎng)) 差距中
教學(xué)要求 要求高、很具體、有抓手,是重要課程 要求低、較抽象、難操作,學(xué)生稱(chēng)之為“水課” 差距大
課外環(huán)節(jié) 要求扎實(shí)并能及時(shí)給學(xué)生反饋 助教環(huán)節(jié)薄弱 差距大
考核 注重過(guò)程 偏重筆試 差距大
教材 特色明確、原創(chuàng)、數(shù)量少、他用多 特色不明確、抄編、數(shù)量多、自用多 差距大
教學(xué)效果評(píng)估 科學(xué)、第三方研究、引入第三方評(píng)價(jià) 不合理、自評(píng)為主 差距大
教學(xué)理念的物化 發(fā)明開(kāi)發(fā)了很多工具、語(yǔ)言 沒(méi)有,也不重視 差距大
五、CS1設(shè)計(jì)的技術(shù)爭(zhēng)論
在第一門(mén)計(jì)算機(jī)課程的設(shè)計(jì)中在很多技術(shù)方面長(zhǎng)期存在不同的做法和各式各樣的意見(jiàn),并且長(zhǎng)期存在著爭(zhēng)論和爭(zhēng)鳴。這反映了第一門(mén)計(jì)算機(jī)課程的多樣性和計(jì)算機(jī)學(xué)科的復(fù)雜性,也反映了計(jì)算機(jī)學(xué)科發(fā)展的快速性。顯然這些爭(zhēng)論還將繼續(xù)進(jìn)行,我們要對(duì)這些問(wèn)題有清晰的認(rèn)識(shí)和自己獨(dú)立的觀點(diǎn),進(jìn)行合理的折中和取舍,從而指導(dǎo)我們的課程設(shè)置及具體教學(xué)。爭(zhēng)論主要體現(xiàn)在:基于傳統(tǒng)平臺(tái)還是新平臺(tái)、編程范型與語(yǔ)言的選擇、如何引入軟件開(kāi)發(fā)實(shí)踐、如何對(duì)待并行處理、實(shí)驗(yàn)平臺(tái)是在線(Via Web Browser)編譯還是獨(dú)立編譯。這方面的大部分內(nèi)容在ACM的CC2001及CC2013報(bào)告中有詳細(xì)的介紹。
在CS1的教學(xué)中如何選擇平臺(tái)是一個(gè)困擾許多教師的問(wèn)題。基于傳統(tǒng)的平臺(tái)選擇Windows還是Linux。隨著編程裝置(programmable devices)多樣性迅速增長(zhǎng),例如Web、Cloud、移動(dòng)終端(手機(jī))、robots、游戲終端、開(kāi)源硬件(raspberry-pi、Arduino)都可作為教學(xué)平臺(tái)。移動(dòng)終端(手機(jī))通過(guò)jbit、C4droid、TouchStudio、Alogo等工具也可成為主流的教學(xué)平臺(tái)。所以在CS1中平臺(tái)的選擇存在多樣性的可能,應(yīng)該結(jié)合教學(xué)內(nèi)容,合理地選擇平臺(tái)。
編程范型Programming Paradigms(styles)主流的包括Procedural、Modular、Data Abstraction、Object-oriented、Generic等形式。編程語(yǔ)言可分為命令式、面向?qū)ο笫?、函?shù)式、邏輯式,從編譯和運(yùn)行的角度語(yǔ)言又有靜態(tài)、動(dòng)態(tài)之分。另外編程范型和編程語(yǔ)言之間的關(guān)系十分復(fù)雜,而往往一個(gè)編程語(yǔ)言可以支持多種范型,但一個(gè)程序員很難駕馭多個(gè)編程范型,例如可以用C++寫(xiě)出一個(gè)完全過(guò)程化的程序,可以用C++寫(xiě)出一個(gè)純粹的面向?qū)ο蟪绦?,甚至還有人可以寫(xiě)出糅雜了兩種范型的程序。教師尤其是教材的編寫(xiě)者要深入地了解編程范型形成的動(dòng)機(jī)和背景,才能更好地指導(dǎo)學(xué)生進(jìn)行程序設(shè)計(jì),編出的教材才能不至于出問(wèn)題。例如在C++中,作者一定要區(qū)分一些基本問(wèn)題:為什么要用面向?qū)ο?,什么時(shí)候它的價(jià)值才能體現(xiàn),什么是基于對(duì)象和面向?qū)ο?,ADT不是面向?qū)ο??;仡櫧?0年在CS1中教學(xué)語(yǔ)言選擇方面呈現(xiàn)的“簡(jiǎn)單化”趨勢(shì):(1)語(yǔ)言更加安全,例如出現(xiàn)了Java和C#等比C和C++更加安全的managed languages。(2)出現(xiàn)了大量的如Python、Ruby、JavaScript (JQuery、Prototype.js)等動(dòng)態(tài)腳本化的語(yǔ)言(dynamic languages,Script)作為教學(xué)語(yǔ)言。(3)可視化編程引入教學(xué),例如 Alice、Scratch、Logo、流程圖工具-Raptor等都是可視化編程語(yǔ)言,有的就是專(zhuān)門(mén)為教學(xué)設(shè)計(jì)的語(yǔ)言。(4)高層抽象、無(wú)狀態(tài)、描述性的語(yǔ)言如Haskell、Scheme 、Snap被引入教學(xué)。(5)基于庫(kù)的支持,例如University of Washington 的Kelvin Sung教授在NSF的支持下開(kāi)展了Game-Themed CS Education: Empowering the Faculty項(xiàng)目,其目的是面向已有的CS1課程開(kāi)發(fā)出進(jìn)行游戲開(kāi)發(fā)的基本庫(kù),既簡(jiǎn)化了學(xué)生開(kāi)發(fā)的難度,又激發(fā)了學(xué)生的興趣。該項(xiàng)目的成果在許多學(xué)校進(jìn)行了應(yīng)用,取得了較好的效果。(6)簡(jiǎn)化語(yǔ)法,例如CMU 15122課程采用的C0語(yǔ)言就是對(duì)C語(yǔ)言進(jìn)行了語(yǔ)法簡(jiǎn)化,是一個(gè)“Syntax light”的語(yǔ)言。其實(shí)以上的趨勢(shì)除了“簡(jiǎn)單化”之外,實(shí)質(zhì)上是更好地體現(xiàn)了計(jì)算思維,周以真指出計(jì)算思維是“Mental not Metal”,其本質(zhì)是要加強(qiáng)學(xué)生的思維能力訓(xùn)練而不是實(shí)現(xiàn)細(xì)節(jié)的培養(yǎng)。這樣可以幫助學(xué)生跳過(guò)了語(yǔ)法訓(xùn)練細(xì)節(jié),快速進(jìn)入算法思考及設(shè)計(jì)。因此在CS1編程范型與語(yǔ)言的選擇難點(diǎn)上要認(rèn)真思考、充分認(rèn)知、反復(fù)實(shí)踐、合理選擇。
軟件工程及實(shí)踐為我們提供了豐富的養(yǎng)分,但如何引入軟件開(kāi)發(fā)實(shí)踐也是較為困難的選擇。例如許多課程采納了單元測(cè)試(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))、版本控制、結(jié)對(duì)編程、開(kāi)發(fā)角色輪替、集成開(kāi)發(fā)環(huán)境、敏捷開(kāi)發(fā)(極限編程、增量開(kāi)發(fā))、設(shè)計(jì)模式、可視建模等軟件開(kāi)發(fā)的內(nèi)容,取得了較好的成效。但此方面的任何一個(gè)內(nèi)容也十分龐大,如何在學(xué)時(shí)有限的條件下合理應(yīng)用成熟的軟件工程方法及實(shí)踐需要結(jié)合教學(xué)內(nèi)容進(jìn)行凝練。
隨著多核、眾核、并行計(jì)算及大數(shù)據(jù)(Big Data)技術(shù)的飛速發(fā)展和普及,在第一門(mén)計(jì)算機(jī)課程里是否引入與之相關(guān)的內(nèi)容是值得考慮的。除了相關(guān)的基本概念及基本方法之外,如何對(duì)進(jìn)程調(diào)度、異步事件驅(qū)動(dòng)處理、分布式存儲(chǔ)和大數(shù)據(jù)的處理架構(gòu)等關(guān)鍵技術(shù)進(jìn)行深入淺出的講授及合理安排訓(xùn)練,對(duì)教師是個(gè)巨大的挑戰(zhàn)。
在編程訓(xùn)練中通過(guò)瀏覽器配合在線學(xué)習(xí)及編譯的網(wǎng)站進(jìn)行教學(xué)及實(shí)驗(yàn)是簡(jiǎn)化編程訓(xùn)練的一個(gè)重要途徑。常見(jiàn)在線編程網(wǎng)站有Treehouse、Codecademy、LinuxCast、LearnStreet、Code.org、Topcoder、Codeevy、Codeschool和Tryhaskell.org。另外隨著云計(jì)算技術(shù)的普及也有很多面向云計(jì)算的開(kāi)發(fā)工具出現(xiàn),為編程訓(xùn)練提供了新途徑,常見(jiàn)工具包括Cloud9 IDE、Codeanywhere、Coderun、Cloud IDE、Kodingen、ShiftEdit、Akshell、Orion和CodeTester。
六、結(jié)論
對(duì)比中美高校第一門(mén)計(jì)算機(jī)課程,我們?cè)趯?duì)計(jì)算機(jī)思維關(guān)注程度、課程設(shè)計(jì)思路及課程模式等宏觀方面與美國(guó)差距不大,但是在具體課程的微觀方面還有不少差距。美方課程的開(kāi)設(shè)為我們提供了較寬的視野、較新的課程內(nèi)容和較好的教學(xué)方式。各個(gè)學(xué)校應(yīng)該根據(jù)自己學(xué)校的定位、學(xué)生特點(diǎn)和專(zhuān)業(yè)要求,按照“分類(lèi)分層次”的原則,結(jié)合計(jì)算思維能力培養(yǎng),在教學(xué)內(nèi)容及教學(xué)方法方面進(jìn)行深入研究,在理解美國(guó)高校課程的設(shè)計(jì)思路基礎(chǔ)之上選取合適的內(nèi)容及方式,對(duì)我們的第一門(mén)計(jì)算機(jī)課程進(jìn)行改革和實(shí)踐。
參考文獻(xiàn):
[1] R. E. Bryant. Introductory Computer Science Education at Carnegie Mellon University: A Dean's Perspective[R]. Technical report CMU-CS-10-140.10.1007/s11390-011-1157-0.
[2] 教育部高等學(xué)校計(jì)算機(jī)基礎(chǔ)課程教學(xué)指導(dǎo)委員會(huì). 高等學(xué)校計(jì)算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略研究報(bào)告暨計(jì)算機(jī)基礎(chǔ)課程教學(xué)基本要求[M]. 北京:高等教育出版社,2009.
[3] 李廉. 計(jì)算思維——概念與挑戰(zhàn)[J]. 中國(guó)大學(xué)教學(xué),2012(1).
[4] 李波. 計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)[J]. 中國(guó)大學(xué)教學(xué),2012(7).
[5] The Joint Task Force on Computing Curricula Association for Computing Machinery IEEE-Computer Society[Z]. Computer Science Curricula 2001, February 2001
[6] The Joint Task Force on Computing Curricula Association for Computing Machinery IEEE-Computer Society[Z]. Computer Science Curricula 2013. February 2013
[致謝:本文的撰寫(xiě)是集體智慧的結(jié)晶,在陳國(guó)良院士的領(lǐng)導(dǎo)下參與工作的同志有張銘教授、董榮勝教授、張龍副編審等]
[責(zé)任編輯:余大品]
(上接第85頁(yè))經(jīng)費(fèi)如何支付給企業(yè)也不清楚。有學(xué)校指出,到外地開(kāi)展實(shí)踐教學(xué)的經(jīng)費(fèi)缺口較大。
(5)課程體系重構(gòu)遇到困難?!白吭接?jì)劃”強(qiáng)調(diào)工程實(shí)踐能力、工程設(shè)計(jì)能力與工程創(chuàng)新能力的培養(yǎng),這就需要重構(gòu)新的課程體系。但長(zhǎng)期以來(lái),自動(dòng)化專(zhuān)業(yè)課程設(shè)置過(guò)分強(qiáng)調(diào)學(xué)科的系統(tǒng)性、邏輯性,按學(xué)科設(shè)置課程,忽視學(xué)科之間的整合、關(guān)聯(lián)。現(xiàn)在重構(gòu)新的課程體系,部分教師會(huì)不適應(yīng)。
(6)學(xué)生對(duì)“卓越計(jì)劃”的培養(yǎng)目標(biāo)和要求需要進(jìn)一步加深認(rèn)識(shí)、統(tǒng)一思想。少數(shù)學(xué)生以考研為目的,希望在低年級(jí)時(shí)享受“卓越班”濃厚的學(xué)習(xí)氛圍,在高年級(jí)時(shí)不進(jìn)入企業(yè)實(shí)習(xí),退出“卓越班”專(zhuān)心復(fù)習(xí)考研。
(7)需要加強(qiáng)“卓越計(jì)劃”實(shí)施過(guò)程的管理,特別是學(xué)生在企業(yè)學(xué)習(xí)階段的安全、企業(yè)技術(shù)保密等方面的管理。
五、有關(guān)建議
為了保證“卓越計(jì)劃”的順利實(shí)施,各校提出了多項(xiàng)建議與意見(jiàn)。主要有以下幾個(gè)方面:加大實(shí)踐教學(xué)條件建設(shè),加大教師工程能力培養(yǎng);加強(qiáng)對(duì)“卓越計(jì)劃”試點(diǎn)專(zhuān)業(yè)的經(jīng)費(fèi)支持;調(diào)動(dòng)企業(yè)培養(yǎng)人才的積極性,讓企業(yè)樂(lè)于加入到培養(yǎng)人才的行列中;對(duì)研究型大學(xué)的“卓越計(jì)劃”專(zhuān)業(yè)點(diǎn),建議在專(zhuān)業(yè)碩士研究生名額上給予政策傾斜;逐步制定和完善卓越工程師教育培養(yǎng)標(biāo)準(zhǔn),等等。
[責(zé)任編輯:夏魯惠]