2018年度 : プログラミング1
- シラバス(工学部工学科知能情報コース「工共114」と、情報工学科「情105」の同時開講)
- 講義用Slack: ie-univ-ryukyu.slack.com (#prog1)
- 連絡先:
- 當間愛晃 (Naruaki TOMA)@工1-705
- オフィスアワー: 木3
- E-mail: tnal@ie.u-ryukyu.ac.jp
- Twitter: @naltoma
- サポーターの皆さん: 技術職員&TA (Teaching Assistanct)
- 技術職員・名嘉秀和さん@地創棟506?: 授業サポート、マシントラブルサポート等を担当。
- 當眞南さん@名嘉村研(工1-607): 主に授業中のサポートを担当。
- 西山昴志さん@當間研(工1-712): 主にレポートチェックを担当。
- 講義資料
- 第1回: 卓上プログラミングによる開発設計概観,Pythonインタプリタの起動と逐次処理・変数の利用
- 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- 第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- 第4回: 関数の利用2、ループ処理(while文)
第5回: デモ、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題- 第5回: レポートの書き方、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
- 第6回: デバッグ実行、関数とスコープ、仕様、ユニットテスト、モジュール
第7回: ユニットテスト・モジュールの補足、KISS原則とDRY原則、doctest補足、再帰と木構造- 第7回: KISS原則とDRY原則、再帰と木構造
第8回: 振り返り、File I/O- 第8回: 振り返り、一般的なIDEによるデバッグ、File I/O, タプル(Tuples)
第9回: ユニットテスト補足、リスト操作の基本、調べ方、振り返り- 第9回: File I/O、タプル、リスト操作の基本、調べ方、振り返り
- 第10回: リスト操作の補足、文字列操作、シーケンス処理のサマリ
第11回: ディクショナリ、Numpy入門- 第11回: ディクショナリ、Numpy入門、Jupyter Notebookの紹介
- 第12回: テストとデバッグ、関数設計
第13回: バージョン管理システム Git入門、break, continue, 特別変数補足- 第13回: バージョン管理システム Git入門
第14回: 例外とアサーション、break, continue, 特別変数補足- 第14回: 例外とアサーション
- 第15回: 振り返りと今後の道標
- 参考文献・サイト
第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- 今週のお告げ: 新入生歓迎LT大会2018 by 先輩
- 前準備1: slackの設定。
1. Slackを起動。 2. チーム「ie-Univ-Ryukyu」にいることを確認。 3. 「Channels」をクリック。 Browse channelsの検索欄に「prog1」と入力。 検索結果に「#prog1」が出てくるはずなので、それをクリックしてjoin。
- 前準備2: anacondaの設定。
# 環境確認 1. ターミナルを起動。 2. 「pyenv versions」と入力して実行。 出力結果を眺めて、「*」が付いてる行を探そう。 そこが「3.6.4」になっているならOK。「環境設定の追加」に進む。 なっていない人は、インストール大会での設定が終わっていないため、 手を上げてTAに対応お願いしよう。 # 環境設定の追加。 3. 上記2の出力結果から「anaconda3」の項目を探そう。 その項目をコピーし、次のコマンドを実行。 「pyenv global 項目ペースト」 例えばコピーした項目がanaconda3-5.1.0なら、 「pyenv global anaconda3-5.1.0」 を実行しよう。 もしanaconda3が見つからない場合、インストールが必要。 「pyenv install anaconda3-5.1.0」を実行しよう。 (だいぶ時間かかりますので、放置してOK。今日の授業後にglobal設定しよう)
- ミニテスト: 今週はアンケート。
補足: 学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [今日の達成目標]
- プログラミングには3つのステップ(理解、整理、翻訳)があることを理解する。
- 教科書のコード例を動かすことができる。
- 代表的な型(int, float, str)を区別できる。type()を使って型を確認できる。
- 演算結果を変数に紐付けることができる。演算結果をprint()で出力できる。
- (授業の達成目標・評価方法等についてシラバスを参照して確認することができる。)
- [講義スライド] 第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- [授業録画アーカイブ] 4限目
- シラバス
- 宿題: 講義スライド参照。
- サンプルコードの動かし方: 講義スライド参照。
- 課題レポート1: print()関数に慣れよう
- 提出先: Googleドライブのreport1内の各自アカウント名。今回はテンプレートを用意済み。
- 〆切: 第3回(4/24)の講義開始前
- 関連リンク
第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- 席指定
「Google drive」 -> 「ペア・プログラミング調整1.pdf」
- 今週のお告げ: Unity初心者勉強会のお知らせ by 先輩
- ミニテスト
補足: 知能情報コースのG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- 前準備: テキストエディタ(CotEditor)のインストール。
1. App Storeを起動。 画面下のDockにあるはず。 なければ、アプリケーションフォルダから探して、起動しよう。 2. 検索窓に「coteditor」と入力して検索実行。 3. CotEditorをクリックし、インストール。
- [今日の達成目標]
- 欲しい出力を得るためのレシピ(アルゴリズム、手順)を考えよう。
- レシピを記述するための道具(基本的な型・算術演算子・比較演算子・論理演算子)を使えるようになろう。
- str.format書式を使えるようになろう。
- インタプリタ実行とファイル実行を使い分けられるようになろう。
- help()やオンラインドキュメントを使いこなせるようにしよう。
- (読みやすい(readable)コードの指標の一つとして命名規則を意識しよう。)
- (ペア・プログラミングを通して考えてることを言葉にし、気になったことを言葉にしよう。)
- [講義スライド] 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- [授業録画アーカイブ] 4限目
- 関連リンク
- [ 演習1回目: 初めてのペア・プログラミング ] *時間不足のため来週から。
- ペア・プログラミングのやり方
- イメージ: ペア・プログラミング by wikipedia
- 演習内容: 演習1〜演習4
演習は、机の右に座ってる人がまずdriverを担当し、サブ設問毎にdriverを交代しよう。例えば、右の人が1.1節をdriverとしてやり、終わったら左の人が1.2節をdriverとしてやろう。
- 演習レポート共有場所: Google drive(知能情報コースのアカウントでログインしてください)
- 「ex1」をダブルクリック。
- 各自のペア番号(pair01〜pair36)のファイルを開く。
- 宿題: 課題レポート1の締め切り: 〆切: 第3回(4/24)の講義開始前
第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- 今週のお告げ: 自習(予習・復習)を大切に。(音楽やスポーツでは当然のように練習するじゃろ?)
- ミニテスト
補足: 知能情報コースのG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [先週の達成目標] *先週分の続き
- 欲しい出力を得るためのレシピ(アルゴリズム、手順)を考えよう。
- レシピを記述するための道具(基本的な型・算術演算子・比較演算子・論理演算子)を使えるようになろう。
- str.format書式を使えるようになろう。
- インタプリタ実行とファイル実行を使い分けられるようになろう。
- help()やオンラインドキュメントを使いこなせるようにしよう。
- (読みやすい(readable)コードの指標の一つとして命名規則を意識しよう。)
- ペア・プログラミングを通して考えてることを言葉にし、気になったことを言葉にしよう。
- [講義スライド(先週)] 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
p.19以降。
- [今日の達成目標]
- if文を使い、条件分岐できるようになろう。
- ブロックを指定するためにはインデントを使い、整えよう。
- ユーザ入力を受け取るにはinput()を使おう。
- 文字列操作には結合・インデックス指定・スライス操作があることを覚えよう。
- 型を変更するにはキャストしよう。
- オリジナルの関数(≒レシピ)を定義できるようになろう。
- [講義スライド] 第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- [授業録画アーカイブ] 4限目
- [ 演習1回目: 初めてのペア・プログラミング ]
- ペア・プログラミングのやり方
- イメージ: ペア・プログラミング by wikipedia
- 演習内容: 演習1〜演習4
演習は、机の右に座ってる人がまずdriverを担当し、サブ設問毎にdriverを交代しよう。例えば、右の人が1.1節をdriverとしてやり、終わったら左の人が1.2節をdriverとしてやろう。
- 演習レポート共有場所: Google drive(知能情報コースのアカウントでログインしてください)
- 「ex1」をダブルクリック。
- 各自のペア番号(pair01〜pair36)のファイルを開く。
- 宿題: 講義スライド参照。
- 課題レポート2: 3の倍数でアホになろう。
- 提出先: Googleドライブのreport2。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第5回(5/17)の講義開始前
第4回: 関数の利用2、ループ処理(while文)
- 今週のお告げ: キャンセル。
「新入生歓迎会に参加するか否かの出席確認」by Arakakiさん
- ミニテスト
知能情報コースのG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- ローカル変数の有効範囲(スコープ)を理解しよう。
- 反復処理を理解し、記述できるようになろう。
- これまでの基本道具(型・演算・フロー制御・関数)をしっかり復習しよう。
- 例1: 第3回目までに出てきた道具一覧 (by FreeMind)
- 例2: 教科書 pp.431-433(quick rereference), pp.435-(index)
- [講義スライド] 第4回: 関数の利用2、ループ処理(while文)
- 作図をwebサービスとして提供している例: draw.io
- コード例。ターミナル上で下記を実行。
# コード例をダウンロード。 curl http://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/loop.py -O # ダウンロードしたコードを実行してみる。 python loop.py
- [授業録画アーカイブ] 4限目
- [ 演習1回目: 初めてのペア・プログラミング ]
- ペア・プログラミングのやり方
- 演習内容: 演習1〜演習4
演習は、机の右に座ってる人がまずdriverを担当し、サブ設問毎にdriverを交代しよう。例えば、右の人が1.1節をdriverとしてやり、終わったら左の人が1.2節をdriverとしてやろう。
- 演習レポート共有場所: Google drive(知能情報コースのアカウントでログインしてください)
- 「ex1」をダブルクリック。
- 各自のペア番号(pair01〜pair36)のファイルを開く。
- 宿題: 講義スライド参照。
- 課題レポート2: 〆切: 第5回(5/17)の講義開始前。
第5回: レポートの書き方、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
- 今週のお告げ: ミニテストで時間かかるのでキャンセル。
- ミニテスト(今日は良レポート探し)
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
Google driveも別タブor別ウィンドウどちらかで開こう。
- [今日の達成目標]
- シーケンス集合に対する反復処理を書けるようになろう。
- 小数を使う際には丸め誤差と桁あふれに注意。
- elif, continue, breakの動作を理解しよう。
- [講義スライド] 第5回: デモ、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題
- [授業録画アーカイブ] 4限目
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: Google driveの「ex1」。
[ 演習1〜4: 初めてのペア・プログラミング ] - 演習レポート共有場所: Google driveの「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 宿題: 講義スライド参照。
- 課題レポート3: 基本構造の解説
- 提出先: Googleドライブのreport3。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第7回(5/31)の講義開始前
第6回: デバッグ実行、関数とスコープ、仕様、ユニットテスト、モジュール
- 今週のお告げ: 「メリハリを付けよう」。リフレッシュする時間を確保しよう。まだ大学生活のリズムに慣れるだけで大変だと思いますが、勉強以上に大事なものは心身面での健康。体は資本なので「命を大事に」。課題等は貯めこんだり締切間近になってから焦って徹夜したりするのではなく、余裕を持って取り組もう。
- 環境構築: Thonnyをインストールするため、ターミナルを開いて以下を実行。pipはPythonの外部モジュールを管理(インストール・削除)するためのツールです。
pip install thonny
- ミニテスト
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 初心者向け統合開発環境Thonnyを使って、デバッグ実行できるようになろう。
- デバッグ実行を通して、ソースコードを動作確認できるようになろう。
- (コンピュータの原型である万能チューリングマシンについて調べてみよう。)
- 関数の引数にはデフォルト値を設定できる!
- 関数を呼び出しとスタックフレームの追加、名前空間の遡り参照を理解しよう。
- ドキュメンテーションとユニットテストを用いた開発に慣れよう。
- from, importによるモジュール読み込みを使えるようになろう。
- 補足資料: Thonny によるデバッガの利用
- [講義スライド] 第6回: 関数とスコープ、仕様、ユニットテスト、モジュール
# pydoc でドキュメント生成する例 cd ~/prog1 curl https://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/week6_doctest.py -O pydoc -w week6_doctest open week6_doctest.html # doctestでユニットテストする例 # case 1: テストに失敗したときだけテスト結果を出力。 python -m doctest week6_doctest.py # case 2: 常にテスト結果を出力。 python -m doctest week6_doctest.py -v
- [授業録画アーカイブ] 4限目
- ([ペアプロ演習] 二人で話し合いながらやろう。)*今日は時間取れないかも。
- 課題レポート1,2: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート3: 〆切: 第7回(5/31)の講義開始前。
第7回: KISS原則とDRY原則、再帰と木構造、一般的なIDEによるデバッグ
- PyCharmのインストール
- 公式サイトに行き、Download -> Community版をダウンロード。
- ダウンロードしたdmgファイルをダブルクリック。「アプリケーション」フォルダに、ドラッグ&ドロップ。
- 今週のお告げ: キャンセル。
- 課題レポート1の採点結果:
Googleドライブの「score-report1」。「Q&A」や「最終的な総合点のイメージ」も参照。
- ミニテスト: アンケートに代替。
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- KISS原則、DRY原則を意識して、読みやすいコードとなるよう工夫してみよう。
- 再帰関数の動作を理解できるようになろう。
- 通常は大域変数を使う必要はありません。使わないで下さい。
- PyCharmで、ブレークポイント設定してデバッグ実行(step into)できるようになろう。
- PyCharmで、スタックフレームを移動できるようになろう。
- (先週の補足・残り: ユニットテストを用いた開発に慣れよう。) *余裕があれば
- (先週の補足・残り: from, importによるモジュール読み込みを使えるようになろう。) *余裕があれば
- [講義スライド] 第7回: KISS原則とDRY原則、再帰と木構造 *余裕があればユニットテスト演習も。
- コード例: python_demo_module(モジュールの例、再帰呼び出しの例)
1. 上記にアクセスし、「Clone or download」をクリックし、 「Download ZIP」を選択。 2. 「~/Downloads/python_demo_module-master.zip」 としてダウンロードされるはず。 これをダブルクリックして展開しよう。 3. 展開したフォルダを 「~/prog1/python_demo_module-master/」に移動。 4. ターミナルから上記フォルダに移動。 5. サンプルコードの実行。 python maze_simple.py
- [授業録画アーカイブ] 4限目
- 以下は、時間無くて来週以降やる予定。
- 補足資料1: PyCharmを使ってみよう(デバッグ入門編)
- 補足資料2: ユニットテスト演習
- [授業録画アーカイブ] [ 4限目
- [ペアプロ演習] 二人で話し合いながらやろう。
- [ 演習1〜4: 初めてのペア・プログラミング ]
- 演習レポート共有場所: Google driveの「ex1」。
- 課題レポート1,2,3: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート4: コード読解
- 提出先: Googleドライブのreport4内に、各自アカウント名でフォルダを作成し、そこに提出すること。
- 〆切: 第9回(6/14)の講義開始前。
第8回: 振り返り、一般的なIDEによるデバッグ、File I/O, タプル(Tuples)
- 席指定
Google drive -> 「ペア・プログラミング調整2.pdf」
- PyCharmのインストール(まだの人)
- 公式サイトに行き、Download -> Community版をダウンロード。
- ダウンロードしたdmgファイルをダブルクリック。「アプリケーション」フォルダに、ドラッグ&ドロップ。
- 今週のお告げ: 「教科書・参考書を活用しよう」Web上には参考になる記事も数多くあるが、Web全体としては整理されておらず、前後関係や背景知識を知らないと良質の記事であっても役に立たないことや、古い記事で今では誤っている内容であったりすることが少なくない。整理された書籍を繰り返して読みなおし、分からないことを整理しながら減らしていこう。(どんな書籍がオススメか、教職員・先輩・友人らに聞くのも手です)。
- ミニテスト: レポート3解説後のアンケートに代替。
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- 4名1グループ。左前から時計回りに解説者を担当。最初は左前の人がif文、2回目は右前の人がwhile文、3回目は右後ろの人がfor文、4回目は左後ろの人がdef文について解説すること。
- 欠席・レポート未作成等で不在の場合には、解説担当を次の人に移して下さい。
- 1回あたり、解説時間2〜3分+質疑応答1分、合計4分程度。
- 質疑応答まで終えたら次の解説担当が発表準備。準備し終えたら、担当者は手を上げて待ってて下さい。
- def文まで終わったら、ミニテストにアンケート記入。(うまく解説できたか、反省したい点はあるか、友人らの解説を見て真似したい点はなかったか)
- [今日の達成目標]
- 先週の補足・残り: PyCharmで、ブレークポイント設定してデバッグ実行(step into)できるようになろう。
- 先週の補足・残り: PyCharmで、スタックフレームを移動できるようになろう。
- 先週の補足・残り: ユニットテストを用いた開発に慣れよう。
- テキストファイルを読み書きできるになろう(with構文推奨)。
- 新しいデータ型タプルの特徴を理解しよう。
- [講義スライド] 第8回: File I/O, タプル(Tuples) *時間なかったので来週。
- 補足資料1: PyCharmを使ってみよう(デバッグ入門編)
- 補足資料2: ユニットテスト演習
- => PyCharmでコード例(python_demo_module)を開いたまま、講義スライドへ。
- Python 3.6.5 documentation *公式ドキュメント
- open() (2. Built-in Functions)
- 16.2. io — Core tools for working with streams
- Dive Into Python 3, 第11章 ファイル *Pythonの詳細解説
関連リンク - [授業録画アーカイブ] [ 4限目 ]
- [ペアプロ演習] 二人で話し合いながらやろう。 *今日は挨拶+確認ぐらい?
- 演習レポート共有場所: Google driveの「ex5-2」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - プログラミング演習1 by 赤嶺先生
第9回: File I/O、タプル、リスト操作の基本、調べ方、振り返り
- 今週のお告げ: 「ターミナルやIDEの出力結果(実行ログ)をちゃんと読もう。」
コンピュータはヒトと違い、指示した通りにしか処理しません。適切に処理できたのかどうかは、(ユニットテストのようなケースを除くと)一般的には自分で判断できません。実行したユーザが自分で判断する必要があります。判断できるようになるためにも、どのような情報が出力されているのか読むようにしよう。
- ミニテスト
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- テキストファイルを読み書きできるになろう(with構文推奨)。(先週分)
- 新しいデータ型タプルの特徴を理解しよう。(先週分)
- doctestにおけるテストコードの柔軟な側面を活用しよう。
- リストの基本的な操作を理解しよう。
- help, pydoc3やTABキーを利用してオブジェクトの扱い方を参照できるようになろう。
- [講義スライド] 第8回: File I/O, タプル(Tuples) *先週分
- ユニットテストの補足(Tips: doctest内のテストコードの書き方)を追加。
- リスト型オブジェクトの基本(リスト操作までの予定)
- TIps: 代表的な調べ方
- 時間あればデモ。
- チュートリアル, リスト型 (list)
関連リンク - [授業録画アーカイブ] 4限目
- [ペアプロ演習] 二人で話し合いながらやろう。 *時間なくてやれず。
- 演習レポート共有場所: Google driveの「ex5-2」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 宿題: 教科書読み。
- 5.2 Lists and Mutability
- (5.3 Functions as Objects) *一旦スキップ
- 5.4 Strings, Tuples and Lists
- (5.5 Dictionaries) *余裕があれば。
- 課題レポート1〜4: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート5: テキストファイルの統計処理その1
- 提出先: Google driveのreport5内に、各自アカウント名でフォルダを作成し、そこに提出すること。
- 〆切: 第11回(6/28)の講義開始前。
- プログラミング演習1 by 赤嶺先生
第10回: リスト操作の補足、文字列操作、シーケンス処理のサマリ
- 今週のお告げ: キャンセル。2年次の大城さんから協力依頼。
- ミニテスト
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- リスト操作時の注意点(参照とループ処理)に気をつけよう。
- 文字列の基本的な操作を理解しよう。
- シーケンス集合に対する処理の振り返り。
- [講義スライド] *PDFなし。
- Chapter 5.3の補足: リスト型オブジェクトの基本(前回の続き: 「リスト操作時の注意点」以降)
- Chapter 5.4は後日。
- Chapter 5.5の補足: 文字列、タプル、リストの整理と文字列操作の整理
- コード例: convert_text2html.py
- コード例: bad_function
- チュートリアル, リスト型 (list)
- enmerate()(シーケンスに対してループ処理する際、インデックスも使いたい場合に使用)
- Text Sequence Type — str
関連リンク - [授業録画アーカイブ] [ 4限目 ]
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: 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)の講義開始前。
- プログラミング演習1 by 赤嶺先生
第11回: ディクショナリ、Numpy入門、Jupyter Notebookの紹介
- 環境確認(Numpy, Jupyter)
# (1) Numpyの動作確認。 # Pythonインタプリタを起動して、 # 以下のようにモジュールを読み込めるか確認。 # エラーでないならインタプリタ終了。 import numpy # (1)で起きそうなトラブル例。 # (1-a) pyenv global の設定ミス or PATH設定の問題。 # 「pyenv versions」で、anaconda3がグローバル指定されてるか確認。 # されてるなら、恐らくPATHの問題。 # (2) Jupyterの動作確認。 # ターミナル上で以下を実行。 # Pythonインタプリタではない点に注意。 jupyter notebook
- 今週のお告げ: 「自分なりにまとめよう」。多くの授業では教科書や参考書を指定しています。これで十分理解できる人はそれで良いですが、理解できていない人は自分なりに整理し、どこが理解不足なのか把握しやすくする工夫をしよう。例えばプログラミング1では、授業で使ってるスライドや動画は公開していますが、それを聞きながら自分なりにノートに整理するか否かでも、理解度は大きく異なります。紙のノートでもデジタルでも構いませんが、自分なりに整理してみよう。
- ミニテスト
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 辞書型オブジェクト(ディクショナリ)の基本的な操作を理解しよう。
- (NumPyによる行列演算操作を実行できるようになろう)
- (Jupyterを使えるようになろう)
- [講義スライド] *PDFなし。
- おまけ1: Jupyter Notebook を使ってみよう
- おまけ2: Numpyを使ったベクトル・行列演算入門
- Chapter 5.5の補足: 辞書型オブジェクトの操作
- Jupyter Notebook Quickstart
- Dictionaries (The Python Tutorial)
- Numpy公式チュートリアル
- 私訳「暫定的 NumPy チュートリアル」 by naoya_t@hatenablog
関連リンク - [授業録画アーカイブ] 4限目
- [ペアプロ演習]
- 演習レポート共有場所: Google driveの「ex5-2」。
[ 演習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/12)の講義開始前。
- プログラミング演習1 by 赤嶺先生
第12回: テストとデバッグ、関数設計
- 今週のお告げ: 課題レポート2,3,4の採点結果をGoogle driveに掲載。何か気になる点があれば個別に相談ください。これから出す人は必ずメール報告すること(こっそり提出しても気づきません)。
- ミニテスト
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- テストスイートの基本的な設計法を理解しよう。
- 関数を設計できるようになろう。 *課題の出し方が少しずつ緩くなり、裁量の余地が増えてくる。「こういう関数を実装しろ」という課題だったものが、「どう関数を設計するか」を考える必要が出てくる。
- [講義スライド] *PDFなし。
- Chapter 6の補足: Testing and Debugging(テストとデバッグ)の補足
- 問題の分割と関数設計
- ソフトウェアテスト基本テクニック
- ソフトウェアテスト by Wikipedia
関連リンク - [授業録画アーカイブ] 4限目
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: Google driveの「ex5-2」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習レポート共有場所: Google driveの「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - Google driveの「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ] - 宿題: 教科書読み。
- 「バージョン管理システム」や「Git」について調べてみよう。
- 8 Classes and Object-Oriented Programming (余裕のある人) *クラスとオブジェクト指向プログラミングの解説は後期にやります。
- 課題レポート1,2,3,4,5: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート6: 〆切: 第13回(7/12)の講義開始前。
- プログラミング演習1 by 赤嶺先生
第13回: バージョン管理システム Git入門
- 今週のお告げ: LT大会呼びかけ by 宇座さん
- これまでの採点結果:
Google driveの「2018prog1-record0712.pdf」。
- ミニテスト
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- Gitによるバージョン管理の基本(リポジトリの用意、編集結果をステージング・エリアに記録、編集結果をリポジトリに記録)を理解しよう。
- delの紹介。
- [講義スライド] *PDFなし。
- バージョン管理システム Git入門
- これまでの授業解説では抜けてた補足(break, continue, pass, del, __name__) *抜けてたのはpass, delのみ。
- [授業録画アーカイブ] 4限目
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: Google driveの「ex5-2」。0-exampleに回答例を用意。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習レポート共有場所: Google driveの「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - Google driveの「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ] - 宿題: 教科書読み。
- 7. Exceptions and Assertions *実際にコード例を動かして動作確認しながら読もう。
- 課題レポート1,2,3,4,5,6: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート7: 原始的なインデキシングによる検索エンジンの実装
〆切: 第15回(7/26)の講義開始前。
- プログラミング演習1 by 赤嶺先生
第14回: 例外とアサーション
- 授業評価アンケート(回答期間は、7/17(火)〜8/3(金)まで)
- 今週のお告げ: 「問題解決の仕方を学ぼう」。先輩・友人らに教えてもらいながら演習・課題に取り組むのはとても良いこと。だけど「言われたとおりに手を動かすだけだと、その後一人で同じことを再現したり、応用したりできない」ままです。もしそういう状況になっていると、これは学びになっていません。コピー機と一緒です。そうではなく、「何故そういう風に取り組むのか」「今どう取り組めばよいのか」といった問題解決の仕方を学ぼう。
- ミニテスト
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 例外とアサーションという考え方に触れよう。(後期にもやります)
- [講義スライド] *PDFなし。
- UNIXの標準入出力とリダイレクション
- first-class objects (第一級オブジェクト)
- Errors and Exceptions by 公式ドキュメント
関連リンク - [授業録画アーカイブ] 4限目
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: Google driveの「ex6」。0-exampleに回答例を用意。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - Google driveの「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ] - 宿題: 教科書読み。
- 振り返り。
- 課題レポート1,2,3,4,5,6: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート7: 〆切: 第15回(7/26)の講義開始前。
第15回: 振り返りと今後の道標
- 授業評価アンケート
- 環境構築(おまけ用)
brew install graphviz
- 今週のお告げ
- 新しい概念や用語を、自分の言葉で説明してみよう。
- 授業自体は今日で終了。来週8/2(木)はテスト期間。プログラミング1はテストはありませんが、レポート相談等に対応するため念の為321に居るようにします。教室自体は他授業の課題やるなど、自由に使ってOK!
- ミニテスト(アンケート)
学科のG-mailアドレス「e1857xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- 課題レポート関連
- レポート6採点に関する補足。
- Google driveの「score-report6」に採点結果。
- [大幅減点対象] スクリプトファイル未提出や、提出されてるスクリプトファイルを実行してもエラーが出る場合。
- [減点] docstringドキュメントが、pydoc/helpで読める形式になっていない。
- [今回は減点まではしないが問題のあるコード] 全体の処理が1つの関数になっている(機能分解されていない)。
- 全レポートについて、8/9(木)までは減点付きで受け取ります(確実)。未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。8/10以降は受け取れるか分かりません。(要個別相談)
- 全レポート課題の回答例を 8/11(土) 以降に開示予定。
- レポート6採点に関する補足。
- 現状成績:
Google driveの「2018prog1-2018prog1-record0726.pdf」(7/26, 13時時点)
- 振り返り(重要な点と、課題では特に扱っていないが大切な部分を中心に)
- おまけ(時間ありそうなら)
- Graphviz (dot) を用いたグラフ作図
- おまけのおまけ: Google driveの「ex-dot/Graphviz(dot)を用いたメンション関係の作図」。
- 今後の道標
- [授業録画アーカイブ] 4限目
- [ペアプロ演習] 二人で話し合いながらやろう。
- Google driveの「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ]
参考文献・サイト
- chart for python learners: Python勉強する際の情報源を目的別に整理したもの。
- 教科書・参考書
- 教科書: Introduction to Computation and Programming Using Python: With Applications and Understanding Data: 授業では「Part 1 (Chapter 7まで)」をメインに取り扱います。約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(言語を問わず、用意されたブロックを組み合わせてパズルを解く形でプログラミング全般の考え方を学べるサイト。)
- Progate(初めてプログラミングする人向けのオンライン講義&演習。1つのコンテンツは数分程度の分量に細分化されてて、かつ、コードを自動採点するシステムが提供されています。)
- paiza(初めてプログラミングする人向けの動画講義。1つのコンテンツは数分程度に細分化されてて、かつ、コードを自動採点するシステムが提供されています。独習の進め方としては「数分動画閲覧して、自動採点される課題に取り組む」を繰り返すことになります。)
- ドットインストール(paiza同様、1つのコンテンツが数分程度の動画に細分化されて提供されてます。Python以外にも多数の言語や環境について学べます。)
- プログラミングコンテスト(Web参加可能なコンテストサイトを整理してます。日時指定があるものが多いですが、過去問やコード例が公開されてるサイトもあります。)
- CheckiO(課題をこなすことで先にすすめるゲーム型のサイトです。コード例も豊富。基本的には英語。)
- CodingBat(課題が多数例示されています。サイト上でコードの動作確認をすることも可能。)
- 言語処理100本ノック 2015(特定分野に偏っていますが、課題が難易度別に提供されてます。UNIX思想も含まれてます。)
- NLPプログラミングチュートリアル(こちらも特定分野に偏っていますが、「解説資料+演習+コード例」を見ながら勉強できます。)
- Python公式ドキュメント: [ 英語版 | 日本語版 ]
- pygame(ゲーム開発を通して学びたい人向け?)
- Code School(一部無料コースあり)
- CodeIQ(いろんな人が提示する課題に挑戦できるサイト。面白い問題を探すもよし、手当たり次第解くのもよし、どういう組織が関わってるか嗅ぎまわるもよし。)
- codecademy
- その他
- ラーニング・パターン(曰く「よりよい学びを実現するためのコツを抽出・記述したもの」。)
- レポートの書き方
- draw.io