2017年度 : プログラミング2
- シラバス
- 連絡先: メールアドレス・教員部屋はシラバス参照。
- 講義用Slack: prog1-ie-univ-ryukyu.slack.com *プログラミング1で利用してましたが、プログラミング2でも継続利用。全員向け通知は全てslackでやります。
- 参考文献・サイト
- 講義資料
- 第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- 第5回(10/31): 継承、ユニットテスト、バージョン管理(IntelliJからの利用), report 3
- 第6回(11/7): 振り返り1(プログラムの実行,バージョン管理,コード読解)
- 第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入門
- 第13回(1/16): 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性)
- 第14回(1/23): C言語入門1(制御文、関数、コンパイル、実行), report 7(C言語レポート1回)
- 第15回(1/30): C言語入門2(配列、構造体)
- (第16回(2/6): レポート未提出者対応)
第1回(10/3): コンパイラ言語(インタプリタとコンパイラ、静的な型付け、型宣言)、Javaの基本知識(変数と定数,演算子,型変換,配列,制御文)
- 環境構築?(必要な人だけ)
- 確認方法: ターミナルで「javac --version」を実行。9ならOK。1.8未満の人は下記手順でインストール。
補足: Java 9は2017年9月に出たばかり。基本的な文法への修正はないはずだが、参考書等を探す際にはバージョンに気をつけよう。
- ターミナルから「brew update; brew upgrade --cleanup; brew cask reinstall java」を実行。
- (月一ぐらいで「brew update; brew upgrade --cleanup」してパッケージ更新しよう)
- 確認方法: ターミナルで「javac --version」を実行。9ならOK。1.8未満の人は下記手順でインストール。
- news-ie: プログラミング2について(知能情報コースと情報工学科の学生で登録する科目番号が異なります)
- ミニテスト(アンケート)
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
- 今週のお告げ: (告知) デザインスクール: [ イベントサイト | コース向け説明 ]
- シラバス説明
- 講義用Slack: prog1-ie-univ-ryukyu.slack.com *プログラミング1で利用してましたが、プログラミング2でも継続利用。全員向け通知は全てslackでやります。
- 席とペアプロについて
今週は自由席。2,3週目から席指定予定。
- [講義資料]
- [ペアプロ演習]
- Google driveの「ペアプロ1-1003」へ、座ってる箇所に自身のアカウント&氏名を記入すること。冒頭数週間は仮ペアで。
- 同「ペアプロ2-1017」に、来週までに希望を記入すること。3週目からそのペアでやる予定。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- [レポート課題] 課題レポート1: チャットボット初号機を作ってみよう
- 提出先: Google driveの「report1」。各自、学科アカウント名でフォルダを作成し、その中に提出すること。
- 〆切: 第3回(10/17)の講義開始前
- [宿題]: 教科書読み3章まで。余裕があるなら4章も。なおEclipseの代わりにIntelliJを使います。
- 関連リンク
- 公式ドキュメント: [ API | Oracle JDK 9 Documentation ]
- Progate: Java I, II(初めてプログラミングする人向けの解説+演習。一歩ずつゆっくり進みます)
- paiza動画学習: Java入門編(初めてプログラミングする人向けの動画講義。1つのコンテンツは数分程度に細分化されてて、かつ、コードを自動採点するシステムが提供されています。独習の進め方としては「数分動画閲覧して、自動採点される課題に取り組む」を繰り返すことになります。)
- ドットインストール: Java 8入門 (全43回)(paiza同様、1つのコンテンツが数分程度の動画に細分化されて提供されてます。)
第2回(10/10): 基礎知識2(データ型、キャスト、命名規則、基本ライブラリ、演算子、while文、ジャンプによる制御)
- 今週のお告げ: Slackに限らず指定された連絡手段は確認するようにしよう。
プログラミングの授業関連通知はprog1-ie-univ-ryukyu.slack.comでやります。学科全体の通知はnews-ieや学科用slackで行われます。
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- (復習) 初めてのJava
- IntelliJ IDEA入門
- Java入門2(いろいろなデータ型、キャスト演算子、命名規則、標準ライブラリ)
- 文字列、文字配列操作のTips *時間なかったので来週。
- 授業録画アーカイブ: [ 1限目 | 2限目 ]
- [ペアプロ演習] *余裕があれば。
- Google driveの「ペアプロ1-1003」へ、座ってる箇所に自身のアカウント&氏名を記入すること。冒頭数週間は仮ペアで。
- 同「ペアプロ2-1017」に、今日中に希望を記入すること。3週目からそのペアでやる予定。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 宿題
- レポート1: 第3回(10/17)の講義開始前。
- 教科書読み: 11章まで。(余裕がある人は教科書13章〜14章も)
- 分かるところはスキップしよう。
- e.g., 各章の最後にある「まとめ(要点の整理、通過テスト)」をやると簡単にチェックできるはず。コードはできるだけ動かして確認するようにしよう。
- 次週予定: オブジェクト指向入門+ペアプロ
第3回(10/17): オブジェクト指向1: クラスとインスタンス,コンストラクタ *時間があれば「ファイル読み込みと例外処理」も。
- 今週のお告げ: 機会はあれこれ提供します。伸るか反るかは君たち次第。
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- Tips: 文字列、文字配列操作のTips -> ペアプロ演習時の補足資料。
- オブジェクト指向1: クラスとインスタンス、コンストラクタ *カプセル化は後日。
- 授業録画アーカイブ: 1限目 *2限目はペアプロ。
- [ペアプロ演習]
- パートナー: Google driveの「ペア・プログラミング調整1.pdf」参照。3人チームpair01,pair25の1名は通常席とペアプロ席とで異なります。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 宿題
- [レポート課題] 課題レポート2: チャットボット初号機を拡張してみよう。
〆切: 第5回(10/31)の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- 教科書読み: 13,14章。
- [レポート課題] 課題レポート2: チャットボット初号機を拡張してみよう。
第4回(10/24): オブジェクト指向2: 参照,継承 *時間があれば「ListとArrayList」も
- 今週のお告げ: (最終告知) デザインスクール: [ イベントサイト | コース向け説明 ]
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- Tips: IntelliJ IDEA入門
- オブジェクト指向1: クラスとインスタンス、コンストラクタ *復習と、先週やり残した「カプセル化」」。
- オブジェクト指向2: 参照、継承 *継承は後日。
- 授業録画アーカイブ: 1限目 *2限目はペアプロ。
- [ペアプロ演習]
- 演習1: Javaに慣れよう(主にString, char周りの演習)
提出先: Google driveの「ex1」。
- 演習2: オブジェクト指向開発してみよう(簡単なクラス設計&実装の演習)
提出先: Google driveの「ex2」。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 宿題
- レポート2: 第5回(10/31)の講義開始前。
- 教科書読み: 15章、17.1節。
第5回(10/31): 継承、ユニットテスト、バージョン管理(IntelliJからの利用)
- 今週のお告げ: 綱渡りをしないよう、余裕のある計画を立てて行動しよう。(計画を立てないと、振り返りにくくなる。振り返りにくいと、改善しにくくなる。計画自体に余裕が無いとトラブル時に死ぬ)
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- (Diceクラス): オブジェクト指向1: クラスとインスタンス、コンストラクタ *Diceクラス(コード例3)の再確認。
- (先週の残り): オブジェクト指向2: 参照、継承 *継承のみ。
- IntelliJ + JUnit5によるユニットテスト
- Gitによるバージョン管理 on IntelliJ
- 参考: (前期資料) Gitによるバージョン管理入門
- 授業録画アーカイブ: [ 1限目 | 2限目(続き&課題レポート3説明) *課題説明は42分頃から ]
- 関連リンク
- GitHub
- GitHub解説記事の例: [ 今さら聞けない!GitHubの使い方【超初心者向け】 | 「すごいGit楽しく学ぼう」を公開しました ]
- java.lang.annotation
- JUnit: [ 公式サイト | API doc ]
- [ペアプロ演習]
- 演習1: Javaに慣れよう(主にString, char周りの演習)
提出先: Google driveの「ex1」。
- 演習2: オブジェクト指向開発してみよう(簡単なクラス設計&実装の演習)
提出先: Google driveの「ex2」。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 宿題
- [レポート課題] 課題レポート3: リファクタリングを通してユニットテストとバージョン管理に慣れよう。 *ステップ0は授業中に終了。
〆切: 第7回(11/14)の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- 教科書読み: これまでの復習。余裕があれば16章予習。
- [レポート課題] 課題レポート3: リファクタリングを通してユニットテストとバージョン管理に慣れよう。 *ステップ0は授業中に終了。
第6回(11/7): 振り返り1(プログラムの実行,バージョン管理,コード読解)
- 11/7: 當間出張。山田先生担当。
- [ペアプロ演習]
- 演習1: Javaに慣れよう(主にString, char周りの演習)
提出先: Google driveの「ex1」。
- 演習2: オブジェクト指向開発してみよう(簡単なクラス設計&実装の演習)
提出先: Google driveの「ex2」。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
第7回(11/14): オブジェクト指向3: 継承ツリー、protected修飾子、文法補足、例外補足とファイル書き込み
- 今週のお告げ(周知): Webページ評価システムの稼働開始
今月卒業研究で Web ページを評価できるサイト、「WebRepo☆彡」を公開しました。 このサイトでは、閲覧目的に対してそのページどれだけ役立ったかなどの評価を入力できます! この評価を利用して、今を遥かに越えて Web ページを探す時に自分の目的にマッチしていて且つ、質の高いページを探せるようにしたいです。
(評価入力者はNAL研に来ればお菓子がもらえるらしい by 綱島先輩) - ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- (復習): オブジェクト指向2: 参照、継承
- 文法の補足: mainメソッド、複数クラスを含むJavaファイル、インポート文(教科書16章)
- 例外についての補足+ファイル書き込みの例(教科書にありません)
- 授業録画アーカイブ: [ 1限目 ]
- 関連リンク
- [ペアプロ演習]
- (演習1: Javaに慣れよう(主にString, char周りの演習))
提出先: Google driveの「ex1」。
- (演習2: オブジェクト指向開発してみよう(簡単なクラス設計&実装の演習))
提出先: Google driveの「ex2」。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
提出先: Google driveの「ex4」。
- (演習1: Javaに慣れよう(主にString, char周りの演習))
- 宿題
- [レポート課題] 課題レポート4: 例外に慣れよう。
〆切: 第9回(11/28)の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- 教科書読み: 18章。
- [レポート課題] 課題レポート4: 例外に慣れよう。
第8回(11/21): ポリモーフィズム・多態性(継承とオーバーライドの利用)
- 今週のお告げ: 何をするにしても体が資本。参考: ヘルシープログラマ ――プログラミングを楽しく続けるための健康Hack
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- ポリモーフィズム(教科書18章)
- コード例: ExamplePolymorphism
- 授業中に書いたコード例: Bus.java
- 授業録画アーカイブ: 1限目
- [ペアプロ演習] *来週からペア変更予定。
- 来週(11/28)からペア変更予定。Google driveの「ペアプロ3-1128」に希望or希望なしを記入すること。
- (演習1: Javaに慣れよう(主にString, char周りの演習))
提出先: Google driveの「ex1」。
- (演習2: オブジェクト指向開発してみよう(簡単なクラス設計&実装の演習))
提出先: Google driveの「ex2」。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
提出先: Google driveの「ex4」。
- 宿題: これまでの復習&レポート課題。
第9回(11/28): InteliJ + gradle による構成管理、jarの利用
- アナウンス事項
- ペアプロパートナー変更: Google driveの「ペア・プログラミング調整3.pdf」。
- レポート4の提出物はレポートのみでOK。ソースファイルはアップロードしても、しなくても大丈夫です。
- 予め「brew install gradle」を実行。
- 今週のお告げ: 授業1回寝る/欠席=約1786円也。授業料約26.7万。1学期に10科目履修するなら1科目約2.6万。15コマで割ると約1.7k。実際には国のお金も入ってるのでもっと高い金額が使われてます。勿論時間も浪費することになります。高い授業料払ってるのだから、大学を「使おう」。
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- ビルドツール gradle の利用。オマケでmakeも。
- Makefileを含むコード例: make-sample
- 授業録画アーカイブ: [ 1限目 | 2限目 ] *IntelliJ+Gradle関連トラブルのため、2限目(31分頃から)にGradle演習やり直し。
- [ペアプロ演習]
- 新しい提出先「ペアプロ2」。
- 回答例: ex1, ex2, ex3については回答例を用意しました。(ex?-exampleフォルダ参照)
- ex1, ex2までは演習終了。回答例を参照して、理解できるか確認してみて下さい。(分からない所はパートナー/TA/教員らに相談してみよう)
- ex3も便宜上回答例を用意してますが、まだやってない人は「参照しながら演習」して下さい。見るだけでは分からないところが多いので、必ず手を動かそう。
- ex4は、新パートナーと改めて冒頭から初めて下さい。復習を兼ねています。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
提出先: Google driveの「ex4」。
- 宿題
- [レポート課題] 課題レポート5: リファクタリングしてみよう&Gradleに慣れよう。
- 補足: ***IntelliJ, Gradleを最新版にアップデートしよう。***
〆切: 第11回(12/12)の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- これまでの復習+教科書19章。
第10回(12/5): 抽象クラス(Abstract),インターフェース(Interface)と多重継承
- 12/12, 12/19の2週間かけて、プログラミング演習2でrobocodeやる予定。
- 今週のお告げ: 16単位未満除籍チェックのため、後期のレポート受付はあまり延ばせません。期末試験近づくとそれだけ忙しくなるので、出すつもりのある人は今のうちにやろう。(締切日を過ぎて提出する人は、提出後にメール報告もして下さい)
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- メイン資料: 抽象クラス(Abstract),インターフェース(Interface)と多重継承 *教科書の例は自分で読み解いてみよう。
- 抽象クラスとインターフェースのコード例: github: [ stack-ex | interface-ex ]
- スタック: Wikipedia: Stack
- オマケ1: シンプルなチャットの例: github: chat-ex
- オマケ2: Scannerでファイルを読み込んだ文字列を、リストに追加保存するコード例: github: ExampleFileInput
- 授業録画アーカイブ: 1限目
- メイン資料: 抽象クラス(Abstract),インターフェース(Interface)と多重継承 *教科書の例は自分で読み解いてみよう。
- [ペアプロ演習]
- 新しい提出先「ペアプロ2」。
- 回答例: ex1, ex2, ex3については回答例を用意しました。(ex?-exampleフォルダ参照)
- ex1, ex2までは演習終了。回答例を参照して、理解できるか確認してみて下さい。(分からない所はパートナー/TA/教員らに相談してみよう)
- ex3も便宜上回答例を用意してますが、まだやってない人は「参照しながら演習」して下さい。見るだけでは分からないところが多いので、必ず手を動かそう。
- ex4は、新パートナーと改めて冒頭から初めて下さい。復習を兼ねています。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
提出先: Google driveの「ex4」。
- 宿題
- これまでの復習+教科書20章。
- レポート6の予告
- プログラミング2のレポートは「Javaで「課題レポート7」で最後。いくつか条件(下記参照)を設定しますが、その条件を守ればなんでも良いです。各自orペアチームで取り組むことを可にする予定。
- Java。
- 開発は Git + GitHub を利用すること。(commit log が最終版の1件しかないのはNG。メソッド単位なり適度なタイミングでcommitしよう。)
- 一人当たり約100行(コメント2割含む)。2,3人の場合、一人あたり約70行でok。どこを担当したのか明示すること。
- ペアチームで取り組む場合、口頭試問(レポートについて口頭で説明)を必須とします。
- 自作クラスを2個以上含むこと。カプセル化すること。
- クラス毎に2個以上自作メソッドを含むこと。メソッド毎に1つ以上のユニットテストを書くこと。
- 1つのメソッドは50行を超えないこと。
- Gradleで実行可能なjarファイルを生成できるようにすること。
- <課題設定例>
- 上記条件を守っているなら、何を実装しても構わない。以下は課題例の紹介。
- paizaやAtCoder、言語処理100本ノックなどの課題に取り組むのも良い。
- レポート提出〆切は、14回目(1/23)を予定。
<条件例>
- プログラミング2のレポートは「Javaで「課題レポート7」で最後。いくつか条件(下記参照)を設定しますが、その条件を守ればなんでも良いです。各自orペアチームで取り組むことを可にする予定。
第11回(12/12): 高度なデバッグ実行(スタックフレームの移動、条件ブレーク)
- 今週のお告げ: 記憶に頼るぐらいならカレンダー(とか道具)を使おう。
- 採点結果: Google driveのreport1-score, report2-score。
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [ペアプロ演習](1限目の空き時間のみ)
- 2限目: プログラミング演習2
- [講義資料]
- 発展的な知識(教科書20章) *教科書の例は自分で読み解いてみよう。
- デバッガの利用
- コード例: noisy_file
- 授業録画アーカイブ: [ 1限目 | 2限目(Robocode) ]
- プログラミング演習2: Robocode
- 宿題
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
〆切: 1/16(火)。
- これまでの復習。
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
- [ペアプロ演習]
- 新しい提出先「ペアプロ2」。
- 回答例: ex1, ex2, ex3については回答例を用意しました。(ex?-exampleフォルダ参照)
- ex1, ex2までは演習終了。回答例を参照して、理解できるか確認してみて下さい。(分からない所はパートナー/TA/教員らに相談してみよう)
- ex3も便宜上回答例を用意してますが、まだやってない人は「参照しながら演習」して下さい。見るだけでは分からないところが多いので、必ず手を動かそう。
- ex4は、新パートナーと改めて冒頭から初めて下さい。復習を兼ねています。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
提出先: Google driveの「ex4」。
第12回(12/19): Thread入門
- レポート採点予定:
レポート3(今週中), レポート4(来週中), レポート5(次回講義前まで)。採点後、Slackで告知。
- 今週のお告げ:
「自分なりのHello World」を持とう。これまでにPython, Java, Shellscript等を習ってきたはずだが、今後は独学でプログラム言語の仕様やノウハウを学んでいくことになる。その際に、「言語の癖」を体感しやすくするための応用例を一つ持とう。同じ応用例を複数言語で実装・比較することで言語特性を確認しやすくなります。(私の場合は遺伝的アルゴリズムを実装してみることが多い)。
- ミニテスト *今週はアンケート。
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- Thread(スレッド)入門
- 実装例: Google driveの「chat-ex2017.zip」。
- おまけ: Java正規表現の使い方(時間があれば)
- 授業録画アーカイブ: [ 1限目 | 2限目(Robocode/Thread) ]
- プログラミング演習2: Robocode
- 宿題
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
〆切: 1/16(火)。
- これまでの復習。
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
- [ペアプロ演習](1限目の空き時間のみ)
- 新しい提出先「ペアプロ2」。
- 回答例: ex1, ex2, ex3については回答例を用意しました。(ex?-exampleフォルダ参照)
- ex1, ex2までは演習終了。回答例を参照して、理解できるか確認してみて下さい。(分からない所はパートナー/TA/教員らに相談してみよう)
- ex3も便宜上回答例を用意してますが、まだやってない人は「参照しながら演習」して下さい。見るだけでは分からないところが多いので、必ず手を動かそう。
- ex4は、新パートナーと改めて冒頭から初めて下さい。復習を兼ねています。
- 演習3: GitHubを利用した開発に慣れよう(ターミナル&ソロ編)
提出先: Google driveの「ex3」。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
提出先: Google driveの「ex4」。
第13回(1/16): 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性)
- 今週のお告げ: バックアップを取ろう。PCは消耗品です。いつ壊れるかわからないので、重要度に応じて二重三重にバックアップを取ろう。(PCトラブルや一時レンタル相談は翁長さんまで!)
- ミニテスト *アンケート。
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- レポート関連
- 採点結果: Google driveのreport5-score。
- レポート6は今日〆切。2〜3人で取り組んだ人?
- レポート6一覧(アンケート回答順)
- レポート6口頭試問調整(2〜3人で取り組んだ人のみ)
- レポート7(C言語)は来週提示。
- [講義資料]
- 振り返り
- 各レポートへのコメント: レポート総論2017(レポート5までのコメント)
- レポート5のコード例: Github: naltoma/2017prog2-report5
- 参考: 覚えておきたいプログラミング作法
- 参考: 実践性達成目標: Google driveの「実践性達成目標.zip」。大別して3つ、(1) ITリテラシ、(2)ソフトウェア技術、(3)ハードウェア技術に分けて作成。拡張子「.mm」はマインドマップ(MindMap)形式。山田先生によるアプリ紹介ページ。
- 授業録画アーカイブ: 1限目
- 宿題: これまでの復習。これまでの課題出してない人はちゃんとだそう。
第14回(1/23): C言語入門1(制御文、関数、コンパイル、実行)
- 今週のお告げ: My辞書を作ってみよう。新しい用語・概念が出てきたら、自分の言葉で説明してみよう。説明しきれないなら、復習に繋げよう。
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- レポート6口頭試問調整(2〜3人で取り組んだ人のみ)
- [講義資料]
- C言語: 教科書代わり1: 初心者のためのポイント学習C言語
- C言語: 教科書代わり2: 苦しんで覚えるC言語(苦C)
- C言語: 動画解説+演習: paiza:C言語入門
- マニュアル: 【man 】 オンライン・マニュアルを参照する
- 授業「アルゴリズムとデータ構造」向け: [ ポインタ虎の巻 ]
関連リンク - [レポート課題] 課題レポート7(C言語レポート1): 点数が高い順に並べよう
- 〆切: 第16回(2/6)の講義開始前(レポート未提出者対応日)
- 上限4ページ。
- コードをGitHubで管理している場合にはGit URLを掲載すること。GitHub使わない場合にはコードの提出を忘れずに。
第15回(1/30): C言語入門2(配列、構造体)
- 今週のお告げ: 大学を活用しよう。「大学で習ってないから分からない」まま放置する人は、今後もなにか新しいものが生まれる度に同じ状態になります。大学は学び方を学ぶ場所。見知らぬ物事に対面したとき、どう取り組めばよいのか。それを学ぼう。
- ミニテスト
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- レポート6口頭試問調整(2〜3人で取り組んだ人のみ)
- 仮スコア: googleドライブ。2017prog2-仮スコア0130.pdf
- [講義資料]
- 再掲: 初めてのC言語
bad_array.cを追加。
- 再掲: 演習
- Gighub: Makefileのサンプル
- 授業録画アーカイブ: 1限目
- 再掲: 初めてのC言語
- 第16回(2/6): レポート未提出者対応日。相談等があれば対応します。教室はプログラミング以外の自習等に使っても良いです。
- レポート受付: 2/9(金)までは保証。それ以降は採点間に合わない可能性あり。
- 総合情報処理センターLA希望確認
参考文献・サイト
- (C言語) 参考書
- C実践プログラミング 第3版 (2015年度まで利用してたC言語の教科書)
- 初心者のためのポイント学習C言語 (教科書代わり1)
- 苦しんで覚えるC言語(苦C) (教科書代わり2)
- 【 man 】 オンライン・マニュアルを参照する (ドキュメント参照コマンド)
- キーワードやコマンド名の一部からコマンド名を調べるには (正確な名称が分からない場合に利用)
- ポインタ虎の巻 (ポインタ編)
- ポインタの裏話 (ポインタ編)
- (Java) 教科書・参考書
- 教科書: 新わかりやすいJava入門編: 前半のChapter 10 までは、基礎を学んでる人にとっては文法的な違いを把握する程度ですので、軽く流す予定です。本番は11章以降。
- 統合開発環境(IDE): IntelliJ
- Java公式ドキュメント(チュートリアルもあります)
- online: Java Platform, Standard Edition (Java SE) 8
- download: Java SE 8 Documentation
- UNIXという考え方: いわゆるUNIX哲学(下記)を学べる本。ただし癖の強い訳語も多いので、やや読みにくい。
[UNIX哲学] 「一つのことを行い、またそれをうまくやるプログラムを書け。協調して動くプログラムを書け。標準入出力(テキスト・ストリーム)を扱うプログラムを書け。標準入出力は普遍的インターフェースなのだ。」
- なぜ、あなたはJavaでオブジェクト指向開発ができないのか: Javaでの話になっていますが、プログラミング全般に共通する話題です。プログラミングにアレルギー持ってる人向けの「取り組み方処方箋」。
- オブジェクト指向でなぜつくるのか 第2版: プログラミングの歴史を踏まえつつ、どのような意図で言語が開発・改定されされているのかという側面から「オブジェクト指向」の特徴を紐解く一冊。
- 大学生のためのリサーチリテラシー入門: 研究のための8つの力: 物事についてどう調べ、整理し、まとめるのかという「大学生に求められる力」を整理し、取り組み方について解説している本。全員、早い段階で一読することを強くお勧めします。
- 独習サイト (主にJava)
- Code Studio(言語を問わず、用意されたブロックを組み合わせてパズルを解く形でプログラミング全般の考え方を学べるサイト。)
- paiza(初めてプログラミングする人向けの動画講義。1つのコンテンツは数分程度に細分化されてて、かつ、コードを自動採点するシステムが提供されています。独習の進め方としては「数分動画閲覧して、自動採点される課題に取り組む」を繰り返すことになります。)
- ドットインストール(paiza同様、1つのコンテンツが数分程度の動画に細分化されて提供されてます。Python, Java以外にも多数の言語や環境について学べます。)
- プログラミングコンテスト(Web参加可能なコンテストサイトを整理してます。日時指定があるものが多いですが、過去問やコード例が公開されてるサイトもあります。)
- CodingBat(課題が多数例示されています。サイト上でコードの動作確認をすることも可能。)
- 言語処理100本ノック 2015(特定分野に偏っていますが、課題が難易度別に提供されてます。UNIX思想も含まれてます。)
- NLPプログラミングチュートリアル(こちらも特定分野に偏っていますが、「解説資料+演習+コード例」を見ながら勉強できます。)
- CodeIQ(いろんな人が提示する課題に挑戦できるサイト。面白い問題を探すもよし、手当たり次第解くのもよし、どういう組織が関わってるか嗅ぎまわるもよし。)
- codecademy
- その他
- ラーニング・パターン(曰く「よりよい学びを実現するためのコツを抽出・記述したもの」。)
- レポートの書き方
- draw.io