2016年度 : プログラミング1
- シラバス
 - 連絡先: メールアドレス・教員部屋はシラバス参照。
 - 講義用Slack: prog1-ie-univ-ryukyu.slack.com
 - 更新状況
 - 参考文献・サイト
 - 講義資料
    
- 第1回: 卓上プログラミングによる開発設計概観,関数と再利用
 - 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
 第3回: コード例を通したインタプリタとスクリプトの体験2: モジュール,クラス,関数とスコープ,式と変数,if文,コメント文- 第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
 第4回: 基本的な型と変数,ドキュメンテーション文字列,mathモジュール,オンラインヘルプ- 第4回: 関数の利用2、ループ処理(while文)
 第5回: リスト・タプルとfor文- 第5回: ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
 第6回: 制御文・条件文と関連予約語とコーディングスタイル- 第6回: 関数とスコープ、仕様、ユニットテスト、モジュール
 第7回: 関数,ユニットテスト,アサーション- 第7回: KISS原則とDRY原則、doctest補足、再帰と木構造
 第8回: 振り返り1(プログラムの実行,関数の理解,プログラミング基礎,コード読解)- 第8回: File I/O, Tuples, Jupyter Notebook, 振り返り
 第9回: バージョン管理- 第9回: 統合環境PyCharm、デバッガ、振り返り
 第10回: ファイル入出力と文字列パターンマッチング,設計と実装の検討- 第10回: リスト操作、文字列操作と調べ方
 第11回: インターネットへのアクセスと文字コード,エンコードとデコード- 第11回: これまでの振り返り(演習)
 第12回: 集合とディクショナリ,pickel- 第12回: ディクショナリと関数オブジェクト
 第13回: クラス1: クラスオブジェクト,インスタンスオブジェクト,メソッドオブジェクト,継承- 第13回: テストとデバッグ、関数設計
 第14回: クラス2: スコープと名前空間- 第14回: 例外とアサーション、matplotlibとpandas入門
 第15回: 振り返り2(実践的なプログラミング,クラスやメソッドとスコープ)- 第15回: バージョン管理システム Git入門
 
 
更新情報
- 4/14: 第1回の講義資料を授業版に差し替えました。
 - 4/21: 第2回の講義資料を公開しました。
 - 4/28: 第3回の講義資料を公開しました。これまでに出た質問への回答一覧をQ&Aページに整理しました。
 
第1回: 卓上プログラミングによる開発設計概観,関数と再利用
- 今週のお告げ: 自習(予習・復讐)を大切に(音楽やスポーツでは当然のように練習するじゃろ?)
 - ミニテスト: 今週はアンケート
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド] 第1回: 卓上プログラミングによる開発設計概観,関数と再利用
 - [授業録画アーカイブ] 4/14の授業 *要学科アカウント認証。
    
補足: 本来はモニタ画面の録画も記録されるはずですが、まだシステム調整中のようです。資料は上記の講義スライドを参照しながら閲覧すると良さそうです。
 - シラバス
 - 宿題: 講義スライド参照。
 - サンプルコードの動かし方: 講義スライド参照。
 - サポートのお話 by TA (Tatsuki IHA)
 
第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- [席指定] Googleドキュメント *学科のG-mailアドレスでログイン。
    
「ペア・プログラミング調整1.pdf」
 - 協力お願い: 講義風景の写真撮影をすることがあります。
 - 今週のお告げ:
    
「メリハリを付けよう」。リフレッシュする時間を確保しよう。まだ大学生活のリズムに慣れるだけで大変だと思いますが、勉強以上に大事なものは心身面での健康。体は資本なので「命を大事に」。課題等は貯めこんだり締切間近になってから焦って徹夜したりするのではなく、余裕を持って取り組もう。
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド] 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
 - [演習] 演習説明ページ: 初めてのレポート
    
- Googleドキュメントにログイン。
 - 右上の「ドライブで開く」をクリック。
 - 「week2」をダブルクリック。
 - 各自のペア番号(pair01〜pair33)のファイルを開く。
	
- 演習1 (1.1〜1.3)は、机の右に座ってる人がまずdriverを担当し、1.3まで終えたら左の人がdriverを担当してもう一度やり直そう。(同じことを2回繰り返すことになります)
 - 演習2 (2.1〜2.5)のdriver担当は、机の左に座ってる人。
 - 演習3 (3.1〜3.3)のdriver担当については、机の右に座ってる人。
 - 演習4 (4.1〜4.3)のdriver担当については、二人で話し合って、より苦手な人に練習させてあげよう。
 
 
(今回の)レポート作成手順 - レポートに含めるべき内容
	
- タイトル、作成日、報告者(学籍番号、氏名)
 - 課題毎に「課題説明、取り組み方、取り組んだ結果、考察」を記載。
 
 - 参考: レポートの書き方
 - 必修科目: 「日本語表現法入門」で学ぶはず。今学期受講してない人は後期に受講しよう。(クラスによって中身に違いがあるようなので、教科書・参考書に「理科系の作文技術」や「レポートの組み立て方」を指定しているクラスを選択するのをオススメします。
 
通常の作成手順  - [ペア・プログラミング] イメージ動画 | ペアプログラミングのやり方
 - [授業録画アーカイブ] 4/21の授業 *要学科アカウント認証。
 - 宿題: 講義スライド参照。
    
- Python 3.5.1 documentation (Python公式ドキュメント)
 - 予約語
 - Google Python Style Guide
 - ペアプログラミングのやりかた (結城浩さんのドキュメント)
 - (paiza) Python入門編1:プログラミングを学ぶ (全9回)
 - レポートの書き方
 
関連リンク  
第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- [席指定] Googleドキュメント *学科のG-mailアドレスでログイン。
    
「ペア・プログラミング調整1.pdf」
 - 今週のお告げ:
    
「道具に触れて試そう」。演奏家の楽器やスポーツ選手の用具に相当する、情報工学科の学生にとっての道具はPCであり、PCと対話するためのキーボード、応答を確認するためのモニタ、それらを操作するためのプログラミング言語である。これまでに演算子、変数、代入などを既に習っているが、これらがどのように動作するか試行錯誤してみよう。動かしてみないと相手(PC)は反応しないし、反応を見ないと分からないことはとても多い。
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド] 第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
 - [演習] 2件+終了後に進捗確認アンケート。
    
- Googleドキュメントにログイン。
 - 右上の「ドライブで開く」をクリック。
 - 前回の続き: 「week2」をダブルクリック。
 - 各自のペア番号(pair01〜pair33)のファイルを開く。
	
- (前回と同じ資料) [ペア・プログラミング] イメージ動画 | ペアプログラミングのやり方
 - 演習1 (1.1〜1.3)は、机の右に座ってる人がまずdriverを担当し、1.3まで終えたら左の人がdriverを担当してもう一度やり直そう。(同じことを2回繰り返すことになります)
 - 演習2 (2.1〜2.5)のdriver担当は、机の左に座ってる人。
 - 演習3 (3.1〜3.3)のdriver担当は、机の右に座ってる人。
 - 演習4 (4.1〜4.3)のdriver担当は、二人で話し合って、より苦手な人に練習させてあげよう。
 
 
[ 演習1回目: 初めてのレポート ] *前回の続き  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ] 4/28の授業 *要学科アカウント認証。
 - 宿題
    
- レポート課題: レポート1: 「より複雑な条件判定」
 - 教科書読み: 講義スライド参照。
 
- Python 3.5.1 documentation (Python公式ドキュメント)
 - 予約語
 - Google Python Style Guide
 - ペアプログラミングのやりかた (結城浩さんのドキュメント)
 - (paiza) Python入門編1:プログラミングを学ぶ (全9回)
 - レポートの書き方
 
関連リンク  
第4回: 関数の利用2、ループ処理(while文)
- 講義用Slack: prog1-ie-univ-ryukyu.slack.com *まだSlack入ってない人のみ*
 - 今週のお告げ:
    
「問題解決の仕方を学ぼう」。先輩・友人らに教えてもらいながら演習・課題に取り組むのはとても良いこと。だけど「言われたとおりに手を動かすだけで、その後一人で同じことを再現したり、応用したりできない」ままです。もしそういう状況になっていると、これは学びになっていません。コピー機と一緒です。そうではなく、「何故そういう風に取り組むのか」「今どう取り組めばよいのか」といった問題解決の仕方を学ぼう。
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
[良レポートセレクト結果] - 共有フォルダ->report1->「学生セレクト良レポート」
 - [講義スライド] 第4回: 関数の利用2、ループ処理(while文)
[デモで作成したファイル一覧] - ファイル一覧: demo-0512.zip - Markdown関連 - 拡張子md (Markdown) で書いたファイルは好みのテキストエディタで開けます。Emacsでも可。 - エディタの例: Atom, 参考記事 - Markdownの概要: Markdown記法 チートシート - Maindmap関連 - 拡張子mm (Maindmap) で書いたファイルはFreemindで開けます。 - Freemindの概要 - 拡張子htmlで書いたファイルは、ダブルクリックで開けます。 [議事録] - 議事録 by innparusu先生
 - [演習] 終了後に進捗確認アンケート。
    
今週は全く演習やる時間なかったので、来週に回します(来週は演習長めにやります)
- [ 進捗確認アンケート ]
 
 - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ] 5/12の授業 *要学科アカウント認証。
 - 宿題
    
- 教科書読み: 講義スライド参照。
 
 
第5回: ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
- 今週のお告げ:
    
「教科書を活用しよう」。1度目より2度目、2度目よりも3度目、、と繰り返す都度「分からなかった単語・概念・視点等」が減るように復習しよう。分からないまま、1度目と同じ読み方を繰り返すだけだと時間をかけてるだけで、学習になっていません。学習方法の参考: ラーニング・パターン。
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド] 第5回: ループ処理(for文)、range()関数とリストによるシーケンス集合表現
 - [演習] 終了後に進捗確認アンケート。
    
- Googleドキュメント内の「week2」。
	
- 演習1 (1.1〜1.3)は、机の右に座ってる人がまずdriverを担当し、1.3まで終えたら左の人がdriverを担当してもう一度やり直そう。(同じことを2回繰り返すことになります)
 - 演習2 (2.1〜2.5)のdriver担当は、机の左に座ってる人。
 - 演習3 (3.1〜3.3)のdriver担当は、机の右に座ってる人。
 - 演習4 (4.1〜4.3)のdriver担当は、二人で話し合って、より苦手な人に練習させてあげよう。
 
 
[ (week2) 演習1〜演習4: 初めてのレポート ] - 同じGoogleドキュメント内の「week3」。
	
- 演習5 (5.1〜5.5)のdriver担当は、5.4までを机の左に座っている人。5.5を机の右に座っている人。
 
 
[ (week3) 演習5: if文と関数 ] - 同じGoogleドキュメント内の「week4」。
	
- 「演習6.1, 6.2」、「演習6.3, 6.4」、「演習6.5」とでdriver/observerを交代しよう。席の左右どちらから始めても構いません。
 
 
[ (week4) 演習6: while文の利用とこれまでの復習 ]  - Googleドキュメント内の「week2」。
	
 - [ 進捗確認アンケート ]
 
- 教科書読み: 講義スライド参照。
 
- str.formatメソッド
 - 【5分で覚えるIT基礎の基礎】ゼロから学ぶ2進数 第4回 2進数で小数を表す方法
 - 倍精度浮動小数点数 (Double precision floating point number)
 
第6回: 関数とスコープ、仕様、ユニットテスト、モジュール
- 今週のお告げ:
    
「締切を守る工夫をしよう」。10科目前後の授業やアルバイト・遊びの約束等あれこれ積もるとどうしてもど忘れしてしまう可能性が高くなります。紙媒体でも電子媒体でも良いですが、未来の予定を忘れないようにメモろう。e.g., カレンダー、ToDo管理ツール等。未来の予定を見据えて計画的に動こう。
 - Google Classroom。参加コードはslack参照。
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド] 第6回: 関数とスコープ、仕様、ユニットテスト、モジュール
# 実行例, スライド p.10 % curl https://ie.u-ryukyu.ac.jp/~tnal/2016/prog1/week6_doctest.py -o week6_doctest.py % pydoc3 -w week6_doctest % open week6_doctest.html
 - [演習] 終了後に進捗確認アンケート。
    
- Googleドキュメント内の「week2」。
	
- 演習1 (1.1〜1.3)は、机の右に座ってる人がまずdriverを担当し、1.3まで終えたら左の人がdriverを担当してもう一度やり直そう。(同じことを2回繰り返すことになります)
 - 演習2 (2.1〜2.5)のdriver担当は、机の左に座ってる人。
 - 演習3 (3.1〜3.3)のdriver担当は、机の右に座ってる人。
 - 演習4 (4.1〜4.3)のdriver担当は、二人で話し合って、より苦手な人に練習させてあげよう。
 
 
[ (week2) 演習1〜演習4: 初めてのレポート ] - 同じGoogleドキュメント内の「week3」。
	
- 演習5 (5.1〜5.5)のdriver担当は、5.4までを机の左に座っている人。5.5を机の右に座っている人。
 
 
[ (week3) 演習5: if文と関数 ] - 同じGoogleドキュメント内の「week4」。
	
- 「演習6.1, 6.2」、「演習6.3, 6.4」、「演習6.5」とでdriver/observerを交代しよう。席の左右どちらから始めても構いません。
 
 
[ (week4) 演習6: while文の利用とこれまでの復習 ]  - Googleドキュメント内の「week2」。
	
 - [ 進捗確認アンケート ]
 
- レポート課題: レポート2: 「コード読解とユニットテスト」
 - 教科書読み: 講義スライド参照。
 
- チューリング・マシンとコンピュータ工学
 - doctest: Test interactive Python examples
 - Example Google Style Python DocstrizSngs
 
第7回: KISS原則とDRY原則、doctest補足、再帰と木構造
- [席指定] Googleドキュメントの「ペア・プログラミング調整2.pdf」
 - 今週のお告げ:
    
「ペアプログラミングは意思疎通しながら作業する」 ペアプログラミングでは、driverは実際に手を動かす作業者。何をやろうとしてるのか話しながら作業しよう。observerはその様子を眺め、気づいたことがあれば指摘しよう。分からないことがあれば質問しよう。相談できる時間を有効に使おう。(二人で悩んでも答えが出ない質問なら、先輩・TA・教員に質問しよう)
 - Google Classroom: やっぱり無しで。(直接アカウントと紐付けられないのは辛い)
    
レポート課題2の提出先もGoogleドキュメントの「report2」に変更。
 - 演習「week2, week3」に関する解答例とコード例をGoogleドキュメントの以下にアップロードしました。(week2, week3の演習はこれで終わりになります)
    
- week2/解答例
 - week3/解答例
 
 - レポート1の採点結果とコメントをGoogleドキュメントの以下にアップロードしました。
    
- report1/evaluation: 評価+コメント
 - report1/rankについて: 上記evaluationにおけるrankの補足説明
 
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド] 第7回: KISS原則とDRY原則、doctest補足、再帰と木構造
# 実行例, スライド p.10 % curl http://ie.u-ryukyu.ac.jp/~tnal/2016/prog1/maze_simple.py -o maze_simple.py % pydoc3 maze_simple.py
 - [演習]
    
- 演習レポート: Googleドキュメント内の「week7」。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ]  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
 - 宿題
    
- レポート課題: レポート2: 「コード読解とユニットテスト」 *提出締め切り: 6/9授業開始前。
	
提出先を変更しました。(課題ページに追加掲載済み)
 - 教科書読み: 講義スライド参照。
 
 - レポート課題: レポート2: 「コード読解とユニットテスト」 *提出締め切り: 6/9授業開始前。
	
 
第8回: File I/O, Tuples, Jupyter Notebook, 振り返り
- 今週のお告げ:
    
「機械翻訳語の解読に苦労しても得られるものは少ない」 機械翻訳された謎の文章中心で勉強しようとしてると、「綺麗な英語文章に触れていない」かつ「まともな日本語文章にも触れていない」状態になってしまいます。その結果として、授業で解説したとしても、誤訳やニュアンスの食い違い等が起きやすく、解説を理解できない可能性が高くなりがちです。誤訳された文章や、ニュアンスが伝わらない文章を読むのは逆に「解読するコスト」が高くつきがちなので、機械翻訳するぐらいなら英語のまま読む練習をしよう。できるだけ英英辞書使おう。
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
[良レポートセレクト結果] - 共有フォルダ->report2->「学生セレクト良レポート」
 - [講義スライド] 第8回: File I/O, Tuples, Jupyter Notebook
### スライド p.11 ### インストール手順(赤字はサンプルを動かすためのおまけ) % pip3 install jupyter % pip3 install matplotlib % curl https://ie.u-ryukyu.ac.jp/~tnal/2016/prog1/jupyter_example.ipynb -o jupyter_example.ipynb ### Jupyterの起動方法 % jupyter notebook ### Jupyterの終了方法 アプリを起動したターミナル上で「Ctrl+C」。
 - [演習]
    
- 演習レポート: Googleドキュメント内の「week7」。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ]  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
 - 宿題
    
- 教科書読み: 講義スライド参照。
 
- Python ドキュメント: [ open() | 16.2. io: ストリームを扱うコアツール ]
 - Dive into Python 3: [ 第11章 ファイル | 第2章 ネイティブデータ型 ]
 - Jupyter Notebook
 - Jupyterはデータとか数式いじる人には最強のツールかもしれない
 - Jupyter Notebook の使い方
 
関連リンク  
第9回: 統合開発環境PyCharm、デバッガ, 振り返り
- 今週のお告げ:
    
「人柱になろう」 環境はなるべく最新版を使おう。最新版が安定してるとは限らないが、既存のバグ修正等は終わっている可能性が高い。特別な理由がない限りはSoftware Update, brew update 等して最新版を使うようにしよう。問題が起きたらトラブルシューティングのチャンスなので、人柱になろう。
 - レポート2の採点結果とコメントをGoogleドキュメントの以下にアップロードしました。
    
- report2/evaluation2: 評価+コメント
 
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド] 第9回: 統合開発環境PyCharm、デバッガ *今回はスライドありません。
    
次の2点を追加修正: 初期設定: Mercurialの設定、PycharmProjectsディレクトリの用意
PyCharmからMac版PyCharm CE (Community Edition)をダウンロードしよう。
 - [演習]
    
時間がなかったため今回は無し。
 - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
    
- 6/16の授業 *終了後にリンク掲載。
 
 - 宿題
    
- レポート課題: レポート3: 「基本構造の解説」
 - 教科書読み
	
- 5.2 Lists and Mutability
 - (5.3 Functions as Objects) *一旦スキップ
 - 5.4 Strings, Tuples and Lists
 - (5.5 Dictionaries) *余裕があれば。
 
 
 
第10回: リスト操作、文字列操作と調べ方
- 今週のお告げ:
    
[勉強の仕方を学ぼう] エンジニアの世界は日々新しい技術が生み出される。初めての分野なら大学等の授業のような形式で学ぶのも良いが、似たような技術は独学で学べるようになろう。学び方を学ぼう。
P.S. そろそろ七夕の時期らしいので、、、先輩に書いてもらった短冊
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
- 始める前に: NumPyのインストール。(線形代数でやってるベクトル・行列演算等をサポートするパッケージ。演習は後日やる予定ですが、触ってみたい人は公式チュートリアル触ると良いかも。)
% pip3 install numpy
 - ペアの人と、レポート3で作成したレポートと元に説明しあってもらいます。具体的には4つの基本構造(if文、for文、while文、関数)について、下記を繰り返します。
	
- 教師役と生徒役の順番: if文は左の人が教師役。for文は右の人が教師役。以下交互に繰り返す。
 - 各々数分程度解説。開設時間は最小2分、最大4分。
 - 解説終了後、1,2分程度(合計5分)の質疑応答。内容に関する質問だけでなく、解説の仕方や応答の仕方に関する指摘・コメント等でも構いません。受講生側として聞いて疑問に思ったこと、気になったことを伝えよう。
 
 - 4つの基本構造について質疑応答まで終えたら、上記ミニテストに報告すること。
 
 - 始める前に: NumPyのインストール。(線形代数でやってるベクトル・行列演算等をサポートするパッケージ。演習は後日やる予定ですが、触ってみたい人は公式チュートリアル触ると良いかも。)
 - [講義スライド]: 第10回: リスト操作、文字列操作と調べ方
 - [演習] *時間がなければ次回。
    
時間がなかったため今回は無し。
- 演習レポート: Googleドキュメント内の「week7」。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ]  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
    
- 6/30の授業 *終了後にリンク掲載。
 
 - 宿題
    
- レポート課題: レポート3: 「基本構造の解説」
 - 教科書読み
	
- 5.5 Dictionaries
 
 - 公式チュートリアル (概要理解にオススメ)
 
 - 関連リンク
 
第11回: これまでの振り返り(演習)
- 今週のお告げ:
    
[将来の目標・やりたいことが決まってないなら英語・数学・プログラミングのランクアップを目指そう。] 目標によっては他大学への進学を視野に入れた方が良いケースがあります。この時、基礎が足りてなくて進学できない(テストで落ちる)ことが少なくありません。後になって後悔するぐらいなら、今のうちから基礎を固めよう。特に英語・数学・プログラミングは多くの分野におけるコアです。
- Wikipeida: STEM教育
 - 記事例: STEM教育とは、科学・数学・技術領域に重点をおく注目される教育方針
 - 文系理系等の分野を問わず、STEMは必須(やってて当然)という位置づけになりつつある。
 
 - ミニテスト *演習進捗確認。授業終了時に回答すること。
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド]: なし
 - [演習]
    
- 演習レポート: Googleドキュメント内の「week7」。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ] - 演習レポート: Googleドキュメント内の「week11」。
 
[ (week11) 演習8: File I/Oとこれまでの復習(CSV形式データの読み込みと集計処理) ]  - Q & A: これまでに出た質問への回答一覧。
 - 宿題
    
- 教科書読み
	
- 5.3 Functions as Objects
 - 6. Testing and Debugging (読めるところまで)
 
 
 - 教科書読み
	
 
第12回: ディクショナリと関数オブジェクト
- [席指定] Googleドキュメント *学科のG-mailアドレスでログイン。
    
「ペア・プログラミング調整3.pdf」
 - 今週のお告げ:
    
[教科書・参考書を活用しよう] Web上には参考になる記事も数多くあるが、Web全体としては整理されておらず、前後関係や背景知識を知らないと良質の記事であっても役に立たないことや、古い記事で今では誤っている内容であったりすることが少なくない。整理された書籍を繰り返して読みなおし、分からないことを整理しながら減らしていこう。(どんな書籍がオススメか、教職員・先輩・友人らに聞くのも手です)
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド]:
 - [演習]
    
- 新しいペアで「演習7の続き」からやります。
 - 新しいペアで互いに「どこまで終わったか」を確認し、先に進んでいた方が「差分」について解説してください。解説は、「week7」の該当レポートや手元に保存してあるコード等を使って構いません。解説を聞く方は何か気になることがあれば聞こう。
 - 解説を終えたら、先に進んでいた方の続きから取り組みましょう。
 - 今週からはペアが変わるため「week7-2」を利用して下さい。その際、解説を終えたところまでは削除して、その続きからやってください。
 - e.g., 例えば7.4から取り組む場合、week7-2の該当pair番号の新レポートを開き、7.3までを削除してから取り組んで下さい。(補足: ここで削除させてるのは不要なら削除しようというだけのことです。コード共有など、残していたほうが都合が良いなら削除しなくてもOK)
 
[取り組み方] - 演習レポート: Googleドキュメント内の「week7-2」。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ] - 演習レポート: Googleドキュメント内の「week11」。
 
[ (week11) 演習8: File I/Oとこれまでの復習(CSV形式データの読み込みと集計処理) ]  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
    
- 7/7の授業 *終了後にリンク掲載。
 
 - 宿題
    
- 教科書読み
	
- 6. Testing and Debugging
	    
- 6.1 Testing については、ざっくりと読む(太字注意して用語の意味を掴む)ぐらいでok。
 - 6.2 Debugging については、全体の流れを読み取ろう。特に6.2.3節はデバッグ時の取り組み方が整理されてます。
 
 
 - 6. Testing and Debugging
	    
 - 予告(調整中)
	
- 来週にでも最終レポート課題を出す予定です。締切日はテスト期間の授業日(8/4(木))を予定しています。他科目との兼ね合いもあると思いますので早めに取り組むと楽になるでしょう。
 - レポート70%の内訳は、「レポート1:レポート2:レポート3:レポート4=10%:20%:10%:30%」になる予定です。
 
 
 - 教科書読み
	
 - 締切を過ぎた場合のレポート提出について
    
- 8/18(木)までは受け取ります。病気等何らかの理由で提出がこれ以上遅れる場合には「8/18(木)までに個別相談」ください。事前相談がない場合、原則として受け取りません。
 - 各レポートの締切を過ぎてから提出する人は、アップロード後にメールで報告下さい。
 
 
第13回: テストとデバッグ、関数設計
- 今週のお告げ:
    
[何をやるにしても体が資本] 好き嫌いせずに適度にバランス良く食べよう。それなりに体動かそう。座ってるだけじゃ絶対に体が錆びるし、20代のうちから腰痛いとか言ってる人見ると将来が怖いよ。。。なるべく夜更かしは避けて規則正しい生活で過ごせるようにスケジュールしてみよう。
自分自身の問題だけじゃなく、外的要因(ホコリ/カビ/etc.)も十分あり得るので身の回りにも気を配ろう。勿論共有の自習室等は皆で綺麗に保ってください。
(通常と違って)体調不良がやけに長引いてるとか、原因が良く分からない場合には病院なり保健管理センターなりで相談してみよう。自己判断だけで長期間放置するとそれだけ悪化してしまうこともあるので、体のためにも時間を作って労ってあげよう。
課題があるから、とかでも無理のし過ぎで体を壊してしまっては本末転倒です。そういう時には個別に担当の先生と相談してみてください。必ずしも考慮してくれるとは限りませんが、自分からそういう相談をすることも含めて社会勉強です。
 - レポート3の採点結果とコメントをGoogleドキュメントの以下にアップロードしました。
    
- report3/evaluation3: 評価+コメント
 
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド]:
 - [演習]
    
- 演習レポート: Googleドキュメント内の「week7-2」。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ] - 演習レポート: Googleドキュメント内の「week11」。
 
[ (week11) 演習8: File I/Oとこれまでの復習(CSV形式データの読み込みと集計処理) ]  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
    
- 7/14の授業 *終了後にリンク掲載。
 
 - 宿題
    
- 教科書読み
	
- 7. Exceptions and Assertions *実際にコード例を動かして動作確認しながら読もう。
 - 補足: 公式ドキュメントの方が動かしやすい(ので結果として読みやすい)かもしれません。
 
 - レポート課題: レポート4: 「力技で解く巡回セールスマン問題」
	
課題詳細2番以降は調整中。
 
 - 教科書読み
	
 - 締切を過ぎた場合のレポート提出について
    
- 8/18(木)までは受け取ります。病気等何らかの理由で提出がこれ以上遅れる場合には「8/18(木)までに個別相談」ください。事前相談がない場合、原則として受け取りません。
 - 各レポートの締切を過ぎてから提出する人は、アップロード後にメールで報告下さい。
 
 
第14回: 例外とアサーション, matplotlibとpandas入門
- イベント告知: レキサスてくてくトーク Vol.1 (7/30(土), 14時-16時)
 - 今週のお告げ:
    
[量は質を生む] 「量より質」と言われることもありますが、質の高い学びを取捨選択できるレベルになるまでは地道に量をこなすしかないことも少なくありません。何か一つの道でスペシャリストになるまでは量をこなすことを意識しよう。スポーツや芸能で普段からの地道な練習が重要視されてるのと同じように、勉学においても積み重ねが重要です。
 - ミニテスト
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド]:
 - [演習]
    
- 演習レポート: Googleドキュメント内の「week7-2」。
 - 解答例を「week7-2/解答例-week7」に置きました。終わった部分について確認してみよう。まだの所については先に回答を読んで理解する形でも、ペアプロで終わってから参照する形でも構いません。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ] - 演習レポート: Googleドキュメント内の「week11」。
 
[ (week11) 演習8: File I/Oとこれまでの復習(CSV形式データの読み込みと集計処理) ]  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
    
- 7/21の授業 *終了後にリンク掲載。
 
 - 宿題
    
- 教科書読み
	
- 8 Classes and Object-Oriented Programming (余裕のある人)
	    
クラスとオブジェクト指向プログラミングの解説は後期にやります。
 
 - 8 Classes and Object-Oriented Programming (余裕のある人)
	    
 - レポート課題: レポート4: 「力技で解く巡回セールスマン問題」
	
課題詳細2番以降も一応確定。読んでて意味がわからないところがあれば質問して下さい。
 
 - 教科書読み
	
 - 締切を過ぎた場合のレポート提出について
    
- 8/18(木)までは受け取ります。病気等何らかの理由で提出がこれ以上遅れる場合には「8/18(木)までに個別相談」ください。事前相談がない場合、原則として受け取りません。
 - 各レポートの締切を過ぎてから提出する人は、アップロード後にメールで報告下さい。
 
 
第15回: バージョン管理システム Git入門
- 今週のお告げ: 授業評価アンケート
    
締切:8/5。学生運営で動いているプロジェクト。誰が何を回答したのかは教職員にはバレません。後輩へより良い授業を提供するためにも前向きなコメントをお願いします。
来週 8/4(木) は、授業はありませんがレポートを出し終えてない人は来てください。
 - ミニテスト *進捗確認。演習終了後に回答。
    
補足: 学科のG-mailアドレス「e1657xx@ie.u-ryukyu.ac.jp」でログインしてください。
 - [講義スライド]:
    
- Git入門
 - 時間があれば振り返り: 第1回: 卓上プログラミングによる開発設計概観,関数と再利用
 - おまけ: これまでの授業解説では抜けてた補足
 
 - [演習]
    
- 演習レポート: Googleドキュメント内の「week7-2」。
 - 解答例を「week7-2/解答例-week7」に置きました。終わった部分について確認してみよう。まだの所については先に回答を読んで理解する形でも、ペアプロで終わってから参照する形でも構いません。
 
[ (week7) 演習7: doctest, while文の利用とこれまでの復習(簡易ガチャ・シミュレータ) ] - 演習レポート: Googleドキュメント内の「week11」。
 - 解答例は後日公開予定。
 
[ (week11) 演習8: File I/Oとこれまでの復習(CSV形式データの読み込みと集計処理) ]  - Q & A: これまでに出た質問への回答一覧。
 - [授業録画アーカイブ]
    
- 7/28の授業 *終了後にリンク掲載。
 
 - 宿題
    
- レポート課題: レポート4: 「力技で解く巡回セールスマン問題」
	
課題詳細2番以降も一応確定。読んでて意味がわからないところがあれば質問して下さい。
 
 - レポート課題: レポート4: 「力技で解く巡回セールスマン問題」
	
 - 締切を過ぎた場合のレポート提出について
    
- 8/18(木)までは受け取ります。病気等何らかの理由で提出がこれ以上遅れる場合には「8/18(木)までに個別相談」ください。事前相談がない場合、原則として受け取りません。
 - 各レポートの締切を過ぎてから提出する人は、アップロード後にメールで報告下さい。
 
 
参考文献・サイト
- 教科書・参考書
    
- 教科書: Introduction to Computation and Programming Using Python, Revised And Expanded Edition: 授業では「Part 1 (Chapter 8まで)」をメインに取り扱います。約100ページ。これを4回は読もう。余裕がある人は Chapter 9 以降に取り組んでみよう。必ずしも順番通りに進める必要はなく、目次や索引を眺めて興味のあるところから手を付ける良いです。
 - UNIXという考え方: いわゆるUNIX哲学(下記)を学べる本。ただし癖の強い訳語も多いので、やや読みにくい。
	
[UNIX哲学] 「一つのことを行い、またそれをうまくやるプログラムを書け。協調して動くプログラムを書け。標準入出力(テキスト・ストリーム)を扱うプログラムを書け。標準入出力は普遍的インターフェースなのだ。」
 - なぜ、あなたはJavaでオブジェクト指向開発ができないのか: Javaでの話になっていますが、プログラミング全般に共通する話題です。プログラミングにアレルギー持ってる人向けの「取り組み方処方箋」。
 - オブジェクト指向でなぜつくるのか 第2版: プログラミングの歴史を踏まえつつ、どのような意図で言語が開発・改定されされているのかという側面から「オブジェクト指向」の特徴を紐解く一冊。
 - 情報科学入門 Rubyを使って学ぶ: 本講義で使用する教科書の Chapter 9 以降に近い位置づけ。Python以外にも触ってみたい、情報科学ってなんだろうという視点から取り組んでみたいという人向け。
 - 大学生のためのリサーチリテラシー入門: 研究のための8つの力: 物事についてどう調べ、整理し、まとめるのかという「大学生に求められる力」を整理し、取り組み方について解説している本。全員、早い段階で一読することを強くお勧めします。
 - Learning Python: ガチでPythonマスターを目指したい人向け。1600ページ。
 - Pythonチュートリアル 第3版: 例題中心に進みますので、動かしながら動作を確認するには向いています。ただし、これだけだと「言われたことをやる」レベルに留まりがち。
 
 - 独習サイト (主にPython)
    
- Code Studio(言語を問わず、用意されたブロックを組み合わせてパズルを解く形でプログラミング全般の考え方を学べるサイト。)
 - paiza(初めてプログラミングする人向けの動画講義。1つのコンテンツは数分程度に細分化されてて、かつ、コードを自動採点するシステムが提供されています。独習の進め方としては「数分動画閲覧して、自動採点される課題に取り組む」を繰り返すことになります。)
 - ドットインストール(paiza同様、1つのコンテンツが数分程度の動画に細分化されて提供されてます。Python以外にも多数の言語や環境について学べます。)
 - プログラミングコンテスト(Web参加可能なコンテストサイトを整理してます。日時指定があるものが多いですが、過去問やコード例が公開されてるサイトもあります。)
 - CheckiO(課題をこなすことで先にすすめるゲーム型のサイトです。コード例も豊富。基本的には英語。)
 - CodingBat(課題が多数例示されています。サイト上でコードの動作確認をすることも可能。)
 - 言語処理100本ノック 2015(特定分野に偏っていますが、課題が難易度別に提供されてます。UNIX思想も含まれてます。)
 - NLPプログラミングチュートリアル(こちらも特定分野に偏っていますが、「解説資料+演習+コード例」を見ながら勉強できます。)
 - Python公式ドキュメント: [ 英語版 | 日本語版 ]
 - pygame(ゲーム開発を通して学びたい人向け?)
 - Code School(一部無料コースあり)
 - CodeIQ(いろんな人が提示する課題に挑戦できるサイト。面白い問題を探すもよし、手当たり次第解くのもよし、どういう組織が関わってるか嗅ぎまわるもよし。)
 - codecademy
 
 - その他
    
- ラーニング・パターン(曰く「よりよい学びを実現するためのコツを抽出・記述したもの」。)
 - レポートの書き方
 - draw.io