情報科学研究科Graduate School of Computer and Information Sciences
COT500K1(計算基盤 / Computing technologies 500)オブジェクト指向言語Object Oriented Language
藤田 悟Satoru FUJITA
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 情報科学研究科Graduate School of Computer and Information Sciences |
添付ファイル名Attached documents | |
年度Year | 2024 |
授業コードClass code | TZ003 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 秋学期授業/Fall |
曜日・時限Day/Period | 水3/Wed.3 |
科目種別Class Type | |
キャンパスCampus | 小金井 |
教室名称Classroom name | 各学部・研究科等の時間割等で確認 |
配当年次Grade | |
単位数Credit(s) | 2 |
備考(履修条件等)Notes | |
実務経験のある教員による授業科目Class taught by instructors with practical experience | |
カテゴリーCategory |
すべて開くShow all
すべて閉じるHide All
Outline (in English)
[Course outline]
Students learn Scala language which is an object-oriented language and also a functional language. Scala is a program language extended from Java language. The students can learn how Scala solved problems existing in Java.
[Learning objective]
The goals of this course are to learn object-oriented language in deep. The student understands the inner architecture of Java, such as bytecode and garbage collection, and finally understands the object system in Scala.
[Learning activities outside of classroom]
Students will be expected to examine functions of Scala and report them in front of other students. To prepare the presentation, your study time at home will be more than four hours for a class.
[Grading criteria / policy]
Your overall grade in the class will be decided based on the following
discussion at class (10%)
presentation (40%)
final report (50%)
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
オブジェクト指向言語と関数型言語を融合したプログラミング言語である Scala の基本について学びます。Scala は Java をベースに機能拡張されたプログラミング言語です。Java の問題点がどのように解決されたのかを学ぶことができます。
到達目標Goal
Scala を用いた簡単なプログラムを書けるようになります。また、関数型と非関数型の特徴を使い分けるための基礎知識を身に着けます。プログラミング上で重要な概念となる型や型推論について、説明ができるようになります。
この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連)Which item of the diploma policy will be obtained by taking this class?
ディプロマポリシーのうち、「DP1」と「DP2」に関連
授業で使用する言語Default language used in class
日本語 / Japanese
授業の進め方と方法Method(s)(学期の途中で変更になる場合には、別途提示します。 /If the Method(s) is changed, we will announce the details of any changes. )
授業は、最初の数回を利用して、Scalaインタプリタやコンパイラなどの基本的な使い方と基本構文について演習します。その後は輪講形式になり、参加者は Scala の特徴的な機能について調査し、サンプルコードを書いて、受講生の前でプレゼンテーションを行います。プレゼンテーションでは、単に Scala の機能を説明することにとどまらず、オブジェクト指向や関数型としての位置づけ、効用などを明らかにすることが求められます。
アクティブラーニング(グループディスカッション、ディベート等)の実施Active learning in class (Group discussion, Debate.etc.)
あり / Yes
フィールドワーク(学外での実習等)の実施Fieldwork in class
なし / No
授業計画Schedule
授業形態/methods of teaching:対面/face to face
※各回の授業形態は予定です。教員の指示に従ってください。
第1回[対面/face to face]:Scala の概要
Scala 言語のインタープリタの起動方法、スクリプトの実行方法、コンパイル方法などを学びます。
第2回[対面/face to face]:基本型と演算子
scala の基本型、リテラルについて学びます。
第3回[対面/face to face]:Scala の基本文法
var と val の違い、foreach, while, if, def, tuple などの基本構文について学びます。
第4回[対面/face to face]:型推論
scala の型推論について学びます。静的型づけと動的型付けの違いについて理解します。
第5回[対面/face to face]:クラスとオブジェクト
class 定義に加え、シングルトンオブジェクトを扱う object 定義を学びます。
第6回[対面/face to face]:関数とクロージャ
関数の考え方と、関数リテラルやクロージャについて学びます。
第7回[対面/face to face]:コレクション
List, Array, Map, Set の使い方と、mutable と imutable の違いなどについて学びます。
第8回[対面/face to face]:for式、if式, map
for式、if式 や map の概念と利用方法について学びます。
第9回[対面/face to face]:継承と trait
trait の仕組み、ミックスイン合成のメカニズムを学びます。
第10回[対面/face to face]:ケースクラス
ケースクラスの概念と利用方法について学びます。
第11回[対面/face to face]:パターンマッチ
match 文、正規表現などについて学びます。
第12回[対面/face to face]:入出力とXML
scala における入出力の方法、XMLの扱いについて学びます。
第13回[対面/face to face]:型パラメータと抽象メンバー
型のパラメータ化と抽象メンバーについて学びます。
第14回[対面/face to face]:並行プログラミング
アクターをはじめとする scala で記述する並行プログラミングの手法を学びます。
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
本授業の準備・復習等の授業時間外学習は、各週につき4時間を標準とします。
プレゼンテーションの準備のために、Scala の機能について事前調査します。また、講義ででてきた機能を使ったサンプルコードの作成を行います。講義の終了要件として、Scala の特徴的機能を利用したコードと、その説明を書いたレポートを求めます。これを完成するための自主学習を必要とします。
テキスト(教科書)Textbooks
オンラインテキストを利用
参考書References
タイトル: Scalaスケーラブルプログラミング第2版,
著者: Martin Odersky (著), Lex Spoon (著), Bill Venners (著), 羽生田 栄一 (監修), 水島 宏太 (その他), 長尾 高弘 (翻訳)
出版年: 2011年
出版社: インプレスジャパン
成績評価の方法と基準Grading criteria
授業への積極的参加態度(10%)
プレゼンテーション(40%)
レポート提出(50%)
学生の意見等からの気づきChanges following student comments
学生のプログラミングスキルを高められるよう、授業内に議論をする機会を増やす。
学生が準備すべき機器他Equipment student needs to prepare
ネットワークを利用
演習にはノートPCを用いる