Java進階程式設計班

本課程將延續Java基礎班的內容,可歸納為四個主題:


  • 首先介紹在基礎班未能交代的概念 (例如泛型)與新語法 (例如lambda和stream),並且透過JVM了解Java程式的運作原理。

  • 介紹如何在Java的環境中實現多執行緒的程式與如何排除平行程式中會遭遇的問題。

  • 介紹資料結構與演算法 (DSA)。在CS大一的課程中,DSA是除了程設以外的最重要課程之一,尤其二年級開始會面對不同的應用問題 (諸如編譯器、作業系統、計算機網路、計算機結構)等課程,都需要DSA的內容為基礎,甚至在應徵工作面試時,DSA是面試的重點項目之一 (想挑戰leetcode的題目嗎?)。

  • 設計模式。設計模式討論架構的問題,嘗試找出具備高度彈性與低維護成本的解法用以適應未來的需求改變。


透過基礎班與進階班的課程內容,希望對學員在CS的學習上有所幫助,尤其是基礎知識的部分(快來跟我一起來還技術債吧)。近期,我們將逐步加入Spring框架的內容,希望透過簡易的範例讓學員可以快速上手Spring。

課程大綱

// 進階物件導向程式設計 (Advanced Topics on Object-Oriented Programming)
0. 複習物件導向設計 (A quick review on OOP)
1. 泛型 (Java generics)
2. 萬物的原型 (Object: everything is an object)
3. 反射與修飾 (Java reflection and annotation with applications (e.g. JUnit and javadoc))
4. 匿名函數與Stream框架 (Java lambdas and streams)
5. Java Optional: alternative to null (a billion-dollar mistake?)
6. Java虛擬機初探 (Java virtual machine (JVM): internals and computation model)

// 平行程式設計 (Concurrent Programming)
0. Basic concept: Thread & Runnable
1. Race condition
2. Synchronized methods/blocks
3. Deadlock: producer-consumer problem, dining philosophers
4. Java concurrency framework: thread pool
5. Concurrent collections
(Reference: Brian Goetz, Java Concurrency in Practice, 2006.)

// 資料結構與演算法 (Data Structures & Algorithms)
0. Analysis of algorithms
1. Array list and linked list
2. Priority queue (implemented by binary heap; special cases: stack and queue)
3. Binary search tree and its variants (2-3 tree, red-black tree, B-tree)
4. Hashmap
5. Graphs
5.1. Construction of undirected graphs
5.2. Depth first search (DFS) and breadth first search (BFS)
5.3. Connected components
5.4. Digraphs with topological sort and strongly connected components
5.5. Minimal spanning tree and shortest path
6. Tries and regular expressions
7. Data compression
(Reference: Robert Sedgewick and Kevin Wayne, Algorithms, 4/e, 2011.)

// 設計模式 (Selected Design Patterns)
0. SOLID principle & dependency injection (DI)
1. Creational patterns: singleton, factory method, abstract factory, prototype, dependency injection, interning, flyweight, builder
2. Structural patterns: adapter, decorator, proxy, facade
3. Behavioral patterns: iterator, observer, strategy
4. MVC model

// Spring框架初步

註0:updated on 2019/8/1
註1:課程教材主要以英文為主,授課過程以中文為主。英文目前仍為科技領域主要語言,想長期進入資訊領域者,應具備"透過英文學習"的基本能力。

適合對象

1. 擁有Java程式撰寫經驗的學員
2. 具備其他程式語言能力的學員

開發環境

JDK8 + Eclipse

近期班次

  • 第320期 開課日期:2019.09.21 招生中

    上課時間:每週(六)(日)
    1:00 PM ~ 4:00 PM
    上課日期:2019.09.21 ~ 2019.11.02
    學費:新生新台幣5000元整

    備註: 10/5(六)補班停課一次;10/12(六).13(日)國慶放假停課

    詳細資訊

  • 注意事項

    • 上課地點:台灣大學資訊工程學系系館 詳細位置;教室號碼將於開課前一日公佈於官網"最新消息"中。
    • 上課教材:開課後將公布教學網站給同學查閱。
    • 結業狀況:請上官網”結業名單”查閱是否合格及可領取證書進度。

    講師介紹

    • 國立臺灣大學資訊工程學博士候選人

    • 交通大學電信工程研究所 碩士

    • 中央大學電機工程學系 學士

    (一) 服務經驗

    • 國立臺灣大學 腦與心智科學研究所 兼任研究助理 (2014.8--present)
    • 中國信託商業銀行 全球金融商品交易處 期貨自營部 實習研究員 (2014.1--present)
    • 國立臺灣大學 資訊工程學系 資訊系統訓練班 講師 (2014.1--present)
    • 國立臺灣大學 資訊工程學系 課程助教:計算理論、離散數學、財務演算法 (2012.9--present)

    (二) 研究興趣

    • Financial computing
    • Analysis and design of algorithms
    • Quantitative finance, econometrics, and algorithmic trading
    • Statistics and machine learning
    • Computing theory and programming language design

    (三) 程式語言

    • MATLAB, Java, C, C++, Python

    (四) 教學特色

    • 中文授課,課程教材以英文為主。適合規劃出國求學或對科學/技術理論有興趣的學員。
    • 授課時數:於本訓練班教學時數累計至2019年3月25日為3,900小時。