授業内容と方法
|
プログラミング1受講(プログラミング基礎終了)を前提に、Java(13週間)と、C言語基礎(2週間)を学ぶ。
・ほぼ2週間毎(全体として7件程度)に課題レポートを課す予定である。 ・既に100行程度のコードを書いたことがある学生向けに,コンパイラ言語であるC言語と、オブジェクト思考プログラミング言語Javaを,講義・演習・課題を組み合わせた実習形式で学ぶ。 ・言語仕様を学ぶだけではなく,「実現したいことを理解し,説明できるレベルまで整理し,コンピュータが処理できる形に翻訳する」というプログラミング開発一連の流れを体験する。 ・バージョン管理,ドキュメンテーションツール,ユニットテスト,例外処理,アノテーション,Gradleによる構成管理,jarの利用といった,開発周りの諸技術を体験する。 ・オブジェクト指向ならではの言語仕様(クラス,インスタンス,メソッド,隠蔽,多重定義,オーバーライド,多態性)について,その特徴をサンプルから学ぶ。 ・なお,プログラミング1に引き続きペア・プログラミングを導入することで,躓き明確化やテクニック共有を促す環境を構築し,明文化され難い観点への気づきを支援する。
|
|
達成目標
|
・提示された課題を口頭および報告書として説明することができる。 ・インタプリタ言語とコンパイラ言語の違いを理解し、開発の流れを踏まえて作業することができる。 ・C言語の基本的な宣言・式・関数・制御文・関数・スコープ・構造体を理解し、用いることができる。 ・Javaの基本的な宣言・式・関数・制御文・関数・スコープ・ファイルI/Oを理解し,用いることができる。 ・オブジェクト指向言語,静的な型付け言語であることを意識し,コードを読み書きできる。 ・開発中に得られたErrors, Warningsを元に,どのようにデバッグしたら良いかを考え,実行に移すことができる。 ・第三者の書いたコード(100行程度)を読み,動作を説明することができる。(小作品理解) ・プログラミングの概念と設計方法を理解し,KISS原則を意識した構造化プログラミング(100行程度)を実践することができる。(小作品制作) ・第三者にとって保守管理し易くするためにコード規約を意識し,適切なコメントを記述,単体テストを用意することができる。(小作品仕上げ)
|
|
評価基準と評価方法
|
レポートおよび課題(80%),ペア・プログラミング演習 (10%),ミニクイズ(10%)により評価する。 Javaの最終レポート(report 6)では、口頭試問の実施を予定している。 原則として全てのレポートを提出すること。 プログラミング・プロセスを重視する。課題に対する考察の課程が分るような表現法を考え、レポートとしてまとめること。
|
|
履修条件
|
本講義の冒頭2週間は「プログラミングの基礎を学んだ前提でJava言語基礎の習得」を目指す。 このため、 ・「プログラミング1 (Python)」を受講しておくことが望ましい。 ・もしくはPython or C言語による開発経験(変数、制御文、ループ文、関数など)があると望ましい。
Python or C言語どちらも開発経験がない場合、次年度前期のプログラミング1からの受講を推奨する。できるだけ事前相談下さい。
|
|
授業計画
|
毎週教科書に関するミニテストを実施する。第1回に関してはプログラミング1の復習か、アンケートを予定している。それ以降はレポートの進み具合を鑑みながら調整する。
第1回(10/3): コンパイラ言語(インタプリタとコンパイラ、静的な型付け、型宣言)、Javaの基本知識(変数と定数,演算子,型変換,配列,制御文) *report 1予定 第2回(10/10): 基礎知識2(データ型、キャスト、命名規則、基本ライブラリ、演算子、while文、ジャンプによる制御) 第3回(10/17): オブジェクト指向1: クラスとインスタンス,コンストラクタ *時間があれば「ファイル読み込みと例外処理」も。 *report 2予定 第4回(10/24): オブジェクト指向2: 参照,継承 *時間があれば「ListとArrayList」も。 第5回(10/31): 統合環境の利用(コード読みとデバッグ実行)、ユニットテスト、バージョン管理(IntelliJからの利用) *report 3予定 第6回(11/7): 振り返り1(プログラムの実行,バージョン管理,コード読解) *学会出張予定。代理調整or休講検討中。 第7回(11/14): オブジェクト指向3: 継承ツリー、protected修飾子、文法補足、例外補足とファイル書き込み *report 4予定 第8回(11/21): ポリモーフィズム・多態性(継承とオーバーライドの利用) 第9回(11/28): InteliJ + gradle による構成管理、jarの利用 *report 5予定 第10回(12/5): 抽象クラス(Abstract),インターフェース(Interface)と多重継承 第11回(12/12): 高度なデバッグ実行(スタックフレームの移動、条件ブレーク) *report 6(Java最終レポート3週間予定)予定 第12回(12/19): Thread入門
1/9(火)は、月曜日授業振替。
第13回(1/16): 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性) 第14回(1/23): C言語入門1(制御文、関数、コンパイル、実行) *report 7(C言語レポート1回)予定 第15回(1/30): C言語入門2(配列、構造体) (第16回(2/6): レポート未提出者対応)
|
|
事前学習
|
講義用Webページ、教科書で予習(読むだけでなく、コードを書き、動かす)しておくこと。 第1回については予習ではなくプログラミング1の復習を、そして余裕がれば教科書の1章を読んでくること(EclipseではなくIntelliJ IDEAを使います)。 気になる点は質問できるように整理しておくこと。 第2回以降については授業は講義用Webページにて指示する。
|
|
事後学習
|
講義で実習したことを復習し、時間内にできなかった課題は次の授業までに行うこと。
|
|
教科書にかかわる情報
|
|
4798042773
|
帯に「完全独習テキスト」と書いてるぐらい読みやすい本です。理解できるまで何度も繰り返し読み、コードを書いて動かしながら理解を深めよう。なお、初版は誤字多めなので、できるだけ新板を買おう。(教科書サイトで正誤表が公開されてますので、古いのを買った人はそちらも参照すること)
|
川場隆 著,
|
秀和システム
|
2015
|
|
|
|
|
教科書全体備考
|
C言語については講義用Webページにて提示します。
|
|
参考書にかかわる情報
|
|
4274064069
|
いわゆるUNIX哲学(下記)を学べる本。ただし癖の強い訳語も多いので、やや読みにくい。
|
Mike Gancarz 著,芳尾桂 監訳,
|
オーム社
|
2001
|
|
|
477412222X
|
Javaでの話になっていますが、プログラミング全般に共通する話題です。プログラミングにアレルギー持ってる人向けの「取り組み方処方箋」。
|
小森裕介, エスエムジー株式会社 著,
|
技術評論社
|
2005
|
|
|
4822284654
|
プログラミングの歴史を踏まえつつ、どのような意図で言語が開発・改定されされているのかという側面から「オブジェクト指向」の特徴を紐解く一冊。
|
平澤章 著,
|
日経BP社
|
2011
|
|
|
4822283151
|
CPUやメモリといった実際の機械と、それをプログラミング言語がどう利用しているのかという話。
|
矢沢久雄 著,日経ソフトウエア 監修,
|
日経BP社
|
2007
|
|
|
4623060454
|
プログラミングに限らず、物事についてどう調べ、整理し、まとめるのかという「大学生に求められる力」を整理し、取り組み方について解説している本。全員、早い段階で一読することを強くお勧めします。
|
山田剛史, 林創 著,
|
ミネルヴァ書房
|
2011
|
|
|
|
|
参考書全体備考
|
|
|
使用言語
|
日本語
|
|
メッセージ
|
授業を聞くだけでも、本を読むだけでもプログラミング技術を身につけることはできません。 教科書が理解できるまで何度も繰り返し読み、コードを書いて動かし、分からないところは質問することで「技術」として身に付けよう。
|
|
オフィスアワー
|
場所: 工1-705 オフィスアワー: 毎週水曜日の2時限目を予定。
|
|
メールアドレス
|
tnal@ie.u-ryukyu.ac.jp
|
|
URL
|
https://ie.u-ryukyu.ac.jp/~tnal/2017/prog2/
|
|
|