# Week 2
## Day 1
### Intermediate Python and Regex
**Intermediate Python**
- Practice more on Python
- List comprehension
- Using function to generate number in order to save memory
- Use Assert to test Result
- Use Random Package to generate random number. Seed can be use to make random consistence between running time.
- Python Pointer and Decorator
**Regular Expression**
- Re Module
- To identify whether certain text match certain rules. Can be used to find, replace or remove text based on Condition.
- Practice more on Regex
## Day 2
### Data Structure
- Time complexity is a measurement of how much time an algorithm takes with respect to its input size
- Recursion
- Fibonacci
- Sorting Algorithms: Instead of using Recursion or Loop to sort. We can break number into part then merge them again to reduce the amount of time our function has to read the whole sequence.
### OOP (Object-Oriented Programming)
- Hardcoding: Every action is coded into function to be executed.
- OOP: We create a object that contain all function related to object.
- Pratice more on OOP
## Day 3
### Numpy
- Introduction about Numpy packages
- Numpy is much faster than python list
- Working with Numpy: Indexing, Add, Subtract, Divide, Multiply, ...
- Tranposing and Reshaping Numpy
- Practice more on Numpy
## Day 4
### Intro to SQL
- Introduction about Relational Database
- Structured Query Language
- Schema of a Database
- Type of Relationship
### SQL Syntax
- Query a table using Select
- Add filter and sorting using WHERE and ORDER BY
- Table join (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, OUTER JOIN)
- Query with aggregation using GROUP BY
- Order of Execution: FROM and JOIN --> WHERE --> GROUP BY --> HAVING --> SELECT --> DISTINCT --> ORDER BY --> LIMIT / OFFSET
### SQLite
- Create a local database using sqlite package of python
- Create tables
- Insert records
## Day 5
### Module Test
- Doing Module test
- Work on Weekly Project with teamates