亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向卓越工程師培養(yǎng)的C++教學實踐與建議

        2018-10-25 03:14:46張小國祝雪芬
        計算機教育 2018年10期
        關鍵詞:能力教學學生

        張小國,祝雪芬

        (東南大學 儀器科學與工程學院,江蘇 南京 210096)

        0 引 言

        卓越工程師教育培養(yǎng)計劃(簡稱卓越計劃)旨在培養(yǎng)造就一大批創(chuàng)新能力強、適應經(jīng)濟社會發(fā)展需要的各類型高質量工程技術人才,為國家走新型工業(yè)化發(fā)展道路、建設創(chuàng)新型國家和人才強國戰(zhàn)略服務。按照教育部的設想[1],卓越計劃具有3個特點:①行業(yè)企業(yè)深度參與;②學校按通用標準和行業(yè)標準培養(yǎng)工程人才;③強化學生的工程和創(chuàng)新能力。顯然,卓越計劃的實施離不開具有卓越培養(yǎng)水平的大學教師。

        目前,信息化技術已經(jīng)滲透到每一個工科領域,我國高校工科專業(yè)已普及程序設計課程,如何在課程教育中有效貫徹卓越計劃,值得每個教師深思。我國C++教育工作者對貫徹卓越工程師教育的理論方法進行了大量的探索,典型如:①培養(yǎng)學生計算思維[2-4];②針對教學內容與學科專業(yè)脫節(jié)的弊端,變革教學內容的組織和設置[5],串聯(lián)教學內容、方法和實踐[6-7];③針對以往教學實踐性不足的問題,研究貫徹卓越計劃的分階段教學模式[8-10];④研究基于案例、項目及問題導向的教學模式[11-12];⑤研究以學生算法邏輯訓練和工程應用能力培養(yǎng)為導向的考核方法[7,11]。上述探索研究有效培養(yǎng)了學生的計算思維能力、應用能力和創(chuàng)新能力,推動了高校工科計算機教育水平的提高。

        1 程序設計語言教學的卓越工程師思維與能力要求分析

        程序設計語言課程旨在使工科學生深入理解使用計算機解決問題的基本原理與方法,學會科學計算和數(shù)據(jù)處理,樹立以算法為基礎的程序設計理念,鍛煉邏輯思維能力,為學習專業(yè)相關的信息處理技術打下基礎。

        對照卓越計劃,筆者認為程序設計與算法語言(C/C++)課程對應的卓越工程師思維和能力應體現(xiàn)在以下幾點。

        1)快速設計并有效轉化為計算問題的能力。

        程序設計課程實踐性強,能否開發(fā)出滿足功能的程序是最直接的教學效果評判標準。通過課程學習,學生應具備將專業(yè)問題轉化為計算問題的能力,合理設計數(shù)據(jù)模型及數(shù)據(jù)結構,開發(fā)算法,實現(xiàn)計算機求解,這正是周以真教授提出的計算思維能力[13]。

        2)敏捷定位并迅速解決軟件缺陷的能力。

        軟件缺陷(bug)指軟件中破壞正常運行的問題、錯誤或隱藏的缺陷等??焖俣ㄎ籦ug并給出針對性解決方案,是軟件開發(fā)和維護的常態(tài)需求。軟件全生命周期往往涉及不同的開發(fā)和維護人員。在不熟悉整體架構和代碼前提下,技術人員需要快速復現(xiàn)和定位bug并給出解決方案,這是本課程需著力培養(yǎng)的基本能力。

        3)自主學習并靈活運用新知識的能力。

        課堂教學難以面面俱到,卓越的內涵還在于快速學習新知識、新技能并快速應用。通過學習本課程,學生應具備如下技能:①快速自學本編程語言相關知識;②快速自學新計算機語言;③快速自行實現(xiàn)相關算法;④快速熟悉一個已有計算機系統(tǒng)等技能。

        4)有效溝通且循規(guī)蹈矩的能力。

        現(xiàn)代軟件大工業(yè)多用跨國、多地、并行開發(fā)模式,從需求、設計、代碼、測試、修復到后期維護都離不開人際交流,良好的計算機相關交流和交互能力是項目順利實施的保證。這種能力包含兩個層面的內容:①良好的口頭和書面交流能力;②遵循工程實踐中成文及約定俗成的規(guī)范,保證編碼和文檔的可讀性和可維護性。

        2 貫徹卓越工程師計劃的C++教學實踐

        綜上,筆者參考在工業(yè)界7年實踐及學術界科學研究和系統(tǒng)開發(fā)的經(jīng)驗,在C/C++程序設計語言教學中,將前述4點需要著力培養(yǎng)的能力轉化為圖1右側的6種教學實踐與建議。

        圖1 基于工程實踐視野的卓越工程師能力分析與能力培養(yǎng)對應關系圖

        2.1 理清概念,應用導向但不糾纏于細枝末節(jié)

        教師對教學內容的深刻理解是一切教學改革和實踐的根基。理清概念有助于學生深入理解知識點,避免誤解,少走彎路。在教學過程中,既要避免照本宣科,又要反對故弄玄虛。教師應盡量用淺顯直白的語言傳遞概念,用身邊的例子作比喻,充分使用學生已有的生活經(jīng)驗作關聯(lián),引發(fā)有效聯(lián)想。例如指針章節(jié),可以將內存分配比喻成到酒店住宿,把指針比喻成房卡;又如面向對象,強調派生的本質在多數(shù)場合下就是類型細分,小類對象本質上就是大類對象,派生類對象和基類對象的相互轉化規(guī)則也就了然于心了。

        在教學過程中要有所側重,關鍵是傳遞學習方法和幫助學生總結提煉,澄清典型理解偏差,如不鼓勵學生記憶字符的ASCII值、大小寫字符的ASCII差值、I/O流輸出格式規(guī)范等,不鼓勵學生死記硬背運算符的優(yōu)先級(建議學生多用括號)等。

        要達到上述效果,教師應多學習國外先進教材并深入研究C/C++規(guī)范,沒有捷徑。

        2.2 規(guī)范編程,身體力行潛移默化

        算法可靈活、編碼須老實。編程者要牢記“程序是寫給別人看的”這一準則,保證程序可讀可維護。大學新生多屬初次接觸編程,容易寫出不易識別的代碼。教師應身體力行引導,要及時指出學生編程中的不良習慣并督促其改進。

        (1)代碼書寫和展示遵循工業(yè)規(guī)范或約定俗成的規(guī)矩,采用名副其實而非莫名其妙的變量名、函數(shù)名、類名,讓人一目了然。

        (2)介紹谷歌等公司的編碼規(guī)范,推薦一些書寫優(yōu)美的代碼,使學生感知編碼美學。

        (3)組織學生討論評判不同的編碼風格和編碼習慣,使之理解好和壞評判的內在邏輯。

        (4)引導學生把握整體架構,感知編碼的動態(tài)演化過程,貫徹自頂向下的程序設計邏輯,展示在整體結構把握上的代碼編寫方法論和整體美學。

        2.3 健全思維,傳遞邏輯完備與計算可信概念

        邏輯缺陷和計算錯誤是導致軟件bug的主因之一。幫助學生建立代碼安全(Security programming)和科學計算可信度(Reliability of scientific computing)的基本觀念,有助于學生平滑進入科學研究和研發(fā)工作。

        代碼安全涉及知識廣,課堂難以全面覆蓋,但可有選擇強調部分內容,并實踐之。

        (1)幫助學生建立全面的邏輯思維模型。講解基本語法時,要提示學生考慮所有執(zhí)行分支,如if邏輯要考慮else,switch語句要考慮未被case捕捉而進入default的情況,for循環(huán)要考慮循環(huán)何時開始、改變趨勢、終止條件,遞歸有無考慮終止條件等。

        (2)強化學生對內存分配的理解。C++不支持垃圾收集,程序靈活,客觀性上增加了bug產(chǎn)生的可能性,要讓初學者明白內存分配和內存銷毀的對應關系,將bug扼殺在萌芽中。

        (3)強調變量和指針的初始化。不初始化指針容易導致訪問野指針現(xiàn)象,不初始化變量容易將臟數(shù)據(jù)帶入執(zhí)行過程,因此要求對所有的指針和變量賦安全初值。

        (4)讓學生評議自己作業(yè)中的典型錯誤,引發(fā)討論和思考,加深他們對可能出現(xiàn)bug場景的認識,形成對邏輯完備的條件反射。

        工科學生學習編程的主要目的是科學計算,而計算機采用有限二進制表達現(xiàn)實,誤差難免。本科學生很少接觸到計算方法或數(shù)值分析這類課程,因此需要對這類思維進行有意識培養(yǎng)。在教學過程中,可用例程讓學生逐步建立可信計算的概念:

        (1)整數(shù)除以整數(shù)等于整數(shù);

        (2)比較兩個實數(shù)是否相等一般不直接用==比較;

        (3)數(shù)字相加可導致向上溢出,比如平均值計算可能因為和的向上溢出而出錯等。

        2.4 強化調試,弄清靜態(tài)邏輯和動態(tài)變化

        軟件缺陷難以杜絕是共識。軟件調試是對程序的排錯過程,包括了編譯時和運行時兩個階段,前者消除編譯期錯誤,后者檢查運行時缺陷。筆者在教學過程中發(fā)現(xiàn):①在學習早期,學生對語法不熟悉,容易受困于基本語法錯誤而無法深入;②隨著學習的深入,學生可以成功編譯程序,但常?;ㄙM成倍的時間定位和修改缺陷。這容易挫傷學生學習的積極性和自主性,使之產(chǎn)生畏難情緒。

        在工業(yè)界,工程技術人員常常需要在對軟件整體非常不熟悉的情況下在極短時間內完成bug修改。開發(fā)維護軟件中,處理一大堆不知道何人何時完成的歷史遺留代碼是工作常態(tài),這種能力已成為工業(yè)界判斷優(yōu)秀和平庸的標準。

        筆者在教學工作中,主要采取了兩步法提高學生程序調試能力。

        (1)在學習初期,以強化基本語法為主,采用雙語教學模式讓學生具備基本技術英語閱讀能力,引導學生自己理解編譯器報錯和警告信息,讓學生對典型錯誤建立起基本的概念,鼓勵學生通過幫助系統(tǒng)和互聯(lián)網(wǎng)查詢錯誤原因并且搜尋相關解決方案。

        (2)在學生對基本語法有一定素養(yǎng)的前提下,強化學生對動態(tài)工程問題的定位能力,對軟件常見bug分類,言傳身教設置斷點、單步調試、watch變量等基本的調試方法,講解實例,分析原因,演示debug過程并講解關鍵技巧。

        2.5 授之以漁,培養(yǎng)快速自學能力

        C++課程實踐性強,涉及知識包羅萬象,課堂教學不是全部,應避免灌輸式教學,強化“做中學、學中做”,使學生在犯錯中不斷進步。

        同時,程序設計語言日新月異,教師需要在教學過程中強化學生對計算機語言特點、計算思維、算法的理解,讓學生學會一門語言就可以快速短時間掌握其他計算機語言、快速自己查詢資料、快速設計新算法,提高運用能力。

        (1)用問題的形式啟發(fā),讓學生自己親自驗證和體驗,提高學習效果。

        (2)避免有問必答的教學,鼓勵學生用IDE help或網(wǎng)絡解決,并跟蹤過程。

        (3)讓學生自學部分章節(jié),如C++流的部分細節(jié)內容,鼓勵學生在編程中“做中學”。

        (4)給有余力的學生提供一些相對高級教程或者推薦一些課外讀物,鼓勵其自由發(fā)展。

        2.6 精心設計,循序漸進安排課后作業(yè)

        程序設計課程教學離不開上機實戰(zhàn),作業(yè)太容易難以鍛煉學生的能力,太難會打擊學生的積極性,總體上應該合理安排、循序漸進,用容易的題目鞏固教學使學生積累信心,難一點的題目引發(fā)學生思考和接受挑戰(zhàn),從而讓學生真正并理解和掌握教學內容。

        在作業(yè)環(huán)節(jié),要重視工業(yè)界對信息化的需求,致力于提高學生的實踐能力和協(xié)作能力,對學生在實踐中暴露的問題,給予仔細的指導。

        (1)強化對字符串、指針、動態(tài)內存分配的訓練,將這種訓練貫穿C++整個教育過程;

        (2)強化對重要數(shù)據(jù)結構的訓練,要求學生對動態(tài)數(shù)組、鏈表、隊列等數(shù)據(jù)結構按STL標準接口編程實現(xiàn),使之掌握STL接口,對C++面向對象思想有更深刻的認識;

        (3)設置大作業(yè)環(huán)節(jié)讓學生實踐本專業(yè)工程計算問題,從最基本的曲線擬合到方程求解、矩陣運算,從報文處理到信號濾波,從圖形繪制到圖像處理等。

        在教學實踐中,教師要高度重視作業(yè)方面的師生互動:一是對學生作業(yè)的典型問題重點講解和引導;二是特定學生屢犯的錯誤要針對性提醒。這種教學互動可以及時了解學生對知識的掌握和運用程度,并依據(jù)這些反饋信息及時調整教學內容、方法和進度。

        3 結 語

        教師對教學內容本身的深刻理解、對實際工作技能需求的清晰認識,是任何教學改革和教學實踐的根基,離開了這一點討論卓越工程師思維培養(yǎng)或者教學改革是難以取得良好效果的。幾年的實踐表明,本文討論的這些執(zhí)行層面的教學方法取得了不錯的教學效果,激發(fā)了學生的學習熱情并培養(yǎng)了動手能力。以近3年為例,學生后續(xù)參加美國ACM、北斗杯等國際或國家級競賽獲特等和一等獎10余項。

        需要指出的是,實施上述教學方法不需要專門的時間單獨執(zhí)行,可以是分散穿插到日常的教學過程中進行,并有意識針對性地應用。這些舉措顯然無法承載卓越工程師培養(yǎng)的全部使命,但可以潛移默化提高學生在計算機方面的卓越工程師素養(yǎng)。

        猜你喜歡
        能力教學學生
        消防安全四個能力
        微課讓高中數(shù)學教學更高效
        甘肅教育(2020年14期)2020-09-11 07:57:50
        趕不走的學生
        大興學習之風 提升履職能力
        人大建設(2018年6期)2018-08-16 07:23:10
        你的換位思考能力如何
        “自我診斷表”在高中數(shù)學教學中的應用
        東方教育(2017年19期)2017-12-05 15:14:48
        對外漢語教學中“想”和“要”的比較
        唐山文學(2016年2期)2017-01-15 14:03:59
        學生寫話
        學生寫的話
        抄能力
        一区二区视频在线国产| 99视频全部免费精品全部四虎| 成年男人裸j照无遮挡无码| 按摩偷拍一区二区三区| 黄片视频免费在线观看国产| 337p西西人体大胆瓣开下部| 亚洲色图视频在线| 西西少妇一区二区三区精品| 国产一区二区三区不卡在线观看| 亚洲欧美乱综合图片区小说区| 欧美末成年videos在线观看| 97久久成人国产精品免费| 91偷自国产一区二区三区| 日韩精品久久无码中文字幕| 国产一起色一起爱| 亚洲av伊人久久综合性色| 在线观看国产视频你懂得| 亚洲日韩一区精品射精| 成人三级在线| 中文字幕乱码琪琪一区| 国产极品裸体av在线激情网| 成人免费看片又大又黄| 无夜精品久久久久久| 亚洲精品熟女av影院| 草色噜噜噜av在线观看香蕉| 亚洲中文字幕无码永久在线 | 国产精品女丝袜白丝袜美腿| 性久久久久久| 国产精品成人av在线观看| 亚洲每天色在线观看视频| 国产一品二品精品在线| 国产又黄又爽又色的免费| 巨爆乳中文字幕爆乳区| 自拍情爱视频在线观看| 精品国产乱码久久久久久婷婷| 天堂а√在线最新版中文| 国产福利一区二区三区视频在线看| 久草视频在线手机免费看| 精品久久欧美熟妇www| 亚洲一区二区在线视频播放| 黑丝美腿国产在线观看|