タイトル

科目番号 教室 登録人数 履修登録方法 対面/遠隔
工共214   [火1]工1-321   70   抽選対象   対面授業  
開講年度 期間 曜日時限 開講学部等
2022 後学期 火1 工学部工学科  
講義コード 科目名[英文名] 単位数
610011072 プログラミングⅡ   2  
担当教員[ローマ字表記]
當間 愛晃  
授業の形態
講義、演習又は実験、TA有り
 
アクティブラーニング
学生が議論する、学生が自身の考えを発表する、フィールドワークなど学生が体験的に学ぶ、学生が文献や資料を調べる
 
授業内容と方法
*本科目(工共214)は、2017年度以降の工学科「知能情報コース」の学生が受講可能である。
*連絡網として、プログラミング1でも利用した Mattermost の ie-ryukyu/progチャンネル を利用する。

プログラミング1受講(Pythonでプログラミング基礎終了)を前提に、Java(13週間)と、C言語基礎(2週間)を学ぶ。

・ほぼ2週間毎(全体として7件程度)に課題レポートを課す予定である。
・既に100行程度のコードを書いたことがある学生向けに,コンパイラ言語であるC言語と、オブジェクト思考プログラミング言語Javaを,講義・演習・課題を組み合わせた実習形式で学ぶ。
・言語仕様を学ぶだけではなく,「実現したいことを理解し,説明できるレベルまで整理し,コンピュータが処理できる形に翻訳する」というプログラミング開発一連の流れを体験する。
・バージョン管理,ドキュメンテーションツール,ユニットテスト,例外処理,アノテーション,Gradleによる構成管理,jarの利用といった,開発周りの諸技術を体験する。
・オブジェクト指向ならではの言語仕様(クラス,インスタンス,メソッド,隠蔽,多重定義,オーバーライド,多態性)について,その特徴をサンプルから学ぶ。
・なお,プログラミング1に引き続きペア・プログラミングを導入することで,躓き明確化やテクニック共有を促す環境を構築し,明文化され難い観点への気づきを支援する。
  *ペアプログラミングについては、少人数によるモブプログラミングによる代替を予定している。

==============

[2022/3/7] 現時点では遠隔のみによる実施を想定している。
[2022/9/21] 原則対面とするが、遠隔参加も可能である。Zoom URLはMattemrost(prog)にてその都度告知する。
 
URGCC学習教育目標
コミュニケーション・スキル、情報リテラシー、問題解決力、専門性
 
達成目標
・提示された課題を口頭および報告書として説明することができる。
・インタプリタ言語とコンパイラ言語の違いを理解し、開発の流れを踏まえて作業することができる。
・C言語の基本的な宣言・式・関数・制御文・関数・スコープ・構造体を理解し、用いることができる。
・Javaの基本的な宣言・式・関数・制御文・関数・スコープ・ファイルI/Oを理解し,用いることができる。
・オブジェクト指向言語,静的な型付け言語であることを意識し,コードを読み書きできる。
・開発中に得られたErrors, Warningsを元に,どのようにデバッグしたら良いかを考え,実行に移すことができる。
・第三者の書いたコード(100行程度)を読み,動作を説明することができる。(小作品理解)
・プログラミングの概念と設計方法を理解し,KISS原則を意識した構造化プログラミング(100行程度)を実践することができる。(小作品制作)
・第三者にとって保守管理し易くするためにコード規約を意識し,適切なコメントを記述,単体テストを用意することができる。(小作品仕上げ)
 
評価基準と評価方法
<評価基準>
- Javaの基本的な言語仕様を理解し、コードを読み書きできる。
- 想定外動作時、もしくはコンパイルエラー時に、どのように試行錯誤するか検討し、実行に移すことができる。
- シンプルな構造化プログラミングから、オブジェクト指向プログラミングへ再検討し直すことができる。

<評価方法>
レポートおよび課題(85%),モブ・プログラミング演習 (5%),ミニクイズ(10%)により評価する。
Javaの最終レポート(report 6)では、口頭試問の実施を予定している。

原則として全てのレポートを提出すること。
プログラミング・プロセスを重視する。
レポート課題は、第1回〜第13回にかけ、2週間で1件、合計7件のレポートを課す。
課題に対する考察の課程が分るような表現法を考え、レポートとしてまとめること。

ミニテストは、原則として毎週授業中に実施する。
モブ・プログラミング演習は、平均して数週間に一度のペースで実施する。
 
履修条件
本講義の冒頭2週間は「プログラミングの基礎を学んだ前提でJava言語基礎の習得」を目指す。
このため、
・「プログラミング1 (Python)」を受講しておくことが望ましい。
・もしくはPython or C言語による開発経験(変数、制御文、ループ文、関数など)があると望ましい。

Python or C言語どちらも開発経験がない場合、次年度前期のプログラミング1からの受講を推奨する。できるだけ事前相談下さい。
 
授業計画
毎週教科書に関するミニテストを実施する。第1回に関してはプログラミング1の復習か、アンケートを予定している。それ以降はレポートの進み具合を鑑みながら調整する。

第1回: コンパイラ言語(インタプリタとコンパイラ、静的な型付け、型宣言)、Javaの基本知識(変数と定数,演算子,型変換,配列,制御文)
 *report 1予定
第2回: 基礎知識2(データ型、キャスト、命名規則、基本ライブラリ、演算子、while文、ジャンプによる制御)
第3回: オブジェクト指向1: クラスとインスタンス,コンストラクタ
 *report 2予定
第4回: オブジェクト指向2: 参照、コンストラクタのオーバーロード、カプセル化
第5回: アクセサ、バージョン管理
 *report 3予定
第6回: gradle による構成管理、JUnitによるユニットテスト、jarの利用、ドキュメンテーション
第7回: 継承と継承ツリー、Override
 *report 4予定
第8回: 抽象クラスとインタフェース
第9回: 例外(File I/Oを例に)
 *report 5予定
第10回: 多態性、コレクション入門
第11回: 高度なデバッグ実行(スタックフレームの移動、条件ブレーク)
 *report 6(Java最終レポート3週間予定)予定
第12回: 静的メンバ
第13回: 振り返り(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性)
第14回: C言語入門1(制御文、関数、コンパイル、実行)
 *report 7(C言語レポート1回)予定
第15回: C言語入門2(配列、構造体)
(第16回: レポート未提出者対応)
 
事前学習
講義用Webページ、教科書で予習(読むだけでなく、コードを書き、動かす)しておくこと。
第1回についてはプログラミング1の復習と環境構築をしておくこと。
環境構築は、
 https://github.com/naltoma/java_intro2020/blob/master/VSCode.md
を参照し、動作確認までやること。
また余裕がある範囲で教科書を眺めておこう。

気になる点は質問できるように整理しておくこと。
第2回以降については授業は講義用Webページにて指示する。
 
事後学習
講義で実習したことを復習し、時間内にできなかった課題は次の授業までに行うこと。
 
教科書にかかわる情報
教科書 書名 ISBN
978-4295007807
備考
最新の第3版を購入ください。Kindle版でも良いです。
著者名
中山清喬, 国本大悟著
出版社
インプレス
出版年
2019
NCID
 
教科書全体備考
C言語については講義用Webページにて提示します。
 
参考書にかかわる情報
参考書 書名 ISBN
4274064069
備考
いわゆるUNIX哲学(下記)を学べる本。ただし癖の強い訳語も多いので、やや読みにくい。
著者名
Mike Gancarz 著,芳尾桂 監訳,
出版社
オーム社
出版年
2001
NCID
参考書 書名 ISBN
477412222X
備考
Javaでの話になっていますが、プログラミング全般に共通する話題です。プログラミングにアレルギー持ってる人向けの「取り組み方処方箋」。
著者名
小森裕介, エスエムジー株式会社 著,
出版社
技術評論社
出版年
2005
NCID
参考書 書名 ISBN
4822284654
備考
プログラミングの歴史を踏まえつつ、どのような意図で言語が開発・改定されされているのかという側面から「オブジェクト指向」の特徴を紐解く一冊。
著者名
平澤章 著,
出版社
日経BP社
出版年
2011
NCID
参考書 書名 ISBN
4822283151
備考
CPUやメモリといった実際の機械と、それをプログラミング言語がどう利用しているのかという話。
著者名
矢沢久雄 著,日経ソフトウエア 監修,
出版社
日経BP社
出版年
2007
NCID
参考書 書名 ISBN
4623060454
備考
プログラミングに限らず、物事についてどう調べ、整理し、まとめるのかという「大学生に求められる力」を整理し、取り組み方について解説している本。全員、早い段階で一読することを強くお勧めします。
著者名
山田剛史, 林創 著,
出版社
ミネルヴァ書房
出版年
2011
NCID
 
参考書全体備考
 
 
使用言語
日本語
 
メッセージ
受動的な学びだけでは学びになりません。高い学費を払っているのだから学費以上のものを勝ち取るように、大学というリソースを活用しよう。
シラバスや授業計画は計画時点のものです。授業の進展具合に応じて調整することを想定しています。最新版は授業Webページ(下記URL)を参照のこと。

「アクティブラーニング」の項目にチェックを入れていますが、下記に示す形で薄く関わっています。
『学生が議論する』と『学生が自身の考えを発表する』については、主にペアプログラミングという2名による演習時に意思疎通が必要です。
『フィールドワークなど学生が体験的に学ぶ』については、情報工学科(知能情報コース)における現場の一つである「コンピュータとの対話」が必要です。
『学生が文献や資料を調べる』については、演習や課題レポート作成時に教科書だけでなく、マニュアル等の資料を調べることが必要です。
 
オフィスアワー
場所: 工1-705
オフィスアワー: 毎週水曜日の2時限目を予定。
 
メールアドレス
この項目は教務情報システムにログイン後、表示されます。
 
URL
https://ie.u-ryukyu.ac.jp/~tnal/2022/prog2/
 

ページの先頭へ