iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
2
自我挑戰組

不前不後,不上不下,一個曾經交大資工書卷的軟體工程師成長之路系列 第 4

風城新鮮人:資工大一課程

微積分
理工科大一必修當然是微積分囉
雖然現在大概還是只記得基本的微分與積分吧
但我覺得最重要的還是記得其微分與積分背後的意義就是(或許吧XD)
這是要修一年的
其實他是大學數學很多課程的基礎 是很重要的
你覺得不重要也是沒碰到用途而已
比如說 對之後的機率 或是 機器學習 等等
微積分都算是基本吧
一開始也是可以靠高中的知識混過去XD

普通物理
交大資工的規定是可以在普物普化普生三者選一個修
不過好像大部分的人都還是修普物 我也是
基本上就是高中物理的延伸
我承認我都是靠高中的底子撐過去
也是不知道到底在幹嘛Orz 還要修一年 很痛苦
但你說物理沒有用嗎? 如果你是走圖學方面的話 這可是還滿重要的...
雖然我是幾乎沒用過QQ

線性代數
這是一開始大家超級排斥的一門課
其實念資工的(我當年)很多人都會在說數學無用
雖然我不知道現在的人是不是還是這樣覺得
雖然我承認我現在工作的確沒用到
但其實在許多工程領域 線性代數是很基本必須的
像是影像處理 圖學 現在正夯的機器學習 等等 都有相關
甚至你在model一個問題的時候
如何多變量去思考問題 我想都有些影響
像我大學專題所實做的一個演算法
最後就是把它的問題利用矩陣表示成一個簡單的線性方程式
最後去找到其eigen value
我的認知他就是處理多變量的一種重要工具
所以處理的不只是純量(scalar)或是向量vector

以下是我當年的課綱
Steven J. Leon, Linear algebra with applications, Pearson International Edition, 7th Edition, 2006

本課程探討矩陣(matrix)之觀念(包括幾何解釋)、性質與定理、運算及其應用等四部份。
(1) 矩陣應用可分兩大方向:線性方程式(linear equations)及線性轉換(linear transformations)。線性方程式可透過矩陣的三角化(triangular form)、reduced row echelon form、LU分解等運算分析其解的存在與個數。
(2) 矩陣可視為一種row vector space或column vector space。Vector space 的元素可表示為一個多維空間(multi-dimensional space)的向量(vector)。向量之間存在有垂直性、相依性等關係。一群不相依的向量可組成vector space的basis。Vector space 有包含性(較小者稱為vector subspace)及垂直互補性(二個vector subspaces可以組出更大的vector space)。
(3) 一群向量可以透過Gram-Schmidt process 或QR分解(Factorization)找出其中相互垂直的成分向量,構成一個vector space 的orthogonal basis。線性方程式可化為向量等式表示法,其解的存在與向量等式中所列出的向量群之間的垂直性,相依性有關。
(4) 線性轉換(linear transformation)是將一個空間的向量轉換到另一個空間的向量,可以以表示為矩陣關係。新空間的向量可視為舊空間向量的線性組合(linear combination or linear sum)。如此一來,線性轉換變為探討不同空間之轉換。若轉換符合可逆性,則可將逆向轉換表示為另一個矩陣,此矩陣為原矩陣的inverse。
(5) 線性轉換若視為新舊向量之轉換,則多次的線性轉換代表一原始向量的演變。此種長期性演變是否收斂,則可透過矩陣的eigenvectors 及eigenvalues來探討。eigenvalues可表示為一個含eigenvalues 變數的行列式等式(一多項式)的根。eigenvectors則為矩陣相關式(A-λiI)的column vector space的垂直互補空間的向量。
(6) 並非所有矩陣都存在有eigenvalues及eigenvectors。存在者的matrix可以轉換為diagonal matrix。對稱的square matrix一定可以對角化(diagonalization),對角化後的向量之間相依性消失。Non-square matrix 不能對角化,但它可以做singular value decomposition(SVD)。SVD可以用來求線性方程式的最近似解。

我印象中 前兩章都還是在高中數學範疇
介紹向量跟矩陣的運算
到第三章之後 開始抽象化 並帶入vector space的概念之後
就會讓你有到了大學數學的感覺了XD

離散數學
離散數學 基本上就是 非連續的數學的一個分支
而電腦能表達東西機本來就是非連續的
所以他可以說是CS必修的數學基礎阿
邏輯 集合 證明 數論 數列 函數 排列組合 演算法等等 都歸在這個底下

以下是我當年的課綱
Kenneth H. Rosen, Discrete Mathematics and Its Applications, 6th ed., McGraw-Hill Inc.
Chap 1: Logic and Proofs
Chap 2: Sets, Functions, Sequences, and Sums
Chap 3: Algorithms and the Integers
Chap 4: Induction and Recursion
Chap 5: Counting
Chap 7: Advanced Counting Techniques  
Chap 8: Relations
Chap 9: Graphs
Chap 10: Trees

資料結構演算法(你看還有圖跟樹)也包含在裡面
BigO這東西只少大二前每年都會聽到XD
雖然後我們都還有專門的一門課在教就是
(所以這些東西基本上我們只少聽了三次)
排列組合基本上也是高中的 但也是為後面的機率打了基礎
邏輯、集合、證明方法這些也都是基本的東西 但我想高中其實都教過了
後面在修計算理論的時候也會複習一次
數論的話 密碼學算是會用到吧
計算理論其實也包含在這門課中 只是我們跳過了 畢竟後面都還是有必修
關係這東西也是滿有趣的 算是關聯式資料庫的基礎
不過我到現在還是很難把兩者結合在一起來看
然後 基本的代數 群環體 有些課本也是會包含進來的
但好像大部分資工的離散數學課程都不會教 (雖然AES也是會用到)

總之這門課的許多內容
後面許多課程都會再提到的
可見他的重要性

根據維基百科
甚至連決策理論都在這範疇呢

計算機概論與程式設計
進到資工相關的課程了
我們教的是C語言
用的課本是大名鼎鼎的K&R The C Programming Language, by Brian W. Kernighan and Dennis M. Ritchie;
我還滿喜歡這本課本的
跟一般的入門課本不同
第一章它就先把C語言大部分的feature go through一遍
之後再開始講細節
不像大部分的課本都直接進到什麼是變數什麼是判斷什麼是迴圈等等
我那時候的教授是交大資工非常有名的教授 - 蔡神
但其實我忘記我怎麼老師怎麼教的
印象中他有跟著哪本書的原則
提了很多的問題 像是巴斯卡三角形 99乘法表 身份證字號驗證 幾a幾b等等
然後帶我們看各種問題程式怎麼寫
就跟那本書一樣(或許也就跟學習自然語言的原則一樣)
先沉浸在之中 習慣了之後
在去了解細節吧

這是當時的課綱

  1. Programming Concepts and simple I/O processing  
  2. Data types, constant, variable, array, pointer  
  3. Control structures  
  4. Loop vs. Recursion  
  5. Function and parameter passing  
  6. Global, Local, and static local variable, static function  
  7. Using library, I/O manipulation, C++ I/O stream  
  8. Some funny examples, application of random numbers  
  9. Struct (also discuss Class briefly)  
  10. Class and constructor/destructor in C++ program  
  11. Object Oriented Programming concept  
  12. Function name overloading and operator overloading  
  13. Access control in class  
  14. Virtual function and Polymorphism  
  15. Multiple inheritance problem  
  16. Exception handling

物件導向程式設計
一下我主要學的是C++
由於某些問題 唉 課程並未連結
所以老師必須要重教上學期教過的部分
這老師幾乎是程式語言大師
所以可以把C++教得鉅細靡遺
在現在C++越來越複雜的時候
真是希望能聽到老師怎麼解釋現在的C++......

同時我也在旁聽Java
相較於Java的多彩多姿 (還有講到socket programming, GUI programming等等)
C++ 的每個細節都是博大精深 記憶體處理也複雜到爆炸
真的是一趟語言學之旅呢
image
雖然我覺得我只會皮毛就是
現在都不敢說自己會C++了 嗚嗚嗚

計算機科學概論
這是最廢的課
就是上一本叫做的書 把我們之後都會修到的課都蜻蜓點水的帶過
Computer Science an Overview,” 9th edition, J. Glenn Brookshear, Addison-Wesley, ISBN 0-321-38701-5
我真的不知道有什麼意義
理論上都可以在 計算機概論與程式設計 這門課帶過啊
我們的上一屆還沒有這門課
不知道到底是哪根筋不對 從這屆開始加了這門課到必修....
幸好現在的學弟妹已經不用上了

還是附上課綱
image

課綱皆可以在 國立交通大學 課程時間表 查到


上一篇
青澀歲月:為什麼我會唸資工系呢?
下一篇
爆肝風城:資工大二課程
系列文
不前不後,不上不下,一個曾經交大資工書卷的軟體工程師成長之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
iT邦新手 4 級 ‧ 2022-02-28 10:36:04

請問那位程式語言教授有網路課程或出書嗎?

我要留言

立即登入留言