Following the procedural programming paradigm delivered in "Programming I", this course introduces different types of programming paradigm, namely functional programming and object-oriented programming. The course presents the principles behind these programming paradigms and their computational mechanism. As representatives of the paradigms, Scheme and Java are used.
Using an appropriate programming paradigm and a programming language for a given problem is essential for realising software with respect to its description ease, understandability and maintainability. The aim of this course is to provide students with the ability to choose an appropriate programming paradigm for a given problem on the basis of deep understanding of common and different concepts among different programming paradigms.
At the end of the course students should be able to
(1) write recursive programs;
(2) write programs in a functional programming language (scheme);
(3) write programs handling list data structures;
(4) write programs using the higher order concept;
(5) write syntactically correct Java programs and
(6) write object-oriented programs.
procedure abstraction, data abstraction, variable data structures, stream, list processing, higher-order procedures, continuation, classes and instances, inheritance and difference programming.
✔ Specialist skills | Intercultural skills | Communication skills | Critical thinking skills | ✔ Practical and/or problem-solving skills |
Every class starts with a quiz session asking questions about the contents learned in the previous class. Students are strongly recommended to review and prepare for each class. Questions in the handouts will help your understanding. This course runs in parallel with the "Programming practices II" where students can understand the concepts delivered in this course through writing programs by using those concepts.
Course schedule | Required learning | |
---|---|---|
Class 1 | Typology of programming languages and overview of Scheme | Specified in the class. |
Class 2 | Recursive programs, scope of names and higher-order procedures | |
Class 3 | Compound data and data abstraction | |
Class 4 | List processing (transformation, filtering and folding) | |
Class 5 | Assignment and closure | |
Class 6 | The environment model | |
Class 7 | Delayed objects and stream | |
Class 8 | Continuation | |
Class 9 | Tagged data and message passing | |
Class 10 | Object-oriented paradigm | |
Class 11 | Overview of Java | |
Class 12 | Java syntax | |
Class 13 | Inheritance, override and overload | |
Class 14 | Abstract class, interface, package and exception | |
Class 15 | Input-output, strings manipulation and an example program |
Not specified.
Handouts will be provided through the OCW-i system.
・Harold Abelson and Gerald Jay Sussman,Structure and
Interpretation of Computer Programs, 2nd Edition, The MIT Press,
1996. (http://mitpress.mit.edu/sicp/)
和田英一 (訳) 計算機プログラムの構造と解釈 第2版 ,ピアソンエデュケーション,2000.
・Revised5 Report on the Algorithmic Language Scheme
(http://www.schemers.org/Documents/Standards/R5RS/)
・入門Scheme
(http://www.dinukai.org/programming/scheme/primer/scheme\_primer\_j.html)
・独習Scheme三週間
(http://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html)
・もうひとつのScheme入門
(http://www.shido.info/lisp/idx\_scm.html)
・Kahuaプロジェクト,プログラミングGauche,オライリージャパン,2008.
・Gaucheリファレンスマニュアル
(http://practical-scheme.net/gauche/memo-j.html)
・結城浩,改訂第2版Java言語プログラミングレッスン,2005.
(http://www.hyuki.com/jb/)
・権藤克彦,Javaによるプログラミング入門,サイエンス社,2000年.
・JavaDrive --- Java 入門 ---
(http://www.javadrive.jp/start/)
・Ken Arnold, David Holmes, James Gosling,
The Java Language Specification (3rd Ed.)
(http://java.sun.com/docs/books/jls/)\\
柴田芳樹 (訳), プログラミング言語Java 第3版, ピアソンエデュケーショ
ン,2001.
・JDK 6ドキュメント
(http://java.sun.com/javase/ja/6/docs/ja/)
Contribution to the course (10%): e.g. raising and answering questions in the class
Quiz (30%): examinations on the content delivered in the previous class
Final exam (60%): Examination on above mentioned outcomes
CSC.T241 : Fundamentals of Computing, ZUS.S201 : Programming Ⅰ
None.