2017年度 : プログラミング1
- シラバス(工学部工学科「工共114」と、情報工学科「情105」の同時開講)
- 講義用Slack: prog1-ie-univ-ryukyu.slack.com
- 連絡先:
- 當間愛晃 (Naruaki TOMA)@工1-705
- オフィスアワー: 木3
- E-mail: tnal@ie.u-ryukyu.ac.jp
- Twitter: @naltoma
- サポーターの皆さん: 技術職員&TA (Teaching Assistanct)
- 技術職員・翁長さん@工1-402: 授業サポート、マシントラブルサポート等を担当。
- 牛島さん@名嘉村研: 主に授業中のサポートを担当。
- 前城さん@名嘉村研: 主にレポートチェックを担当。
- 更新状況
- 講義資料
- 第1回: 卓上プログラミングによる開発設計概観,Pythonインタプリタの起動と逐次処理・変数の利用
- 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- 第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- 第4回: 関数の利用2、ループ処理(while文)
- 第5回: デモ、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
第6回: 関数とスコープ、仕様、ユニットテスト、モジュール- 第6回: デバッグ実行、関数とスコープ、仕様、ユニットテスト、モジュール
第7回: KISS原則とDRY原則、doctest補足、再帰と木構造- 第7回: ユニットテスト・モジュールの補足、KISS原則とDRY原則、doctest補足、再帰と木構造
第8回: File I/O, Tuples, Jupyter Notebook, 振り返り- 第8回: File I/O, Tuples, 振り返り
第9回: 統合環境PyCharm、デバッガ、振り返り- 第9回: ユニットテスト補足、リスト操作の基本、調べ方、振り返り
第10回: リスト操作、文字列操作と調べ方- 第10回: リスト操作の補足、文字列操作、シーケンス処理のサマリ
第11回: これまでの振り返り(演習)- 第11回: ディクショナリ、Numpy入門
第12回: ディクショナリと関数オブジェクト- 第12回: テストとデバッグ、関数設計
第13回: テストとデバッグ、関数設計- 第13回: バージョン管理システム Git入門、break, continue, 特別変数補足
第14回: 例外とアサーション、matplotlibとpandas入門- 第14回: 例外とアサーション、break, continue, 特別変数補足
第15回: バージョン管理システム Git入門- 第15回: 振り返りと今後の道標
- 参考文献・サイト
更新情報
- 3/21: 2016年度の実施状況を踏まえ、2017年度版を準備し始めました。
第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- 今週のお告げ: 自習(予習・復讐)を大切に(音楽やスポーツでは当然のように練習するじゃろ?)
- ミニテスト: 今週はアンケート。
補足: 学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [今日の達成目標]
- プログラミングには3つのステップ(理解、整理、翻訳)があることを理解する。
- 翻訳する際には2つの原則(KISS原則、DRY原則)があるらしいことを覚えておく。
- 教科書のコード例を動かすことができる。
- Python2と3にプログラム上の違いがあることを知る。
- 変数と等号の動作イメージを共有する。
- 授業の達成目標・評価方法等についてシラバスを参照して確認することができる。
- [講義スライド] 第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- [授業録画アーカイブ] 4/13の授業
- シラバス
- 宿題: 講義スライド参照。
- サンプルコードの動かし方: 講義スライド参照。
- 課題レポート1: print()関数に慣れよう
- 提出先: Googleドライブのreport1内の各自アカウント名。今回はテンプレートを用意済み。
- 〆切: 第3回(4/27)の講義開始前
第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- [席指定] Google drive -> 「ペア・プログラミング調整1.pdf」
- 環境設定: ターミナルを起動して、以下の行をコピペして実行。
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
- 今週のお告げ:
タスク管理をしよう。カレンダーを共有するもよし、ToDoアプリ使うも良し、メモ帳持ち歩くも良し。自分好みの道具を探してみよう。ついでに「どこに不満を感じるか」「自分だったらどう作るか」考えてみよう。
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 基本的な型(int, float, str, boolean)があること、型の確認方法type()を知る。
- 比較演算子・論理演算子・変数・代入文を理解する。
- 型が異なると演算子の解釈も変わることを理解する。
- print()書式を覚える。
- インタプリタ実行とファイル実行を使い分けられるようになる。
- 読みやすいコードの指標の一つとして命名規則を意識する。
- help()やオンラインドキュメントの存在を知る。
- ペア・プログラミングを通して考えてることを言葉にし、気になったことを言葉にする。
- [講義スライド] 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- [授業録画アーカイブ] 4/20の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google driveにログイン。(要学科アカウント)
- 「ex1」をダブルクリック。
- 各自のペア番号(pair01〜pair36)のファイルを開く。
- ペア・プログラミングのやり方
- 演習1(1.1〜1.3)は、机の右に座ってる人がまずdriverを担当し、1.3まで終えたら左の人がdriverを担当してもう一度やり直そう。(同じことを2回繰り返すことになります)
- 演習2は、サブ設問毎にのdriver担当を交代しよう。2.1は机の左に座ってる人がやって、2.2は右の人。以降はこれを繰り返そう。
- 演習3は、3.1を右の人からdriverやろう。
- 演習4は、二人で話し合って、より苦手な人に練習させてあげよう。
[ 演習1回目: 初めてのペア・プログラミング ] - 宿題: 講義スライド参照。
- 課題レポート1: 〆切: 第3回(4/27)の講義開始前
第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- 環境設定: ターミナルを起動して、以下の3行をコピペして実行。
brew tap ie-developers/ie brew tap caskroom/cask brew cask install ie-developers/ie/mactex
- 今週のお告げ:
イベント告知に置き換え: [ Unity初心者勉強会 in 琉球大学(@ryugebu) | PythonBeginners沖縄 9 ]
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- if文を使い、条件分岐できるようになろう。
- ブロックを指定するためにはインデントを使い、整えよう。
- ユーザ入力を受け取るにはinput()を使おう。
- 文字列操作には結合・インデックス指定・スライス操作があることを覚えよう。
- 型を変更するにはキャストしよう。
- オリジナルの関数(≒レシピ)を定義できるようになろう。
- [講義スライド] 第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- [授業録画アーカイブ] 4/27の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google driveにログイン。(要学科アカウント)
- 「ex1」をダブルクリック。
- 各自のペア番号(pair01〜pair36)のファイルを開く。
- ペア・プログラミングのやり方
- 演習1(1.1〜1.3)は、机の右に座ってる人がまずdriverを担当し、1.3まで終えたら左の人がdriverを担当してもう一度やり直そう。(同じことを2回繰り返すことになります)
- 演習2は、サブ設問毎にのdriver担当を交代しよう。2.1は机の左に座ってる人がやって、2.2は右の人。以降はこれを繰り返そう。
- 演習3は、3.1を右の人からdriverやろう。
- 演習4は、二人で話し合って、より苦手な人に練習させてあげよう。
[ 演習1回目: 初めてのペア・プログラミング ] - 宿題: 講義スライド参照。
- 課題レポート2: うるう年判定関数を作ってみよう
- 提出先: Googleドライブのreport2内に、各自アカウント名でフォルダを作成し、そこに提出すること。。今回からテンプレートなし。
- 〆切: 第5回(5/18)の講義開始前。GW挟むので注意。
第4回: 関数の利用2、ループ処理(while文)
- 今週のお告げ:
「教科書を活用しよう」。1度目より2度目、2度目よりも3度目、、と繰り返す都度「分からなかった単語・概念・視点等」が減るように復習しよう。分からないまま、1度目と同じ読み方を繰り返すだけだと時間をかけてるだけです。学習になっていません。教科書の使い方の例。
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- ローカル変数の有効範囲(スコープ)を理解しよう。
- 反復処理を理解し、記述できるようになろう。
- これまでの基本道具(型・演算・フロー制御・関数)をしっかり復習しよう。
- 例1: 第4回目までに出てきた道具一覧 (by FreeMind)
- 例2: 教科書 pp.287-298
- [講義スライド] 第4回: 関数の利用2、ループ処理(while文)
- 作図をwebサービスとして提供している例: draw.io
- コード例。ターミナル上で下記2行を実行。%はプロンプトの意味。
% curl http://ie.u-ryukyu.ac.jp/~tnal/2017/prog1/loop.py -o loop.py % python3 loop.py
- [授業録画アーカイブ] 5/11の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex1」。
[ 演習1〜演習4: 初めてのペア・プログラミング ] - Google drive内の「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 宿題: 講義スライド参照。
- 課題レポート1: 採点結果: Google driveのscore-report1。
- 課題レポート2: 〆切: 第5回(5/18)の講義開始前。
第5回: デモ、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
- 今週のお告げ: 「メリハリを付けよう」。リフレッシュする時間を確保しよう。まだ大学生活のリズムに慣れるだけで大変だと思いますが、勉強以上に大事なものは心身面での健康。体は資本なので「命を大事に」。課題等は貯めこんだり締切間近になってから焦って徹夜したりするのではなく、余裕を持って取り組もう。
- ミニテスト(今日は良レポート探し)
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
Google driveも別タブor別ウィンドウどちらかで開こう。
- [今日の達成目標]
- KISS原則を踏まえて小さく作ろう。分割の仕方を考えよう。
- シーケンス集合に対する反復処理を書けるようになろう。
- 小数を使う際には丸め誤差と桁あふれに注意。
- [講義スライド] 第5回: デモ、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
- [授業録画アーカイブ] 5/18の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex1」。
[ 演習1〜演習4: 初めてのペア・プログラミング ] - Google drive内の「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 宿題: 講義スライド参照。
- 課題レポート3: 基本構造の解説
- 提出先: Googleドライブのreport3内に、各自アカウント名でフォルダを作成し、そこに提出すること。
- 〆切: 第7回(6/1)の講義開始前。
第6回: デバッグ実行、関数とスコープ、仕様、ユニットテスト、モジュール
- 環境構築: Thonnyをインストールするため、ターミナルを開いて以下を実行。pipはPythonの外部モジュールを管理(インストール・削除)するためのツールです。pipはPython2用。pip3はPython3用。
pip3 install thonny
- 今週のお告げ: 「学習サポートルームを活用しよう」。news-ieでの告知文。課題や自分の興味のあるテーマ、先輩らとの接点作り等に活用しよう。
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 初心者向け統合開発環境Thonnyを使って、デバッグ実行できるようになろう。
- デバッグ実行を通して、ソースコードを動作確認できるようになろう。
- (コンピュータの原型である万能チューリングマシンについて調べてみよう。)
- 関数の引数にはデフォルト値を設定できる!
- 関数を呼び出しとスタックフレームの追加、名前空間の遡り参照を理解しよう。
- ドキュメンテーションとユニットテストを用いた開発に慣れよう。
- from, importによるモジュール読み込みを使えるようになろう。
- 補足資料: Thonny によるデバッガの利用
- [講義スライド] 第6回: 関数とスコープ、仕様、ユニットテスト、モジュール
curl https://ie.u-ryukyu.ac.jp/~tnal/2017/prog1/week6_doctest.py -o week6_doctest.py pydoc3 -w week6_doctest open week6_doctest.html
- [授業録画アーカイブ] 5/25の授業
- ([ペアプロ演習] 二人で話し合いながらやろう。)*今日は時間取れないかも。
- 宿題: 講義スライド参照。
- 課題レポート1,2: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート3: 〆切: 第7回(6/1)の講義開始前。
第7回: ユニットテスト・モジュールの補足、KISS原則とDRY原則、doctest補足、再帰と木構造
- [席指定2] Google drive -> 「ペア・プログラミング調整2.pdf」
- PyCharmのインストール
- 公式サイトに行き、Download -> Community版をダウンロード。
- ダウンロードしたdmgファイルをダブルクリック。「アプリケーション」フォルダに、ドラッグ&ドロップ。
- 今週のお告げ: 「問題解決の仕方を学ぼう」。学習サポートルーム等、先輩・友人らに教えてもらいながら演習・課題に取り組むのはとても良いこと。だけど「言われたとおりに手を動かすだけだと、その後一人で同じことを再現したり、応用したりできない」ままです。もしそういう状況になっていると、これは学びになっていません。コピー機と一緒です。そうではなく、「何故そういう風に取り組むのか」「今どう取り組めばよいのか」といった問題解決の仕方を学ぼう。
- 課題レポート2の採点結果:
Google driveの「score-report2」。
- ミニテスト: アンケートに代替。(ペアプロ開始前に実施)
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 先週の補足・残り: ユニットテストを用いた開発に慣れよう。
- 先週の補足・残り: from, importによるモジュール読み込みを使えるようになろう。
- KISS原則、DRY原則を意識して、読みやすいコードとなるよう工夫してみよう。
- 再帰関数の動作を理解できるようになろう。
- 通常は大域変数を使う必要はありません。使わないで下さい。
- PyCharmで、ブレークポイント設定してデバッグ実行(step into)できるようになろう。
- PyCharmで、スタックフレームを移動できるようになろう。
- [講義スライド] 前回の続き(ユニットテストとモジュール) + 第7回: KISS原則とDRY原則、再帰と木構造
- 補足資料: ユニットテスト演習
- 補足資料: PyCharmを使ってみよう(デバッグ入門編)
- コード例: python_demo_module(モジュールの例、再帰呼び出しの例)
- [授業録画アーカイブ] 6/1の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex1」。
- 「ex1/0-example」に回答例を用意しました。自分たちの回答と見比べてみよう。回答例が理解できない場合には質問しよう。
[ 演習1〜演習4: 初めてのペア・プログラミング ]*終了 - Google drive内の「ex5_2」。
- 今日から新しいペアになるので、演習結果を記録するページを新しく用意しました。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 宿題: 講義スライド参照。
- 課題レポート1,2,3: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート4: コード読解
- 提出先: Googleドライブのreport4内に、各自アカウント名でフォルダを作成し、そこに提出すること。
- 〆切: 第9回(6/15)の講義開始前。
第8回: File I/O, Tuples, 振り返り
- 今週のお告げ: 「教科書・参考書を活用しよう」Web上には参考になる記事も数多くあるが、Web全体としては整理されておらず、前後関係や背景知識を知らないと良質の記事であっても役に立たないことや、古い記事で今では誤っている内容であったりすることが少なくない。整理された書籍を繰り返して読みなおし、分からないことを整理しながら減らしていこう。(どんな書籍がオススメか、教職員・先輩・友人らに聞くのも手です)。
- ミニテスト: レポート3解説後のアンケートに代替。
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- 4名1グループ。左前から時計回りに解説者を担当。最初は左前の人がif文、2回目は右前の人がwhile文、3回目は右後ろの人がfor文、4回目は左後ろの人がdef文について解説すること。
- 欠席・レポート未作成等で不在の場合には、解説担当を飛ばして下さい。
- 1回あたり、解説時間2〜3分+質疑応答1分程度。
- 質疑応答まで終えたら次の解説担当が発表準備。準備し終えたら、担当者は手を上げて待ってて下さい。
- def文まで終わったら、ミニテストにアンケート記入。(うまく解説できたか、反省したい点はあるか、友人らの解説を見て真似したい点はなかったか)
- [今日の達成目標]
- テキストファイルを読み書きできるになろう(with構文推奨)。
- 新しいデータ型タプルの特徴を理解しよう。
- [講義スライド] 第8回: File I/O, Tuples, 振り返り
- open() (2. Built-in Functions)
- 16.2. io — Core tools for working with streams
- Dive Into Python 3, 第11章 ファイル
- Dive Into Python 3, 第2章 ネイティブデータ型
関連リンク - [授業録画アーカイブ] 6/8の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex5_2」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - Google drive内の「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - 宿題: 講義スライド参照。
- 課題レポート1,2,3: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート4: 〆切: 第9回(6/15)の講義開始前。
第9回: ユニットテスト補足、リスト操作の基本、調べ方、振り返り
- 今週のお告げ: 「ターミナルの、実行した際の出力ログをちゃんと読もう。」
コンピュータはヒトと違い、指示した通りにしか処理しません。適切に処理できたのかどうかは、(ユニットテストのようなケースを除くと)一般的には自分で判断できません。実行したユーザが自分で判断する必要があります。判断できるようになるためにも、どのような情報が出力されているのか読むようにしよう。
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- 課題レポート3の採点結果:
Google driveの「score-report3」。
- オープンキャンパスヘルプ学生の調整
- 7/15(土), 丸一日。主な仕事は「ツアー誘導、高校生らとの懇談会」。バイト代5000円前後の見込み。
- 1〜4年次*2名、合計8名。入学種別(AO・推薦・前期・後期・3年次編入)で調整。
- 1年次2名: 前期1名、推薦1名。
- [今日の達成目標]
- doctestにおけるテストコードの柔軟な側面を活用しよう。
- リストの基本的な操作を理解しよう。
- help, pydoc3やTABキーを利用してオブジェクトの扱い方を参照できるようになろう。
- [講義スライド] *PDFなし。
- ユニットテストの補足(Tips: doctest内のテストコードの書き方)を追加。
- リスト型オブジェクトの基本(リスト操作までの予定)
- TIps: 代表的な調べ方
- チュートリアル, リスト型 (list)
関連リンク - [授業録画アーカイブ] 6/15の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex5_2」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - Google drive内の「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - 宿題: 教科書読み。
- 5.2 Lists and Mutability
- (5.3 Functions as Objects) *一旦スキップ
- 5.4 Strings, Tuples and Lists
- (5.5 Dictionaries) *余裕があれば。
- 課題レポート1,2,3: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート4: まだ教えていなかった「list.append()」で困った人がいるようなので、予定通り今日提出できた人(最終更新時刻が今日の人)は「+5点加点」。来週6/19(月)までの提出は遅延減点無しで受け取ります。
- 課題レポート5: テキストファイルの統計処理その1
- 提出先: Googleドライブのreport5内に、各自アカウント名でフォルダを作成し、そこに提出すること。
- 〆切: 第11回(6/29)の講義開始前。
第10回: リスト操作の補足、文字列操作、シーケンス処理のサマリ
-
今週のお告げ: 「状況再現できるようになろう。」
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- リスト操作時の注意点(参照とループ処理)に気をつけよう。
- 文字列の基本的な操作を理解しよう。
- [講義スライド] *PDFなし。
- Chapter 5.2の補足: リスト型オブジェクトの基本(前回の続き: 「リスト操作時の注意点」以降)
- Chapter 5.4の補足: 文字列、タプル、リストの整理と文字列操作の整理
- コード例: convert_text2html.py
- コード例: bad_function *「今週のお告げ」で説明。
- チュートリアル, リスト型 (list)
- enmerate()(シーケンスに対してループ処理する際、インデックスも使いたい場合に使用)
- Text Sequence Type — str
関連リンク - [授業録画アーカイブ] 6/22の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex5_2」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - Google drive内の「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - 宿題: 教科書読み。
- 5.5 Dictionaries
- (5.3 Functions as Objects) *余裕があれば。
- 課題レポート1,2,3,4: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート5: 〆切: 第11回(6/29)の講義開始前。
ある出来事を説明するには、その出来事を再現するために必要な要素と再現手順を示した方が良い。これは関数定義においても同様。よろしくないコード例。
第11回: ディクショナリ、Numpy入門
- 環境構築: Numpy(数値演算ライブラリ)のインストール。
pip3 install numpy
- 課題レポート4の採点結果:
Google driveの「score-report4」。
- 今週のお告げ: 「教科書を活用しよう。」
1度目より2度目、2度目よりも3度目、、と繰り返す都度「分からなかった単語・概念・視点等」が減るように復習しよう。分からないまま、1度目と同じ読み方を繰り返すだけだと時間をかけてるだけです。学習になっていません。教科書の使い方の例
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 辞書型オブジェクト(ディクショナリ)の基本的な操作を理解しよう。
- (NumPyによる行列演算操作を実行できるようになろう)
- [講義スライド] *PDFなし。
- Chapter 5.5の補足: 辞書型オブジェクトの操作
- おまけ: Numpyを使ったベクトル・行列演算入門
- Dictionaries (The Python Tutorial)
- Numpy公式チュートリアル
- 私訳「暫定的 NumPy チュートリアル」 by naoya_t@hatenablog
関連リンク - [授業録画アーカイブ] 6/29の授業
- [ペアプロ演習] 二人で話し合いながらやろう。 *来週席替え予定。
- Google drive内の「ex5_2」。
- 「ex5-2/0-example」に回答例を用意しました。自分たちの回答と見比べてみよう。回答例が理解できない場合には質問しよう。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - Google drive内の「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - 宿題: 教科書読み。
- 6. Testing and Debugging
- 6.1 Testing については、ざっくりと読む(太字注意して用語の意味を掴む)ぐらいでok。
- 6.2 Debugging については、全体の流れを読み取ろう。特に6.2.3節はデバッグ時の取り組み方が整理されてます。
- 6. Testing and Debugging
- 課題レポート1,2,3,4,5: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート6: 平均値・標準偏差値の算出
〆切: 第13回(7/13)の講義開始前。
第12回: テストとデバッグ、関数設計
- [席指定3] Google drive -> 「ペア・プログラミング調整3.pdf」
- 今週のお告げ: 「1文1文を読み解こう。」
表面的になぞるだけでは不十分。表現し直したり、視点を変えてみたり、使ってみたり、色んな手段を通じて紐解こう。e.g.,
「犬に風邪薬を飲ませると貧血状態に陥ります」
「ビーグルが風邪薬を食べたら病気になる」
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- テストスイートの基本的な設計法を理解しよう。
- 関数を設計できるようになろう。 *課題の出し方が少しずつ緩くなり、裁量の余地が増えてくる。「こういう関数を実装しろ」という課題だったものが、「どう関数を実装するか」を考える必要が出てくる。
- [講義スライド] *PDFなし。
- Chapter 6の補足: Testing and Debugging(テストとデバッグ)の補足
- 問題の分割と関数設計
- ソフトウェアテスト基本テクニック
- ソフトウェアテスト
関連リンク - [授業録画アーカイブ] 7/6の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex6_2」。 *席替えに伴い、新しく「ex6_2」を使おう。前回の ex6 を参照しながら取り組んでも構いませんが、お互い分からないところを放置しないようにしよう。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - Google drive内の「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ] - 宿題: 教科書読み。
- 「バージョン管理システム」や「Git」について調べてみよう。
- 8 Classes and Object-Oriented Programming (余裕のある人) *クラスとオブジェクト指向プログラミングの解説は後期にやります。
- 課題レポート1,2,3,4,5: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート6: 平均値・標準偏差値の算出
〆切: 第13回(7/13)の講義開始前。
第13回: バージョン管理システム Git入門、break, continue, 特別変数補足
- 今週のお告げ: レポート採点結果へのコメントに代替。
- 課題レポート5の採点結果:
Google driveの「score-report5」。
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- Gitによるバージョン管理の基本(リポジトリの用意、編集結果をステージング・エリアに記録、編集結果をリポジトリに記録)を理解しよう。
- ループ処理時の命令「break, continue」の挙動を理解しよう。 *時間切れのため来週。
- 特別変数__name__の挙動により、import時の動作とスクリプト実行時の動作が変わることを理解しよう。 *時間切れのため来週。
- [講義スライド] *PDFなし。
- バージョン管理システム Git入門
- これまでの授業解説では抜けてた補足(break, continue, pass, del, __name__) *時間切れのため来週。
- [授業録画アーカイブ] 7/13の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex6_2」。 *席替えに伴い、新しく「ex6_2」を使おう。前回の ex6 を参照しながら取り組んでも構いませんが、お互い分からないところを放置しないようにしよう。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - Google drive内の「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ] - 宿題: 教科書読み。
- 7. Exceptions and Assertions *実際にコード例を動かして動作確認しながら読もう。
- 課題レポート1,2,3,4,5,6: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート7: 符号化されたメッセージの解読
〆切: 試験期間の木曜日(8/3)
第14回: 例外とアサーション、break, continue, 特別変数補足
- 今週のお告げ: 現状成績の説明に代替。
Google drive内の「total-score-pre0720.pdf」。
- ミニテスト
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- ループ処理時の命令「break, continue」の挙動を理解しよう。
- 特別変数__name__の挙動により、import時の動作とスクリプト実行時の動作が変わることを理解しよう。
- 例外とアサーションという考え方に触れよう。(後期にもやります)
- [講義スライド] *PDFなし。
- これまでの授業解説では抜けてた補足(break, continue, pass, del, __name__)
- Chapter 7 Exceptions and Assertionsの補足
- UNIXの標準入出力とリダイレクション
- first-class objects (第一級オブジェクト)
- Errors and Exceptions by 公式ドキュメント
関連リンク - [授業録画アーカイブ] 7/20の授業 *システムトラブルのためアーカイブなし。
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex6_2」。 *席替えに伴い、新しく「ex6_2」を使おう。前回の ex6 を参照しながら取り組んでも構いませんが、お互い分からないところを放置しないようにしよう。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - Google drive内の「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ] - 宿題: 教科書読み。
- 振り返り。
- 課題レポート1,2,3,4,5,6: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート7: 〆切: 試験期間の木曜日(8/3)
第15回: 振り返りと今後の道標
- 先輩アナウンス
- 1,3研修について: 連絡先 e155704@ie.〜〜
- 2017年度前期授業評価アンケート実施に関するお知らせ
- 今週のお告げ: 新しい概念や用語を、自分の言葉で説明してみよう。
- ミニテスト(アンケート)
学科のG-mailアドレス「e1757xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- 課題レポート関連
- 課題レポート6の採点結果: Google driveの「score-report6」。
- 課題レポート7: 〆切: 試験期間の木曜日(8/3)
**レポート7の補足**: 例示したケースだけにしか対応していないプログラムを書いてる人がいるかも?。仕様を満たすようにしよう。(斜め読みしただけなので私の見間違いである可能性もあります)
- 全レポートについて、8/4(金)までは減点付きで受け取ります。未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。
- 全レポート課題の回答例を 8/5(土) 以降に開示予定。
- 現状成績:
Google driveの「total-score-pre0726.pdf」。
- 振り返り(重要な点と、課題では特に扱っていないが大切な部分を中心に)
- 今後の道標: 授業後の道標?
- [授業録画アーカイブ] 7/27の授業
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google drive内の「ex6_2」。 *席替えに伴い、新しく「ex6_2」を使おう。前回の ex6 を参照しながら取り組んでも構いませんが、お互い分からないところを放置しないようにしよう。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - Google drive内の「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ]
参考文献・サイト
- chart for python learners: Python勉強する際の情報源を目的別に整理したもの。
- 教科書・参考書
- 教科書: 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 3: Python3の構文から一通り学ぶための入門書。
- 独習サイト (主にPython)
- Code Studio(言語を問わず、用意されたブロックを組み合わせてパズルを解く形でプログラミング全般の考え方を学べるサイト。)
- paiza(初めてプログラミングする人向けの動画講義。1つのコンテンツは数分程度に細分化されてて、かつ、コードを自動採点するシステムが提供されています。独習の進め方としては「数分動画閲覧して、自動採点される課題に取り組む」を繰り返すことになります。)
- ドットインストール(paiza同様、1つのコンテンツが数分程度の動画に細分化されて提供されてます。Python以外にも多数の言語や環境について学べます。)
- プログラミングコンテスト(Web参加可能なコンテストサイトを整理してます。日時指定があるものが多いですが、過去問やコード例が公開されてるサイトもあります。)
- CheckiO(課題をこなすことで先にすすめるゲーム型のサイトです。コード例も豊富。基本的には英語。)
- CodingBat(課題が多数例示されています。サイト上でコードの動作確認をすることも可能。)
- 言語処理100本ノック 2015(特定分野に偏っていますが、課題が難易度別に提供されてます。UNIX思想も含まれてます。)
- NLPプログラミングチュートリアル(こちらも特定分野に偏っていますが、「解説資料+演習+コード例」を見ながら勉強できます。)
- Python公式ドキュメント: [ 英語版 | 日本語版 ]
- pygame(ゲーム開発を通して学びたい人向け?)
- Code School(一部無料コースあり)
- CodeIQ(いろんな人が提示する課題に挑戦できるサイト。面白い問題を探すもよし、手当たり次第解くのもよし、どういう組織が関わってるか嗅ぎまわるもよし。)
- codecademy
- その他
- ラーニング・パターン(曰く「よりよい学びを実現するためのコツを抽出・記述したもの」。)
- レポートの書き方
- draw.io