Java 進階程式設計班

Java 進階程式設計班

1. 介紹常見的設計模式 (design patterns),透過OOP的語法建構可以高度重複使用的現代軟體工程;
2. 接續基礎班未能交代的概念與語法,例如:泛型 (Generics)、Reflection、Annotation、JDK8才引進的lambda表示式、Stream框架與Optional型態,最後介紹常見Java Collections;
3. 講授併行程式 (concurrent programming)的撰寫。佐以介紹作業系統的基礎知識 (如:多工、工作排程、程序與執行緒),介紹Java的API撰寫多執行緒的應用程式,並如何排除平行程式中會遭遇的問題;透過Concurrent框架實現高階併行化程式。
4. 我們最後導入Spring框架,利用SpringBoot整合不同的模組,實現一個以購物車為例的電子商務應用。

註0:進階班內容可能因為當期個人的偏好或者學員的需求而有些許調整。

課程大綱

## Design Patterns
- Creational patterns: singleton, factory method, abstract factory
- Structural patterns: adapter, bridge, proxy, decorator, sharing (interning, flyweight)
- Behavioral patterns: iterator, strategy, observer (publish/subscribe)
- Model-control-view (MVC) model

## Advanced Java
- Generics
- Collections: List (ArrayList & LinkedList), Map (TreeMap & HashMap)
- Lambda expressions and Stream API
- Optional: alternative to null (a billion-dollar mistake)
- Reflection and annotation

## Concurrent Programming
- Java Virtual Machine (JVM)
- Basic concepts of operating systems (OS)
- Thread & Runnable
- Race condition, mutual exclusion & synchronized methods/blocks
- Producer-consumer problem (bounded-buffer problem) & semaphores
- Dining philosophers: deadlock, livelock, starvation
- High-level concurrency framework: thread pools, fork-join pools, asynchronous processing, concurrent data structures

## Java Spring e-Commerce: Shopping Carts
- Dependency management: Maven & Gradle
- Spring Framework: Inversion of Control (IoC) & Aspect-Oriented Programming (AOP)
- Database: MySQL
- Front-end catchup: HTML, CSS, and React.js

註0:更新於2021/3/31。
註1:課程教材主要以英文為主,授課過程以中文為主。

適合對象

擁有Java程式撰寫經驗的學員。

開發環境

實體課程注意事項

本班為實體課程,常見QA詳情連結

校園防疫措施詳情連結

公務員全程參與課程學習後可於課程結束後申請登錄公務人員學習時數

課程影片觀看期限至課程結束後一週關閉

(一)退費期限:開課日後⅓時數內,詳情連結

(二)查詢結業狀況:結業名單連結

近期班次

講師介紹

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

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

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

(一) 服務經驗

  • 國立臺灣大學 腦與心智科學研究所 兼任研究助理 (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, C#

(四) 教學特色

  • 中文授課,課程教材以英文為主。適合規劃出國求學或對科學/技術理論有興趣的學員。
  • 2014年至本班教學,累計授課時數至2024年3月1日為11,100小時。