基本素養 Basic Literacy

畢業生應具備科技人文素養、資訊工程倫理與終身學習的態度
graduates should equip with the attitude of technological/cultural literacy, information engineering ethics, and life-long learning
畢業生應具備專業外語能力及良好國際觀
graduates should equip with both the professional foreign language proficiency and excellent global view

核心能力 Competence

畢業生應具備資訊專業理論知識
graduates should equip with professional theoretical knowledge in informatics
畢業生應具備資訊專業理論推導、分析、歸納之能力
graduates should equip with the capability of professional theory derivation, analysis, and induction in informatics
畢業生應具備資訊領域獨立發掘問題、策劃實驗、解決問題之能力
graduates should equip with the informatics ability to identify problems independently, to implement experiments, and to solve problems
畢業生應具備資訊領域設計、驗證及實作整合之能力
graduates should equip with the informatics ability in designing, verification, and integrating engineering practices
畢業生應具備資訊領域創新思考之能力
graduates should equip with the informatics capability in innovative planning
畢業生應具備專業簡報及論文撰寫之能力
graduates should equip with the ability in professional presentation and thesis writing
畢業生應具備良好溝通協調與團隊合作之能力
graduates should equip with fair ability in communication, coordination, and team-work collaboration

課程概述 Course Description

"本課包含lisp程式語言和emacs原始碼解讀。 Lisp是個很特別的程式語言。它的語法很原始,幾乎可以說Lisp要求你直接輸入語法樹(parse tree)的結構。 譬如說Lisp把: 「 a * (b + f(x,y)) 」 寫成: 「 (* a (+ b (f x y))) 」 恐怕(在還沒習慣Lisp程式碼的情況下)會覺得不太好看。 可是,Lisp極端簡化語法有兩個巨大的優點。 1. 因為語法均勻、程式計算流程的重複(pattern)容易注意到,也容易統一整理。 2. Lisp宏(macro)方便自動產生函數、隨着應用需求擴展lisp內建的功能。 眾所周知emacs是個編輯器。沒錯,但它並不只個普通的編輯器。 emacs為「lisp有,lisp治,lisp享」的終極DIY編輯器、也是個跨平台操作系統。 emacs的生態圈包含用elisp實作的網路瀏覽器、電子郵件客戶端等等。 本課會介紹emacs-calc和magit。前者是既好用又高級的數學軟體、 後者是很受歡迎的git客戶端。 簡單說明emacs的基本用法之後,本課會進一步閱讀emacs本身的原始碼。 emacs的原始碼有兩層:下層由C語言實作,包含elisp直譯器和操作系統介面的函數(system calls), 上層由elisp實作、提供emacs應用開發者需要的函數(API)。 一共有幾百個原始檔,不算少,也不算多。剛好適合給學生解讀實用軟體原始碼的經驗。 " 課程由資訊產業第一線人員帶領學生充分體驗軟體、硬體、通訊,以及產業生態,並由案例分析科技產業背後的關鍵技術,期許學生得以在投入產業前,做好必要的準備。
"This course introduces lisp programming and reading the emacs source code. Lisp is a very special programming language. It has such a simple syntax that you might say it requires you to write the parse tree of your code. For example: a * (b + f(x,y)) corresponds to lisp code: (* a (+ b (f x y))) Might seem a bit strange at first. The simple syntax of lisp gives it 2 advantages 1. The code is homogeneous, making repeated patterns easy to spot. 2. The code is easy to manipulate programmatically, which makes lisp macros exceptionally powerful. Probably you have heard that emacs is an editor. Well yes, it is. It is in fact the ultimate DIY editor, because it provides users a way to program emacs itself. After briefly introducing how to use emacs, this course will dive into looking at the emacs source code, consisting of a basic C layer providing a lisp interpreter and more code written in lisp. Course Objectives: In addition to becoming adept at using emacs, students should learn: * the basics of lisp programming, especially lisp macros. * how to read a medium sided application C language code base. References: The Roots of Lisp, Paul Graham On Lisp, Paul Graham Let Over Lambda, Doug Hoyte "

課程學習目標 Course Objectives

有關課程其他調查 Other Surveys of Courses

1.本課程是否規劃業界教師參與教學或演講?
Is there any industry specialist invited in this course? How many times?
2.本課程是否規劃含校外實習(並非參訪)?
Are there any internships involved in the course? How many hours?
3.本課程是否可歸認為學術倫理課程?
Is this course recognized as an academic ethics course? In the course how many hours are regarding academic ethics topics?
4.本課程是否屬進入社區實踐課程?
Is this course recognized as a Community engagement and Service learning course? Which community will be engaged?