C++進階:演算法-APCS、LeetCode [線上課程]

C++進階:演算法-APCS、LeetCode [線上課程]

(※ 本課程難度較高,加上課程較為密集,建議熟悉C/C++並且對資料結構有基本認識)
本課程為銜接 C/C++ 基礎班之進階課程,授課內容著重在介紹常見多種演算法:排序、搜尋、分治法、貪婪演算法、動態規劃、廣度優先搜尋、深度優先搜尋、最小生成樹、網路流、最短路徑。
演算法(algorithm)把解決問題的思路具體化,利用定義清楚的指令於解決數學計算、資料處理、自動推理,也同時比較評估做法的優劣。
參考書目為臺灣許多大學所使用的教科書:Introduction to Algorithm,期望在課程中帶領學員了解各式演算法的原理與應用,並且逐章練習相關 LeetCode 面試題與 APCS實作題 。

授課時間的分配約為課堂講授(40%)、範例程式碼講解(25%)、學生練習(35%),本門課另有5次作業供學員練習,期望同學可以從大量實作與練習中形成肌肉記憶並熟悉常見資料結構的使用。

【本課程為預錄影片進行(無字幕),Office hour 為每周末的下午 13:00~16:00,會以 Google Meet進行】
【課程開始當週的禮拜六下午 13:00 會直播進行課程說明與Q&A】
【評分方式為:每周簽到 20%、作業 100%(一次20% 共5次),70分為通過標準】
【Office hour 外的發問以 E-mail 或 discord 為主】

課程大綱

Class 01. 演算法入門
Class 02. 複雜度估算(Complexity)
Class 03. P 與 NP 問題
Class 04. 排列 (Sort)
===Homework 1===
Class 05. 搜尋 (Search)
Class 06. 分治法(Divide and Conquer)
===Homework 2===
Class 07. 貪婪演算法(Greedy Algorithm)
Class 08. 動態規劃(Dynamic programming)
===Homework 3===
Class 08. 圖論(Graph)
Class 10. 廣度優先搜尋(BFS)
Class 11. 深度優先搜尋(DFS)
===Homework 4===
Class 12. 最小生成樹(Minimal Spanning Tree)
Class 13. 網路流(Flow Network)
Class 14. 最短路徑(Shortest Path)
===Homework 5===

※本門課第一堂簡介與複雜度介紹與資料結構班相同
※課程內容將視實際上課情形加以增減
※本課程評分方式為課後習題、LeetCode指定題數、APCS歷屆試題

適合對象

想了解演算法、準備大學課程、有面試軟體工程師或刷題需求者、準備升學APCS考試。建議國高中以上並有任一程式語言基礎(C/C++,Python佳)、修習過資料結構或有相關概念之學生。
(※ 本課程難度較高,加上課程較為密集,建議熟悉C/C++並且對資料結構有基本認識)

開發環境

Codeblocks

近期班次

  • 第346期 確定開課

    課程類別:線上課程

    開課日期:2021.08.02 ~

    學費:新生新台幣4500元整

    注意事項

    • 上課教材、影片:開課當天會發送註冊信至信箱,註冊完畢後即可開始上課。
    • 結業狀況:請上官網”結業名單”查閱是否合格及證書製作進度。
    • 轉班或退費期限:開課日後三週內。
    • 繳交作業期限:結束日後一週內,通過課程標準才會製作證書。
    • 課程影片下架日:結束日後六個月。

  • 講師介紹

    • 國立臺灣大學電機工程學碩士學位
    • 國立臺灣大學機械工程學學士學位
    • 國立臺灣大學醫學系學士班

    (一) 經歷

    • 台大醫院見習醫師
    • IRHOCS 2015國際機器人實作競賽手臂機器人組 冠軍
    • 2015 上銀智慧手競賽佳作
    • 2020 iT邦幫忙鐵人賽 Blockchain組 冠軍

    (二) 研究領域

    • 電腦視覺 機器學習 區塊鏈 智能合約

    (三) 使用語言

    • C/C++,R,Python,PHP,Solidity

    (四) 教學經驗

    於本訓練班授課時數累計至2020年2月5日為1150小時

    (五) 相關著作 區塊鏈生存指南:帶你用 Python 寫出區塊鏈! 

     

    (六) 教學經驗 於本訓練班授課時數累計至2021年6月30日為1,710小時