Java進階程式設計班

本課程將延續Java基礎班的內容,可歸納為四個主題:Java8新加入的語法 (6 hours)、平行程式基礎 (6 hours)、資料結構與演算法 (15 hours)、設計模式 (3 hours)。


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

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

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

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


透過基礎班與進階班的課程內容,希望對學員在CS的學習上有所幫助,尤其是內功的部分。

課程大綱

// Object-Oriented Programming
0. A quick review on OOP
1. Generics
2. Object: equality, comparison, clone
3. Reflection
4. Annotations with some applications (e.g. JUnit and javadoc)
6. Lambda expressions
7. Java Streams
8. Java Optional: alternative to null
9. Java virtual machine (JVM): internals and computation model

// Concurrent Programming
0. Basic concept: Thread & Runnable
1. Race conditions
2. Synchronized methods/blocks
3. Java concurrency framework: threads pools with the Executors, Futures and Callables, CompletableFutures
4. Deadlock: producer-consumer problem, dining philosophers
5. Semaphores

// Data Structures & Algorithms
0. Analysis of algorithms
1. Array list and linked list
2. Stack and queue
3. Priority queue (by heap with heapsort)
4. Binary search tree and AVL tree
5. Hashing
6. Undirected graphs and graph traversal by depth first search (DFS) and breadth first search (BFS)
7. Digraphs with topological sort and strongly connected components
8. Minimal spanning tree and shortest path
9. Some greedy algorithms and dynamic programming
(Reference: Robert Sedgewick and Kevin Wayne, Algorithms, 4/e, 2011)

// Selected Design Patterns
0. SOLID principle
1. Creational patterns: singleton, factory method, abstract factory, prototype, dependency injection, interning, flyweight, builder
2. Structural patterns: adapter, decorator, facade
3. Behavioral patterns: iterator, observer, strategy
4. MVC model
(Reference: Eric Freeman,‎ Bert Bates,‎ Kathy Sierra,‎ Elisabeth Robson, Head First Design Patterns: A Brain-Friendly Guide, 2004)

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

適合對象

1. 擁有Java程式撰寫經驗的學員(請參考Java基礎程式班授課內容:Java Programming)。
2. 具備其他程式語言能力的學員。

開發環境

JDK8 + Eclipse

近期班次

  • 第306期 開課日期:2018.11.24 招生中

    上課時間:每週(六)(日)
    12:45 PM ~ 4:30 PM
    上課日期:2018.11.24 ~ 2018.12.16
    學費:新生新台幣5000元整

    詳細資訊

  • 注意事項

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

    講師介紹

    • 臺灣大學資訊工程學系 博士班
    • 交通大學電信工程研究所 碩士
    • 中央大學電機工程學系 學士

    // 服務經驗

    • 在本班已教授超過100個班,累計教學時數3,000個小時
    • 國立台灣大學 腦與心智科學研究所 兼任研究助理 (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

    // 教學特色

    • 中文授課,課程教材以英文為主。適合規劃出國求學或對科學/技術理論有興趣的學員。