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]的考試範圍,歡迎國高中生一同參與,希望讓你第一次學習程式就能夠站穩灘頭堡!

/* AP Computer Science */
Our lecture covers more than 90% of the contents in Barron's book [8].






[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)
[8] Roselyn Teukolsky M.S., Barron's AP Computer Science A, 7/e, 2015

課程大綱

一、基礎程式設計
0. 預備知識:計算機模型 (computation model)、安裝JDK8與Eclipse、第一隻Java程式
1. 資料型態、變數、運算子 (data types, variables, and operators)
2. 流程控制:條件敘述、迴圈 (branching & loops)
2.1 演算法分析 (analysis of algorithms: big-O)
3. 陣列與資料結構簡介 (arrays & more data structures)
3.1 排序演算法 (sorting algorithms)
3.2 二元搜尋法 (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. 列舉型態 (enumeration)
8. 內部類別與匿名類別 (inner class & anonymous class)
9. 拋錯與例外處理 (exception throwing and handling)

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

適合對象

1. 無程式撰寫經驗但想要打下紮實基礎的初學者
2. 具備其他程式語言能力的學員
3. 提早學習Java的國際學校之學生

開發環境

Eclipse with JDK8

近期班次

  • 第333期 開課日期:2020.08.24 招生中

    上課時間:

    實體課程上課日:8/24(一)18:00

    實體課程上課日:10/26(一)18:00

    上課日期:2020.08.24 ~ 2020.10.26
    學費:新生新台幣4500元整
    備註:

    實體課程時間
    期初8/24(一)18:00~19:00 
    期末10/26(一)18:00~19:00 
    上述時間可自由選擇是否到班上課,
    課程影片是任何時間皆可觀看

  • 注意事項

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

    講師介紹

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

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

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

    (一) 服務經驗

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

    (四) 教學特色

    • 中文授課,課程教材以英文為主。適合規劃出國求學或對科學/技術理論有興趣的學員。
    • 授課時數:於本訓練班教學時數累計至2020年3月10日為4950小時。