Java基礎程式設計班

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

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



[0] About Java, Oracle
[1] Spring Framework
[2] Android
[3] TIOBE Index
[4] Stephen Cass, The Top Programming Languages 2019, 2019.9.6
[5] The top ten technology skills at BAML, Barclays, Credit Suisse, Citi, Goldman Sachs, JPMorgan, Morgan Stanley and UBS, 2015.4.16
[6] 十二年國民基本教育課程綱要國民中學暨普通型高級中等學校 - 科技領域
[7] 大學程式設計先修檢測 (APCS)

課程大綱

一、基礎程式設計
0. 預備知識:計算機模型 (computation model)、安裝JDK與Eclipse、第一隻Java程式
1. 資料型態、變數、運算子 (data types, variables, operators)
2. 流程控制:條件敘述、迴圈 (conditional statements and loops)
2.1 演算法分析 (analysis of algorithms: big-O)
3. 陣列 (arrays)
3.1 排序演算法 (bubble sort, selection sort, insertion sort)
3.2 搜尋演算法 (linear search, binary search)
4. 方法與遞迴 (method and recursion)

二、物件導向設計
0. 物件與類別 (object and class)
1. 封裝 (encapsulation)
2. 物件之間HAS-A的關係
3. 物件之間IS-A的關係:類別繼承與介面繼承 (class and interface inheritance)
4. 方法覆寫與多型 (method overriding and subtype polymorphism)
5. 抽象類別與抽象方法 (abstract class & method)
6. 不可變物件 (immutability)
7. 列舉型態 (enumeration)
8. 內部類別與匿名類別 (inner class and anonymous class)
9. 拋錯與例外處理 (exception throwing and handling)

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

適合對象

1. 無程式撰寫經驗的初學者
2. 具備其他程式語言能力的學員
3. 提早學習Java的外語學生 (This course is also suitable for students in pursuit of AP Computer Science.)

開發環境

Eclipse with JDK8

近期班次

  • 第322期 開課日期:2019.12.21 確定開課

    上課時間:每週(六)(日)
    9:00 AM ~ 12:00 PM
    上課日期:2019.12.21 ~ 2020.01.19
    學費:新生新台幣5000元整

    詳細資訊

  • 第323期 開課日期:2020.01.13 招生中

    上課時間:每週(一)(二)(三)(四)(五)
    9:00 AM ~ 12:45 AM
    上課日期:2020.01.13 ~ 2020.01.22
    學費:新生新台幣5000元整

    備註: 上課日期1/13.1/14.1/15.1/16.1/17.1/20.1/21.1/22
    八次上課;一次上課三小時四十五分

    詳細資訊

  • 注意事項

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

    講師介紹

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

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

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

    (一) 服務經驗

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