一枚大學生,學過c c#Java,但是這些老師或者我所了解到的高校老師,上課都不以敲代碼為實例


我上課就是現場編程,而且還經常腦子一熱,冒出來個新想法,就立刻眾目睽睽下開始實現。雖然知道事前沒有準備,會有做不出來的風險,但心裡種了草,忍不住呀。(有時候為了增加課堂上的意外性,我還會在備課時故意留一點尾巴不備。)

所以有時候就會被卡住,折騰半天搞不定,這時只能給學生承認翻車了,並承諾回去搞定了再在qq群里告訴大家。奇怪的是,站講台上半天搞不定的,我回到家不一會就搞定了。看來站講台上還是壓力大。

我上課只有代碼,沒ppt。

學生都怪我沒有ppt。


說完我自己,再來回答題主問題:

帶編程類課程的老師,很多都是假期才趕鴨子上架自學的,開學就教學生,所以水平非常有限,僅限於能看懂並調通書上例題的水平,代碼稍作改動,可能就不知道哪裡出問題了。

書上有的代碼,上課再現場敲進電腦,沒啥意思,所以一般都是直接拿現成的演示。而且,萬一沒敲對引起問題了呢?

老師的主業是發論文,編程這些事情會被認為是不務正業的沒技術含量浪費時間的粗活。所以都不願意花時間去琢磨。

有些老師怕在學生面前暴露出「不行」,尤其是那些學生當完直接當老師的,心裡師生等級觀念比較強,所以會避免現場敲代碼。我以前是職業碼農,跟公司的老哥哥小兄弟們廝混慣了,所以技術上比較放肆,尊卑上比較不在乎。

教室里教師機上沒有編程環境,或者配置有問題,沒法用。自己帶筆記本來又嫌重。帶個優盤,只能給你放ppt。

學校有時會要求老師們上交ppt來檢查,所以更願意做成ppt。而且現在多數教材都自帶ppt(帶不帶ppt也是老師們選擇教材的重要指標)。


最後說個題外話,論對計算機的了解程度,大學計算機老師跟碼農是比不了的。目前各高校計算機學院的教師中,有大量都是其他專業的博士(比如學通信的、自動化的、數學的,就是那些數學訓練比較多的專業),就算是計算機專業出身的博士,搞的研究也大多不是系統軟體方向。那搞啥?人工智慧唄,很多專業都在搞這個東西,計算機的人搞它並沒有啥優勢,所以才會讓外專業的博士「入侵」計算機學院。那這些老師,你能指望他多懂計算機嗎?這些外專業的老師,既然進了計算機學院,你能不給人家排課嗎?不排課教學工作量怎麼完成?


其實大學計算機科學技術的老師,定位很尷尬。

一千個人有一千個代碼的寫法。

今年教的c++課程,跟去年教的一樣。連續教了10年了。

  1. 我寫ifelse吧,下邊學生就說為什麼不用map,
  2. 我寫map了,下邊就有人會問,為什麼不用設計模式中的工廠模式。
  3. 當我用了工廠模式的時候,下邊就有人說,為什麼不用行為樹
  4. 當我用了行為樹,有人會問,為什麼不用代碼生成器?
  5. 當我用了代碼生成器之後,學生會問,為什麼不圖形化
  6. 。。。。。甚至有人問,為什麼用薄膜敲,不用機械鍵盤敲
  7. 當我換了機械之後,還有人問為什麼不用語音人工智慧輸入代碼。

後來我的if else 就這麼打了

就這樣10年過去了。我已經嘗試了各種可能。可問題在於,學生們一年比一年強。學習c++的時間有可能提前到了初中。有的甚至拿到了競賽獎牌。

有時候看到底下坐的有可能是編程大佬,段位可能比我還高。畢竟,如果是 吳恩達,輪子哥,曾博,陳立傑,樓天成他們的迷弟們,一個個初中就開始編程了。等到大學的時候,已經是項目帶頭人了。。

那可如何是好啊?於是索性,就不敲代碼了,用我多年研發的行為樹版代碼生成器,按協議把條件和實例輸入進去,然後點生成。有時候可能速度太快,學生們沒看清楚,以為我沒敲。。

所以說,錯怪我的,請把贊給補上。

  • 時代變了,手敲那些流程代碼,其實就是在浪費時間。
  • 大家include那些庫,不就是為了節省時間嗎?
  • 將變化的放在一起,不變的放在一起。

比如看,現場手寫稿是這樣的,直接給學生看,我覺得有點過不去。

經過處理後,配圖,潤色之後,就好很多了,更容易被學生們接受。

所以吧。有些學生看不起我。覺得我就會照本宣科。不斷重複一個內容10年。c++98 到c++ 11確實有10多年不更新了。

可我也沒閑著啊,我時間都用在了,如何更淺顯易懂的教學上面了。比如當年,我用遊戲自動尋路,叫學生數據結構和演算法,

是不是看起來,就容易接受一些了呢

圖形學版本的

然後呢,我也打算,讓沉迷網遊的學生,更容易接受c++,寫了不少教案

為了讓畫面更動感,甚至加了點特技。

現在誰還在敲代碼呢,基本上都是拖拽行為樹節點。 把功能模塊化,被行為樹的action封裝。

當然了,為了徹底讓學生學會c和c++。我打算研究仙劍奇俠傳1sdlapl源碼。用c++17 重構一款出來。在娛樂中,教學,這樣更容易讓人接受。

這是在qt裡面,重置了局部內容

ps:

既然大家這麼開心,我就把一些新嘗試再展示點,為了給學生們演示某些數據結構和演算法,還貼近現實,我特意這麼多了。

通過顏色來區分,還有邊緣化處理

為了精確控制到點,特意弄了台超大顯示器,配大圖

將圖形分塊控制

演算法局部行走路徑

動圖版本,這裡就涉及到了廣度優先和深度優先。

為了,那些苦於對演算法和數據結構不太愛學的同學,我是真的不遺餘力啊。

相比上面那些,我也為了幫助不喜歡英文編程的學生,幫他們想了一些出路。

等待區裡面創建小格子。然後往替換區里拖拽,再往資源區里掛靠。開枝散葉。

兩者聯動,左圖的方格,其實是右圖拖拽過去的。根本就不用打字碼

點擊放大

局部小圖版本,為了讓大家看到規模的龐大

項目的正常版本。14961 X 708這麼大。點擊放大都不行,下載下來用圖片查看器才能夠看到全貌。

然後呢,這樣能幹什麼呢?這可不是一張張圖片,而是可以運行的節點。可明可暗

可多可少,就看你的腦洞有多大了。

什麼,腦洞不夠?其實可以做遊戲編輯器,比如

當然,想怎麼來就怎麼來了

看到這裡,你還問,我為什麼不敲代碼嗎? 如果沒有疑問了,請把贊補上吧。

手寫了這麼多代碼太不容易了。

什麼,還不滿意,打個太極,總行了吧

什麼,還不夠,那搞個玄點的吧。「SFINAE 匹配失敗並不是錯誤」這句話其實就是學習編程的核心。


敲代碼

我們老師在阿里工作過,剛來的時候。給我們敲了一學期代碼,雖然課程內容還挺簡單。但是,他的敏捷開發習慣各種快捷鍵用起來行雲流水,以及極快的敲代碼速度,加上那及長的變數名,屬實讓我懵了幾個星期。

每個變數如下:

xxxxx_xxxx_xxxx_xxxx_xxx

每個變數那麼長,用的又是Python,一行一個不同變數,可是費眼。

補充一下,我們老師是一邊講敏捷開發還不斷重構代碼,碼代碼的時候,再加上快捷鍵,咋一眼看的人眼花繚亂地。


我是要敲的,而且盡量從空白開始敲,甚至基礎代碼框架每次課從頭敲。

我覺得這樣可以幫助更多的「0」基礎同學找到感覺。

當然會有翻車,即出現bug,但這剛好是演示如何查找定位bug,解決bug的好機會。

這反而會證明,bug不可怕,總有解決辦法。


敲代碼本質上演示的是對編輯器使用的熟練度。而這玩意不考,也不需要在大學課堂上教學。

假如我去上課,用vim模式敲代碼,行雲流水,上課演示貌似可以裝逼,問題是這有什麼用呢?至少對教學而言並沒有什麼意義。

所以我覺得,無論老師有沒有能力現場敲代碼,這都不該是課堂上需要講的東西。

現場敲代碼,更適合所謂的「實驗課」。不知道現在的編程還有沒有專門安排實驗課,上機課。如果在實驗課中現場敲代碼是合適的,在正常的教學課中,我認為並沒有必要現場敲代碼。


推薦閱讀:
相关文章