Java 基礎程式設計班

Java 基礎程式設計班

/* Java 初步介紹 */
Java [0] 是一種泛用 (general-purpose) 程式語言,完全支援物件導向設計 (Object-Oriented Programming, OOP),讓程式設計師撰寫具備可重新使用 (reusable) 的程式結構,利於開發複雜度較高的系統軟體;Java 具備優秀的記憶體管理機制與豐富的開發套件/框架,例如主流的後端框架 Spring [1] 與安卓應用軟體 (Android app) [2],可大幅增進程式開發效率;Java 同時支援多執行緒來處理如多媒體等計算強度高的應用程式。根據 2020 年 TIOBE 的統計,Java 為程式語言排名中使用人數最多的前三名 [3, 4, 5];Java 亦大量被使用在金融業的伺服器端,自 2015 年末開始吹起一股金融科技化 (Financial Technology, FinTech),最受歡迎的程式語言是 Java [6]。

/* 課程目標 */
本課程深入淺出介紹 Java 的語法與重要的程式設計概念,期許學員可以獨立完成 Java 程式撰寫;也企圖為學員建立 CS 的宏觀圖像,期望透過本課程傳授的基礎知識作為基石,培養學員在資訊領域內的自我學習能力。此外,本課程涵蓋十二年國民基本教育課程綱要科技領域 [7] 的程式設計演算法APCS 大學程式設計先修檢測 [8] 的考試範圍,歡迎國高中生一同參與,希望讓你第一次學習程式就能夠站穩灘頭堡!

/* AP Computer Science & Overseas Studies */
This course will cover the whole content of AP Computer Science [9, 10]. For students who have further plans to study abroad (say, pursue a master degree), you can also learn about the important OOP concepts before you start with application courses.

[0] Oracle, About Java
[1] Spring Framework
[2] Android
[3] TIOBE Index
[4] IEEE Spectrum, Interactive: The Top Programming Languages, 2022
[5] JetBrains, The State of Developer Ecosystem 2022, 2022
[6] The top ten technology skills at BAML, Barclays, Credit Suisse, Citi, Goldman Sachs, JPMorgan, Morgan Stanley and UBS, 2015.4.16
[7] 十二年國民基本教育課程綱要國民中學暨普通型高級中等學校 - 科技領域
[8] 大學程式設計先修檢測 (APCS)
[9] AP Computer Science A
[10] Roselyn Teukolsky M.S., Barron's AP Computer Science A, 8/e, 2018

課程大綱

一、基礎程式設計
0. 預備知識:計算機模型 (computation model)、安裝 JDK 與 Eclipse、第一隻 Java 程式
1. 資料型態、變數、運算子 (data types, variables, and operators)
2. 流程控制:條件敘述、迴圈 (branching & loops)
-- 演算法分析 (analysis of algorithms)
3. 陣列與資料結構簡介 (arrays & more data structures)
-- 排序演算法 (sorting algorithms)
-- 二元搜尋法 (binary search)
4. 方法與遞迴 (method & recursion)

二、物件導向設計
0. 物件與類別 (object & class)
1. 封裝 (encapsulation)
2. 物件之間 HAS-A 的關係
3. 物件之間 IS-A 的關係:類別繼承與介面繼承 (class & interface inheritance)
4. 方法覆寫與多型 (method overriding & subtype polymorphism)
5. 抽象類別與抽象方法 (abstract class & method)
6. 淺談設計模式 (design patterns: singleton, dependency injection, iterator, observer, strategy)
7. 拋錯與例外處理 (exception throwing and handling)

註0:更新於 2023-07-13。
註1:課程教材主要以英文為主,授課過程以中文為主。英文目前仍為科技領域主要語言,想長期進入資訊領域者,應培養透過英文學習 CS 的基本能力。
註2:我們教的不只有程式語言,而是了解程式背後的思考歷程與通用於多數程式語言的一般性原則,而這些想法是可以帶得走的。先有想法才有語言,不可能只會語言而不會思考。還在學一堆語言但不知所以然嗎?
註3:根據教學經驗發現,多數學員無法掌握貌似複雜的 OOP。在基礎班的課程中我們闡述其背後的想法,嘗試用不同的情境讓學員了解 OOP 的本質。基礎班與進階班也以此為界線。

適合對象

1. 無程式撰寫經驗但想要打下紮實基礎的初學者。
2. 具備其他程式語言能力者,如:C、C++、Python、JavaScript。
3. 提早學習 Java 的國際學校學生與出國進修之研究生。

開發環境

Eclipse with Oracle JDK17+

實體課程注意事項

本班為實體課程,常見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小時。