2018年度 : プログラミング2
- シラバス(工共214 & 情106の同時開講)
- 講義用Slack: ie-univ-ryukyu.slack.com (#prog1) *プログラミング1で利用してましたが、プログラミング2でも継続利用。全員向け通知は全てslackでやります。
- 連絡先:
- 當間愛晃 (Naruaki TOMA)@工1-705
- オフィスアワー: 水2
- E-mail: tnal@ie.u-ryukyu.ac.jp
- Twitter: @naltoma
- サポーターの皆さん: 技術職員&TA (Teaching Assistanct)
- 技術職員・名嘉秀和さん@地創棟506: 授業サポート、マシントラブルサポート等を担当。
- 西山昴志さん@當間研(工1-712): 主に授業中のサポートを担当。
- (調整中): 主にレポートチェックを担当。
- 参考文献・サイト
- 講義資料
- 第1回(10/3): コンパイラ言語(インタプリタとコンパイラ、静的な型付け、型宣言)、Javaの基本知識(変数と定数,演算子,型変換,配列,制御文), report 1
- 第2回(10/9): 基礎知識2(データ型、キャスト、命名規則、基本ライブラリ、演算子、while文、ジャンプによる制御)
- 第3回(10/16): オブジェクト指向1: クラスとインスタンス,コンストラクタ *時間があれば「ファイル読み込みと例外処理」も。, report 2
- 第4回(10/23): オブジェクト指向2: 参照,継承 *時間があれば「ListとArrayList」も。
- 第5回(10/30): 継承、ユニットテスト、バージョン管理(IntelliJからの利用), report 3
第6回(11/6): 振り返り1(プログラムの実行,バージョン管理,コード読解)- 第6回(11/6): 5週目の続き、振り返り1
- 第7回(11/13): オブジェクト指向3: 継承ツリー、protected修飾子、文法補足、例外補足とファイル書き込み, report 4
- 第8回(11/20): ポリモーフィズム・多態性(継承とオーバーライドの利用)
第9回(11/27): InteliJ + gradle による構成管理、jarの利用, report 5- 第9回(11/27): InteliJ + gradle による構成管理、jarの利用、ドキュメンテーション, report 5
- 第10回(12/11): 抽象クラス(Abstract),インターフェース(Interface)と多重継承
- 第11回(12/18): 高度なデバッグ実行(スタックフレームの移動、条件ブレーク), report 6(Java最終レポート3週間予定)
- 第12回(1/8): Thread入門
- 第13回(1/15): 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性)
- 第14回(1/22): C言語入門1(制御文、関数、コンパイル、実行), report 7(C言語レポート1回)
第15回(1/29): C言語入門2(配列、構造体)- 第15回(1/29): C言語入門2(ポインタ)
- (第16回(2/5): レポート未提出者対応)
第1回(10/3): コンパイラ言語(インタプリタとコンパイラ、静的な型付け、型宣言)、Javaの基本知識(変数と定数,演算子,型変換,配列,制御文)
- 環境構築1: Java SE Development Kit 10 (SE = Standard Edition)
- 確認方法: ターミナルで「javac --version」を実行。10ならOK。9未満の人は下記手順でインストール。
補足: Java 10は2018年3月にリリース。そしてJava 11が2018年9月26日に出たばかり。外部パッケージ利用時のトラブルを避けるため授業では「Java 10」を利用。
- 公式サイトへアクセス。
- 2018/9/26時点では「Java SE Development Kit 10.0.2」が Java 10 の最新版。
- 「Accept License Agreement」にチェックを入れ、macOS版をダウンロード。
- ダウンロードしたdmgファイルをダブルクリックして展開。
- 展開した中に入っていたpkgファイルをダブルクリックして、インストーラを起動。
- 手順通りに進めてインストール。
- 確認方法: ターミナルで「javac --version」を実行。10ならOK。9未満の人は下記手順でインストール。
- 環境構築2: zshの設定追加
- ~/.zshrc をエディタで開き、以下の設定を追加。
autoload -U compinit compinit
- ~/.zshrc をエディタで開き、以下の設定を追加。
- 環境構築3: IntelliJ IDEA
- IntelliJ公式サイトにアクセス。
- DownloadからComuunity版(無料)を選択。暫く待つと自動的にダウンロードが始まります。
- ダウンロードしたdmgファイルをダブルクリックして展開。
- 展開した中に入っていたappファイルを、Applicationsフォルダにドラッグ(=インストール)。
- news-ie: プログラミング2について(知能情報コースと情報工学科の学生で登録する科目番号が異なります)
- ミニテスト(アンケート)
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- 今週のお告げ: (告知) デザインスクール: [ イベントサイト ]
- シラバス説明
- 講義用Slack: ie-univ-ryukyu.slack.com (#prog1) *プログラミング1で利用してましたが、プログラミング2でも継続利用。全員向け通知は全てslackでやります。
- 席とペアプロについて
基本的に自由席の予定。
- [講義資料]
- [ペアプロ演習]
- 最大3名までOK。3名でやる場合は、解説時の席と、ペアプロ時の席が変わることになります。
- Google driveの「ペアプロ1-1002」へ、座ってる箇所に自身のアカウント&氏名を記入すること。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- [レポート課題] 課題レポート1: チャットボット初号機を作ってみよう
- 提出先: Google driveの「report1」。各自、学科アカウント名でフォルダを作成し、その中に提出すること。
- 〆切: 第3回(10/16)の講義開始前
- [宿題]: 教科書読み3章まで。余裕があるなら4章も。なおEclipseの代わりにIntelliJを使います。
- 関連リンク
- 公式ドキュメント: [ API | Oracle JDK 10 Documentation ]
- Progate: Java I, II(初めてプログラミングする人向けの解説+演習。一歩ずつゆっくり進みます)
- paiza動画学習: Java入門編(初めてプログラミングする人向けの動画講義。1つのコンテンツは数分程度に細分化されてて、かつ、コードを自動採点するシステムが提供されています。独習の進め方としては「数分動画閲覧して、自動採点される課題に取り組む」を繰り返すことになります。)
- ドットインストール: Java 8入門 (全43回)(paiza同様、1つのコンテンツが数分程度の動画に細分化されて提供されてます。)
第2回(10/9): 基礎知識2(データ型、キャスト、命名規則、基本ライブラリ、演算子、while文、ジャンプによる制御)
- 今週のお告げ: 扉の施錠について。ICカード登録。現時点では片方の扉(自習室から近い方の扉)だけしか設定されていないかも。室内から出る際の、扉の開け方。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- (続き) 初めてのJava *復習+例題3。(例題4は無し)
- IntelliJ IDEA入門 *=>来週
- Java入門2(いろいろなデータ型、キャスト演算子、命名規則、標準ライブラリ)
- 文字列、文字配列操作のTips *時間あれば=>来週。
- 授業録画アーカイブ: [ 1限目 ] *2限目はペアプロ演習のみ。
- [ペアプロ演習] *余裕があれば。
- 当面は現状パートナーのままで実施。
- 最大3名までOK。3名でやる場合は、解説時の席と、ペアプロ時の席が変わることになります。
- Google driveの「ペアプロ1-1002」へ、座ってる箇所に自身のアカウント&氏名を記入すること。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 宿題
- レポート1: 第3回の講義開始前。
- 教科書読み: 11章まで。(余裕がある人は教科書13章〜14章も)
- 分かるところはスキップしよう。
- e.g., 各章の最後にある「まとめ(要点の整理、通過テスト)」をやると簡単にチェックできるはず。コードはできるだけ動かして確認するようにしよう。
- 次週予定: オブジェクト指向入門+ペアプロ
第3回(10/16): オブジェクト指向1: クラスとインスタンス,コンストラクタ *時間があれば「ファイル読み込みと例外処理」も。
- 今週のお告げ: 機会はあれこれ提供します。伸るか反るかは君たち次第。([ デザインスクール2018 | [ 過去参加者の声 ])
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- IntelliJ IDEA入門
- オブジェクト指向1: クラスとインスタンス、コンストラクタ *カプセル化は後日。
- Tips: 文字列、文字配列操作のTips(コード例紹介のみの予定)
- 授業録画アーカイブ: [ 1限目 ] *2限目は演習のみ。
- [ペアプロ演習] *準場が入れ替わりになりますが、今日は「演習2の7」までを先にやろう。
- 当面は現状パートナーのままで実施。
- 最大3名までOK。3名でやる場合は、解説時の席と、ペアプロ時の席が変わることになります。
- Google driveの「ペアプロ1-1002」へ、座ってる箇所に自身のアカウント&氏名を記入すること。
- 演習2: クラス実装に慣れよう
- 提出先: Google driveの「ex2」。空フォルダのみ用意。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 宿題
- [レポート課題] 課題レポート2: チャットボット初号機を拡張してみよう。
〆切: 第5回の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- 教科書読み: 13,14章。
- [レポート課題] 課題レポート2: チャットボット初号機を拡張してみよう。
第4回(10/23): オブジェクト指向2: 参照,継承 *時間があれば「ListとArrayList」も
- 今週のお告げ: 告知 [ ieLT 秋のLT収穫祭2018 | デザインスクール/過去参加者の声 ]
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- オブジェクト指向1: クラスとインスタンス、コンストラクタ *復習と、先週やり残した「14.2.2 コンストラクタの簡単化」、「14.3 カプセル化」」。
- オブジェクト指向2: 参照、継承 *継承は後日の予定。
- 授業録画アーカイブ: [ 1限目 ]
- 宿題
- レポート2: 第5回の講義開始前。
- 教科書読み: 15章、17.1節。
- 2限目
プログラミング演習2: 赤嶺先生サイト
第5回(10/29): 継承、ユニットテスト、バージョン管理(IntelliJからの利用)
- 今週のお告げ: 告知 [ デザインスクール/過去参加者の声 | 京都大学の考え ]
- レポート1の採点結果: Google driveの「score-report1」。
- 今週のお告げ: レポートコメントについて。コメントを残す(見やすくする)ため、「解決」ボタンは、押さないようにしてください。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- インストール大会(command line tools)(Gitが動かない人)
- IntelliJ + JUnit5によるユニットテスト
- Gitによるバージョン管理 on IntelliJ
- (Diceクラス): オブジェクト指向1: クラスとインスタンス、コンストラクタ *Diceクラス(コード例3)の再確認。
- (先週の残り): オブジェクト指向2: 参照、継承 *継承のみ。=>来週。
- 授業録画アーカイブ: 1限目
- 関連リンク
- GitHub
- GitHub解説記事の例: [ 今さら聞けない!GitHubの使い方【超初心者向け】 | 「すごいGit楽しく学ぼう」を公開しました ]
- Progate (Git編)
- (前期資料) [ Gitによるバージョン管理入門 | 動画アーカイブ ]
- java.lang.annotation
- JUnit: [ 公式サイト | API doc ]
- 宿題
- [レポート課題] 課題レポート3: リファクタリングを通してユニットテストとバージョン管理に慣れよう
〆切: 第7回の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- 教科書読み: これまでの復習。余裕があれば16章予習。
- [レポート課題] 課題レポート3: リファクタリングを通してユニットテストとバージョン管理に慣れよう
第6回(11/6): 5週目の続き、振り返り1
- レポート2の採点結果:
Google driveの「score-report」内のタブ「rep2」。全レポートの採点結果をこのファイルにまとめることにします。
- 今週のお告げ:
レポート遅延提出は減点付きで受け取ります。提出済みの分も多少減点付きで受け取ります。遅延 or 再提出後はメールにて連絡ください。なお、減点付きになるので、細かな減点に対する修正は殆ど点数に影響しません。次回以降に役立ててください。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- 先週までの参考資料
- 振り返りを通した演習
- step 1: 演習用プロジェクトを新規に用意。Project Structures から src/main (Sources) / src/test (Tests) の設定。srcフォルダはSourcesから除外すること。
- step 2: クラス名Sample。意図的に間違えたaddメソッドを実装。
- step 3: JUnit5でテストコードを用意。assertEquals()で失敗するのを確認後、コードを修正。成功確認。
- step 4: GitHubで演習用のリポジトリ「sample2018-week6」を作成。リポジトリURL(Git URL)をコピー。
- step 5: IntelliJのプロジェクトに戻り、VCSメニューから Enable Version Control Integration。Gitを選択。~/.idea/ 以下のファイルをGit管理に追加するか尋ねられる場合には、No。
- step 6: VCS -> Git -> +Add、もしくは、VCS -> Commitを選び、Sample.java, TestSample.javaの2つだけを選択した状態にして、commit。
- step 7: VCS -> Git -> push。remoteをクリックして、push先を設定。ここでstep4で作成したgit hub リポジトリのURLを貼り付ける。エラーでなければ、そのままpush。これでgit hubに、commitした版が登録されたはず。
- これ以降は、適度なタイミング(メソッド単位なり動作確認して、版管理させたいタイミング)で add, commit, push を繰り返す。
- (先週の残り): オブジェクト指向2: 参照、継承 *継承のみ。教科書17章中心に。
- 授業録画アーカイブ: 1限目
- 関連リンク
- GitHub
- GitHub解説記事の例: [ 今さら聞けない!GitHubの使い方【超初心者向け】 | 「すごいGit楽しく学ぼう」を公開しました ]
- Progate (Git編)
- (前期資料) [ Gitによるバージョン管理入門 | 動画アーカイブ ]
- java.lang.annotation
- JUnit: [ 公式サイト | API doc ]
- 宿題
- 教科書読み: これまでの復習。余裕があれば16章予習。
第7回(11/13): オブジェクト指向3: 継承ツリー、protected修飾子、文法補足、例外補足とファイル書き込み
- 今週のお告げ: Slackに限らず指定された連絡手段は確認するようにしよう。使い方がわからないなら自分から相談しよう。何でもかんでも受け身のままだと、社会に出てからも同じことを繰り返します。
- 一部MacBook Proにデータ消失の不具合 SSD交換プログラム開始
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- 振り返り: 継承 教科書17.1節
- 継承ツリー: 教科書17.2節
- 文法の補足: mainメソッド、複数クラスを含むJavaファイル、インポート文(教科書16章)
- 例外についての補足+ファイル書き込みの例(教科書にありません)
- 授業録画アーカイブ: 1限目
- 関連リンク
- [ペアプロ演習] *時間あれば
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 演習2: クラス実装に慣れよう
- 提出先: Google driveの「ex2」。空フォルダのみ用意。
- 演習3: IntelliJ, Git, GitHubに慣れよう *Javaは無関係の演習。
- 提出先: Google driveの「ex3」。空フォルダのみ用意。
- 宿題
- [レポート課題] 課題レポート4: 例外に慣れよう。
〆切: 第9回の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- 教科書読み: 18章。
- [レポート課題] 課題レポート4: 例外に慣れよう。
- 2限目
プログラミング演習2: 赤嶺先生
第8回(11/20): ポリモーフィズム・多態性(継承とオーバーライドの利用)
- 今週のお告げ: デザインスクール2018 *若干名追加募集。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- ポリモーフィズム(教科書18章)
- コード例1: Member.java *教科書17章〜18.1節の例
- コード例2: ExamplePolymorphism
- 授業録画アーカイブ: 1限目
- [ペアプロ演習]
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 演習2: クラス実装に慣れよう
- 提出先: Google driveの「ex2」。空フォルダのみ用意。
- 演習3: IntelliJ, Git, GitHubに慣れよう *Javaは無関係の演習。
- 提出先: Google driveの「ex3」。空フォルダのみ用意。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
- 提出先: Google driveの「ex4」。空フォルダのみ用意。
- 宿題: これまでの復習&レポート課題。
第9回(11/27): InteliJ + gradle による構成管理、jarの利用、ドキュメンテーション
- アナウンス事項
- 予め「brew install gradle」を実行。
- 今週のお告げ: 授業1回寝る/欠席=約1786円也。授業料約26.7万。1学期に10科目履修するなら1科目約2.6万。15コマで割ると約1.7k。実際には国のお金も入ってるのでもっと高い金額が使われてます。勿論時間も浪費することになります。高い授業料払ってるのだから、大学を「使おう」。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- ビルドツール gradle の利用。オマケでmakeも。
- ドキュメントの書き方
- 参考: Javadoc ドキュメンテーションコメントの書き方 by @maku77
- 授業録画アーカイブ: [ 1限目(Gradle) | 2限目(JavaDoc) ]
- 宿題
- [レポート課題] 課題レポート5: Gradle&JavaDocに慣れよう。
- 補足: ***IntelliJ, Gradleを最新版にアップデートしよう。***
〆切: 第11回の講義開始前。
3ページ上限。ソースコードも提出してもらうので、レポート内にコード全体のコピペは不要。レポートには的を絞って書いて下さい。
- 事前告知: 2週間後に出すレポート6は「自由課題」です。
- これまでの復習+教科書19章。
- [ペアプロ演習]
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 演習2: クラス実装に慣れよう
- 提出先: Google driveの「ex2」。空フォルダのみ用意。
- 演習3: IntelliJ, Git, GitHubに慣れよう *Javaは無関係の演習。
- 提出先: Google driveの「ex3」。空フォルダのみ用意。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
- 提出先: Google driveの「ex4」。空フォルダのみ用意。
第10回(12/11): 抽象クラス(Abstract),インターフェース(Interface)と多重継承
- 今週のお告げ: 16単位未満除籍チェック(大学規則)のため、後期のレポート受付はあまり延ばせません。期末試験近づくとそれだけ忙しくなるので、出すつもりのある人は今のうちにやろう。(締切日を過ぎてから提出する人は、提出後にメール報告もして下さい)
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@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)と多重継承 *教科書の例は自分で読み解いてみよう。
- 宿題
- これまでの復習+教科書20章。
- レポート6の予告
- プログラミング2のレポートは「Javaで「課題レポート6」で最後。いくつか条件(下記参照)を設定しますが、その条件を守ればなんでも良いです。各自orペアチームで取り組むことを可とする(後日口頭試問あり)。
- 開発途中段階でのレポートとなっても構わない。tryした過程がわかるように報告しよう。
- <課題設定例>
- 指定条件を守っているなら、何を実装しても構わない。以下は課題例の紹介。
- 五目並べ、オセロ、ポーカー、迷路自動生成、迷路内で敵が徘徊するシステム、授業登録システム、、、
- AtCoder、言語処理100本ノックなどの課題に取り組むのも良い。
- [ペアプロ演習] *時間あれば。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 演習2: クラス実装に慣れよう
- 提出先: Google driveの「ex2」。空フォルダのみ用意。
- 演習3: IntelliJ, Git, GitHubに慣れよう *Javaは無関係の演習。
- 提出先: Google driveの「ex3」。空フォルダのみ用意。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
- 提出先: Google driveの「ex4」。空フォルダのみ用意。
第11回(12/18): 高度なデバッグ実行(スタックフレームの移動、条件ブレーク)
- 今週のお告げ: 記憶に頼るぐらいならカレンダー(とか道具)を使おう。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- 発展的な知識(教科書20章) *教科書の例は自分で読み解いてみよう。
- デバッガの利用
- コード例: noisy_file
- 授業録画アーカイブ: 1限目
- 宿題
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
〆切: 1/22(火)。
期末テスト等も被ってくる時期&C言語のレポートも後日出るので、余裕を持って取り組もう。
- これまでの復習。
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
- [ペアプロ演習] *時間あれば。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 演習2: クラス実装に慣れよう
- 提出先: Google driveの「ex2」。空フォルダのみ用意。
- 演習3: IntelliJ, Git, GitHubに慣れよう *Javaは無関係の演習。
- 提出先: Google driveの「ex3」。空フォルダのみ用意。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
- 提出先: Google driveの「ex4」。空フォルダのみ用意。
第12回(1/8): Thread入門
- 今週のお告げ:
分からない単語・フレーズ等は何かに記録しておき、後で調べるフラグを作りやすいようにしよう。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- Thread(スレッド)入門
- 実装例: GitHub: naltoma/example_java_thread
- 授業録画アーカイブ: 1限目
- 宿題
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
〆切: 1/22(火)。
期末テスト等も被ってくる時期&C言語のレポートも後日出るので、余裕を持って取り組もう。
- これまでの復習。
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
第13回(1/15): 振り返り2(実践的なプログラミング,継承,隠蔽,オーバーロード,オーバーライド,多態性)
- 今週のお告げ: バックアップを取ろう。PCは消耗品です。いつ壊れるかわからないので、重要度に応じて二重三重にバックアップを取ろう。(PCトラブルや一時レンタル相談は名嘉さん&翁長さんまで!)
- 採点結果
レポート3〜5、ミニテストの採点結果
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- 来週から使うC言語のコンパイラ確認
- ターミナルで「gcc --version」と実行。下記赤字のようにclangが動くならOK。動かない人(Command Not Found?)は、AppStoreを立ち上げ、XCodeを検索してインストールしよう。
oct:tnal% gcc --version Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 10.0.0 (clang-1000.11.45.5) Target: x86_64-apple-darwin17.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
- ターミナルで「gcc --version」と実行。下記赤字のようにclangが動くならOK。動かない人(Command Not Found?)は、AppStoreを立ち上げ、XCodeを検索してインストールしよう。
- [講義資料]
- 正規表現(Regular Expression; Regex)入門
- 授業録画アーカイブ: 1限目
- 宿題
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
〆切: 1/22(火)。
期末テスト等も被ってくる時期&C言語のレポートも後日出るので、余裕を持って取り組もう。
- これまでの復習。
- [レポート課題] 課題レポート6: Java最終課題(小作品制作、仕上げ)について
- [ペアプロ演習] *時間あれば。
- 演習1: Javaに慣れよう(主にString, char周りの演習)
- 提出先: Google driveの「ex1」。
- 演習2: クラス実装に慣れよう
- 提出先: Google driveの「ex2」。空フォルダのみ用意。
- 演習3: IntelliJ, Git, GitHubに慣れよう *Javaは無関係の演習。
- 提出先: Google driveの「ex3」。空フォルダのみ用意。
- 演習4: 迷路を散策してゴールを目指すプログラムを作ってみよう(IntelliJ + GitHub経由でペアプロ + クラス設計演習)
- 提出先: Google driveの「ex4」。空フォルダのみ用意。
第14回(1/22): C言語入門1(制御文、関数、コンパイル、実行)
- 今週のお告げ: My辞書を作ってみよう。新しい用語・概念が出てきたら、自分の言葉で説明してみよう。説明しきれないなら、復習に繋げよう。
- ミニテスト *アンケート
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- レポート6口頭試問調整(2〜3人で取り組んだ人のみ)
- [講義資料]
- 初めてのC言語
- 演習
- 提出先: Google driveの「ex5-c1」。空フォルダのみ用意。
- 授業録画アーカイブ: 1限目
- ちゃんとした教科書: C実践プログラミング 第3版
- C言語: 教科書代わり1: 初心者のためのポイント学習C言語
- C言語: 教科書代わり2: 苦しんで覚えるC言語(苦C)
- C言語: 動画解説+演習: paiza:C言語入門
- マニュアル: 【man 】 オンライン・マニュアルを参照する
- 授業「アルゴリズムとデータ構造」向け: [ ポインタ虎の巻 ]
関連リンク - [レポート課題] 課題レポート7(C言語レポート1): 点数が高い順に並べよう
- 〆切: 第16回(2/5)の講義開始前(レポート未提出者対応日)
- 上限4ページ。
- コードをGitHubで管理している場合にはGit URLを掲載すること。GitHub使わない場合にはコードの提出を忘れずに。
第15回(1/29): C言語入門2(ポインタ)
- 今週のお告げ: 大学は良くも悪くも一つのツール。合わないと思ったら辞めるのも良いが、まずは決めつける前に保護者・友人・教員らと相談を。
- ミニテスト
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義資料]
- 再掲: 初めてのC言語
- 再掲: 演習
- 構造体配列の利用: ポインタ、アドレス参照(逆参照)、->演算子
- ポインタと構造体の演習 *前回のがまだ終わってなければそっちから。
- 授業録画アーカイブ:
- 第16回(2/5): レポート未提出者対応日(2限目)。相談等があれば対応します。教室はプログラミング以外の自習等に使っても良いです。
- レポート受付: 2/8(金)までは保証。それ以降は採点間に合わない可能性あり。提出期限過ぎてるものは、提出後にメール報告すること。
- レポート6口頭試問調整(2〜3人で取り組んだ人のみ)
- おすすめ書籍: Google driveの「1年次向けおすすめ書籍」。プログラミング以外の書籍多数。
参考文献・サイト
- (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つのコンテンツは数分程度に細分化されてて、かつ、コードを自動採点するシステムが提供されています。独習の進め方としては「数分動画閲覧して、自動採点される課題に取り組む」を繰り返すことになります。)
- Progate(同上)
- ドットインストール(paiza同様、1つのコンテンツが数分程度の動画に細分化されて提供されてます。Python, Java以外にも多数の言語や環境について学べます。)
- プログラミングコンテスト(Web参加可能なコンテストサイトを整理してます。日時指定があるものが多いですが、過去問やコード例が公開されてるサイトもあります。)
- CodingBat(課題が多数例示されています。サイト上でコードの動作確認をすることも可能。)
- 言語処理100本ノック 2015(特定分野に偏っていますが、課題が難易度別に提供されてます。UNIX思想も含まれてます。)
- NLPプログラミングチュートリアル(こちらも特定分野に偏っていますが、「解説資料+演習+コード例」を見ながら勉強できます。)
- CodeIQ(いろんな人が提示する課題に挑戦できるサイト。面白い問題を探すもよし、手当たり次第解くのもよし、どういう組織が関わってるか嗅ぎまわるもよし。)
- codecademy
- その他
- ラーニング・パターン(曰く「よりよい学びを実現するためのコツを抽出・記述したもの」。)
- レポートの書き方
- draw.io