授業内容と方法
|
プログラミング1受講(プログラミング基礎終了)を前提に、C言語基礎(2週間)と、Java(13週間)を学ぶ。
・ほぼ2週間毎(全体として7件程度)に課題レポートを課す予定である。 ・既に100行程度のコードを書いたことがある学生向けに,コンパイラ言語であるC言語と、オブジェクト思考プログラミング言語Javaを,講義・演習・課題を組み合わせた実習形式で学ぶ。 ・言語仕様を学ぶだけではなく,「実現したいことを理解し,説明できるレベルまで整理し,コンピュータが処理できる形に翻訳する」というプログラミング開発一連の流れを体験する。 ・バージョン管理,ドキュメンテーションツール,ユニットテスト,例外処理,アノテーション,Gradleによる構成管理,jarの利用といった,開発周りの諸技術を体験する。 ・オブジェクト指向ならではの言語仕様(クラス,インスタンス,メソッド,隠蔽,多重定義,オーバーライド,多態性)について,その特徴をサンプルから学ぶ。 ・なお,プログラミング1に引き続きペア・プログラミングを導入することで,躓き明確化やテクニック共有を促す環境を構築し,明文化され難い観点への気づきを支援する。
|
|
達成目標
|
・提示された課題を口頭および報告書として説明することができる。 ・インタプリタ言語とコンパイラ言語の違いを理解し、開発の流れを踏まえて作業することができる。 ・C言語の基本的な宣言・式・関数・制御文・関数・スコープ・構造体を理解し、用いることができる。 ・Javaの基本的な宣言・式・関数・制御文・関数・スコープ・ファイルI/Oを理解し,用いることができる。 ・オブジェクト指向言語,静的な型付け言語であることを意識し,コードを読み書きできる。 ・開発中に得られたErrors, Warningsを元に,どのようにデバッグしたら良いかを考え,実行に移すことができる。 ・第三者の書いたコード(100行程度)を読み,動作を説明することができる。(小作品理解) ・プログラミングの概念と設計方法を理解し,KISS原則を意識した構造化プログラミング(100行程度)を実践することができる。(小作品制作) ・第三者にとって保守管理し易くするためにコード規約を意識し,適切なコメントを記述,単体テストを用意することができる。(小作品仕上げ)
|
|
評価基準と評価方法
|
レポートおよび課題(80%),ペア・プログラミング演習 (10%),ミニクイズ(10%)により評価する。 原則として全てのレポートを提出すること。 プログラミング・プロセスを重視する。課題に対する考察の課程が分るような表現法を考え、レポートとしてまとめること。
|
|
履修条件
|
本講義の冒頭2週間は「Pythonの基礎を学んだ前提でC言語習得」を目指す。 このため、 ・「プログラミング1 (Python)」を受講しておくことが望ましい。 ・もしくはPython or C言語による開発経験(変数、制御文、ループ文、関数など)があると望ましい。
Python or C言語どちらも開発経験がない場合、次年度前期のプログラミング1からの受講を推奨する。できるだけ事前相談下さい。
|
|
授業計画
|
毎週教科書に関するミニテストを実施する。第1回に関してはプログラミング1の復習か、アンケートを予定している。それ以降はレポートの進み具合を鑑みながら調整する。
第1回(10/4): C言語入門1(インタプリタ言語とコンパイラ言語,静的な型付け、型宣言、制御文、関数、コンパイル、実行) *レポート1予定: 文字列のシンプルなタイピングゲーム(C言語編) 第2回(10/11): C言語入門2(配列、構造体) *実際の内容はここまで1回目の「プログラミング2+演習2」で終える予定。第2回目は演習+レポート相談。 第3回(10/18): Javaの基本知識(変数と定数,演算子,型変換,配列,制御文) *レポート2予定: シンプルなタイピングゲーム(Java編) 第4回(10/25): 標準入出力, コメントとコーディング規約 第5回(11/1): オブジェクト指向1: クラスとインスタンス,コンストラクタ *レポート3予定: クラス入門的なもの。 第6回(11/8): オブジェクト指向2: 関数 vs. メソッド,処理と情報の隠蔽(カプセル化),継承 第7回(11/15): 統合環境の利用(コード読みとデバッグ実行)、ユニットテスト、バージョン管理(pull request と merge) *レポート4予定: ユニットテスト。 第8回(11/22): 振り返り1(プログラムの実行,バージョン管理,ユニットテスト,コード読解) 第9回(11/29): オブジェクト指向3: 多重定義(Overload) *レポート5予定: 多重定義。 第10回(12/6): InteliJ + gradle による構成管理、jarの利用 第11回(12/13): オブジェクト指向4: 多態性(polymorphism)とオーバーライド,アノテーション *レポート6予定: 多態性 and/or アノテーション。 第12回(12/20): 抽象クラス(Abstract),インターフェース(Interface)と多重継承 *12/27は冬休み、1/10は月曜振り替え。 第13回(1/17): 高度なデバッグ実行(スタックフレームの移動、条件ブレーク) *レポート7予定: 最終レポート?(自由?) 第14回(1/24): 例外と例外処理、Java: クラスライブラリ 第15回(1/31): 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性) (第16回(2/7): レポート未提出者対応)
|
|
事前学習
|
講義用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
|
http://ie.u-ryukyu.ac.jp/~tnal/2016/prog2/
|
|
|