本頁採用大陸術語

所有課程都可彈性增減內容與時數。時數多,講解就更詳細、範例更多更深入。
下面是一份標準規格 (2006/09/18):

■ Win32/SDK 編程(Win32/SDK programming), 18 hous
主旨 : 本課程講解 SDK programming model,讓學員了解 Win32 API 程序
       的骨幹結構、認識常見而重要(必須處理)的 Windows 消息,並佐以
       Windows 操作原理包括 Kernel,User,GDI三大模組,排程、進程、線程、地址空間...。
注意 : 本課程重點並不在教導各式各樣的 Win32 APIs(那有成百上千,查閱書籍即可),
       而是讓學員清楚知道所謂 message-based, event-driven 的程序結構。
學員基礎 : C 語言,並對操作系統有基本粗淺概念。
教材 : 老師提供講義,學員自行影印。
課程綱要 :
. 概觀 (overview)
. 一個麻雀雖小五臟俱全的 Win32 (SDK) 程序
. 窗口類 (window class)
. 窗口 (window)
. 菜單 (menu) 與資源 (resource)
. 消息 (message) 與主消息循環 (main message loop)
. 窗口函數 (window procedure)
. MDI (Multiple Document Interface)
. Windows 系統原理:Kernel,User,GDI三大模組
. Windows 系統原理:排程(scheduling)、進程(processes)、線程(threads)
. Windows 系統原理:地址空間(addressing space)
. Windows 系統原理:窗口系統(windowing system)


■ MFC 編程(MFC programming), 30 hours
主旨 : 本課程講解 MFC programming model,讓學員了解 MFC 應用程序的骨幹結構
       及相關之 MFC 架構,從而得以編寫自己的應用程序。
學員基礎 : C++ 語言及 SDK programming(message-based, event-driven)基本概念
教材 : 老師提供講義,學員自行影印。
課程綱要 :
. 概觀 (overview)
. 工具(VC IDE, AppWizard, ClassWizard)
. Win32 (SDK) 編程模型 (programming model) 觀念複習
. 以工具建立一個麻雀雖小五臟俱全的 MFC 應用程序
. 了解 MFC 基本結構及與 MFC 應用程序的關係
. 了解 MFC 程序的來龍去脈(生與死)
. 修改骨幹程序的第一步
. 編寫自己的 classes
. 處理必要消息,包括窗口消息與命令消息
. 對象的存儲與讀取/序列化(persistence/Serialization)
. 文檔與視圖(Document and View)
. 多重文檔與多重視圖(Multi-Documents and Multi-Views)
. MFC Collections
解析應用框架(Application Framework)--以 MFC 為對象, 30 hours
主旨 : 本課程以 MFC 為例帶引學員一探 OO 最高階殿堂--應用框架(Application Framework)的設計,
      有利學員認識各種軟件技術並徹底了解 MFC 內部結構(此對編寫 MFC 應用程序有極大幫助)。
學員基礎 : C++ 語言及 SDK programming(message-based, event-driven)基本概念
教材 : 老師提供講義,學員自行影印。老師並提供一個麻雀雖小五臟俱全的 MFC-Lite,含源碼。 
課程綱要 :
. MFC 對 Win32 (SDK) 編程模型 (programming model) 的包裝
. MFC 和其應用程序的互動關係
. 三層基礎設施(三組晦澀的 MFC macros):RTTI, Dynamic Creation, Serialization
. 動態生成(Dynamic Creation)
. 序列化(Serialization, i.e.對象永續或文件讀寫)
. 文檔與視圖(document/view),兼談 MVC(Model-View-Controller)與 Observer(觀察者)模式
. 消息映射(message mapping)
. 命令繞行(command routing)
. MFC Collections


■ C++/OOP(C++與面向對象編程), 24 hours
主旨 : 本課程涵蓋 C++ 語法、語意、對象模型、優良編程風格、面向對象概念,
       讓學員從一無所知到具備大家風範,並徹底認識 C++ 的底層運作。
注意 : 由於 C++ Templates 所引發的泛型編程(GP, Generic Programming)十分重要(造就出 C++ 標準庫),
       因此雖然 GP 與 OO 無關,我還是將 GP 納入,成為本課程比重較小的一部分。
學員基礎 : C 或其他結構化語言(Structured Languages)
教材 : 老師提供講義,學員自行影印。
課程綱要 :
* from C to C++(從 C 過渡到 C++)
  . 模擬 class 及其 members 以及'this'指針,為揭開 C++ 編譯器面紗預做準備
* Abstract Data Type(抽象數據類型)/Object-Based Pogramming
  . OOP overview(概觀)
  . class and struct
  . access level(訪問級別)
  . object lifetime and scope(對象的生命期與作用域)
  . ctor, copy ctor, operator=, dtor(特殊的成員函數)
  . static vs. non-static
  . inline vs. macro
  . pass by reference vs. pass by value(傳參考vs.傳數值)
  . reference vs. pointer (引用vs.指針)
  . function overloading and operator overloading(函數重載和操作符重載)
  . 'this' pointer('this'指針)
  . object model(對象模型), vptr, vtbl
  . new, delete, new[], delete[]
  . misc.(雜項討論)
* Object Oriented Programming(面向對象編程)
  . ineritance(繼承)
  . composition(複合)
  . virtual function(虛函數)
  . polymorphism(多態)
  . revisit 'this' pointer(在繼承體系下再次討論'this'指針)
  . revisit object model(在繼承體系下再次討論對象模型)
  . Template Method vs. Strategy (Inheritance vs. Delegation)
* Generic Programming(泛型編程)
  . Introduction(簡介)
  . class template(類模板)和 function template(函數模板)
  . C++ Standard Library(標準模板庫)的運用
  . array vs. std::vector
  . char[] vs. std::string

■ Design Patterns(設計模式), 30 hours
主旨 : Design Patterns 是一門高階課程,若內容缺乏實務便易流於抽象與空泛。
       本課程抽取大量知名程序庫(包括C++標準庫, Java標準庫, MFC,)中的設計模式,
       利用其源碼輔助並加強學理講解。這種方式對於設計模式的學習有著極大效果。
注意 : 本課程講義涵蓋 C++ 和 Java 兩種語言代碼。
學員基礎 : C++ 或 Java(或任何其他 OOPL)至少2~3年經驗。
教材 : 老師提供講義,學員自行影印。
課程綱要 :
* Design Patterns(設計模式)概觀
* 若干重要的 OO 守則(principles)
* 逐一討論 GoF's 23 patters,包括
  Abstract Factory, Adapter, Bridge, Builder, Command, Composite, 
  Decorator, Facade, Factory Method, Flyweight, Iterator, 
  Observer, Proxy, Singleton, State, Strategy, Template Method, Visitor 
* GoF 以外的 patters
  . Reference Counting, Copy On Write, Model-View-Controller, Java's Undoable 

Generic Programming(泛型編程)及標準模板庫 (STL)之設計與實作, 24 hours
主旨:給予泛型編程(Generic Programming)之堅實訓練。課程包括 C++ Templates 全面訓練、
      良好運用 STL、認識 STL 之結構與實作技術。
注意:透徹理解 STL 之設計與實作,是良好運用 STL 的先決條件與高起點。
      此外本課程不僅談 STL 應用,也談 GP 原理及趨勢,兼談一點 Meta Programming(元編程)。
學員基礎 : C++
教材 : 老師提供講義,學員自行影印。
課程綱要 :
* C++ 泛型編程
  . 概觀
  . C++ Class Template
  . C++ Function Template
  . C++ Operator Overloading (++, --, *, ->, ())
* STL (Standard Template Library) 之設計結構與實作技術
  . 概觀
  . Traits
  . Iterators(泛型指針,迭代器)
  . Containers(泛型容器)
  . Generic Algorithms(泛型算法)
  . Function Objects or Functor(函數對象或仿函數)
  . Adapters(泛型適配器)
  . Allocator(泛型分配器)
* 淺談 Java 泛型編程
* 淺談 Meta Programming(元編程)Java Programming, 18 hours
主旨 : 幫助學員建立 Java programming 的大局認識
注意 : 本課程主要探討 Java 語言在 OOP 方面的核心表現(並不著重於所有語法細節),
         及重要的程式庫組件如 Collections, I/O, Threading, Swing, Undoable APIs...的運用。
         本課程不討論 EJB,J2EE 等企業應用, 亦不討論 J2ME 等微型應用。
學員基礎 : 曾經有過任何 programming 經驗(OOP 經驗尤佳)即可。
           如果大部份學員有 C++ 基礎,本課程可舉 Java vs. C++ 之實例。
教材 : 老師提供講義,學員自行影印。

課程綱要 :
o. Java/OOP overview
o. Java Standard Library hierarchy
o. Interface/class design and implementation
o. Inheritance and Polymorphism
o. Objects Passing and Returning; Cloneable
o. RTTI (Runtime Type Identification) and Reflection
o. Persistence (Serialization)
o. Java I/O and Decorator pattern
o. Java Collections
o. Java Swing and JavaBeans (GUI)
o. Java Multithreading
o. Generics in Java

-- the end