2019年度 : プログラミング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)
- 講義資料
- 第1回: 卓上プログラミングによる開発設計概観,Pythonインタプリタの起動と逐次処理・変数の利用
第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入- 第2回: Pythonインタプリタとスクリプトの体験1
第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用- 第3回: インタプリタとスクリプトの体験2: if文, for文, 関数の利用
第4回: 関数の利用2、ループ処理(while文)- 第4回: 関数定義、ループ処理(while文)
第5回: レポートの書き方、ループ処理(for文)、range()関数とリストによるシーケンス集合表現、浮動小数点問題- 第5回: シーケンス集合表現、浮動小数点問題、ループ文補足
- 第6回: デバッグ実行、関数とスコープ、仕様、ユニットテスト、モジュール
第7回: KISS原則とDRY原則、再帰と木構造- 第7階: リスト型と辞書型オブジェクトの利用、ファイル入出力の基本
第8回: 振り返り、一般的なIDEによるデバッグ、File I/O, タプル(Tuples)- 第8回: 振り返り、一般的なIDEによるデバッグ
第9回: File I/O、タプル、リスト操作の基本、調べ方、振り返り- 第9回: 命名規則、KISS原則&DRY原則、抽象化&再帰関数、デモ
第10回: リスト操作の補足、文字列操作、シーケンス処理のサマリ- 第10回: PyCharmによるデバッグ演習2
第11回: ディクショナリ、Numpy入門、Jupyter Notebookの紹介- 第11回: ユニットテスト演習、モジュール補足、タプル型の紹介&シーケンスオブジェクトの振り返り
第12回: テストとデバッグ、関数設計- 第12回: テストとデバッグの補足
- 第13回: バージョン管理システム Git入門
- 第14回: 例外とアサーション
- 第15回: 振り返りと今後の道標
- 参考文献・サイト
第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- 今週のお告げ: 分からないことは自分から尋ねよう。
- 前準備1: slackの設定。
1. Slackを起動。 2. チーム「ie-Univ-Ryukyu」にいることを確認。 3. 「Channels」をクリック。 Browse channelsの検索欄に「prog1」と入力。 検索結果に「#prog1」が出てくるはずなので、それをクリックしてjoin。
- 前準備2: anacondaの設定。
# 環境確認 1. ターミナルを起動。 2. 「which python」と入力して実行。 実行結果として、 「/anaconda3/bin/python」 が出てくるならOK。 もしくは「python --version」と実行して、Python 3.6 以上ならばOK。 どちらでもない場合には、anacondaインストールか、PATH設定が必要。 手を上げてTAに対応お願いしよう。 *TA向け補足 ・Anacondaは公式サイトからパッケージをダウンロードしてインストール。 ・PATH設定は、~/.zshrc で PATH 設定箇所の冒頭に /anaconda3/bin を追加。
- ミニテスト: 今週はアンケート。
補足: 学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [今日の達成目標]
- プログラミングには3つのステップ(理解、整理、翻訳)があることを理解する。
- 教科書のコード例を動かすことができる。
- 代表的な型(int, float, str)を区別できる。type()を使って型を確認できる。
- 演算結果を変数に紐付けることができる。演算結果をprint()で出力できる。
- (授業の達成目標・評価方法等についてシラバスを参照して確認することができる。)
- [講義スライド] 第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- [授業録画アーカイブ] 1限目
- 宿題: 講義スライド参照。
- 課題レポート1: print()関数に慣れよう。翻訳手続きを考えてみよう。
- 提出先: Googleドライブのreport1内の各自アカウント名。今回はテンプレートを用意済み。
- 〆切: 第3回の講義日17時。
- 関連リンク
第2回: Pythonインタプリタとスクリプトの体験1
- 今週のお告げ: ieLT 新入生歓迎LT大会2019開催のお知らせ by 宇座さん+?
- ミニテスト
補足: 知能情報コースのG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインしてください。
- 前準備: テキストエディタ(CotEditor)のインストール。
1. App Storeを起動。 画面下のDockにあるはず。 なければ、アプリケーションフォルダから探して、起動しよう。 2. 検索窓に「coteditor」と入力して検索実行。 3. CotEditorをクリックし、インストール。
- [今日の達成目標]
- 欲しい出力を得るためのレシピ(アルゴリズム、手順)を考えよう。
- レシピを記述するための道具(基本的な型・算術演算子・比較演算子・論理演算子)を使えるようになろう。
- str.format書式を使えるようになろう。
- インタプリタ実行とファイル実行を使い分けられるようになろう。
- help()やオンラインドキュメントを使いこなせるようにしよう。
- (読みやすい(readable)コードの指標の一つとして命名規則を意識しよう。)
- (ペア・プログラミングを通して考えてることを言葉にし、気になったことを言葉にしよう。)
- [講義スライド1] 前回のp.19からの続き。第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- [講義スライド2] 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- [授業録画アーカイブ] 1限目
- 関連リンク
- 宿題: 課題レポート1の締め切り: 〆切: 第3回(4/24)の講義開始前
第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用
- 席指定
「Google drive」 -> 「ペア・プログラミング調整1.pdf」
暫くそのままの予定。再調整希望あれば個別対応。
- 今週のお告げ:
Unity初心者勉強会 in 琉球大学 2019 & VR体験会 by 梶原さん
PyCon Kyushu by 大城さん
- ミニテスト
補足: 知能情報コースのG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインしてください。
- [講義スライド(先週)] 第2回: Pythonインタプリタとスクリプトの体験1 *p.21〜。命名規則は後日。
- [今日の達成目標] *60分で終了。課題説明後、後半20分はペアプロ予定。
- if文を使い、条件分岐できるようになろう。
- ブロックを指定するためにはインデントを使い、整えよう。
- ユーザ入力を受け取るにはinput()を使おう。
- 文字列操作には結合・インデックス指定・スライス操作があることを覚えよう。
- 型を変更するにはキャストしよう。
オリジナルの関数(≒レシピ)を定義できるようになろう。*次回。
- [講義スライド] 第3回: インタプリタとスクリプトの体験2: if文, for文, 関数の利用 *for文まで。関数は後日。
- [授業録画アーカイブ] *後日掲載
- [ 演習1回目: 初めてのペア・プログラミング ]
- 演習内容: 演習1〜演習4
演習は、机の右に座ってる人がまずdriverを担当し、サブ設問毎にdriverを交代しよう。例えば、右の人が1.1節をdriverとしてやり、終わったら左の人が1.2節をdriverとしてやろう。
各演習を終えたら、「ex-progress」ファイルの該当箇所に「done」と記入。
- 演習レポート共有場所: Google drive(知能情報コースのアカウントでログインしてください)
- 「ex1」をダブルクリック。
- 各自のペア番号(pair01〜pair36)のファイルを開く。
- 演習内容: 演習1〜演習4
- 宿題: 講義スライド参照。
- 課題レポート2: 3の倍数でアホになろう。
- 提出先: Googleドライブのreport2。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第5回の講義日17時。
第4回: 関数の利用、ループ処理(while文)
- 今週のお告げ: 自分なりに振り返って整理しよう。
- 例1: 第3回目までに出てきた道具一覧 (by FreeMind *ただしFreeMindアプリは相当古い。「マインドマップ (mindmap)」でいろいろ探してみよう。)
- 例2: 教科書 pp.431-433(quick rereference), pp.435-(index)
- レポート1の採点結果
- Googleドライブの、report-score。
- 「コメント欄」は、確認後もそのまま残そう。
- 再提出したい人は、(1)レポート修正、(2)修正後に當間へメール報告。
- ただし、微減点(1項目あたり1〜5点程度)の場合には採点結果ほぼ変わらないため、次回以降のレポート等に活かしてください。
- 紹介: プログラミング向きのフォント例。Ricty。
参考:プログラミング用フォントRictyをMacにインストールする
# ターミナルから下記コマンドを逐次実行。 brew tap sanemat/font brew install ricty cp -f /usr/local/opt/ricty/share/fonts/Ricty*.ttf ~/Library/Fonts/ fc-cache -vf
- ミニテスト
知能情報コースのG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- オリジナルの関数(≒レシピ)を定義できるようになろう。
- ローカル変数の有効範囲(スコープ)を理解しよう。
- 反復処理を理解し、記述できるようになろう。
- これまでの基本道具(型・演算・フロー制御・関数)をしっかり復習しよう。
- [講義スライド] 第3回: インタプリタとスクリプトの体験2: if文, for文, 関数の利用
*p.11の「関数」から。
- [講義スライド] 第4回: 関数の利用2、ループ処理(while文)
- [授業録画アーカイブ] *後日調整
- 宿題: 講義スライド参照。
- 課題レポート2: 〆切: 第5回の講義日17時。
第5回: シーケンス集合表現、浮動小数点問題、ループ文補足
- 今週のお告げ: 「メリハリを付けよう」。リフレッシュする時間を確保しよう。まだ大学生活のリズムに慣れるだけで大変だと思いますが、勉強以上に大事なものは心身面での健康。体は資本なので「命を大事に」。課題等は貯めこんだり締切間近になってから焦って徹夜したりするのではなく、余裕を持って取り組もう。
- ミニテスト
- [今日の達成目標]
- 文字列とリストに対するインデックス指定、スライス処理を理解しよう。
- 小数を使う際には丸め誤差と桁あふれに注意。
- continue, breakの動作を理解しよう。
- [講義スライド] 第5回: シーケンス集合表現、浮動小数点補足、ループ文補足
- [授業録画アーカイブ] *後日掲載。=>システムトラブルのためNG。=> 復旧 [ 1限目 ]
- [ 演習1回目: 初めてのペア・プログラミング ]
- 演習内容: 演習1〜演習4
各演習を終えたら、「ex-progress」ファイルの該当箇所に「done」と記入。
- 演習レポート共有場所: Google drive(知能情報コースのアカウントでログインしてください)
- 演習レポート共有場所: Google driveの「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習内容: 演習1〜演習4
- 宿題: 講義スライド参照。
- 課題レポート3: 基本構造の解説
- 提出先: Googleドライブのreport3。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第7回の講義日17時。
第6回: デバッグ実行、関数とスコープ、仕様、ユニットテスト、モジュール
- 今週のお告げ:
自習(予習・復習)を大切に。(音楽やスポーツでは当然のように練習するじゃろ?)
- 環境構築:
Thonnyをインストールするため、ターミナルを開いて以下を実行。condaやpipはPythonの外部ライブラリを管理(インストール・削除)するためのツールです。ただし混ぜるな危険。基本的にはcondaを使い、そこにないライブラリのみをpipでインストール。
conda install docutils future pylint iso8601 pyyaml pyserial pip install --no-deps thonny
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 初心者向け統合開発環境Thonnyを使って、デバッグ実行できるようになろう。
- デバッグ実行を通して、ソースコードを動作確認できるようになろう。
- (コンピュータの原型である万能チューリングマシンについて調べてみよう。)
- 関数の引数にはデフォルト値を設定できる!
- 関数を呼び出しとスタックフレームの追加、名前空間の遡り参照を理解しよう。
- ドキュメンテーションとユニットテストを用いた開発に慣れよう。
- from, importによるモジュール読み込みを使えるようになろう。
- 補足資料: Thonny によるデバッガの利用
- [講義スライド] 第6回: 関数とスコープ、仕様、ユニットテスト、モジュール
# pydoc でドキュメント生成する例 cd ~/prog1 curl -O https://ie.u-ryukyu.ac.jp/~tnal/2019/prog1/week6_doctest.py 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
- [授業録画アーカイブ] *後日掲載=>システムトラブルのためNG。
- ([ペアプロ演習] 二人で話し合いながらやろう。)*今日は時間取れないかも。
- 課題レポート1,2: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート3: 〆切: 第7回の講義開始前。
第7回: リスト型と辞書型オブジェクトの利用、ファイル入出力の基本
- PyCharmのインストール
- 公式サイトに行き、Download -> Community版をダウンロード。
- ダウンロードしたdmgファイルをダブルクリックして展開。その中にPyCharmアプリが入っているので、これを「アプリケーション」フォルダに、ドラッグ&ドロップしてコピー(コピーでアプリインストールになっている)。
- 今週のお告げ: 次回、レポート3の説明をやってもらいます。
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- (変数名、関数名の付け方(名称の付け方)を意識しよう。)=>次回
- リストの基本的な操作を理解しよう。
- リスト操作時の注意点(参照とループ処理)に気をつけよう。
- 辞書型オブジェクト(ディクショナリ)の基本的な操作を理解しよう。
- ファイル操作の基本的な流れを把握しよう。 *時間あれば。
- [講義スライド] *PDFなし。
- リスト型オブジェクトの基本 *教科書5.3節。
- Dictionaries (dict型オブジェクト) *教科書5.5節。
- File I/O(ファイル入出力)処理の基本 *教科書4.6節。
- 代表的な調べ方
- [授業録画アーカイブ] 1限目
- 次週予定:レポート3の説明、PyCharmによるデバッグ、ペアプロ。
- 課題レポート4: テキストファイルの統計処理その1
- 提出先: Googleドライブのreport4。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第7回の講義日17時。
第8回: 振り返り、一般的なIDEによるデバッグ
- PyCharmのインストール
- 公式サイトに行き、Download -> Community版をダウンロード。
- ダウンロードしたdmgファイルをダブルクリックして展開。その中にPyCharmアプリが入っているので、これを「アプリケーション」フォルダに、ドラッグ&ドロップしてコピー(コピーでアプリインストールになっている)。
- 今週のお告げ: キャンセル。
- ミニテスト: レポート3解説後のアンケートに代替。
- google driveのreport3フォルダから、自身のレポートを開こう。
- 4名1グループ。左前から時計回りに解説者を担当。最初は左前の人がif文、2回目は右前の人がwhile文、3回目は右後ろの人がfor文、4回目は左後ろの人がdef文について解説すること。
- 欠席・レポート未作成等で不在の場合には、解説担当を次の人に移して下さい。
- 1回あたり、解説時間2〜3分+質疑応答1分、合計4分程度。
- 質疑応答まで終えたら次の解説担当が発表準備。準備し終えたら、担当者は手を上げて待ってて下さい。
- def文まで終わったら、ミニテストにアンケート記入。(うまく解説できたか、反省したい点はあるか、友人らの解説を見て真似したい点はなかったか)
- [今日の達成目標]
- PyCharmで、ブレークポイント設定してデバッグ実行(step into)できるようになろう。
- PyCharmで、スタックフレームを移動できるようになろう。
- [講義スライド]
- 補足資料1: PyCharmを使ってみよう(デバッグ入門編)
- => PyCharmでコード例(python_demo_module)を開いたまま、講義スライドへ。
- ファイル読み込み、readlinesを用いた処理の例。(デモ)
- [授業録画アーカイブ] *後日掲載。
第9回: 命名規則、KISS原則&DRY原則、抽象化&再帰関数、デモ
- 今週のお告げ: 新しい概念や用語を、自分の言葉で説明してみよう。
- 課題レポート2の採点結果:
Googleドライブの「score-report2」。
- ミニテスト: アンケートに代替。
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 変数名、関数名の付け方(名称の付け方)を意識しよう。
- KISS原則、DRY原則を意識して、読みやすいコードとなるよう工夫してみよう。
- 再帰関数の動作を理解できるようになろう。
- 抽象化することを意識してみよう。
- 通常は大域変数を使う必要はありません。使わないで下さい。
- [講義スライド] 第9回: 命名規則、KISS原則&DRY原則、抽象化&再帰関数 *余裕があればユニットテスト演習も。
- 代表的な調べ方
- コード例: python_demo_module(モジュールの例、再帰呼び出しの例)
1. 上記にアクセスし、「Clone or download」をクリックし、 「Download ZIP」を選択。 2. 「~/Downloads/python_demo_module-master.zip」 としてダウンロードされるはず。 これをダブルクリックして展開しよう。 3. ターミナルから上記フォルダに移動。 4. サンプルコードの実行。 *PyCharmから実行でもOK。 python maze_simple.py 5. ドキュメント生成&閲覧。 pydoc -w maze_simple open maze_simple.html
- [授業録画アーカイブ] *後日掲載。
- [ 演習1回目: 初めてのペア・プログラミング ]
- 演習内容: 演習1〜演習4
各演習を終えたら、「ex-progress」ファイルの該当箇所に「done」と記入。
- 演習レポート共有場所: Google drive(知能情報コースのアカウントでログインしてください)
- 演習レポート共有場所: Google driveの「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習内容: 演習1〜演習4
- 課題レポート1〜3: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート5: 課題レポート5: JSONファイルのパース
- enemy1.json対応までで90点(A評価)。
- 提出先: Googleドライブのreport4内に、各自アカウント名でフォルダを作成し、そこに提出すること。
- 〆切: 第11回の講義日17時。
第10回: PyCharmによるデバッグ演習2
- 今週のお告げ: 授業「プロジェクトデザイン」でのCM撮影? by 佐久川さん
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- コード実行時に想定外の動作をした場合、バグ要因を特定するデバッグの考え方を学ぼう。
- [講義スライド] PyCharmによるデバッグ演習2
- Python標準ライブラリ
関連リンク - [授業録画アーカイブ] *後日掲載
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: Google driveの「ex5-2」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習レポート共有場所: Google driveの「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - 宿題: 教科書読み。
- 5.3 Functions as Objects *余裕があれば。
第11回: ユニットテスト演習、モジュール補足、タプル型の紹介&シーケンスオブジェクトの振り返り
- 今週のお告げ: 分からない用語や概念が出てきたら、後から調べられるようにメモを残そう。
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- ユニットテストの意義と使い方を振り返ろう。
- ファイル実行とimportとで動作が異なることを理解しよう。
- タプル型オブジェクトの紹介。
- シーケンス集合に対する処理の振り返り。
- [講義資料]
- ユニットテストの意義&演習、モジュールの動作、タプル
- ユニットテストの補足
- week11.zip *授業中のデモファイル
- [授業録画アーカイブ] [ 1限目 ]
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: 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回の17時。
第12回: テストとデバッグの補足
- 今週のお告げ:学修サポート(学サポ)開始!
先輩方が授業・課題・進学・就職・人生相談等に対応してくれます! 1回目は「7/10(水)、4時限目、地創棟5階リフレッシュルーム」の予定。ie-news、slackで告知が届きます。どしどし活用ください。
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- テストスイートの基本的な設計法を理解しよう。
- ベクトル・行列演算できるようになろう。
- [講義スライド] *PDFなし。
- Chapter 6の補足: Testing and Debugging(テストとデバッグ)の補足
- おまけ1: Jupyter Notebook を使ってみよう
- おまけ2: Numpyを使ったベクトル・行列演算入門
- Jupyter Notebook Quickstart
- Numpy公式チュートリアル
- 私訳「暫定的 NumPy チュートリアル」 by naoya_t@hatenablog
関連リンク - [授業録画アーカイブ] 1限目
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: 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: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
第13回: バージョン管理システム Git入門
- 今週のお告げ: 学サポ(水4@地創棟5階リフレッシュルーム)、実施日はSlackで告知。
- Q&A
- 「課題が難しすぎる。」
=> 100%の回答は求めていません。必要な道具を用意した上で課題を用意していますので、自分なりにどう取り組んだかを報告してください。コードが不十分でも、取り組んだ際の思考や過程を十分に報告してもらえればそれなりに評価します。また、できるだけ分からない部分については相談しよう。
- 「pythonの大まかな全体像が知りたいです。」
=> 質問意図がよくわからないため、適切な回答が難しいです。学サポで相談してみるか、個別に私に相談に来て下さい。(多分メール等では意図を汲み取りにくいので)
- 課題レポート6の補足
- 「課題が難しすぎる。」
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- Gitによるバージョン管理の基本(リポジトリの用意、編集結果をステージング・エリアに記録、編集結果をリポジトリに記録)を理解しよう。
- pass, delの紹介。
- [講義スライド] *PDFなし。
- バージョン管理システム Git入門
- 補足:Git設定ファイルの補足(st等の省略設定)
- これまでの授業解説では抜けてた補足(break, continue, pass, del, __name__) *抜けてたのはpass, delのみ。
- [授業録画アーカイブ] *後日掲載
- [ペアプロ演習] 二人で話し合いながらやろう。
- 宿題: 教科書読み。
- 7. Exceptions and Assertions *実際にコード例を動かして動作確認しながら読もう。
- 課題レポート1,2,3,4,5,6: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
- 課題レポート7: 原始的なインデキシングによる検索エンジンの実装
〆切: 第15回の17時。
第14回: 例外とアサーション
- 今週のお告げ:
- 課題レポート6までの採点結果と、現時点での仮総合評価をgoogleドライブに掲載しています。
- 「問題解決の仕方を学ぼう」。
先輩・友人らに教えてもらいながら演習・課題に取り組むのはとても良いこと。だけど「言われたとおりに手を動かすだけだと、その後一人で同じことを再現したり、応用したりできない」ままです。もしそういう状況になっていると、これは学びになっていません。コピー機と一緒です。そうではなく、「何故そういう風に取り組むのか」「今どう取り組めばよいのか」といった問題解決の仕方を学ぼう。
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- [今日の達成目標]
- 例外とアサーションという考え方に触れよう。(後期にもやります)
- [講義スライド] *PDFなし。
- UNIXの標準入出力とリダイレクション
- Errors and Exceptions by 公式ドキュメント
関連リンク - [授業録画アーカイブ] *後日掲載
- [ペアプロ演習] 二人で話し合いながらやろう。
- 演習レポート共有場所: Google driveの「ex5-2」。 0-exampleに回答例を用意。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習レポート共有場所: Google driveの「ex6」。 0-exampleに回答例を用意。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ] - 演習レポート共有場所: Google driveの「ex7」。
[ 演習7: CSV形式データを読み込み、集計処理を実装してみよう。 ] - 宿題: 教科書読み。
- 振り返り。
- 課題レポート1,2,3,4,5,6: 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。(減点付きで受け取ります)
第15回: 振り返りと今後の道標
- 環境構築(おまけ用)。「dot -V」でバージョン確認できる(動作する)なら、インストール不要。
brew install graphviz
- 今週のお告げ
- 授業自体は今日で終了。来週はテスト期間。プログラミング1はテストありませんが、レポート相談等に対応するため、10:20〜11:00は321に居るようにします。教室自体は他授業の課題やるなど、自由に使ってOK!
- ミニテスト
学科のG-mailアドレス「e1957xx@ie.u-ryukyu.ac.jp」でログインして下さい。
- 授業評価アンケート
- 課題レポート関連
- 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。
- 全レポートについて、8/9(金)までは減点付きで受け取り保証(確実)。それ以降は受け取れるか分かりません。要個別相談。
- 全レポート課題の回答例を 8/16以降に開示予定。
- 振り返り(重要な点と、課題では特に扱っていないが大切な部分を中心に)
- シラバス
- 第1回より: プログラミングに含まれる3ステップ(理解、整理、翻訳)、変数、型
- 処理の流れ: [ 逐次処理(第1回) | 条件分岐(第3回) | ループ処理(for, while) ]
- 構造化関連: [ 関数 | スコープ | ユニットテスト入門 | ユニットテスト演習 ]
- 第5回より: 浮動小数点数問題
- 第6回より: スコープとスタックフレーム
- 第7回より: 辞書型オブジェクト
- 第7回より: 再帰
- 代表的な調べ方
- デバッグ: [ PyCharm演習1 | デバッグの考え方&演習 ]
- 第11回より: ユニットテスト補足
- おまけ(時間ありそうなら)
- Graphviz (dot) を用いたグラフ作図
- おまけのおまけ: Google driveの「ex-dot/Graphviz(dot)を用いたメンション関係の作図」。
- 今後の道標
- 教科書の後半。
- 参考: 『フカシギの数え方』 おねえさんといっしょ! みんなで数えてみよう!
- 授業後の道標?(Python等プログラミングメイン)
- 1年次向けオススメ書籍
- [ペアプロ演習] *時間あれば。
参考文献・サイト
- 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