経営学部Faculty of Business Administration
PRI100FA(情報学基礎 / Principles of informatics 100)プログラミング言語Ⅱ(JAVA)(2019年度以降入学者)Programming Languages II(JAVA)
神林 靖Yasushi KANBAYASHI
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 経営学部Faculty of Business Administration |
添付ファイル名Attached documents | |
年度Year | 2021 |
授業コードClass code | A5210 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 秋学期授業/Fall |
曜日・時限Day/Period | 火2/Tue.2 |
科目種別Class Type | |
キャンパスCampus | 市ヶ谷 |
教室名称Classroom name | |
配当年次Grade | 1~4 |
単位数Credit(s) | 2 |
備考(履修条件等)Notes | ※ 原則春学期、秋学期連続で受講してください。 |
他学部公開科目Open Program | |
他学部公開(履修条件等)Open Program (Notes) | |
グローバル・オープン科目Global Open Program | |
成績優秀者の他学部科目履修制度対象Interdepartmental class taking system for Academic Achievers | |
成績優秀者の他学部科目履修(履修条件等)Interdepartmental class taking system for Academic Achievers (Notes) | |
実務経験のある教員による授業科目Class taught by instructors with practical experience | |
SDGsCPSDGs CP | |
アーバンデザインCPUrban Design CP | |
ダイバーシティCPDiversity CP | |
未来教室CPLearning for the Future CP | |
カーボンニュートラルCPCarbon Neutral CP | |
千代田コンソ単位互換提供(他大学向け)Chiyoda Campus Consortium | |
入学年度Admission year | |
カテゴリー(2019年度以降)Category (2019~) | 情報関係科目 |
カテゴリー(2018年度以前)Category (~2018) |
すべて開くShow all
すべて閉じるHide All
Outline (in English)
This class provides student how to program in Java language. Students are not expected any programming background, even though they are expected the minimum knowledge of computers. Students are expected to have leaned the grammar of Java language as well as the basic structure of computer programs. In the fall semester, students learn how to practice the object-oriented programming, and how to construct concurrent programs. After completion of this class, the students can be members of any kind of large scale software development projects.
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
授業概要:「プログラミング言語Ⅰ(Java)」で基本文法を学んだ学生,または同等の予備知識のある学生を対象にして,Java言語を使ったプログラミングを初歩から学びます。プログラミングの基本構造を使ってプログラムを構築できているはずなので,「プログラミング言語Ⅱ(Java)」では,オブジェクト指向プログラムの概念を学び,並行処理を実行するプログラムの構築までを丁寧に学習します。
授業の目的:この科目を履修することによって学生は,Java言語を使用したオブジェクト指向プログラムの構築ができるようになるにとどまらず並行処理プログラムも構築できるようになる。
到達目標Goal
例題や練習問題で基本的なJava言語の機能を理解し,それらを組み合わせて多少複雑なプログラムを作成することができる。そして“オブジェクト指向”とは何かについても理解し,説明することができる。オブジェクト指向プログラムを作成できる。更に並行処理プログラムの概念を理解し,マルチスレッドを用いた単純なプログラムを作成することができる。プログラムからファイルを扱うことができる。
大規模なシステム開発プロジェクトに参加できるようになる。
この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連)Which item of the diploma policy will be obtained by taking this class?
ディプロマポリシーのうち、「DP1-4」に関連が特に強く、「DP4」に関連がかなりある
授業で使用する言語Default language used in class
日本語 / Japanese
授業の進め方と方法Method(s)(学期の途中で変更になる場合には、別途提示します。 /If the Method(s) is changed, we will announce the details of any changes. )
(講義の概要)
オブジェクト指向という概念にもとづいたプログラミング言語Javaについて,簡単な例題を理解して練習問題のプログラムを作成することによって,現代のプログラミングでは避けることのできない“オブジェクト指向”についても学びます。
本講義を受講するには,「プログラミング言語Ⅰ(Java)」を履修済みか,同等の予備知識がある必要があります。基礎知識があれば十分で,高度なプログラミングに関しての予備知識は必要としません。
(授業方法)
授業は,実習室において,またはオンラインリアルタイムで,講義と実習を行います。教科書の例題や基本的なプログラム例を説明した後,それを応用した練習問題について考え,実際にプログラミングを行うことによってコンピュータ上で動作を確認します。
「プログラミング言語Ⅱ(Java)」では,オブジェクト指向を用いたJava言語らしいプログラミングを中心に学びます。
アクティブラーニング(グループディスカッション、ディベート等)の実施Active learning in class (Group discussion, Debate.etc.)
なし / No
フィールドワーク(学外での実習等)の実施Fieldwork in class
なし / No
授業計画Schedule
Ⅱ 秋学期
※各回の授業形態は予定です。教員の指示に従ってください。
1:これまでの復習
オブジェクト指向プログラミング特有の用語があります。インスタンスはクラスから生成されます。“JavaプログラミングⅠ”で学んだことを思い出しましょう。
2:スーパークラスとサブクラス
クラスについて深く学びます。クラスフィールドとクラスメソッドを学ぶことで,クラスとインスタンスの違いをはっきりさせます。そしてクラスは“拡張”することができます。拡張されたクラスがサブクラスです。
3:継承と抽象クラス
拡張するクラス(サブクラス)では,元のクラス(スーパークラス)のフィールドとメソッドが使えます。継承の方法を学びます。継承はオブジェクト指向プログラミングの最初の障壁です。突破してください。
4:クラスとインタフェース
クラスとインタフェースを比較することによって,それぞれをどのような場面で使用することが効率的かを学びます。インタフェースによって擬似的に多重継承が可能になります。
5:行列を計算する(1)
今までに学んだ配列や制御構造をもとに,行列を表現するクラスを構成しましょう。“行列”クラスには,どのようなメソッドが必要でしょうか。
6:行列を計算する(2)
行列を用いて統計処理を実施する方法を学びます。
7:乱数を使用する(1)
コンピュータプログラムで乱数を作るのは意外に難しいことを学びます。
8:乱数を使用する(2)
乱数を使ってシミュレーションができることを学びます。単純なシミュレータを作ってみましょう。
9:スレッド
スレッドとは,プログラムを実行している主体です。スレッドの概念を学びます。スレッドを使うことで並行処理プログラムを作成することができます。
10:スレッドを作る方法
スレッドを作る方法には2通りあります。Thread クラスを拡張してスレッドを生成してみましょう。もう一つの方法ではRunnableインタフェースを使用します。Runnableインタフェースを実装してスレッドを生成してみましょう。
11:ファイル操作と入出力
Java プログラムからファイルを生成し,ファイルからデータを読み込む方法を学びます。
12:排他制御
マルチスレッドプログラミングで必要な「排他制御」について学びます。排他制御を適切に行わないとどうなるのでしょう?
13:シミュレータの作成(1)
待ち行列を使ったマルチスレッドによるシミュレータを作ってみましょう。いわゆる「生産者消費者問題」です。
14:シミュレータの作成 (2)
待ち行列を使ったマルチスレッドによるシミュレータを完成させましょう。そして,これまで学んできたことをまとめます。Java プログラミングは奥が深いです。学んでいないこともあります。新たな学びの出発点としましょう。
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
復習は確実に各自が時間外に行ってください。授業では,毎時間新しいことを学びます。出席は厳格に要求しませんが,休んだ箇所は,各自で独習しておいてください。「授業を休んのでわかりません」というのは許されません。独習した上でわからなければ質問してください。本授業の準備学習は1時間,復習時間は,課題演習を含めて2時間を標準とします。
テキスト(教科書)Textbooks
結城浩,Java言語プログラミングレッスン第3版 下,ソフトバンククリエイティブ,2012.
参考書References
柴田望洋,明解Java入門編,ソフトバンククリエイティブ,2007.
Matt Weisfeld,オブジェクト指向の考え方,インプレス,2020.
成績評価の方法と基準Grading criteria
主として課題提出により評価します。課題はすべて提出してください。すべて提出してはじめて評価されます。成績評価は100点満点とし、60点以上が合格となります。
学生の意見等からの気づきChanges following student comments
積極的に質問してください。わからないことをわからないままにして先に進まないでください。具体的にどこがわからないかを指摘してください。授業を休んだのでわからない場合は,まずは自習してその上でわからないという質問は歓迎します。
迷ったら質問してください。
学生が準備すべき機器他Equipment student needs to prepare
PCを用いて実習しつつ講義を行います。
その他の重要事項Others
コンピュータリテラシーを身につけていることが望ましい。無償で入手できる統合開発環境Eclipseを用いて実習するので,自宅学習(予習・復習)可能です。学習内容を復習して,より理解を深めてください。授業中にできなかった課題は,完成しておいてください。
オフィス・アワー
・授業後に質問を受け付ける。
・質問がある場合はE-mailで受け付ける。
メールアドレスは次のとおり。
yasushi@keio.jp
関連科目
特になし