2020年度 シラバス学部

プログラミング関連科目

2021/01/30  現在

科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
1年
単位数
/Credits
4.0
責任者
/Coordinator
大津山 公平
担当教員名
/Instructor
久田 泰広, 大津山 公平, 出村 裕英, 平田 成, 中里 直人, 北里 宏平, 三瓶 岳昭, 大藤 建太, ピシキン エフゲニー, 鈴木 大輔
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language

更新日/Last updated on 2020/01/31
授業の概要
/Course outline
(ICTGクラスはQ4に開講し、担当はピシキン先生です。)
C言語によるプログラミングは会津大のような情報系の学生に取って非常に重要なスキルであるにも関わらず、充分なスキルを持たないまま研究室に配属され、苦労する学生が多い。この理由として、C言語の範囲が広いため、充分な概念、スキルなどを得ないまま終了し、それが後に尾を引くことが一因として挙げられる。また、後続授業(アルゴリズムなど)の要求するプログラミングスキルがかなり高い事も一つの要因である。
以上の理由により、プログラミングCのイントロダクションという位置づけでプログラミング入門を開講し、C言語の内容を、プログラミング入門とプログラミングCの2講義にてじっくりと講義する。

このシラバスは我々教員と履修する学生のとの間の契約である。我々は履修生の下記項目の習得に責任を持つが、履修生は真摯に学ぶ態度を持って履修する事が要求される。また不正に対しては学則に則って極めて厳正な対処を行う。
授業の目的と到達目標
/Objectives and attainment
goals
本科目の目的と到達目標は以下の通りである。(コース受講後には以下の能力を得る、または説明出来る事が期待される)
・プログラミングの概念を理解する
 →問題が与えられた時に、それを解くためのプログラムを作成するまでの一連の動作を身につける。
 →フローチャートを理解・作成し、そこからプログラムを作成することが出来る。
・分岐・ループ・配列・関数などのC言語の基本概念を理解する
 →それらを利用したプログラムが記述出来るようになる
・良いプログラミングスタイルを身に付ける
 →他人が見て理解し易いプログラムを作成出来る
授業スケジュール
/Class schedule
週ごとの詳細は以下の通りである。


第1回 コンピュータとは〜Helloの表示
 コンピュータ・ソフトウェア・ハードウェア・OS・アプリケーション・
 高級言語・C言語・コンパイラ・Helloの表示・printf・改行
第2回 変数・入出力・演算
 変数・変数名の規則・予約語・変数宣言・初期化・代入
 printf/scanf・演算・演算子・演算の順序と優先順位
第3回 様々な型・型変換
 その他の整数型・浮動小数点型・型変換・
 printf/scanfの書式
第4回 選択(分岐) if、switch/case
 データ構造・アルゴリズム・コーディング・
 連接・選択・繰返し・if・条件式・関係演算子・オペランド・
 真・偽・if-else・switch-case・default・break
第5回 ループ(その1) - while -
 インデント・フローチャート・ループ・while・見張り方式・
 インクリメントデクリメント演算子・前置・後置・代入演算子・無限ループ
第6回 ループ(その2) for  
 カウンタ方式・for・break・continue・
 より良いプログラム・インデント・効率の良い変数使用法
第7回 1次元配列
 配列・添字(インデックス)・要素・配列の初期化・
 配列を使用する基準・配列サンプルプログラム
第8回 フローチャート
 主にフローチャートを中心に、これまでの復習を様々な形態の演習を織り交ぜて行う。
第9回 2次元配列
 二次元配列の宣言と構造・行・列・対角要素・マクロ・
 二次元配列の初期化・行列の加算・行列の乗算
第10回 2次元配列の復習と応用
 2次元配列の復習・リダイレクト(リダイレクション)・パイプ・
 標準エラー出力・画像回転・画像白黒反転・ノイズ除去
第11回 関数(その1)
 関数とは・引数・仮引数・関数の定義・関数の呼び出し・
 プロトタイプ宣言・戻り値・void型・return・
 自動(ローカル)変数・標準ライブラリ関数・stdio.h
第12回 関数(その2)
 ニュートン法・数の桁数・ある桁の数・2進数とは・
 2進数から10進数への変換・エラーチェック・強制終了・exit()
第13回 関数(その3)
 自動変数と外部変数・スタック・キュー・数値計算と誤差
 数値計算の例:自由落下・PROVITの紹介
第14回 総復習・良いプログラミングのスタイル
 プログラムの分かり易さ・プログラムの効率・デバッグ・
 インデント・コメント・マクロ
教科書
/Textbook(s)
・C言語によるプログラム[基礎編] 第二版、内田監修、オーム社
・プログラミング入門/C ハンドアウト(売店にて販売する)
*ハンドアウトは必須である。必ず授業開始までに購入すること。またこのハンドアウトはプログラミングCにて引き続き使用するので大切に使用すること。
成績評価の方法・基準
/Grading method/criteria
以下の4項目による
・クイズ(講義中に実施する小テスト)20%
・演習課題 30%
・期末試験 50%
クイズは出席確認も兼ねている。規定の出席数(2/3以上)に足りない者は放棄とみなす。期末試験を受けない場合も放棄となる。

[履修上の留意点]
この講義は全てのプログラミング授業の先駆けとなるものであり、全員の履修を希望する。
履修にあたっては以下の事を厳重に守らなければならない。
・授業・演習には遅刻・欠席しない事。全実施回数の1/3以上欠席した者は定期試験を受ける事が出来ない(つまり放棄となる)。遅刻に関してもしかるべきペナルティを与えるものとする。
・演習課題・クイズ・定期試験などで不正行為(他者の課題のコピー、試験のカンニング等)を行った場合は、学則に従って前期履修科目全ての単位を没収する。

演習課題は、演習時間内の口頭での採点と電子的に提出するものがある。口頭採点の締め切りは演習時間内、電子提出は、一部の問題の締め切りは演習時間終了時、それ以外は基本的に一週間が提出期限となる。なお、締め切りに遅刻した場合はシステム的に提出が出来なくなるので注意すること。但し忌引き、インフルエンザなどの罹患、プログラミングコンテストへの参加等教務委員会で授業の欠席が認可された場合などはその限りではないので教務に届け出た上で申し出る事。
履修上の留意点
/Note for course registration
重要な関連科目:プログラミングC(Q3),コンピュータシステム概論(Q3)など
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
学内WS以外と学外の場合
http://www.u-aizu.ac.jp/course/prog0/
学内WSでは以下を使用する事(より新しい情報や、成績情報等こちらのURLでしか見れない情報がある)
file:///home/course/prog0/public_html/2020/welcome.html

[実務経験]
氏名:大津山公平
職歴:富士通
職務内容:超大型計算機の設計
本コースとの関連性:
 論理設計の傍ら、設計効率化ツールのプログラム作成を行っており、
 その実務経験が本コースに生かされている。

授業形態:講義,演習


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
1年
単位数
/Credits
4.0
責任者
/Coordinator
久田 泰広
担当教員名
/Instructor
久田 泰広, 大津山 公平, 愼 重弼, 三瓶 岳昭, ピシキン エフゲニー, 平田 成, 橋本 康弘, 呂 国偉
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language

更新日/Last updated on 2020/02/12
授業の概要
/Course outline
(ICTGクラスはQ1に開講し、担当はピシキン先生です。)
Q2の「プログラミング入門」の講義を引き継いで、本講義は以下のような思想に基づいて構成されている。
・卒業研究や、後続授業(アルゴリズムなど)などの要求するプログラミングスキルはかなり高いレベルであり、それに対応するスキルを身につける。
・アルゴリズムに関するイントロダクションを行うことで、後続の授業への接続をスムーズにする。
・より大規模なプログラム作成のスキルを身につける。

このシラバスは我々教員と履修する学生のとの間の契約である。我々は履修生の下記項目の習得に責任を持つが、履修生は真摯に学ぶ態度を持って履修する事が要求される。
授業の目的と到達目標
/Objectives and attainment
goals
本講義では、以下のようなスキルの習得を目指している(コース受講後には以下の能力を持つ、または説明出来る事が期待される)
・Q2プログラミング入門で習得したループ・配列・関数などをより理解し、有効に使用したプログラムを作成出来る
・この授業で習得する、文字・ファイル・ポインタ・構造体・再帰を理解し、それを利用したプログラムを作成出来る
・より大規模なプログラムを記述出来るようになる
・グループにて一つの大きなプログラムを作成出来る
・簡単なアルゴリズムの理解と実装を行う事が出来る
・良いプログラミングスタイルのプログラムを作成出来る
授業スケジュール
/Class schedule
週ごとの詳細は以下の通りである(ハンドアウト目次より。右側の数字は対応するハンドアウトのページ)
なお、スケジュールや講義ハンドアウトページの変更がある場合もあるので、授業開始後のガイダンスにて説明する予定である。

第1回 復習(1) p.76〜 81
 授業情報・変数の型・ループ・配列・関数・文字型・
 関数で電卓を作る
第2回 復習(2) p.82〜 87
 変数の種類(自動・外部・静的)・2次元配列・リニア(線形)サーチ
第3回 ファイル操作 p.88〜 92
 パイプとリダイレクト・ファイルオープン・ファイルの読み書き・
 ファイルクローズ・文字配列
第4回 ポインタ(1) -アドレスー p.93〜 97
 アドレス・変数の大きさ・ポインタ・間接演算子・文字列・ヌル文字
 文字列の入出力・文字列ライブラリ関数
第5回 ポインタ(2) -ポインタ演算ー p.98〜103
 配列のアドレス・ポインタ演算・ポインタと配列の類似点/相違点・
 文字列定数配列とポインタ配列
第6回 ポインタ(3) -ポインタの応用ー p.104〜108
 関数の引数・値渡し/アドレス渡し・配列を引数にする・
 main関数への引数・動的メモリ割り当て
第7回 構造体(1) -基礎― p.115〜120
 構造体の概念/利点・宣言/定義・初期化/代入・関数と構造体・
 構造体配列・良くあるミス
第8回 構造体(2) -構造体とポインタ― p.121〜125
 構造体へのポインタ・構造体のポインタ演算・構造体のネスト・
 関数と構造体ポインタ・良くあるミス
第9回 構造体(3) -応用(リスト操作)― p.126〜132
 連結リスト・リストの特徴・ノードの連結・リストの構造・リストの初期化
 リストの検索・ノードの挿入・ノードの削除
第10回 リスト続き
第11回 関数 p.133〜138
 関数とは?・引数と戻り値・外部変数の利用・再帰
第12回 コンパイル p.139〜144
 条件演算子・コンパイルの流れ・プリプロセッサ・マクロ関数・
 条件コンパイルによるデバッグ・分割コンパイル・externとstatic
第13回 これまでの復習〜そしてこれから p.145〜149
 判断に慣れる・文字列に慣れる・配列名はアドレス・合わせ技・
 バリエーションを思いつく・そして今後
第14回 総復習(ハンドアウト資料なし)
教科書
/Textbook(s)
C言語によるプログラム[応用編] 第二版、内田監修、オーム社
プログラミング入門/C ハンドアウト*(売店にて販売予定)

*なお、ハンドアウトはプログラミング入門とプログラミングC共用となっている。Q2プログラミング入門時に購入した者は改めて購入する必要はない。再履修などでQ3にハンドアウトが必要な場合は教員に問い合わせる事。
成績評価の方法・基準
/Grading method/criteria
原則、以下の3項目による
・クイズ(講義中に実施する小テスト)20%
・演習課題 30%
・期末試験 50%

クイズは出席確認も兼ねている。規定の出席数(2/3以上)に足りない者は放棄とみなす。期末試験を受けない場合も放棄となる。

[履修上の留意点]

 履修にあたっては以下の事を厳重に守らなければならない。
・授業・演習には遅刻・欠席しない事。全実施回数の1/3以上欠席した者は定期試験を受ける事が出来ない(つまり放棄となる)。遅刻に関してもしかるべきペナルティを与えるものとする。
・演習課題・クイズ・定期試験などで不正行為(他者の課題のコピー、クイズや試験のカンニング等)を行った場合は、学則に従って当該期履修科目全ての単位を没収する。

演習課題は、演習時間内の口頭での採点と電子的に提出するものがあり、それぞれの問題に応じて締め切りが設定される。なお、電子的提出物の締め切りに遅れた場合はシステム的に提出が出来なくなるので注意すること。但し忌引き、インフルエンザなどの罹患、プログラミングコンテストへの参加等教務委員会で授業の欠席が認可された場合などはその限りではないので教務に届け出た上で申し出る事。
履修上の留意点
/Note for course registration
先修科目:なし
重要な関連科目:プログラミング入門、コンピュータシステム概論、アルゴリズムとデータ構造
履修規程上の先修条件:なし
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
本コースのウェブページは以下の通り
http://www.u-aizu.ac.jp/course/prog1/
学内WSでは以下を使用する事(より新しい情報や、成績情報等こちらのURLでしか見れない情報がある)
file:///home/course/prog1/public_html/2020/welcome.html



科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
2年
単位数
/Credits
4.0
責任者
/Coordinator
クリュエフ ヴィタリー
担当教員名
/Instructor
クリュエフ ヴィタリー, 黒川 弘国, 裴 岩, 程 同軍, 愼 重弼, ハマダ モハメド, - -
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language

更新日/Last updated on 2020/01/30
授業の概要
/Course outline
JavaおよびJava言語を利用したプログラミング技法は、現在のコンピュータ・プログラミング・トレンドの中でも優位に立っています。
本科目の目標は、Javaを用いてオブジェクト指向プログラミングを勉強することです。

他の科目との関連
本科目は、プログラミング、ソフトウエア工学およびソフトウエア・アプリケーション設計のスペシャリストを目指す学生のための基礎科目です。本科目はまた、ハードウエア設計を志望する学生にも強く推奨されるものです。
授業の目的と到達目標
/Objectives and attainment
goals
プログラミング言語や技法の習得へのベストの方法は、プログラムの例を学ぶことです。また、Javaのスキルを得るための最適な方法は、実問題を一つ一つ解決していくことです。
本科目では、様々なプログラム例を用いてJava関連の概念を細かく教え、更に練習問題のセットを提供します。
授業スケジュール
/Class schedule
本科目は以下の基本トピックをカバーします。
a) オブジェクト・クラス(データ抽象化・カプセル化が重点), 継承と多態性
b) 例外とその処理
c) 入出力関連
全トピックは理解しやすい例を用いて説明します。
予定スケジュールは以下の通り:

1. 本科目の紹介
教務関連
教材
オンライン資料
Jeliotシステムの紹介
教材を利用した学習の進め方
演習の進め方
講義時の留意事項
演習で点を取るには
演習採点基準

2. オブジェクト指向入門
Javaテクノロジとは
「Welcome to Java!」プログラム
オブジェクトとは?
クラスとは?
オンライン参考資料

3. 基礎文法
変数
演算子
式、文、ブロック
フロー制御文

4. クラスとオブジェクト
クラス
コンストラクタ
メソッド
オブジェクトの作成
オブジェクトの使用

5. 継承 (1)
継承の定義
継承の目的
継承の例
サブクラスでできること
スーパークラス中のprivateメンバー
オブジェクトのキャスト
メソッドのオーバーライド
フィールドの隠蔽
コンストラクタの起動連鎖

6. 継承 (2)・デバッグ技法
IS-A関係(継承) と HAS-A関係(包含)の違い
スーパークラスとしてのオブジェクト
デバッグとは
一般的なデバッグ手法
jdb: (コマンドラインデバッガ)

7. 多態性 (1)
多態性とは
多態性の例
多態性の動作原理
静的・動的結合
オブジェクトのキャスト
instanceof オペレータ

8. Eclipseの紹介・学習内容の復習
Eclipseの特徴
簡単なアプリケーションを作る
アプリケーションをデバッグ
ヘルプ情報を得る
これまでのクイズ回答中の誤りの分析
これまでの演習回答中の誤りの分析

9. 多態性 (2)
抽象クラス
Private メソッドとStaticメソッド
コンストラクタの呼ばれる順序
クラスを設計する
多態性のまとめ

10. インターフェース
インターフェースとは
Javaにおけるインターフェース
インターフェースと多重継承
インターフェースの例: Relatableインターフェース
型としてのインターフェース
インターフェースの書き換え
抽象クラスとインターフェースの違い
インターフェースのまとめ

11. パッケージ
パッケージとは
パッケージの作り方
パッケージメンバへの参照
ソースコードとクラスファイルの管理
パッケージの例
パッケージ作成・使用方法のまとめ

12. 例外処理 (1)
Cプログラムでのエラー処理
例外とは
例外の種類
例外処理のキーワード
例外の捕獲と処理

13. 基本的な入出力処理
I/Oストリーム
ファイルI/O

14. 全体のレビュー
後半のクイズ回答中の誤りの分析
後半の演習回答中の誤りの分析

詳細および最新情報については、本科目のWebページを参照してください。

教科書
/Textbook(s)
The Java Tutorial: A Short Course on the Basics (6th Edition) (Java Series) by R. Gallardo, et al., 2014. Electronic version

Head First Java 第2版 ―頭とからだで覚えるJavaの基本 大型本 by Kathy Sierra, et al., 2006.
成績評価の方法・基準
/Grading method/criteria
最終成績は下記成績の重みづけ合計とします。
演習課題・宿題 - 50%
講義中のクイズ - 15%  (Active Participation)
期末試験 - 35%
履修上の留意点
/Note for course registration
プログラミングの概念に関する知識が必要。プログラミング入門とプログラミングCの受講が必要。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
A course coordinator Prof. Vitaly Klyuev has practical working experience. He was working as a  Senior researcher in an international consortium of the INCO Copernicus Program of the Commission for European Communities, Brussels, Belgium. He was involved in the development of the distributed search system running on the Web. He has teaching experience of different courses related to programming for more than 30 years.

The instructor Prof. Kurokawa has 12 years of industry career in
software system development. All subjects of this course are based
on the experience.


実務経験有り:ソフトウェアシステム開発

実務経験あり(裴): 東軟グループ(中国、CMMI5) 及びAlpine Electronics Europe D&R GmbH (ドイツ)に5年間勤務した。100万LOCレベルのソフトウェア開発のプロジェクトとチームを参加と監督し、核心的なアルゴリズムを設計し、そして産業特許を申請と獲得した。この経験に基づいて、アルゴリズム及び複雑度、プログラミング、ソフトウェア工学などについて教授する。

コースWebページ

授業形態:講義,演習


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
成瀬 継太郎
担当教員名
/Instructor
成瀬 継太郎, ファヨール ピエール アラン, ルバシェフスキー イゴール, イエン ニール ユーウェン
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language

更新日/Last updated on 2020/09/11
授業の概要
/Course outline
※授業は講義と演習の両方とも遠隔授業で行います

本講義は既にC言語を習得している学生を対象に、C++言語の基礎を教えることを目的とする。C++は1980年代中期にBell 研究所のBjarne Stroustrup により開発された、非常に強力なC言語の後継の言語である。具体的には、C++はC言語にクラスの概念とユーザ定義型の機構を付け加え、クラスと継承、動的結合という機能により、オブジェクト指向プログラミングを実現している。
授業の目的と到達目標
/Objectives and attainment
goals
本講義は、学生がC++プログラミングの本質を学ぶことを目的とする。具体的には、クラスとオブジェクトの生成の仕方、データのアクセス制限、クラスと階層の設計の方法、クラスの継承と動的結合、テンプレート関数、ジェネリック関数、反復子(イテレータ)、コンテナとSTLの使用である。履修学生はオブジェクト指向の設計方針を反映したC++のプログラムを開発できるようになる。
授業スケジュール
/Class schedule
担当教員により講義スケジュールは異なるが,全体を通しての講義内容は同じである.
成瀬クラス
第1週 序論と文字列の取り扱い
第2週 ループとカウンタ
第3週 データの集まりと反復子
第4週 プログラムとデータの組織化
第5週 シーケンシャルコンテナ
第6週 STLの利用
第7週 連想コンテナ
第8週 テンプレート関数とジェネリック関数
第9週 クラスの定義
第10週 メモリの管理
第11週 抽象データ型
第12週 値のように振る舞うクラス
第13週 継承と動的結合
第14週 メモリの自動管理とまとめ

ファヨール先生クラス:
1) 入門
2) クラス; ストリーム
3) ポインタ; 参照
4) 定義; 宣言; const 宣言; static 宣言
5) オーバーロード; コンストラクタ (デフォルトコンストラクタ, コピーコンストラクタ, コピー代入演算子, ムーブ コンストラクタ, ムーブ代入演算子); デストラクタ
6) 継承 (オーバーライド, virtual 宣言)
7) 例外と関連 (RAII, スマートポインタ)
8) 演算子オーバーロード
9) テンプレート (クラステンプレート, 関数テンプレート)
10) コンテナライブラリ
11) イテレータライブラリ
12) 関数オブジェクト; ラムダ式
13) アルゴリズムライブラリ
14) スレッドサポートライブラリ (スレッド, 相互排他, 条件変数, フューチャー)
(詳細は講義を担当する教員により変わる)
教科書
/Textbook(s)
各教員が指定する。
成績評価の方法・基準
/Grading method/criteria
小テスト(クイズ):20%
演習:50%
期末試験:30%
(詳細は、講義を担当する教員により変わる。)
履修上の留意点
/Note for course registration
なし。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
授業ホームページは授業中に指示する。
参考文献
Steve Oualine, Practical C++ Programming, O'Reilly & Associates, 1st Edition, 1995
Bjarne Stroustrup, The C++ Programming Language, Addison Wesley, 3rd Edition, 1997
Ira Pohl, C++ for C Programmers, Benjamin/Cummings, 2nd Edition, 1994


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
4年
単位数
/Credits
3.0
責任者
/Coordinator
鈴木 大郎
担当教員名
/Instructor
鈴木 大郎, 中島 有
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language

更新日/Last updated on 2020/01/31
授業の概要
/Course outline
本科目はコンピュータ言語の代表であるプログラミング言語に焦点を当てる。プログラミング言語のパラダイム、モデル、技術要素などを説明することで、コンセプトやモデルなどの面よりプログラミング言語の本質について整理する。プログラミング・パラダイムと呼ばれるプログラミングに対するコンセプトについて述べ、各パラダイムの特徴について説明する。また、パラダイムを基準としてプログラミング言語を分類・整理し、同じパラダイムに基づくプログラミング言語に共通の機能について説明する。また、プログラミング言語の意味論についても説明する。
本科目で取り上げるプログラミングパラダイムは、手続き型、関数型、論理型、オブジェクト指向型の4種類である。特に、他のプログラミング科目で学ぶC,C++,Javaの基礎となる手続き型とオブジェクト指向型パラダイムについて重点的に取り上げる。
授業の目的と到達目標
/Objectives and attainment
goals
他のプログラミング関連科目は、対象とするプログラミング言語の文法と言語が提供する機能の使い方の習得を目的としている。それに対して、本科目では特定の言語に偏ることなく、同じプログラミング・パラダイムに基づく複数のプログラミング言語について、それらに共通する機能の成り立ちと原理について横断的に学ぶことを目的とする。
本科目では、履修した学生が以下の知識を習得することを目指す。
1. 各プログラミングパダイムの特徴
2. 手続き型言語に共通する特徴の詳細
3. オブジェクト指向型言語に共通する特徴の詳細
4. プログラミング言語の構文の記述方法
5. プログラミング言語の意味論を通したプログラミング言語の抽象的な実行メカニズム
授業スケジュール
/Class schedule
1. はじめに: プログラミングパラダイムと計算モデル、
   手続き型プログラミング概要: 機械モデル(RAM)
2. 関数型プログラミング概要
3. 論理型プログラミング概要
4. オブジェクト指向プログラミング概要
5. プログラミング言語の構文論
6. 手続き型プログラミング(1): 制御構造とデータ構造
7. 手続き型プログラミング(2): 手続き
8. オブジェクト指向プログラミング(1): オブジェクト、抽象データ型
9. 中間試験
10.オブジェクト指向プログラミング(2): オブジェクト指向の特徴
11.プログラミング言語の意味論(1): RAM、手続き型言語の操作的意味
12.プログラミング言語の意味論(2): 論理型言語の操作的意味
13.プログラミング言語の意味論(3): 表示的意味論と公理的意味論
14.  プログラミング言語以外のコンピュータ言語、今後の展望

各回の授業とその内容との対応は、授業の進み具合により変更になることがある。
教科書
/Textbook(s)
プログラミング言語論
大山口 通夫、五味 弘 共著 コロナ社
成績評価の方法・基準
/Grading method/criteria
演習     30%
中間試験 30%
期末試験 40%
履修上の留意点
/Note for course registration
以下の科目を履修していることが望ましい。

P1 プログラミング入門
P2 プログラミングC
P3 プログラミングJAVA I
F08 オートマトンと言語理論
F10 言語処理系論
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
David A. Watt. Programming Language Design Concepts. Wiley. 2004.

Hanne Riis Nielson and‎ Flemming Nielson. Semantics with Applications: An Appetizer. Springer. 2007.

Chris Hankin. Lambda calculi: a guide for computer scientists. Oxford University Press. 1994.

横内寛文. プログラム意味論. 共立出版. 1994.

五十嵐淳. プログラミング言語の基礎概念. サイエンス社. 2011.

高橋正子. 計算論 計算可能性とラムダ計算. 近代科学社. 1991.

実務経験有り(鈴木): 三菱電機東部コンピュータシステム(株)で、1987年から1990年まで、論理型とオブジェクト指向に基づくマルチパラダイム言語を用いた、Prolog推論マシン上のC、LISP言語処理系の開発に従事した。この経験をもとに、様々なプログラミングパラダイムに属するプログラミング言語の理論と実装について教授する。

授業形態:講義,演習


科目一覧へ戻る
開講学期
/Semester
2020年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
白 寅天
担当教員名
/Instructor
黒川 弘国, 白 寅天
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language

更新日/Last updated on 2020/01/27
授業の概要
/Course outline
The Java Programming II is a course for the 3rd year students who had studied basics such as objects and classes, object oriented concept, exception handling, and I/O issues in Java. This course teaches some advance topics: annotation, reflection, threads, GUI, network programming, and Android programming including new features in Java.
In the first half of this course, we will study about topics related to Java language itself such as annotation, reflection, threads, GC, and GUI. In the second half, we will experience development of distributed network applications in Java on the Web and smart mobile device.
授業の目的と到達目標
/Objectives and attainment
goals
The Java programming language benefits Internet and WWW users from access to secure, platform independent applications that can come from anywhere on the Internet. It is useful to build applications for not only distributed network but also for general-purpose. The ability to execute downloaded code on remote hosts in a secure manner is a critical requirement for many organizations. This course enables students to improve Java programming technique and knowledge to develop applications using GUI, generics, thread programming, networking, smart phone programming including new feature in Java.
授業スケジュール
/Class schedule
1. Introduction and Java Basic Review
2. Java GUI (Events and AWT)
3. Java GUI (Swing)
4. Generics and Inner Class
5. Collections
6. Midterm Examination
7. Annotation, Documentation comments
8. Thread & Garbage Collection I
9. Thread & Garbage Collection II
10. Review on the topics studied (Generics, Annotation, and Threads)
11. Java Network I
12. Java Network II
13. Java New Features
14. Android Smart Phone Programming
教科書
/Textbook(s)
The Java Tutorial, 4th Edition, A Short Course on the Basics by  S. Zakhour, S. Hommel, J. Royal, I. Rabinovitch, T. Risser, and M. Hoeber, Sun Microsystems, 2006 (English version), 2007 (Japanese Version).
成績評価の方法・基準
/Grading method/criteria
1. Exercise Lab. and Report : 50%
2. Examination : 50%
履修上の留意点
/Note for course registration
This course covers some advanced topics of Java. Therefore, it requires that students need to know basic concept of object oriented programming including good skill in C language. The prerequisite courses are:
- Intro.Programming
- C Programming
- JAVA Programming I
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
* Reference
1. Arnold, James Gosling, and David Holmes, The Java Programming Language, 4th Edition, SUN, 2006. (Japanese version by Pearson Education)
2. Ivor Horton, Java 2 JDK 5 Edition, Wiley Publishing, 2005
3. C.S. Horstmann, G. Cornell, Core Java, Sun Microsystem Press
4. J. O’Neil, Teach Yourself JAVA, McGraw-Hill
5. Kathy Sierra and Bert Bates, Head First Java (Head First) 2nd edition, 2005; Japanese edition, 2006.


このページの内容に関するお問い合わせは学生課 教務係までお願いいたします。

お問い合わせ先メールアドレス:sad-aas@u-aizu.ac.jp