天天看點

兩個月選一本理想教材

又到了下學期的排課期,排課就涉用到教材選用問題。

教學中人(老師,學生)無疑是最重要的要素,「老師強烈的教學意願、學生強烈的學習意願」是教學有良好的效果最重要的保證。

之後,教學中最重要的就是選一本好教材了。教材是教學和學習所依據的材料,與教學計劃和教學大綱構成教學内容的重要部分。教材選擇不能随随便便,我每次開課都會花大量時間選一本教材,同一門課,有時年年換教材,這樣經過幾年才能定下一本适用的教材。

比如:C語言教材衆多,經過多年的比較,我選擇了裘宗燕老師的《從問題到程式(電子版)》,課上遇到C語言基礎不好的學生,我都推薦先看看這本書。

兩個月選一本理想教材

本學期自己開新課,我暑假花了兩個月的時間,浏覽了三十多本、精讀了十多本教材,才選到一本完美的、理想的教材,我記錄下我從多個角度選擇教材的過程,供老師們和同學們參考。同學們也可以用這種方法找一本自己最适用的教材作為重要學習參考,如果你們老師選擇的教材和你選擇的不一緻的話。

本文的要點是:

  • 選一本理想的教材要花心思的,我們可以從朋友圏開始,從教材、PPT、習題集、實踐指導、MOOC支援、實踐平台等考慮,不光簡單看目錄,還要深入研究教材内容才能選到一本好教材
  • 給老師們推薦清華大學出版社的“書圈”公衆号(手機上長按下面的二維碼關注)和電子工業出版社的華信教育資源網,他們提供了優秀、友善的教師服務,特别是樣書服務,可以讓老師友善擷取最新的教材作為深入選擇的基礎。雖然我每年都買很多書,看很多書,但不會買幾十本内容相似的教材。學校圖書館可以解決部分問題,出版社的樣書服務也很重要。
兩個月選一本理想教材

選教材的過程就像找女朋友,在沒有遇到合适的、喜歡的人的時候,你有衆多條件,遇到心儀的人,什麼條件都不是條件了。

我選教材的過程就是這樣,開始有語言、MOOC支援、PPT等等要求,最後發現教學内容、教學理念和教學方法才是最重要的,最能引發自己的共鳴,不是Java語言寫的問題不大,沒有MOOC支援也行。

選擇一本好教材是一件不容易的事情。比如網絡空間安全作為一個新學科,教材建設遠遠滿足不了需求,每次上課所選教材中的内容近半與講課内容(大綱)不一緻,這對老師和學生都是一件很痛苦的事。相比而言,計算機學科就很成熟了,市面上有很多優秀教材,如何選擇也是一個問題。

選擇一本好教材不是一件随便的事情。一般學校對教材選擇都有個基本要求,一定意義上防止了一些教師随意選教材的情況。比如我們學校的要求是:

兩個月選一本理想教材

當然這種要求會對教材的選擇是個不好的限制,我發現的一點就是我用心選擇的不少教材,就不符合這裡面所有的要求。比如上面提到的裘宗燕老師的《從問題到程式(電子版)》。

還好學校是對其他教材的選擇開了個口子的。就是比較麻煩,還要審批:

兩個月選一本理想教材

我這學期開了三門課:

  • 資訊安全系統設計基礎
  • 程式設計與資料結構
  • Linux核心原理與分析

《資訊安全系統設計基礎》說明了我選教材多年來堅持的原則:優先選用國外優秀教材或國外優秀教材的翻譯版。這門課有一個很重要的功能是給資訊安全專業的同學加強計算機系統的知識,我選用了《深入了解計算機系統(第三版)(英文版,官網)》,教材品質,習題品質,實踐類題目品質都是很高的。遺憾的是因為學校沒有英文網址和内容,我一直無法擷取教師材料,通過機械工業出版社、Pearson都沒能得到。

兩個月選一本理想教材

《Linux核心原理與分析》是特色課程,也找不到合适的教材,我選用的是我和孟甯老師(微網誌)共同編寫的《庖丁解牛Linux核心》(即将由電子工業出版社出版)。這也是廣受歡迎的MOOC 《Linux核心分析》的配套教材。

兩個月選一本理想教材

《程式設計與資料結構》這學期主要講資料結構和算法。我下面主要說一下這門課教材的標明情況。

在網際網路模式下,出版社的選題思路、服務手段、營銷方式和銷售管道都要有很大的變化。出版社對老師的服務對教材的影響很大,這方面要表揚一下:清華大學出版社和電子工業出版社,他們良好的樣書服務對我標明教材的影響很大。

清華大學出版社計算機與資訊分社最新推出微信公衆号“書圈”,教師可以微信索要課件和密碼,線上申請樣書以及其他服務,雖然《資料結構》沒選清華大學出版社的教材,下學期的《Java程式設計》我選了他們的。下面是我申請的部分樣書:

兩個月選一本理想教材

電子工業出版社的華信教育資源網服務也很好,比清華大學出版社更好的是不限制老師申請的數量,收到教材後有回報,可以繼續申請,這對我最終標明電子工業出版社的教材也有一定的影響。

兩個月選一本理想教材

我經常說,我是學完資料結構後才感到程式設計入門的。我上學時資料結構老師選的是嚴蔚敏老師的《資料結構》,學得是相當痛苦,硬着頭皮把書中的代碼都調試了一遍,寫出可以運作的程式,才算基本了解程式設計。後來發現有人寫了一本《大話資料結構》,我看完的感覺就是嚴蔚敏老師的《資料結構》的可執行版本,就是大學我學資料結構做過事情。從這有個認識:不同的教材的學習效果,學習感受是不一樣的,當然,人還是最重要的,如果願意學,教材就不是問題了。

一開始我覺得教材不難選擇,我們的程式設計語言是Java,有國外翻譯版的優先,我這有幾個選項:

  • Data Structures and Algorithm Analysis in Java, Third Edition
  • 資料結構與抽象(原書第4版)
  • 資料結構與算法分析(Java語言描述)
  • 資料結構與問題求解(Java語言版)
  • 資料結構和Java集合架構
  • ......

我最想選第一本《Data Structures and Algorithm Analysis in Java, Third Edition》可惜沒有中文版。還有最近幾年使用混合式教學模式,希望有MOOC,微課的支援。

然後轉向了朋友圈:

  • 我學習微課、MOOC技術時,觀摩過鄧俊輝老師的資料結構MOOC,鄧俊輝老師的《資料結構》是不錯的選項
  • 因為PTA結識了陳越老師(微網誌),她主編的《資料結構》,有MOOC支援
  • 賀利堅老師(部落格園部落格,CSDN部落格,新浪部落格)推薦的李春葆老師編寫的《資料結構教程》

這三門課都有MOOC支援,都有學習指導或上機指導,MOOC制作精良,老師認真負責。但我把這幾本書看完後發現内容都達不到我讀《Data Structures and Algorithm Analysis in Java, Third Edition》的期待:我希望以資料結構為主,還是要有算法設計思想的。還有一個問題,這幾本教材都不是用Java講的,雖然不滿意,暑假前我最後還是準備選 用鄧俊輝老師的《資料結構》,授課語言不是Java,我想在暑假用Java把鄧老師書中的示例改寫一遍,鄧老師以前也寫過Java版的資料結構,可以參考,還有MOOC中可以看到鄧老師的字寫得越來越好了,這很讓我這個書法愛好者有好感,但現在我天天跟着鄧老師練字,他的書和MOOC隻是個教學參考了。鄧老師的書的品質、PPT品質、MOOC品質都是我很認可的,都是國内超一流水準,隻是教學内容設計和教學方法上沒達到我的要求, 不适合我用。

兩個月選一本理想教材
兩個月選一本理想教材

暑假前,我還在學校圖書館借了好多本《資料結構》和算法相關的書,也沒有找到滿意的。

在用鄧俊輝老師的《資料結構》備課時,我收到電子工業出版社的兩本樣書:

葉核亞老師編寫的《資料結構(Java版)(第四版)》,Java語言,還有MOOC支援。一度曾想選這本書,後來因為MOOC支援不了了之,隻作為參考書。

還有一本是周幸妮老師編寫的《資料結構與算法分析新視角》,讀了真是相見恨晚,這簡直就是為我定制的一本書,暑假讀了三遍,這本書也成為我向我的學生推薦學習《資料結構與算法》的首選圖書。

兩個月選一本理想教材

選教材前我多次讀劉未鵬(部落格,微網誌,豆瓣) 的「知其是以然(以算法學習為例) 」

這幾年我推薦讀書當讀電子書,我現在80%以上的讀書時間都花在了電子書上了。我教的課程多跟計算機系統緊密相關,在多看上發現一本鄒恒明老師的《作業系統之哲學原理(第2版)》,讀了之後感覺作者水準比較高,雖然哲學原理有點虛,内容講的還是挺好的,較好的做到了抽象提升、聯系生活、子產品整合、邏輯貫通和系統關聯。按作者找書,發現鄒恒明老師還寫了一本《資料結構:炫動的0、1之弦》,從軟體設計師和系統架構師的視角對資料結構進行闡述。通過兩個角度的對望,以實際生活中的“問題”為驅動,以計算機軟體設計師的“使用”為軸線,對每一種資料結構出現的動機、發展邏輯、表示方式、實作細節進行演繹,再現了資料結構的本質和内涵。在前言中,鄒老師說學習資料結構的概念不難,難點是:

如何實作從資料結構概念到程式設計實作的跨越(即如何實作一個資料結構)
如何實作從實際應用到資料結構抽象的跨越(即如何利用資料結構解決實際問題)

這和我的教學理念不謀而合。我在2016-2017-2《程式設計與資料結構》課程總結中說:

課程作為教學改革的一個試點,把傳統的《程式設計》和《資料結構》合并成一門課程

對于資料結構的使用,我們要先會用現明理

這也是我推薦使用Java、C++這類有資料結構和算法的标準庫(Java Collections API,STL)的語言作為資料結構的教學語言的一個重要原因,在教語言的時候,我們就解決了「如何實作從實際應用到資料結構抽象的跨越(即如何利用資料結構解決實際問題)」,而C語言本沒有資料結構的庫,在學語言的階段不好解決「如何利用資料結構解決實際問題」的問題。

象鄒欣老師(部落格,微網誌,豆瓣)和潘柱廷(大潘)(部落格,微網誌)這樣的業界高手同時又熱心教育的都英雄所見略同的提倡教學中要解決真實問題,提供真實場景。2016-2017-2《程式設計與資料結構》課程總結我給出了自己的做法示例,在Linux下學習,實作學習内容相關Linux指令,比如通過實作dc來學習棧的應用。

在資料結構課上我們解決「如何實作從資料結構概念到程式設計實作的跨越(即如何實作一個資料結構)」,與「以資料結構和算法為核心,語言隻是工具」的講法不同,我的想法是要從程式設計的角度讨論資料結構和算法的。

周幸妮老師也深入研究了劉未鵬(部落格,微網誌,豆瓣) 的部落格,編寫的《資料結構與算法分析新視角》也秉承了鄒恒明老師和我一樣的教學理念。

周老師說:

之是以要有上述兩個鴻溝要“跨越”,也是由于學校的傳統教科書教法和實際的應用要求脫節造成的。 弗裡德裡希.威廉.尼采曾寫道:“人們無法了解他沒有經曆過的事情。”換句話來說,我們隻接受與過去早已了解的事物相關的資訊。這是一種比較學習的過程,在這個過程中,大腦要尋找每條資訊之間的聯系,借助以往經驗來了解新事物。
傳統資料結構教科書的一般模式都是給出問題,然後直接給出算法,而實際上要用計算機解決問題,必須要考慮的處理步驟有:如何分析問題中的已知資訊,如何提煉資料及資料間的聯系(資料的邏輯結構),如何選用合适的存儲方式(資料的存儲結構)将邏輯結構存到計算機中,然後在存儲結構之上按照自頂向下逐漸細化的方法給出算法,這才是真正解決實際問題的思維方法和步驟,也是軟體開發中實際采用的方法。傳統教科書的問題在于沒有一個思維過程的引導與分析,緻使概念論述、實作細節有餘,設計實作過程描述不足,讓學生看到的隻是一個個問題具體的詳解,而把握不住算法設計的總方法和原則。
本書嘗試從學以緻用的角度,注意給出問題或算法的知識背景或應用背景,增加一些在實際軟體開發中的算法應用背景或執行個體;強調算法的分析方法、設計思路、給出重要算法的測試及調試分析,彌補上述傳統教科書中的不足。教學生以“軟體開發的方法”處理問題,使學生容易了解并掌握它,在實際的軟體開發過程中能靈活地選擇适當的邏輯結構、存儲結構及相應的算法,設計性能優、效率高、可讀性強、易維護的程式,達到資料結構課程最終的目的。

對于程式設計,周老師說涉及下面的諸多方面:

  1. 程式的解題思路——算法是基本運算及規定的運算順序所構成的完整的解題步驟,是程式的靈魂,算法的優劣直接影響程式的效率。本書的算法描述方法見稍後的說明。
  2. 程式的運作速度——程式運作的速度受很多因素的影響。使用者對程式的運作速度往往是有要求的,如實時響應系統。
  3. 程式的運作空間——代碼運作需要相應的記憶體空間及相關運作環境。在有些應用場合,對程式占用空間是有限制的,如嵌入式系統。
  4. 代碼規範——代碼要按照一定的規範格式書寫,以保證代碼的一緻性,便于交流和維護。
  5. 程式的結構—— 一個功能複雜的程式由多個功能相對獨立的子產品組成。子產品内高内聚,子產品間低耦合,是判斷程式結構是否合理的标準。
  6. 子產品接口——子產品間的資訊交流通過接口完成,子產品間資訊傳遞參數的設定應該合理有效。
  7. 程式的測試與調試——要有精心設計的測試樣例來測試程式是否正确。調試是高效率完成軟體産品的有效方法。一個程式高手,也是調試專家,調試的經驗方法多數都是實踐中得到的。

我特别欣賞書中關于算法與程式實作增加的内容,因為我就是這麼教學的:

1.增加測試樣例的設計

從程式健壯性的角度出發,測試樣例的設計是開始程式設計就應該考慮的一個重要内容。一般的程式設計與資料結構教科書很少考慮測試樣例問題,本書在最初基本的算法設計中,給出了基礎程式的測試樣例設計,也是讓學習者以專業的方法學習程式設計,養成良好的設計習慣。

2.增加函數結構的設計

對初學者而言,在學習資料結構時,程式設計語言基礎并不紮實,特别是函數結構的設計不熟練。根據給定的功能、輸入輸出資訊,在調用與被調用的函數關系中,資訊是怎樣傳遞的,往往存在多種可能的選擇,該怎樣确定合适的形參類型、函數類型,初學者經常會無所适從,進而造成程式設計困難。根據這種情況,本書特别給出了典型資料結構運算的多種方案實作,在同一問題不同函數結構設計的比較中,讓讀者發現各種資訊傳遞的方式和特點,鞏固和熟練程式設計知識和技巧,達到理論與實踐的統一。

3.增加重要程式的調試

程式設計的過程也是一個測試與調試的過程,程式的編與調是密不可分的。對于初學者而言,若調試不熟練,容易喪失繼續學習的信心。根據多年的教學經驗,若有程式調試示範,則相關程式比較容易掌握,特别是在學習連結清單等内容時,光是解釋資料結構、結點聯系,學生總覺得抽象難懂,若通過示範調試,觀察各結點間的聯系如何動态建立、消除等,則生動直覺,一目了然。由于調試過程步驟較多,學生看過了明白了,但要再回想并模拟跟蹤過程,則是不容易的事情,是以本書把一些重點例子的程式跟蹤過程記錄下來,以便學生學習。本書所有的源碼均以C語言編制,并在VS IDE環境下通過調試和測試。

4.算法描述方法

  • 測試用例設計
  • 資料結構描述
  • 函數結構設計
  • 算法僞代碼描述
  • 程式實作
  • 算法效率分析

歡迎關注“rocedu”微信公衆号(手機上長按二維碼)

做中教,做中學,實踐中共同進步!

兩個月選一本理想教材
  • 原文位址:http://www.cnblogs.com/rocedu/p/7993001.html
  • 推薦網站:部落格園、新浪微網誌、扇貝背單詞、DKY背單詞小組、有道雲筆記、豆瓣讀書
  • 版權聲明:自由轉載-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

如果你覺得本文對你有幫助,請點一下左下角的“好文要頂”和“收藏該文”

繼續閱讀