授業の形態
|
講義、演習又は実験、TA有り
|
|
アクティブラーニング
|
学生が議論する、学生が自身の考えを発表する、フィールドワークなど学生が体験的に学ぶ、学生が文献や資料を調べる
|
|
授業内容と方法
|
*本科目(工共214)は、2017年度以降の工学科「知能情報コース」の学生が受講可能である。 *指定教科書は、出版社&書店で品薄の模様。別書籍への変更を検討中。
プログラミング1受講(プログラミング基礎終了)を前提に、Java(13週間)と、C言語基礎(2週間)を学ぶ。
・ほぼ2週間毎(全体として7件程度)に課題レポートを課す予定である。 ・既に100行程度のコードを書いたことがある学生向けに,コンパイラ言語であるC言語と、オブジェクト思考プログラミング言語Javaを,講義・演習・課題を組み合わせた実習形式で学ぶ。 ・言語仕様を学ぶだけではなく,「実現したいことを理解し,説明できるレベルまで整理し,コンピュータが処理できる形に翻訳する」というプログラミング開発一連の流れを体験する。 ・バージョン管理,ドキュメンテーションツール,ユニットテスト,例外処理,アノテーション,Gradleによる構成管理,jarの利用といった,開発周りの諸技術を体験する。 ・オブジェクト指向ならではの言語仕様(クラス,インスタンス,メソッド,隠蔽,多重定義,オーバーライド,多態性)について,その特徴をサンプルから学ぶ。 ・なお,プログラミング1に引き続きペア・プログラミングを導入することで,躓き明確化やテクニック共有を促す環境を構築し,明文化され難い観点への気づきを支援する。
============== [9/9追記] 何らかの形で教室に来る機会の提供を検討中です。例えば「12グループ中、週替りで4グループずつ教室受講可能」のような形です。
|
|
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: 参照,継承 *時間があれば「ListとArrayList」も。 第5回: 継承、ユニットテスト、バージョン管理(IntelliJからの利用) *report 3予定 第6回: 振り返り1(プログラムの実行,バージョン管理,コード読解) 第7回: オブジェクト指向3: 継承ツリー、protected修飾子、文法補足、例外補足とファイル書き込み *report 4予定 第8回: ポリモーフィズム・多態性(継承とオーバーライドの利用) 第9回: InteliJ + gradle による構成管理、jarの利用 *report 5予定 第10回: 抽象クラス(Abstract),インターフェース(Interface)と多重継承 第11回: 高度なデバッグ実行(スタックフレームの移動、条件ブレーク) *report 6(Java最終レポート3週間予定)予定 第12回: Thread入門 第13回: 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性) 第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ページにて指示する。
|
|
事後学習
|
講義で実習したことを復習し、時間内にできなかった課題は次の授業までに行うこと。
|
|
教科書にかかわる情報
|
|
978-4295007807
|
最新の第3版を購入ください。Kindle版でも良いです。
|
中山清喬, 国本大悟著
|
インプレス
|
2019
|
|
|
|
|
教科書全体備考
|
C言語については講義用Webページにて提示します。
|
|
参考書にかかわる情報
|
|
4274064069
|
いわゆるUNIX哲学(下記)を学べる本。ただし癖の強い訳語も多いので、やや読みにくい。
|
Mike Gancarz 著,芳尾桂 監訳,
|
オーム社
|
2001
|
|
|
477412222X
|
Javaでの話になっていますが、プログラミング全般に共通する話題です。プログラミングにアレルギー持ってる人向けの「取り組み方処方箋」。
|
小森裕介, エスエムジー株式会社 著,
|
技術評論社
|
2005
|
|
|
4822284654
|
プログラミングの歴史を踏まえつつ、どのような意図で言語が開発・改定されされているのかという側面から「オブジェクト指向」の特徴を紐解く一冊。
|
平澤章 著,
|
日経BP社
|
2011
|
|
|
4822283151
|
CPUやメモリといった実際の機械と、それをプログラミング言語がどう利用しているのかという話。
|
矢沢久雄 著,日経ソフトウエア 監修,
|
日経BP社
|
2007
|
|
|
4623060454
|
プログラミングに限らず、物事についてどう調べ、整理し、まとめるのかという「大学生に求められる力」を整理し、取り組み方について解説している本。全員、早い段階で一読することを強くお勧めします。
|
山田剛史, 林創 著,
|
ミネルヴァ書房
|
2011
|
|
|
|
|
参考書全体備考
|
|
|
使用言語
|
日本語
|
|
メッセージ
|
受動的な学びだけでは学びになりません。高い学費を払っているのだから学費以上のものを勝ち取るように、大学というリソースを活用しよう。 シラバスや授業計画は計画時点のものです。授業の進展具合に応じて調整することを想定しています。最新版は授業Webページ(下記URL)を参照のこと。
「アクティブラーニング」の項目にチェックを入れていますが、下記に示す形で薄く関わっています。 『学生が議論する』と『学生が自身の考えを発表する』については、主にペアプログラミングという2名による演習時に意思疎通が必要です。 『フィールドワークなど学生が体験的に学ぶ』については、情報工学科(知能情報コース)における現場の一つである「コンピュータとの対話」が必要です。 『学生が文献や資料を調べる』については、演習や課題レポート作成時に教科書だけでなく、マニュアル等の資料を調べることが必要です。
|
|
オフィスアワー
|
場所: 工1-705 オフィスアワー: 毎週水曜日の2時限目を予定。
|
|
メールアドレス
|
この項目は教務情報システムにログイン後、表示されます。
|
|
URL
|
https://ie.u-ryukyu.ac.jp/~tnal/2020/prog2/
|
|
|