--- title: 軟體研究社 企劃初稿 description: 軟研安排 tags: 1th, plan --- # 軟體研究社 ***Chu-Pei Software Design*** [ToC] # 初衷 利用社團方式帶動校園學習程式的風氣,把對程式設計有興趣的人聚集在一起,彼此互相討論、進步,並培育下一屆參加學科能力競賽的人才。 # 計畫大綱 - 以社團名義在校內建立社群,並以**網頁架設、競技程式**,兩個主題為軸帶動竹北高中資訊領域風氣。 - ***培育每屆的競程選手、增加社員學習歷程、指導社員參加APCS等檢定考。*** - 期望能協助學校在軟硬體方面改良(e.g., 學校網站、電腦教室環境等)。 --- # 課程安排(暫定) 本學期講師以三年級或畢業學長為主 視學弟妹情況下學期正式社課開始後交由社團教學幹擔任主教 ## 社團課程(網頁技術相關) 講師:30206 周書弘、交大資工 陳吉遠 ### 理論課: 1. - 網路是什麼? - TCP/IP協定組是什麼? - 什麼叫做網卡? 2. - 我們在設定電腦網路的時候,常⾒的參數例如 IP地址、⼦網路遮罩、默 認網關這些名詞代表什麼? - 什麼是 DHCP? - 什麼是 NAT? - 給你⼀台分享器,他到底做了什麼? - 什麼是 NAT? 3. - TCP 和 UDP 分別是什麼? - DNS是什麼? - HTTP ⼜是什麼東⻄? ### 實務課: #### 第一個主題:網路 1. 網路是怎麼運作的基本運作原理、TCP/IP協定組的介紹,以及如何去管理、維護一個網路結構。 2. 了解如何設定電腦網路,以及常見參數的意義,如 IP 地址、子網路遮罩、默認網關⋯⋯,還有 DHCP。 3. 明白網路的分層結構,並且了解內部網路和公開網路的區別,以及 NAT 的原理和 port forwarding 的設置。 4. 常見的網路服務的含義,如 DNS、HTTP。 #### 第二個主題:Linux 系統的使用 1. 如何安裝一個 Linux 系統(以 VirtualBox 環境為例,或以 Ubuntu 系統為主) 2. 熟悉 CLI 的 Shell 操作,包括基本常見指令以及 Shell Script 的撰寫(或以 Bash 為主)。 3. Linux 系統的套件管理、使用者、群組的概念、權限系統。 4. 遠端管理 Linux 系統(使用 SSH) #### 第三個主題:常見網路服務以及如何用 Linux 架設網路服務。 1. FTP 以及架設 FTP 伺服器 2. HTTP 以及架設 HTTP 伺服器 3. 資料庫以及架設 MySQL 伺服器。 #### 第四個主題:如何加強安全性。 1. 最簡單基礎的密碼學,包括非對稱性加密、對稱性加密的意義和雜湊。 2. PKI 認證機制以及何為 HTTPS,利用 openssl 來產生自簽證書,以及 lets encrypt。 #### 主題五 misc: 1. git ## 二四中午(程式競賽相關) 講師:30606 張皓崴、交大資工 陳吉遠 助教:30206 周書弘、30720 薛皓陽 往後基本由前一屆學科選手或已有經驗者指導弟妹 ### 基礎班: #### 第1堂課 - IDE,cin, cout ,變數型別,基本程式架構,coding style #### 第2堂課 - for loop,while loop,if else #### 第3堂課 - 字元,字串,陣列,函數 #### 第4堂課 - 指標,struct,遞迴 #### 第5堂課 - 複雜度,二分搜,排序 #### 第6堂課 - C++常用函式,string &stream ### 進階班: #### 01. introduction - what is competitive programming > 大概需要的節數:1 > 實際的節數:1 #### 02. time/memory complexity(複雜度估計) + fastIO/include all - big O notation(大O表示法) - fastIO(輸入/輸出加速) - <bits/stdc++.h>(萬用函式庫) > 大概需要的節數:1 > 實際的節數:1 #### 03. C++ STL(標準模板庫) + basic data structure(基本資料結構) - iterator/template(迭代器/模板) - queue/stack/linked list(include implementation)(佇列/堆疊/鏈結串列) - set/map/vector/priority queue(only STL)(集合/字典/動態陣列/優先佇列) > 大概需要的節數:2 > 實際的節數:3 #### 04. enumeration/searching(枚舉/搜尋) - enumerate with recursion(遞迴枚舉) - decision tree(決策樹) - eight queens problem(八皇后問題) - enumerate permutation/combination(枚舉排列/組合) - pruning(剪枝) - enumerate subset(枚舉子集) - binary search(二分搜) - ternary search(三分搜) > 大概需要的節數:4 > 實際的節數:4 #### 05. greedy(貪心) - common proving method(證明貪心法的正確性) - 一些貪心的例題 > 大概需要的節數:2 #### 06. divide and concour(分治法) - maximum subarray problem(最大連續子序列和問題) - merge sort(合併排序法) - cloest pair of points(最近點對) > 大概需要的節數:2 #### 07. basic dynamic programming(基礎動態規劃) - DP properties(DP的性質) - linear DP(線性DP) - prefix sum array(前綴和) - fibonacci sequence(斐波那契數列) - 快速冪優化 - classic DP problems(經典DP問題) - knapsack problem(背包問題) - path on grid(方格路徑) - longest increasing subsequence(最長遞增子序列) - longest common subsequence(最長共同子序列) - edit distance(編輯距離) - bitmask DP(位元DP) - travelling salesman problem(旅行推銷員問題) - hamiltonial path(哈密頓路徑) - range DP(區間DP) - tree DP(樹DP) - rerooting(換根DP/全方位木DP) > 大概需要的節數:9 #### 08. basic graph theory(基礎圖論) - build graph(建圖) - adjacent list(鄰接串列) - adjacent matrix(鄰接矩陣) - BFS(廣度優先搜索) - 0-1 shortest path problem(0-1最短路徑問題) - DFS(深度優先搜索) - bipartite graph(二分圖) - shortest path(最短路徑) - some properties of SP(最短路徑的一些性質) - relaxtion(鬆弛) - Bellman-Ford algorithm - Dijkstra's algorithm - Floyd-Warshall algorithm - minimum spanning tree(最小生成樹) - Disjoint Set(並查集) - Prim's algorithm - Kruskal's algorithm - topological sort(拓撲排序) > 大概需要的節數:6 #### 09. tree(樹論) (in 圖論) - properties of tree(樹的性質) - binary tree(二元樹) - 一些特殊的二元樹(full/complete/perfect binary tree) - 二元樹的儲存方式 - binary searching tree(二元搜索樹) - traveling on BST(二元樹的遍歷) - Euler tour on tree(樹壓平) - binary lifting(倍增法) - lowerest common ancestor, LCA(最低共同祖先) > 大概需要的節數:3 #### 10. advanced data structure(進階資料結構) - Fenwick tree/binary indexed tree, BIT(樹狀數組) - difference(差分) - discretization(離散化) - segment tree(線段樹) - lazy tag(懶標) - dynamic allocation(動態開點) - sparse table(稀疏表) > 大概需要的節數:5 #### 11. basic number theorem(基礎數論) - modulo(模除) - modular multiplicative inverse(模逆元) - extended Euclidean algorithm(擴展歐幾里德算法) - Euler's theorem(歐拉定理) - 質數篩法 - Harmonic series(調和級數) - sieve of Eratosthenes(埃氏篩法) - Chinese remainder theorem, CRT(中國剩餘定理) #### 12. advanced dynamic programming(進階動態規劃) - matrix exponentiation(矩陣快速冪優化) - convex hull trick, CHT(單調斜率優化) - 單調隊列(monotonous queue) - 區間滑動最大值 ## 不定期講座(計畫中) 社課和競程培訓外活動,主要以競程選手或大學資工相關學長經驗分享為主 講座對全校師生開放 要再與學務處、實習處、輔導處協調 --- # 人員名單(暫定) ## 社團幹部(待定) 社師:張皓崴 | 班級 | 座號 | 姓名 | |:----:|:----:|:----:| | | | | ## 一二年級(在校生) | 班級 | 座號 | 姓名 | 進階 | |:----:|:----:|:------ |:---- | | 101 | 8 | 張維哲 | v | | 105 | 6 | 林振宇 | | | 105 | 12 | 陳禹翰 | | | 105 | 15 | 楊程皓 | | | 105 | 20 | 蔡承佑 | | | 105 | 23 | 林芷伊 | | | 105 | 25 | 許佳芸 | | | 105 | 29 | 曾怡婷 | | | 106 | 21 | 周宸羽 | | | 106 | 25 | 許珈瑜 | | | 108 | 9 | 陳俊霖 | | | 108 | 18 | 鄭瑞陞 | | | 201 | 14 | 許日誠 | | | 201 | 21 | 黃冠澐 | v | | 201 | 24 | 楊哲旭 | v | | 206 | 19 | 陳世睿 | | | 206 | 31 | 張詠晴 | | | 217 | 18 | 張峻誠 | v | ## 三年級/畢業生 | 班級 | 座號 | 姓名 | |:--------:|:----:|:------:| | 302 | 2 | 周書弘 | | 306 | 4 | 邱翊華 | | 306 | 6 | 張皓崴 | | 307 | 20 | 薛皓陽 | | 交大資工 | 大一 | 陳吉遠 | # 社團需求: ## 硬體 - [X] 電腦教室 > 暫定行政大樓4F微電腦工廠 - [ ] 網路主機 ## 軟體 - [ ] 子網域 - [ ] 學校網路帳號 > 社課用 減少麻煩 - [ ] 學校網域gmail > 社團公用 - [ ] 部分校網管理權 > 協助維護、優化校網 詳見**期望** # 期望 - 協助維護學校網頁 > 網站美工、公告維護、臨時狀況處理、Debug > 藉由學習管理網頁伺服器不僅可以學習到基本的伺服器相關知識透過實際的操作學習到的更多 - 協助改善新版學校網站部分頁面檢視問題