天天看點

軟工熱身作業

項目 内容
本作業屬于北航 2020 年春軟體工程 部落格園班級連接配接
本作業是本課程第一次個人作業 作業要求
我在這個課程的目标是 收獲團隊項目開發經驗,提高自己的軟體開發水準
這個作業在哪個具體方面幫助我實作目标 多人合作的軟體開發,總結三年的學習成果

第一部分:結緣計算機

你為什麼選擇計算機專業?你認為你的條件如何?和這些部落客比呢?

選擇計算機專業有如下幾個理由:

  1. 結緣:我第一次認識到計算機這門專業并不是遊戲和可視化軟體,是Pascal語言。可以說在了解Pascal語言的第一天,我便明白,計算機學科和計算機界的工業成果(遊戲、軟體、網絡裝置)是有一定距離的。而我追求這之間差距的道路,就是學習計算機專業的過程。
    • 了解程式設計語言
    • 了解計算機專業的理論基礎
  2. 專業素養:在中學期間參加了算法相關的學科競賽,有算法相關知識。
  3. 大師影響

和部落客之間做了一個簡單的比較

部落客 和我的比較
部落格I 為英語專業,并非大學計算機專業經曆,這一點我更有優勢
部落格D 同樣為計算機專業學生,部落客喜愛工程,紮實肯幹,在這一點我需要繼續學習。
部落格A 理智型人才,合理規劃人生,按部就班的生活

計算機是你喜歡的領域嗎?是你擅長的領域嗎?

要分領域而談

計算機子領域 喜歡和擅長
複雜系統及其控制 不是特别喜愛,不是擅長
算法及其應用 擅長,非常熱愛
計算機理論問題 有初步了解,很有興趣,擅長其中一部分問題
傳統人工智能 有初步了解,有興趣,沒精力擅長
深度學習人工智能 喜愛,較為擅長,有相關的工程和研究經曆
網絡相關 不了解,很好奇
程式設計語言 對函數式程式設計、模闆程式設計、元程式設計等主題有一定程度的了解

你熱愛這一專業嗎?你對計算機的熱愛是怎樣的?僅僅是口頭的嗎?

如果說熱愛,多年的程式設計經曆已經讓熱愛這個詞變得不值一提,現在算得上深愛,不是那種對新鮮生産力感興趣的三分鐘熱度了,而是願意二十年、三十年在這個領域裡深耕,做出有價值有生命的工作,并将這樣的情緒感染給更多的人。

我認為,對一個專業來說,不是去星巴克點杯咖啡一樣簡單的品濃度、聞香味、跟潮流,更應該考慮自己是否願意在這個領域、為這份工作付出很長一段時間的不懈努力。是以光用熱愛來驅動自己的專業,是不夠的,如夢幻泡影,捺不住壓力和寂寞。

第二部分:在計算機系裡學習

你對你的大學生活有什麼想要吐槽的地方嗎?你理想的大學教育應該是什麼樣子的?跟學校給你的有什麼差別?比較你在中國大學的經曆,你的老師和學校能做到和國外那樣嗎?如果不能,請分析一下為什麼。

大學生活的想象與現實

以一張對比的表格來說,總體情況如下。

場景 想象 現實
貼合實際科技發展 落後科技發展3年,新興領域落後工業一個生産周期 落後于實際3~5年,部分内容與時代脫節
考核形式 任務考核、展示考核、知識考核 筆試分數考核依然存在、任務考核拘泥于抄襲和防止作弊(新意太少)、展示考核較少
工程體驗 有和公司合作的教學project,有與實際工程相關的topic 需要自己找實習,沒有相關的課程體驗,了解的同學鳳毛麟角
學術機會 有自由的學術free time,可以dedicate在自己喜愛的領域 被專業課和教學計劃碾碎,沒有完整的時間

分三個案例而談

  • 計算機組成
    • Verilog的語言其實已經更疊了幾次,我們可以對标龍芯杯做一定基礎的任務,但實際是工具和設計都落後的體驗,有更多具體任務需要發掘。
    • 筆試考試不知所雲,考了滿分也不知道筆試的很多過時概念會有什麼樣的新進展
    • 理論和實踐沒有很好的整合起來
  • 編譯原理
    • 理論和實踐完整脫節,理論上講的很多技術在實踐中來不及實驗,缺少相關機會和準備
    • 沒有從新的角度去介紹編譯,甚至落後于很多年前出版的虎書ML版本
    • 編譯課程的算法味、理論味、工程味在缺少具體指導的實驗上無法體驗(可以比較llvm tutorial)
  • 基礎學科
    • 為大類統一開設,沒有結合計算機領域做出相關介紹的應用課程(負責任的老師還是會介紹梯度方法的數學背景)
    • 缺少code實踐,計算機世界的基礎學科都是可以

      show me code

      的方式來體驗的。
    • 基礎學科的考核形式單一

迄今為止,你寫了多少代碼,描述你做的最複雜的軟體項目/作業。

寫了多少代碼這個問題要分三個層次來看:

  1. 代碼總計:有github倉庫的近1W行,桌上型電腦和筆記本還有伺服器上加起來的有3~4W行
  2. 最大的工程:最大的工程項目是一個智能攝像頭識别系統,有2W行的代碼總量,個人的工作代碼量有2k行,維護的代碼有3k行左右。
  3. 最大的作業:3k行的

    c++

    代碼(一個自指的C語言編譯器,可作為交叉編譯器),2.5k行的硬體描述代碼,一個支援中斷異常的基本5階段流水線mips cpu。

科班出身和北大青鳥有什麼差別?

差別有二:

  1. 學習任務的差別:北大青鳥的學習任務是完成某一具體任務,實作某一具體工程,或者是對某些工程需要的特性知識詳細的了解,而科班出身走了一遍完整的計算機發展史和計算機發展與設計的邏輯,整個工程體系的能力從多個任務裡面得到培養,保留了一定科學的學習方法。
  2. 學習内容的差別,北大青鳥不會去教基礎學科(線性代數、數理分析、信号系統變換)會從應用的角度去介紹問題,不會從問題驅動的角度去發掘問題。
北大青鳥和科班的共性就是,都需要自主能力才能在計算機領域取得一定的成果。不能說哪一種好,哪一種壞,也不能否定科班的按部就班和北大青鳥的填鴨和熱度教學,因為本就不是在培養同一種人才,都能培養出對社會有用的人才,一種是研究型人才,一種是實踐型人才。

速成的教育訓練班和打基礎的大學教育還有mooc之間有差別嗎?

對比項目 速成班 MOOC 大學教育
時間 短時、集中 因人而異 相對較長
成果 知識體系破碎、碎片化教學 有motivation的同學可以學的很好,劃水的同學可能一無所得 基本上同學的水準能穩定在一個baseline上,沒有上限
老師水準 老師水準參差不齊,有好有壞 多為大學老師,水準和大學教育持平 大學老師

學線性代數和機率論的時候,你是否有過這樣的疑問“我們為什麼要學這麼多數學,這和我們的計算機有關系嗎”,你現在是否還有這樣的疑問?對這個問題,你有自己的解答了嗎?那麼其他學科呢?

應用
線性代數 廣泛的用于計算機上的優化問題、機器學習(無論是傳統方法還是深度方法)、提供了更高的幾何觀點
機率論 系統介紹機率學知識,對優化問題、機器學習、資料挖掘、複雜系統可靠性、算法分析大有助益
數論 傳統密碼學、通信問題
複變函數 信号與系統、視訊音頻處理

第三部分:未來規劃

對于你未來在IT行業的發展,你有什麼樣的夢想或者未來想從事什麼樣的工作?你準備怎樣來規劃你技術道路,職業道路和社會道路?

未來的計算機領域一定是一個基礎領域,也必定還是一個工業領域,會有越來越多的人接觸和了解計算機和現實世界的

接口

,抽象的了解計算機的很多工作,學習程式設計、學會與計算機互動的人也會越來越多。是以和現在的發展不一樣,要做計算機領域新技術的開拓者和探索者,從小處講,是走在時代之潮流先;從大出講,是探索未創造出來的虛拟世界和理論世界。

你對于實作自己的夢想已經做了或者計劃做什麼樣的準備?

工業:參觀過多家公司,對其模式和任務有一定的了解;在公司短期實習,體驗工業生産環境和學校環境的差別。

學術:在實驗室,從多個方面認真的掌握研究的方法論,為之後繼續做研究:發現問題、思考問題。

你們馬上就要面臨實習了,你打算在企業内實習還是在實驗室實習?

實驗室,企業在任何一個有精力的年紀都可以去,但是錯過了思維的黃金時期,可能再也沒有體會思想交流樂趣的機會。

實習經驗究竟有多重要?是否需要馬上開始積累實習經驗?

經驗重要與否因人而異,需要看你的實習體驗,是否沉浸。