Book

Book

以下列出我覺得內容很有特色的書籍,也許你會有興趣。

幾乎都是學術書籍。書籍內容源自學術論文,書籍作者平時也有撰寫學術論文。學術書籍內容可靠,不是作者自己說了算。

Why Books?

想要學習一個領域,無非是求學或自學。求學效率大於自學效率,大家也都盡可能去學校求學。然而台灣國情特殊。計算機科學的大多數領域,難以求學,只好自學。想要自學,無非是讀講義或讀書。讀講義效率大於讀書效率,大家也都盡可能從課程網站找到講義。然而講義難找,書好找。大多數時候還是得讀書。

讀講義方面,使用領域名稱作為搜尋關鍵字,並添加lecture note,在美國搜尋引擎網站花點時間找找,就能找到國際大學院校的課程網頁,從中找到課程講義。或者在美國慕課網站、美國影音網站花點時間找找,就能找到熱心的地球人拍影片念講義給你聽。

讀書方面,使用領域名稱作為搜尋關鍵字,在美國購物網站隨手一找,就能找到專業人士所寫的專業書籍,數量多到目不暇給。之後可以前往台灣的大學圖書館,借閱紙本書籍或者下載電子檔案。

每個人的生活都不同,每個人的見聞也不同。每個人所寫的講義和書籍,都是作者自身的偏見。想要客觀瞭解一個領域,無非就是多讀。嘮叨就到這裡吧。

Algorithm

Algorithm

「演算法」是資料的計算過程,搭配資料結構一起使用。主要目標是減少儲存空間、縮短計算時間。如果不能兩全其美,那就隨機應變吧。

Algorithms
Algorithms
Techniques for Designing and Analyzing Algorithms
Introduction to Algorithms
Introduction to Algorithms: A Creative Approach
Algorithms in a Nutshell: A Practical Guide
Algorithm Design
An Introduction to the Analysis of Algorithms
The Algorithm Design Manual

課程網站。

Jeff Erickson
Erik Demaine
David Eppstein

科普書籍。

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム
繁:《演算法圖鑑:26種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解》
簡:《我的第一本算法书》

Grokking Algorithms: An illustrated guide for programmers and other curious people
繁:《寫程式前就該懂的演算法:資料分析與程式設計人員必學的邏輯思考術》
繁:《白話演算法!培養程式設計的邏輯思考》
簡:《算法图解》

Out of their Minds: The Lives and Discoveries of 15 Great Computer Scientists
繁:《勇闖資訊新未來:打造資訊科技的幕後英雄》
简:《奇思妙想:15位计算机天才及其重大发现》

Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers
繁:《改變世界的九大演算法:讓今日電腦無所不能的最強概念》
简:《改变未来的九大算法》

Automate This: How Algorithms Came to Rule Our World
繁:《演算法統治世界》
简:《算法帝国》

Data Structure

「資料結構」是資料的儲存格式,搭配演算法一起使用。主要目標是減少儲存空間、縮短計算時間。如果不能兩全其美,那就隨機應變吧。

Fundamentals of Data Structures in C++
Sequential and Parallel Algorithms and Data Structures: The Basic Toolbox
Foundations of Multidimensional and Metric Data Structures
Compact Data Structures: A Practical Approach
Purely Functional Data Structures

Computational Mathematics

Mathematics / Computational Mathematics

「數學」分為四大分支。

數論:研究數字。0 1 2 3 4 5。
代數:研究運算。寫成符號、寫成規則。
幾何:研究連續數組。點、線、面。
分析:研究連續函數。斜率、容積。

「計算數學」是數學引入演算法。數學的每一種分支都可以引入演算法,形成新領域。

Number Theory 數論    Computational Number Theory 計算數論
Algebra       代數    Computational Algebra       計算代數
Geometry      幾何    Computational Geometry      計算幾何
Analysis      分析    Numerical Analysis          數值分析

其下還可以細分許多分支。本站只涉及其中一些分支:擁有實際用途的那些分支。

Computational Graph Theory 計算圖論
應用:複雜網路分析

Combinatorial Optimization 組合最佳化
應用:運籌學

Computational Number Theory 計算數論
應用:編碼理論

Analytic Number Theory 解析數論(數學分支)
應用:工程計算機

Computational Geometry 計算幾何
應用:地圖、模型、電玩

Discrete Differential Geometry 離散微分幾何(數學分支)
應用:模型製作

Numerical Analysis 數值分析
應用:各種工程領域

Numerical Linear Algebra 數值線性代數
應用:計算機科學的各種應用領域

本站也額外整合了一些應用數學領域。

Engineering Mathematics 工程數學
應用:各種工程領域

Discrete Mathematics 離散數學
應用:計算機科學

Data Processing 資料處理
應用:商業分析

Signal Processing 訊號處理
應用:財經分析、生醫訊號處理、電腦音樂

String Processing 字串處理
應用:文字處理、基因序列比對

Coding Theory 編碼理論
應用:通訊設備、儲存設備

Graph Theory / Computational Graph Theory

「圖論」探討多個元素的兩兩關係。

「計算圖論」同時使用演算法與圖論的知識,橫跨兩個領域。

例如森林(無環)、二分圖(無奇環)、弦圖(無奇洞)就是考慮了時間複雜度所得到的圖。

Algorithms in C++, Part 5: Graph Algorithms
Algorithms on Trees and Graphs: With Python Code
Algebraic Graph Algorithms: A Practical Guide Using Python
Guide to Graph Algorithms: Sequential, Parallel and Distributed
Basic Graph Theory
Graph and Matrices

Combinatorics / Combinatorial Optimization

「組合學」又譯作「組合數學」,探討排列與組合。例如找出排列數量、組合數量,遵循給定規則。高中數學課程已經介紹了一些簡潔的數學公式。

「組合最佳化」則是進一步找出最佳排列、最佳組合,遵循給定規則。因為大家推導不出簡潔的數學公式,所以大家只好依賴繁雜的電腦演算法。

大多數情況下,那些給定規則,即是多個元素的兩兩關係,即是圖。因此「圖論」與「組合學」密切相關,「計算圖論」與「組合最佳化」密切相關。大家現在已經默認圖論是組合學的分支。

順帶一提,管理學的分支「作業研究Operations Research」又譯作「運籌學」,即是在探討「組合最佳化」。經典範例是Dijkstra提出的最短路徑問題。

Network Flows: Theory, Algorithms, and Applications
Network Flow Algorithms
Data Structures and Network Algorithms
Graphs, Networks and Algorithms
Digraphs: Theory, Algorithms and Applications
Pearls in Graph Theory: A Comprehensive Introduction
Combinatorial Optimization / Cook et al.
Combinatorial Optimization: Algorithms and Complexity
Combinatorial Optimization: Theory and Algorithms
Scheduling Algorithms
Scheduling: Theory, Algorithms, and Systems

Number Theory / Computational Number Theory

「數論」探討自然數的性質,諸如因數、質數、餘數。

「計算數論」同時使用演算法與數論的知識,橫跨兩個領域。

例如篩法、因數分解就是考慮了時間複雜度所得到的演算法。

另外,在此領域之下,我擅自收錄了計算代數(群論)、計算組合學(排列組合、序論)的演算法。在數學領域當中,這些領域各自獨立;但是從演算法的觀點,這些領域互相聯繫。

Elementary Number Theory and Its Applications
Algorithmic Number Theory, Volume 1: Efficient Algorithms
Computational Number Theory / Abhijit Das
The Art of Computer Programming, Volume 2: Seminumerical Algorithms
A Computational Introduction to Number Theory and Algebra
Hacker's Delight
Matters Computational: Ideas, Algorithms, Source Code
Introductory Combinatorics
Combinatorics: The Art of Counting
Combinatorial Methods with Computer Applications
Concrete Mathematics: A Foundation for Computer Science

Analytic Number Theory

「解析數論」利用分析來探討數論,諸如級數、生成函數。

另外,在此領域之下,我擅自收錄了計算代數(多項式運算)、訊號處理、碎形與混沌的演算法。在數學領域當中,這些領域各自獨立;但是從演算法的觀點,這些領域互相聯繫。

Analysis for Computer Scientists: Foundations, Methods, and Algorithms
Analytic Number Theory for Beginners
Algorithmes Efficaces en Calcul Formel
Algorithms for Computer Algebra
Modern Computer Algebra
Chaos and Fractals: An Elementary Introduction
Elegant Chaos: Algebraically Simple Chaotic Flow
Elegant Fractals: Automated Generation of Computer Art
https://w2.mat.ucsb.edu/200C/spring_2015/schedule.html
http://www.math.mcgill.ca/jakobson/courses/math480-19-fractals.html

Geometry / Computational Geometry

「幾何」探討點線面、長度角度、形體內外交錯。

「計算幾何」同時使用演算法與幾何的知識,橫跨兩個領域。

例如簡單多邊形(邊不相交)、凸多邊形(邊斜率遞增)就是考慮了時間複雜度所得到的形狀。

Computational Geometry: Algorithms and Applications
Computational Geometry in C
Discrete and Computational Geometry
Computational Geometry: An Introduction
Visibility Algorithms in the Plane

Differential Geometry / Discrete Differential Geometry

「微分幾何」探討連續平滑的表面。

「離散微分幾何」利用微分幾何來探討不連續平滑的表面。

例如網格就是不連續平滑的表面。

本世紀才興起的領域。目前沒有教科書,只有課程講義。

Visual Differential Geometry and Forms: A Mathematical Drama in Five Acts
Discrete Differential Geometry: An Applied Introduction
A Short Course in Computational Geometry and Topology
Geometric Folding Algorithms: Linkages, Origami, Polyhedra
https://mirelab6.wixsite.com/dgpslides
http://school.geometryprocessing.org/
http://www.cs.uu.nl/docs/vakken/ddm/2019-2020/
https://cims.nyu.edu/gcl/teaching.html
https://graphics.stanford.edu/courses/cs468-13-spring/schedule.html
https://cseweb.ucsd.edu/~alchern/teaching/cse274_wi22/
http://ddg.cs.columbia.edu/
http://www.cs.cmu.edu/~kmcrane/
http://wordpress.discretization.de/geometryprocessingandapplicationsws19/2019/10/17/lecture-progress/
http://fernandodegoes.org/
https://graphics.tudelft.nl/Publications-new/2016/VCDPBHB16/

Analysis / Numerical Analysis

「分析」探討連續函數的性質,例如測度、泰勒展開。

「數值分析」探討連續函數的演算法,例如方程式求解。

各種工程領域經常使用數值分析。應用最為廣泛!

Numerical Analysis for Engineers: Methods and Applications
Numerical Methods for Engineers / Steven Chapra, Raymond Canale
Numerical Analysis / Timothy Sauer
Numerical Analysis / Richard L. Burden, J. Douglas Faires, Annette M. Burden
Numerical Methods: Design, Analysis, and Computer Implementation of Algorithms
Numerical Algorithms: Methods for Computer Vision, Machine Learning, and Graphics
Numerical Recipes: The Art of Scientific Computing
Algorithms for Optimization
An Introduction to Optimization
Convex Optimization
Introduction to Online Convex Optimization

Linear Algebra / Numerical Linear Algebra

「線性代數」探討線性函數的性質,例如特徵向量、矩陣分解。

「數值線性代數」探討線性函數的演算法,例如一次方程組求解之高斯消去法。

在數學領域當中,線性代數是代數的分支,跟分析無關;但是從演算法的觀點,數值線性代數比較像是數值分析的分支。

計算機科學經常使用數值線性代數。應用相當廣泛!

A First Course in Numerical Methods
Numerical Linear Algebra
Numerical Linear Algebra: An Introduction
Applied Numerical Linear Algebra
Fundamentals of Numerical Computation
Numerical Computation in Science and Engineering
Fundamentals of Matrix Computations
Matrix Computations
Iterative Methods for Sparse Linear Systems
Numerical Methods for Large Eigenvalue Problems
Linear Algebra Notebook
Matrix Analysis and Computations
Matrix Analysis and Applied Linear Algebra
Spectra and Pseudospectra: The Behavior of Nonnormal Matrices and Operators
The Matrix Cookbook
Operations Research: Applications and Algorithms
Introduction to Mathematical Optimization
Numerical Optimization
Introduction to Linear Optimization
Integer Linear Programming in Computational and Systems Biology: An Entry-Level Text and Course
Advanced Optimization for Process Systems Engineering

Engineering Mathematics

「工程數學」是各種工程領域經常使用的數學主題。工程數學涵蓋的數學主題是大雜燴,源自各種數學領域。當你遇到非常重要的數學主題,又想要通通集中在一門課裡面,那就放在工程數學裡面吧。

工程數學的常見主題:多變量微積分、微分方程、調和分析、動態系統、隨機程序、複變函數。

Engineering Mathematics / Ken Stroud and Dexter Booth 
Advanced Engineering Mathematics / Erwin Kreyszig
Scientific Computing: An Introductory Survey
Spectral Methods in MATLAB
Computational Physics
Random Numbers and Computers
Geometric Numerical Integration: Structure-Preserving Algorithms for Ordinary Differential Equations

Discrete Mathematics

「離散數學」是計算機科學經常使用的數學領域。離散數學如同方才演的那齣。當你遇到非常重要的數學領域,又想要通通集中在一門課裡面,那就放在離散數學裡面吧。

離散數學的常見領域:集合論、序論、邏輯學、自動機理論、代數結構、組合學、機率論、圖論、……。

Discrete Mathematics and Its Applications / Kenneth Rosen
Stanford Introduction to Logic
The Logic Notes
Logic: The Laws of Truth
Logic as a Tool: A Guide to Formal Logical Reasoning
Mathematical Logic for Computer Science
An Introduction to Formal Logic
forall x: An Introduction to Formal Logic
LMU CMSI 2310 Language, Thought, and Computation
Stanford Encyclopedia of Philosophy
Compiler Construction Using Java, JavaCC, and Yacc
Compiler Construction: Principles and Practice

Data Processing

「資料處理」是資料的數學理論和演算法。

資料處理不是主流名稱。當前名稱是「機器學習Machine Learning」。過去名稱是「樣式辨識Pattern Recognition」。

我認為機器學習名不副實,所以我不使用這個名稱。「機器」和「學習」這兩個詞彙缺乏明確意義、缺乏嚴謹定義。

我認為機器學習的發起成員是心理學家和統計學家。他們成天創造新奇詞彙,重新包裝統計學知識,換湯不換藥,譁眾取寵。他們不懂演算法、不懂數值分析,導致那些詞彙不便實作、不便實用。

Learning From Data
Introduction to Machine Learning / Ethem Alpaydin
Machine Learning Fundamentals: A Concise Introduction
Pattern Recognition and Machine Learning
Data Mining: Practical Machine Learning Tools and Techniques
Data Mining and Machine Learning: Fundamental Concepts and Algorithms
Machine Learning: The Art and Science of Algorithms that Make Sense of Data
Machine Learning: A Probabilistic Perspective
Machine Learning / Tom Mitchell
Machine Learning / Zhi-Hua Zhou, Shaowu Liu
Learning From Data: A Short Course
An Introduction to Statistical Learning, with Applications in R
The Elements of Statistical Learning: Data Mining, Inference, and Prediction
Numerical Geometry of Nonrigid Shapes
Computational Optimal Transport
Moments and Moment Invariants in Pattern Recognition

Signal Processing

「訊號處理」是訊號的數學理論和演算法。

起初,訊號處理是電子學的分支,大家利用電子電路處理訊號。後來,計算機科學興起,大家開始利用電腦處理訊號。目前仍以電子電路為大宗。大家經常討論電子電路一方,鮮少討論電腦一方。

訊號處理不是主流名稱。當前名稱是「人工智慧Artificial Intelligence」。過去名稱是「控制理論Control Theory」。

我認為人工智慧名不副實,所以我不使用這個名稱。我認為人工智慧的發起成員是邏輯學家(函數式程式語言),然而目前根本無人使用邏輯學研究人工智慧。

Introduction to Wireless and Mobile Systems
Time Series Analysis: Forecasting and Control
Introduction to Spectral Analysis
Machine Learning for Signal Processing: Data Science, Algorithms, and Computational Statistics
Mathematical Control Theory: An Introduction
Mathematical Modeling in Systems Biology: An Introduction
Algorithms for Decision Making
Artificial Intelligence: A Modern Approach
Dive into Deep Learning

String Processing

「字串處理」是字串的數學理論和演算法。

該領域的學者原本打算稱作「字串論String Theory」,但是恰巧跟物理學的「弦論String Theory」撞名,因而作罷。也有人稱作「字串學Stringology」或「文字演算法Text Algorithm」。

Algorithms on Strings
Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology
Flexible Pattern Matching in Strings: Practical On-Line Search Algorithms for Texts and Biological Sequences
Jewels of Stringology
String Searching Algorithms
125 Problems in Text Algorithms

Coding Theory

「編碼理論」是二元碼的數學理論和演算法。

壓縮:轉換資料,讓資料容量變小。

過去稱作「信號源編碼Source Coding」。現在稱作「資料壓縮Data Compression」。

Pearls of Algorithm Engineering
Understanding Compression: Data Compression for Modern Developers
Introduction to Data Compression

更正:補充資料,出錯時方便補救。

過去稱作「通道編碼Channel Coding」。現在稱作「錯誤更正碼Error Correcting Code」。

Coding Theory and Cryptography: The Essentials
Coding Theory: Algorithms, Architectures and Applications
Error Correction Coding: Mathematical Methods and Algorithms
Information Theory, Inference, and Learning Algorithms

加密:轉換資料,讓資料無法閱讀。

現在稱作「密碼學Cryptography」。

Serious Cryptography: A Practical Introduction to Modern Encryption
Pratical Cryptography for Developers
Cryptography Engineering: Design Principles and Practical Applications
A Graduate Course in Applied Cryptography
Introduction to Modern Cryptography
The Joy of Cryptography
Understanding Cryptography: A Textbook for Students and Practitioners
Guide to Elliptic Curve Cryptography
A Pragmatic Introduction to Secure Multi-Party Computation

Multimedia🚧

Media / Multimedia

計算機科學當中,「媒體」就是記載資訊的媒介,諸如文字、聲音、圖片、動畫都是媒體。「多媒體」就是複合多種媒體,例如網頁、影片、電玩都是多媒體。

每一種媒體都有專門的研究領域,分工相當細緻。

Text Processing 文字處理
應用:文字編輯器、輸入法、網路爬蟲

Natural Language Processing 自然語言處理
應用:自動翻譯、自動寫作、搜尋引擎、智慧型輸入法

Speech Processing 語音處理
應用:語音輸入、電腦語音、聲紋辨識

Computer Music 電腦音樂
應用:電子樂器、譜曲、網路合奏

Image Processing 影像處理
應用:軟體修圖、相機特效、美術作品

Audio Processing 音訊處理
應用:隨身聽、混音、音效設計、去除通話雜音

Video Processing 視訊處理
應用:DVD、電視、攝影、Youtube、視訊會議、合成場景

Geometry Processing 幾何處理
應用:模型設計、3D掃描、3D列印

Computer Graphics 電腦繪圖
應用:模型顯示、虛擬實境、電玩遊戲、視覺特效、美術作品

Computer Animation 電腦動畫
應用:好萊塢電影特效、迪士尼卡通動畫、電視廣告、虛擬偶像

Data Visualization 資料視覺化
應用:數據圖表

Computer Vision 電腦視覺
應用:手寫輸入、自動駕駛、監控系統、生產品管、醫學影像

本站也額外整合了密切相關的領域。

Data Science 資料科學
應用:搜尋引擎、資料庫、商業分析

Network Science 網路科學
應用:社群網路、藥物篩選

Color Science 色彩科學
應用:顯示裝置、攝影設備、影像設計、視訊壓縮

Computational Photography 計算攝影學
應用:數位相機、太空望遠鏡

Computational Acoustics 計算音響學
應用:場館設計、海洋探勘、超音波檢查

Computational Mechanics 計算力學
應用:工程模擬與分析、環境模擬、電腦動畫

Photogrammetry 攝影測量學
應用:航測、VR眼鏡、電影特效

Computational Optics 計算光學
應用:相機鏡頭、醫學影像

Robotics 機器人學
應用:工業生產製造、自動車、醫療手術、義肢、軍事武器

Computational Neuroscience 計算神經科學
應用:腦機介面、義肢

語音處理不是研究麥克風、耳機,電腦繪圖不是研究螢幕。因為電腦的功能是數學計算,所以上述領域通通都是數學計算!將現實問題對應到數學問題,運用數學計算解決現實問題。

「懂得程式設計」與「懂得數學計算」是兩碼子事,上述這些領域通通是在鑽研後者。大多數民眾喜歡前者,卻完全忽略後者,進而影響了台灣資訊產業的發展方向。

Data Science

「資料科學」從大量資料之中找到資訊。使用了資料處理。

經典話題是啤酒、尿布、星期五。

Mining of Massive Datasets
High-Dimensional Data Analysis with Low-Dimensional Models: Principles, Computation, and Applications
Readings in Database Systems
Search Engines: Information Retrieval in Practice
Designing Data-Intensive Applications
http://www.yisongyue.com/teaching.php
http://www.cs.columbia.edu/~blei/courses.html
https://people.cs.georgetown.edu/jthaler/COSC548.html
http://www.csd.uoc.gr/~hy460/
https://www.csie.ntu.edu.tw/~tonytan/teaching/prev/2015b-adb.html

Network Science

「網路科學」從大量關聯之中找到資訊。使用了計算圖論。

經典話題是六度分隔理論。

A First Course in Network Science
Network Science
Networks
The Nature of Complex Networks
Mining Complex Networks
Modularity and Dynamics on Complex Networks
Evolutionary Dynamics of Complex Communications Networks
A (partially) Interactive Introduction to Systems Sciences
Lectures on Network Systems
Complex Network: An Algorithmic Perspective
Graph Theory and Complex Networks: An Introduction
Graph Spectra for Complex Networks
Random Graphs and Complex Networks, Volume 1
https://slides.com/meng-yingtsai/sna_intro

Natural Language Processing

「自然語言處理」旨在研究人類撰寫的文章。

經典話題是聊天機器人。

Introduction to Natural Language Processing
Foundations of Statistical Natural Language Processing
Mining the Web: Discovering Knowledge from Hypertext Data
Introduction to Information Retrieval
https://stanford-cs324.github.io/winter2022/
https://alvinntnu.github.io/NTNU_ENC2045/

Speech Processing

「語音處理」旨在研究人類訴說的話語。使用了音訊處理、自然語言處理。

經典話題是智慧音箱。

Speech and Language Processing
Theory and Applications of Digital Speech Processing
Spoken Language Processing: A Guide to Theory, Algorithm, and System Development

Audio Processing

「音訊處理」研究聲音特效、聲音設計、聲音檔案、聲音傳輸。

Introduction to Audio Processing
Introduction to Audio Signal Processing
Introduction to Computer Music
Introduction to Computer Music
Introduction to Computer Music
DAFX - Digital Audio Effects
The Audio Programming Book
Spectral Audio Signal Processing
Physical Audio Signal Processing: for Virtual Musical Instruments and Digital
The Physics of Musical Instruments
Physics and Music: The Science of Musical Sound
https://www.coursera.org/learn/audio-signal-processing
http://www.ee.columbia.edu/~dpwe/e4896/outline.html
http://www.cs.cf.ac.uk/Dave/CM0268/PDF/10_CM0268_Audio_FX.pdf
https://ccrma.stanford.edu/~jos/
https://www.ness.music.ed.ac.uk/

Computer Music

「計算機音樂」利用電腦產生音樂、利用電腦模仿樂器。

Fundamentals of Music Processing
An Introduction to Audio Content Analysis
https://pages.mtu.edu/~suits/MusicRefs.html
http://www.music.mcgill.ca/~gary/
http://www.music.mcgill.ca/~ich/
https://twtmir.wordpress.com/
http://www.cs.cmu.edu/~music/cmsip/schedule.html
https://cmc.music.columbia.edu/cmc_courses/regularly-offered
https://www.mcgill.ca/study/2020-2021/faculties/music/graduate/courses/music/graduate?search_api_views_fulltext=MUMT&sort_by=field_subject_code
https://ccrma.stanford.edu/

Computational Acoustics

「計算聲學」或「計算音響學」利用電腦製造聲波、分析聲波。

我還沒有學會。

https://www.quora.com/What-are-some-of-the-best-books-on-acoustics-sound-and-vibration
Understanding Acoustics: An Experimentalist’s View of Sound and Vibration
Fundamentals of Acoustics
Acoustics: An Introduction to Its Physical Principles and Applications
Introduction to Sound: Acoustics for the Hearing and Speech Science
Master Handbook of Acoustics
The Science of Sound

Image Processing

「圖片處理」或「影像處理」利用電腦修改圖片。

Digital Image Processing
Digital Image Processing: An Algorithmic Introduction
A Computational Introduction to Digital Image Processing
Concise Computer Vision: An Introduction into Theory and Algorithms
2D Computer Vision: Principles, Algorithms and Applications
Numerical Geometry of Images: Theory, Algorithms, and Applications
Image Processing: Dealing with Texture
http://www.colorimageprocessing.com/books.htm

Video Processing

「影片處理」或「視訊處理」利用電腦修改影片。

我還沒有學會。

Color Science

「色彩科學」研究色彩與觀感,用於圖片處理與影片處理。

The Science of Color
Color Science: Concepts and Methods, Quantitative Data and Formulae
Color Imaging: Fundamentals and Applications
High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting
Advanced High Dynamic Range Imaging
https://scholar.harvard.edu/files/schwartz/files/lecture17-color.pdf

Computational Photography

「計算攝影學」研究拍攝相片的技巧。無論是手機自拍或是觀星望月,都能派上用場。

http://stanford.edu/class/ee367/
http://cs.brown.edu/courses/csci1290/
http://franchomelendez.com/index.php/computational-photography/
http://www.computationalimaging.org/research-overview/
https://www.davidsalomon.name/PhotoBook/PhoAd.html
https://www.csie.ntu.edu.tw/~cyy/courses/vfx/current/
https://people.eecs.berkeley.edu/~efros/
http://kevinkaixu.net/

Geometry Processing

「幾何處理」研究三維模型。無論是卡通動畫或是工業生產,都能派上用場。

Polygon Mesh Processing
A Sampler of Useful Computational Tools for Applied Geometry, Computer Graphics, and Image Processing
Guide to Computational Geometry Processing: Foundations, Algorithms, and Methods
3D Mesh Processing and Character Animation: With Examples Using OpenGL, OpenMesh and Assimp
Shape Interrogation for Computer Aided Design and Manufacturing
Functional and Shape Data Analysis
https://github.com/danielepanozzo/gp
https://www.coursera.org/learn/interactive-computer-graphics
https://haosulab.github.io/ml-meets-geometry/WI22/schedule.html
http://homes.cs.washington.edu/~seitz/talks/3Dhistory.pdf
http://graphics.csie.ntu.edu.tw/~robin/courses/gm13/
http://www.banterle.com/francesco/

Computational Mechanics / Physically Based Simulation

物理學的「計算力學」,計算學的「物理模擬」,用電腦模擬真實世界的物質運動。無論是電影特效或是氣象預報,都能派上用場。

兩邊風格迥異,目的和方法完全不同。近年兩邊逐漸靠攏。

Physics for JavaScript Games, Animation, and Simulations
The Nature of Code: Simulating Natural Systems with Processing
Foundations of Physically Based Modeling & Animation
Physics-Based Animation
http://graphics.stanford.edu/courses/cs348c/
http://graphics.stanford.edu/courses/cs448z/
http://www.cs.cmu.edu/~scoros/cs15467-s16/index.html
http://www.cs.cmu.edu/~scoros/cs15869-s15/index.html
https://github.com/Housz/GraphicsSimulation

剛體模擬Rigid Body Simulation:針對不會變形的物體。

Building a 2D Game Physics Engine: Using HTML5 and JavaScript
Game Physics Engine Development: How to Build a Robust Commercial-Grade Physics Engine for your Game
Game Physics
Real-Time Collision Detection
Engineering Mechanics: Statics & Dynamics / Russell Hibbeler
A Modern Introduction to Mechanics / Jonathan Reichert
Introduction to Classical Mechanics / Atam Arya

流體模擬Fluid Simulation:針對液體、氣體。

Fluid Engine Development
Fluid Simulation for Computer Graphics
Fluid Simulation for Video Games
Numerical Simulation in Fluid Dynamics: A Practical Introduction
Computational Techniques for Fluid Dynamics 1: Fundamental and General Techniques
Computational Techniques for Fluid Dynamics 2: Specific Techniques for Different Flow Categories
Fluid Dynamics: Theory, Computation, and Numerical Simulation
Fluid Mechanics: Fundamentals and Applications
Wind Generated Ocean Waves

柔體模擬Soft Body Simulation:針對會變形的物體。

The Material Point Method: Theory, Implementations and Applications
Finite Element Method Simulation of 3D Deformable Solids
Computational Inelasticity
Elasticity: Theory, Applications, and Numerics
Physics of Continuous Matter: Exotic and Everyday Phenomena in the Macroscopic World

Computer Graphics

「計算機圖學」用電腦繪製三維模型。想要在電腦螢幕呈現三維模型,必須經過一連串計算。

Fundamentals of Computer Graphics
Ray Tracing from the Ground Up
3D Graphics for Game Programming
The Ray Tracer Challenge
Ray Tracing in One Weekend
Scratchapixel
Real-Time Rendering
Physically Based Rendering
http://cs248.stanford.edu/winter20/
https://dritchie.github.io/csci2240/
https://sites.cs.ucsb.edu/~lingqi/
https://www.csie.ntu.edu.tw/~cyy/courses/rendering/
https://zhuanlan.zhihu.com/p/444931303

Computer Animation

「電腦動畫」用電腦繪製各種東西,並且讓它們動起來。想要在電腦螢幕呈現各種東西,必須經過一連串計算。

Computer Animation: Algorithms and Techniques
The Art of 3D: Computer Animation and Effects
Digital Character Development: Theory and Practice
Form+Code in Design, Art, and Architecture

Computer Vision

「計算機視覺」。用電腦分析影像內容。

Computer Vision: A Modern Approach
Computer Vision: Algorithms and Applications
Computer Vision for Visual Effects
Computer Vision: Models, Learning, and Inference
Computer Vision: Principles, Algorithms, Applications, Learning

Photogrammetry / 3D Vision

土木工程的「攝影測量學」,計算學的「三維視覺」,二維相片轉換成三維景物的數學原理。

Introductory Techniques for 3-D Computer Vision
An Invitation to 3D Vision: A Tutorial for Everyone
Automatic Reconstruction of Textured 3D Models

內容過時的經典書籍。

Multiple View Geometry in Computer Vision
The Geometry of Multiple Images: The Laws That Govern the Formation of Multiple Images of a Scene and Some of Their Applications
An Invitation to 3-D Vision: From Images to Geometric Models
Guide to 3D Vision Computation: Geometric Analysis and Implementation
An Introduction to 3D Computer Vision Techniques and Algorithms
Introduction to Modern Photogrammetry
Close-range Photogrammetry and 3D Imaging

Computational Optics / Computational Imaging

光學工程的「計算光學」,計算學的「計算成像」,三維景物轉換成二維相片的數學原理。

我還沒有學會。

Computational Imaging
Fourier Optics and Computational Imaging
Optics / Eugene Hecht
https://cs184.eecs.berkeley.edu/
https://www2.eecs.berkeley.edu/Pubs/Faculty/yirenng.html
https://abhishekkar.info/
https://bmild.github.io/llff/

Robotics

「機器人學」。自動運作、自主控制的機械設備。

Robotics, Vision and Control: Fundamental Algorithms in MATLAB®
Robotics, Vision and Control: Fundamental Algorithms in Python
Robot Modeling and Control
Introduction to Autonomous Mobile Robots
Principles of Robot Motion: Theory, Algorithms, and Implementations
Modern Robotics
State Estimation for Robotics
Probabilistic Robotics