Java進階程式設計班

本課程將延續Java基礎班的內容,可歸納為四個主題:Java的高階/新語法與設計精神 (6 hours)、平行程式設計基礎 (6 hours)、資料結構與演算法 (12 hours)、設計模式 (6 hours)。第一個部分將補足在基礎班未能完全交代的概念(例如泛型)與新語法(例如lambda和stream),另外也將帶學員從底層認識Java運作的原理。第二部分則是介紹如何在Java的環境中實現多執行緒的程式與如何排除平行程式中會遭遇的問題。第三部分則是介紹資料結構與演算法。在CS大一的課程中,DSA(即資料結構與演算法)是除了程設以外的重要課程,尤其大二之後開始會面對不同的應用問題(諸如編譯器、作業系統、計算機網路、計算機結構)等課程,都需要資料結構與演算法的內容為基礎,甚至在應徵工作面試時,資料結構與演算法是面試的重點項目之一。因此進階班將帶學員認識不同的問題所對應的資料結構。最後是設計模式。設計模式討論架構的問題,嘗試找出具備高度彈性與低成本的解法用以適應未來的需求改變。透過基礎班與進階班的課程內容,希望對學員在CS的學習上有所幫助,尤其是內功的部分。

課程大綱

// OOP
1. Object: equality, comparison, clone
2. Generics
3. Reflection with Class
4. Annotations
5. Lambda and Streams
6. JUnit
7. Java Virtual Machine
8. Garbage Collection
9. Billion-dollar mistake: null and Optional type

// Concurrent Programming
1. Java threads: Thread and Runnable
2. Race conditions and synchronized methods/blocks
3. Producer-consumer problem
4. Semaphores
5. Parallel Streams

// Data Structures and Algorithms
1. Analysis of algorithms
2. Array list and linked list
3. Stack and queue
4. Priority queue by heap with heapsort (with a quick review on sorting algorithm, if necessary)
5. Binary search tree and AVL tree
6. Hash function and hashtable
7. Undirected graphs and graph traversal by depth first search (DFS), breadth first search (BFS)
8. Digraphs

// Selected Design Patterns
1. SOLID principle
2. Creational patterns: singleton, factory method, abstract factory, prototype, dependency injection, interning, flyweight, builder
3. Structural patterns: adapter, decorator, facade
4. Behavioral patterns: iterator, observer, strategy
5. MVC model

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

課程應用

系統程式設計

適合對象

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

開發環境

JDK8 + Eclipse

近期班次

  • 第295期 開課日期:2018.03.03 確定開課

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

    詳細資訊

  • 注意事項

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

    講師介紹

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

    // 服務經驗

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

    // 研究興趣

    • Financial computing Analysis and design of algorithms Quantitative finance and econometrics Statistics and data analysis Programming Languages

    // 程式語言

    • MATLAB, Java, C, C++, Python, R, LabVIEW, Presentation

    // 教學特色

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