[ 講義ページに戻る]

2016年度 : プログラミング2 / シラバス


授業内容と方法
  • プログラミング1受講(プログラミング基礎終了)を前提に、C言語基礎(2週間)と、Java(13週間)を学ぶ。
  • ほぼ2週間毎(全体として7件程度)に課題レポートを課す予定である。
  • 既に100行程度のコードを書いたことがある学生向けに,コンパイラ言語であるC言語と、オブジェクト思考プログラミング言語Javaを,講義・演習・課題を組み合わせた実習形式で学ぶ。
  • 言語仕様を学ぶだけではなく,「実現したいことを理解し,説明できるレベルまで整理し,コンピュータが処理できる形に翻訳する」というプログラミング開発一連の流れを体験する。
  • バージョン管理,ドキュメンテーションツール,ユニットテスト,例外処理,アノテーション,Gradleによる構成管理,jarの利用といった,開発周りの諸技術を体験する。
  • オブジェクト指向ならではの言語仕様(クラス,インスタンス,メソッド,隠蔽,多重定義,オーバーライド,多態性)について,その特徴をサンプルから学ぶ。
  • なお,プログラミング1に引き続きペア・プログラミングを導入することで,躓き明確化やテクニック共有を促す環境を構築し,明文化され難い観点への気づきを支援する。
達成目標
  1. 提示された課題を口頭および報告書として説明することができる。
  2. インタプリタ言語とコンパイラ言語の違いを理解し、開発の流れを踏まえて作業することができる。
  3. C言語の基本的な宣言・式・関数・制御文・関数・スコープ・構造体を理解し、用いることができる。
  4. Javaの基本的な宣言・式・関数・制御文・関数・スコープ・ファイルI/Oを理解し,用いることができる。
  5. オブジェクト指向言語,静的な型付け言語であることを意識し,コードを読み書きできる。
  6. 開発中に得られたErrors, Warningsを元に,どのようにデバッグしたら良いかを考え,実行に移すことができる。
  7. 第三者の書いたコード(100行程度)を読み,動作を説明することができる。(小作品理解)
  8. プログラミングの概念と設計方法を理解し,KISS原則を意識した構造化プログラミング(100行程度)を実践することができる。(小作品制作)
  9. 第三者にとって保守管理し易くするためにコード規約を意識し,適切なコメントを記述,単体テストを用意することができる。(小作品仕上げ)

補足: 各項目最後にある「[]内の記述」は学習教育目標とのマッチングを示している。

評価基準と評価方法
  • レポートおよび課題(80%),ペア・プログラミング演習 (10%),ミニクイズ(10%)により評価する。
  • 原則として全てのレポートを提出すること。
  • プログラミング・プロセスを重視する。課題に対する考察の課程が分るような表現法を考え、レポートとしてまとめること。
授業計画

毎週教科書に関するミニテストを実施する。第1回に関しては第1回に関してはプログラミング1の復習か、アンケートを予定している。それ以降はレポートの進み具合を鑑みながら調整する。

  • 第1回(10/4): C言語入門1(インタプリタ言語とコンパイラ言語,静的な型付け、型宣言、制御文、関数、コンパイル、実行)
  • 第2回(10/11): C言語入門2(配列、構造体)
  • 第3回(10/18): Javaの基本知識(変数と定数,演算子,型変換,配列,制御文)
  • 第4回(10/25): 標準入出力, コメントとコーディング規約
  • 第5回(11/1): オブジェクト指向1: クラスとインスタンス,コンストラクタ
  • 第6回(11/8): オブジェクト指向2: 関数 vs. メソッド,処理と情報の隠蔽(カプセル化),継承
  • 第7回(11/15): 統合環境の利用(コード読みとデバッグ実行)、ユニットテスト、バージョン管理(pull request と merge)
  • 第8回(11/22): 振り返り1(プログラムの実行,バージョン管理,ユニットテスト,コード読解)
  • 第9回(11/29): オブジェクト指向3: 多重定義(Overload)
  • 第10回(12/6): InteliJ + gradle による構成管理、jarの利用
  • 第11回(12/13): オブジェクト指向4: 多態性(polymorphism)とオーバーライド,アノテーション
  • 第12回(12/20): 抽象クラス(Abstract),インターフェース(Interface)と多重継承
  • 第13回(1/17): 高度なデバッグ実行(スタックフレームの移動、条件ブレーク)
  • 第14回(1/24): 例外と例外処理、Java: クラスライブラリ
  • 第15回(1/31): 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性)
  • (第16回(2/7): レポート未提出者対応)
事前・事後学習
  • 事前学習: 講義用Webページ、教科書で予習(読むだけでなく、コードを書き、動かす)しておくこと。第1回については予習ではなくプログラミング1の復習を、そして余裕がれば教科書の1章を読んでくること(EclipseではなくIntelliJ IDEAを使う予定です)。気になる点は質問できるように整理しておくこと。第2回以降については授業は講義用Webページにて指示する。
  • 事後学習: 講義で実習したことを復習し、時間内にできなかった課題は次の授業までに行うこと。
教科書・参考書

教科書は最初の1冊で、残りは参考書です。図書館や書店で眺めてみて、手元に置きたいものを購入すると良いでしょう。

  • 教科書: 新わかりやすいJava入門編: 前半のChapter 10 までは、基礎を学んでる人にとっては文法的な違いを把握する程度ですので、軽く流す予定です。本番は11章以降。
  • UNIXという考え方: いわゆるUNIX哲学(下記)を学べる本。ただし癖の強い訳語も多いので、やや読みにくい。
    [UNIX哲学] 「一つのことを行い、またそれをうまくやるプログラムを書け。協調して動くプログラムを書け。標準入出力(テキスト・ストリーム)を扱うプログラムを書け。標準入出力は普遍的インターフェースなのだ。」
  • なぜ、あなたはJavaでオブジェクト指向開発ができないのか: Javaでの話になっていますが、プログラミング全般に共通する話題です。プログラミングにアレルギー持ってる人向けの「取り組み方処方箋」。
  • オブジェクト指向でなぜつくるのか 第2版: プログラミングの歴史を踏まえつつ、どのような意図で言語が開発・改定されされているのかという側面から「オブジェクト指向」の特徴を紐解く一冊。
  • 大学生のためのリサーチリテラシー入門: 研究のための8つの力: 物事についてどう調べ、整理し、まとめるのかという「大学生に求められる力」を整理し、取り組み方について解説している本。全員、早い段階で一読することを強くお勧めします。
備考
  • 授業を聞くだけでも、本を読むだけでもプログラミング技術を身につけることはできません。教科書が理解できるまで何度も繰り返し読み、コードを書いて動かし、分からないところは質問することで「技術」として身に付けよう。
  • シラバスや授業計画は計画時点のものです。授業の進展具合に応じて調整することを想定しています。最新版は授業Webページを参照のこと。
オフィスアワー
水曜日2時限目で調整中。
連絡先