# Linear Algebra

18.06 Linear Algebra @ MIT

# Discrete Mathematics

1. Python Syntax
2. Strings and Console Output
3. Conditionals and Control Flow
4. Functions
5. Lists & Dictionaries
6. Student Becomes the Teacher
7. Lists and Functions
8. Loops
9. Exam Statistics
11. Introduction to Classes
12. File Input and Output
13. PYTHON FINAL PROJECT

# 基本Computer Science知識 & Python操作

1. 計算機概論 2. 資料結構(簡單) 3. 演算法概論(簡單) 4. 物件導向設計

5. 程式除錯(程式語法面)

Lecture 1 — Introduction to Python:

Machines / Languages / Types / Variables / Operators and Branching

Lecture 2 — Core elements of programs:
Strings / Input & Output / IDEs / Control Flow / Iteration / Guess and Check

Lecture 3 — Simple Programs:
Approximate Solutions / Bisection Search / Floats and Fractions / Newton-Raphson

Lecture 4 — Functions:
Decomposition and Abstraction / Functions and Scope / Keyword Arguments / Specifications / Iteration vs Recursion / Inductive Reasoning / Towers of Hanoi /
Fibonacci / Recursion on non-numerics / Files

Lecture 5 — Tuples and Lists:
Tuples / Lists / List Operations / Mutation, Aliasing, Cloning

Lecture 6 — Dictionaries:
Functions as Objects / Dictionaries / Example with a Dictionary / Fibonacci and Dictionaries / Global Variables

Lecture 7 — Debugging:
Programming Challenges / Classes of Tests / Bugs / Debugging / Debugging Examples

Lecture 8 — Assertions and Exceptions
Assertions / Exceptions / Exception Examples

Lecture 9 — Classes and Inheritance:
Object Oriented Programming / Class Instances / Methods / Classes Examples / Why OOP

Lecture 10 — An Extended Example:
Building a Class / Viualizing the Hierarchy / Adding another Class / Using Inherited Methods / Gradebook Example / Generators

Lecture 11 — Computational Complexity:
Program Efficiency / Big Oh Notation / Complexity Classes / Analyzing Complexity

Lecture 12 — Searching and Sorting Algorithms:
Indirection / Linear Search / Bisection Search / Bogo and Bubble Sort /Selection Sort / Merge Sort

Lecture 13 — Visualization of Data:
Visualizing Results / Overlapping Displays / Adding More Documentation / Changing Data Display / An Example Lecture

1. Python繪圖(模擬MatLab的系統) 2. 機率與統計(簡單) 3. 數值分析(簡單) 4. 演算法概論(優化介紹) 5. 計算機智慧(簡單)

Lecture 1 — Optimization and Knapsack Problem:
Computational models / Intro to optimization / 0/1 Knapsack Problem / Greedy solutions

Lecture 2 — Decision Trees and Dynamic Programming:
Decision tree solution to knapsack / Dynamic programming and knapsack /
Divide and conquer

Lecture 3 — Graphs:
Graph problems / Shortest path / Depth first search / Breadth first search

Lecture 4 — Plotting:
Visualizing Results / Overlapping Displays / Adding More Documentation /
Changing Data Display / An Example

Lecture 5 — Stochastic Thinking:
Rolling a Die / Random walks

Lecture 6 — Random Walks:
Drunk walk / Biased random walks / Treacherous fields

Lecture 7 — Inferential Statistics:
Probabilities / Confidence intervals

Lecture 8 — Monte Carlo Simulations:

Lecture 9 — Monte Carlo Simulations:
Sampling /Standard error

Lecture 10 — Experimental Data:
Errors in Experimental Observations / Curve Fitting

Lecture 11 — Experimental Data:
Goodness of Fit / Using a Model for Predictions

Lecture 12 — Machine Learning:
Feature Vectors / Distance Metrics  Clustering

Lecture 13 — Statistical Fallacies
Misusing Statistics / Garbage In Garbage Out / Data Enhancement

# Algorithm & Data Structure 進階課程

Data Structures and Algorithms Specialization @UCSD (6parts

Basic knowledge of at least one programming language (C, C++, C#, Haskell, Java, JavaScript, Python2, Python3, Ruby, and Scala): loops, arrays, stacks, recursion. Basic knowledge of mathematics: proof by induction, proof by contradiction.

Course1 — Algorithmic Toolbox
Greedy Algorithms
Divide-and-Conquer
Dynamic Programming

Course2 — Data Structures
Basic Data Structures
Dynamic Arrays and Amortized Analysis
Priority Queues and Disjoint Sets
Hash Tables
Binary Search Trees
Binary Search Trees 2

Course3 — Algorithms on Graphs
Decomposition of Graphs 1
Decomposition of Graphs 2
Paths in Graphs 1
Paths in Graphs 2
Minimum Spanning Trees

Course4 — Algorithms on Strings
Suffix Trees
Burrows-Wheeler Transform and Suffix Arrays
Knuth–Morris–Pratt Algorithm
Constructing Suffix Arrays and Suffix Trees

Coursera5 — Advanced Algorithms and Complexity
Flows in Networks
Linear Programming
NP-complete Problems
Coping with NP-completeness
Streaming Algorithms (Optional)

# Statistic

Statistics with R Duke University

COURSE 1 Introduction to Probability and Data
COURSE 2 Inferential Statistics
COURSE 3 Linear Regression and Modeling
COURSE 4 Bayesian Statistics
Decision Making
Bayesian Regression
Perspectives on Bayesian Applications
Data Analysis Project

COUSRE 5 Capstone ( 這個月可以完成專案，拿到Certification )

# SQL & Data Warehousing (額外技能)

Data Warehousing for Business Intelligence Specialization

Course1 — Database Management Essentials
Relational Data Model and the CREATE TABLE Statement
Basic Query Formulation with SQL
Extended Query Formulation with SQL
Notation for Entity Relationship Diagrams
ERD Rules and Problem Solving
Data Modeling Problems and Completion of an ERD
Schema Conversion
Normalization Concepts and Practice

Course2 — Data Warehouse Concepts, Design, and Data Integration
Data Warehouse Concepts and Architectures
Multidimensional Data Representation and Manipulation
Data Warehouse Design Practices and Methodologies
Data Integration Concepts, Processes, and Techniques
Architectures, Features, and Details of Data Integration Tools

Course3 — Relational Database Support for Data Warehouses
DBMS Extensions and Example Data Warehouses
SQL Subtotal Operators
SQL Analytic Functions
Materialized View Processing and Design
Physical Design and Governance

Course4 — Business Intelligence Concepts, Tools, and Applications
Decision Making and Decision Support Systems
Business Intelligence Concepts and Platform Capabilities
Data Visualization and Dashboard Design
BI Maturity, Strategy, and Summative Project

Course5 — Design and Build a Data Warehouse for Business Intelligence Implementation

# Programming Collective Intelligence

Chapter 1, Introduction to Collective Intelligence
Chapter 2, Introduces the collaborative filtering

Chapter 3, Discovering Groups Builds on some of the ideas in Chapter 2 and introduces two different methods of clustering, which automatically detect groups of similar items in a large dataset.

Chapter 4, Searching and Ranking Describes the various parts of a search engine including the crawler, indexer, and query engine. It covers the PageRank algorithm for scoring pages based on inbound links and shows you how to create a neural network that learns which keywords are associated with different results.

Chapter 5, Optimization Introduces algorithms for optimization, which are designed to search millions of possible solutions to a problem and choose the best one. The wide variety of uses for these algorithms is demonstrated with examples that find the best flights for a group of people traveling to the same location, find the best way of match- ing students to dorms, and lay out a network with the minimum number of crossed lines.

Chapter 6, Document Filtering Demonstrates Bayesian filtering, which is used in many free and commercial spam filters for automatically classifying documents based on the type of words and other features that appear in the document. This is applied to a set of RSS search results to demonstrate automatic classification of the entries.

Chapter 7, Modeling with Decision Trees Introduces decision trees as a method not only of making predictions, but also of modeling the way the decisions are made. The first decision tree is built with hypothetical data from server logs and is used to predict whether or not a user is likely to become a premium subscriber. The other examples use data from real web sites to model real estate prices and “hotness.”

Chapter 8, Building Price Models Approaches the problem of predicting numerical values rather than classifica- tions using k-nearest neighbors techniques, and applies the optimization algorithms from Chapter 5. These methods are used in conjunction with the eBay API to build a system for predicting eventual auction prices for items based on a set of properties.

Chapter 9, Advanced Classification: Kernel Methods and SVMs Shows how support-vector machines can be used to match people in online dat- ing sites or when searching for professional contacts. Support-vector machines are a fairly advanced technique and this chapter compares them to other methods.

Chapter 10, Finding Independent Features Introduces a relatively new technique called non-negative matrix factorization, which is used to find the independent features in a dataset. In many datasets the items are constructed as a composite of different features that we don’t know in advance; the idea here is to detect these features. This technique is demon- strated on a set of news articles, where the stories themselves are used to detect themes, one or more of which may apply to a given story.

Chapter 11, Evolving Intelligence Introduces genetic programming, a very sophisticated set of techniques that goes beyond optimization and actually builds algorithms using evolutionary ideas to solve a particular problem. This is demonstrated by a simple game in which the computer is initially a poor player that improves its skill by improving its own code the more the game is played.

Chapter 12, Algorithm Summary Reviews all the machine-learning and statistical algorithms described in the book and compares them to a set of artificial problems. This will help you understand how they work and visualize the way that each of them divides data.

（摘錄至內文）

# Introduction to Algorithms

1. Growth of Functions
2. Divide-and-Conquer
3. Probabilistic Analysis and Randomized Algorithms
4. Quicksort
5. Heapsort
6. Sorting in Linear Time
7. Medians and Order Statistics

Data Structures Introduction

8. Elementary Data Structures
9. Hash Tables
10. Binary Search Trees
11. Red-Black Trees
12. Augmenting Data Structures

Advanced Design and Analysis Techniques Introduction

13. Dynamic Programming
14. Greedy Algorithms
15. Amortized

16. B-Trees
17. Fibonacci Heaps
18. van Emde Boas Trees

Graph Algorithms

19. Data Structures for Disjoint Sets
20. Elementary Graph
21. Minimum Spanning Trees
22. Single-Source Shortest Paths
23. All-Pairs Shortest Paths
24. Maximum Flow

Selected Topics Introduction

26. Matrix Operations
27. Linear Programming
28. Polynomials and the FFT
29. Number-Theoretic Algorithms
30. String Matching
31. Computational Geometry
32. NP-Completeness
33. Approximation Algorithms

machine learning 和 data mining 这种超级火的东西，我还没有review过很多教材，所以不能说我什么都很知道。但从我看到过的，线性代数都会被用到。我知道feature extraction总是要用些signal processing，spectral theory的东西的。所以线性代数还是要学到深一些为好。但线代本身其实是学不完的，所以我想最基础的也应该学到change of basis, eigen啥啥，最好能明白pseudo-inverse。
https://www.zhihu.com/question/22539111