2020年度 : プログラミング1
- シラバス(工学部工学科知能情報コース「工共114」と、情報工学科「情105」の同時開講)
- 講義用Mattermost: https://mattermost.ie.u-ryukyu.ac.jp/login チャンネル: ~prog1
- 連絡先:
- 當間愛晃 (Naruaki TOMA)@工1-705
- オフィスアワー: 金3
- E-mail: tnal@ie.u-ryukyu.ac.jp
- Twitter: @naltoma
- サポーターの皆さん: 技術職員&TA (Teaching Assistanct)
- 技術職員・名嘉秀和さん@地創棟506: 授業サポート、マシントラブルサポート等を担当。
- TA2名。主に授業中のサポートを担当。
- TA1:佐藤@NAL研M2。
- TA2:上原@NAL研M1。
- 講義資料
- 第1回: 卓上プログラミングによる開発設計概観,Pythonインタプリタの起動と逐次処理・変数の利用
- 第2回: Pythonインタプリタとスクリプトの体験1
第3回: インタプリタとスクリプトの体験2: if文, for文, 関数の利用- 第3回(4/24): 第1回〜第2回の復習
第4回: 関数定義、ループ処理(while文)- 第4回(5/1): if文、for文と関数定義
第5回: シーケンス集合表現、浮動小数点問題、ループ文補足- 第5回: スコープ、while文とループ処理の補足
第6回: デバッグ実行、関数とスコープ、仕様、ユニットテスト、モジュール- 第6回: シーケンス集合・引数、浮動小数点の取り扱い、スコープの補足
- 第7回: リスト型と辞書型オブジェクトの利用
第8回: 振り返り、一般的なIDEによるデバッグ- 第8回: ファイル入出力の基本、ドキュメンテーション、振り返り
第9回: 命名規則、KISS原則&DRY原則、抽象化&再帰関数、デモ- 第9回: モジュール、KISS原則&DRY原則、抽象化&再帰関数
第10回: PyCharmによるデバッグ演習2- 第10回: VS Codeによるデバッグ演習2、正規表現の紹介
第11回: ユニットテスト演習、モジュール補足、タプル型の紹介&シーケンスオブジェクトの振り返り>- 第11回: doctest による動作のテスト(検証)
第12回: テストとデバッグの補足- 第12回: テストとデバッグの補足、JupyterLabとNumpy入門
第13回: バージョン管理システム Git入門- 第13回: 例外とアサーション
第14回: 例外とアサーション- 第14回: バージョン管理システム Git入門
- 第15回: 振り返りと今後の道標
- 参考文献・サイト
第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
- 今週のお告げ
分からないことは自分から尋ねよう。
- 前準備: Mattermostの設定。
1. Mattermostを起動。 2. チーム「ie-ryukyu」にいることを確認。 3. 「公開チャンネル」の下にある「追加...」をクリック。 検索窓に「prog」と入力。 検索結果に「prog」が出てくるはずなので、それをクリックしてjoin。
- Mattermostによる相談の仕方。
・特に畏まる必要はない。 ・名乗る必要もない。 ・相談内容を prog チャンネルに書き込もう。 *他人に見られたくない場合には Direct Message でも構いませんが、 授業に関係する内容は受講生全員に共通することがほとんどなので、 できるだけ prog チャンネルでやり取りしましょう。
- 実行環境がない人。
手元にまだMacBookがない等、何らかの理由でPython実行環境がない人は、 Google Colaboratory と呼ばれる無料のクラウド環境を利用してプログラミングできます。 (1) 下記URLを Safari 等のブラウザで開く。 Google Colaboratory (2) 右上の「ログイン」から、 G-mailアカウント(e2057xx@ie.u-ryukyu.ac.jp)でログイン。 (3) ファイルメニューから「ノートブックを新規作成」を選択。 Untitled0.ipynb という名前のついたファイルが作成される。 もし名前を変更したい場合には、拡張子(.ipynb)はそのままにし、 その前の「Untilted0」だけを変更しよう。気にしない場合にはそのままでOK。 (4) 実行してみる。 「右向き矢印」と「灰色背景」の欄があるはず。 この欄を「セル」と呼んでおり、このセル内にコードを記述していく。 記述し終えたら「右向き矢印」をクリックするか、Shift + Enter すると、 そのセル内のコードを実行してくれる。 *1回目の実行は、環境構築のため時間がかかります。
- [今日の達成目標]
- 講義スライドを参照し、以下を理解するとともに課題レポート1のLevel3まで取り組むことが出来る。(想定時間:講義スライドの理解+演習1〜3で1.5時間。課題レポートLevel3までで0.5時間。復習0.5〜1.5時間。予習0.5〜1.5時間)
- プログラミングには3つのステップ(理解、整理、翻訳)があることを理解する。
- 教科書のコード例を動かすことができる。
- 代表的な型(int, float, str)を区別できる。type()を使って型を確認できる。
- 演算結果を変数に保存することができる。
- 演算結果や変数の中身をprint()で出力できる。
- [講義スライド] 第1回: 卓上プログラミングによる開発設計概観、Pythonインタプリタの起動と逐次処理・変数の利用
*このページやPDFを開いた状態で、「ファイル」メニューから「別名で保存」を選ぶと、PCに保存できます。
- 課題レポート1: print()関数と変数の利用、用語整理。
- 提出先: Googleドライブのreport1内の各自アカウント名。今回はテンプレートを用意済み(再履修者は自分でフォルダを作成し、sampleをコピーして利用してください)。
- 課題に取り組む前に、報告者欄を自身の学籍番号と氏名に編集すること。協力者欄は何らかの形で誰かと相談等しながら取り組んだ場合には、書いてください。特になければそのままで構いません。
- 1〜2週目の授業はありませんが、1週目でレベル3まで、2週目でレベル4までやれるように取り組むことを推奨します。
- レベル4まで終えたら、実施日欄の年月日を編集すること。
- 〆切: 第3回の講義日(予定)。
- Q&Aについて
- なるべく早く(24時間以内)回答が欲しい場合はMattermostを利用してください。次回の授業までで構わない場合には、以下のファイルに記載してください。
- Googleドライブの「QA/QA-week1」。
- 気になる点・相談等あれば、次回の授業日前日までに記入。書き込み件数によりますが、基本的には授業中に回答を予定。早めに相談したい場合にはオフィスアワー使ったり、友人・先輩・教職員に直接/Mattermost等で尋ねよう。
- 関連リンク
第2回: Pythonインタプリタとスクリプトの体験1
- 今週のお告げ:
教務情報システム(シラバス)も含め、連絡網は1日1回チェックしよう。いつまでも「チェックし忘れていた」では通りません。そろそろ習慣づけるようにしてください。
- [進め方]
- 事前に、「第1回」「第2回」の講義スライドPDF、課題レポート1のLevel 1〜3まで取り組む。「QA-week1」も参照しつつ、分からないことは随時mattermostで相談。
- 4/24(金)当日は、質問の多かった項目や重要な点について第1回〜第2回を振り返る形で説明。
- [今日の達成目標]
- 必要に応じて、授業資料をPCに保存できる。
*このページやPDFを開いた状態で、「ファイル」メニューから「別名で保存」を選ぶと、PCに保存できます。
- 欲しい出力を得るためのレシピ(アルゴリズム、手順)を考えよう。
- レシピを記述するための道具(基本的な型・算術演算子・比較演算子・論理演算子)を使えるようになろう。
- str.format書式を使えるようになろう。
- インタプリタ実行とファイル実行を使い分けられるようになろう。
- help()やオンラインドキュメントを使いこなせるようにしよう。
- (読みやすい(readable)コードの指標の一つとして命名規則を意識しよう。)
- (ペア・プログラミングを通して考えてることを言葉にし、気になったことを言葉にしよう。)
- 必要に応じて、授業資料をPCに保存できる。
- [講義スライド] 第2回: Pythonインタプリタとスクリプトの体験1,ペア・プログラミングの導入
- 関連リンク
- 宿題(課題提出ではなく、復習予習の例示)
- 教科書2.2節までの復習。
- 教科書2.3節、2.4節、4.1.1節の予習。
第3回(4/24): 第1回〜第2回の復習
- [連絡事項]
プログラミング1中の321教室参加について。密状態を避けるため制限付きで一時開放します。4/24はネットワーク環境ない人のみOK。他希望者への開放も考えましたが沖縄県緊急事態宣言が4/20に出ましたので、他はNGとします。
- 入校禁止措置について。
4/22に沖縄県からの要請により、4/23〜5/6は入校禁止となります。なお急な要請であることから、4/23,24は例外措置あり、4/25〜5/6は厳密に入校禁止となります。ネットワーク環境ない人は連絡先に相談。
- Zoomについて。
全画面表示をウィンドウ表示へ変更可。カーソルキーを動かし、左上に移動させて緑色のボタンをクリック。
アプリ最新版への更新。今日の授業以降は、Zoom使う前に一度やろう。
- 授業ページやPDFの保存方法。
ブラウザで開いた状態で、ファイルメニューから「別名で保存」。
- mattermostのピン留めについて。
質問対応等で重要な告知が流れてしまうため、y20、progチャンネルについては「ピン留め」機能を利用します。
- mattermostで「コード」や「エラーなどを含む実行結果」の書き方。
```と```で囲んで書き込む。「バッククォート3つ」で「ここから引用開始」「ここで引用終わり」という記述になる。詳細知りたい人はmattermostのドキュメントを参照してみよう。画面キャプチャが適している状況もありますが、コードや実行エラーなどについての相談は、対応する側もそのエラー文をコピーして検索する等したくなります。何も考えずキャプチャするのではなく、適しているかどうかを考えて取捨選択しよう。
- 授業中の質問方法。
mattermostに書き込む。=> TA (Teaching Assistant: 院生) が対応。
- (2020年度入学生)Zoom個人面談について。
後日全員にやることを検討中。現時点で早めの面談希望があれば、ieメールで連絡ください。
- [進め方]
- 第1回、第2回、課題レポート1についての相談対応。
- 重要な点について補足説明。
第3回のif文説明。- グループ構築。
- ミニテスト+アンケート。
- [今日の達成目標]
- 第1回〜第2回の内容の理解。
if文を読み書きできるようになる。- Zoomを使ってグループ相談等できるようになる。
- [講義スライド] 第3回: インタプリタとスクリプトの体験2: 文字列とif文, 関数の利用 *8ページまでの予定。
- 課題レポート2: うるう年判定関数を作ってみよう
- 提出先: Googleドライブのreport2。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第5回の講義日(予定)。
- Zoom自己紹介を通した友人関係構築。
Googleドライブの「0424-zoom自己紹介」を参照。
第4回(5/1): if文、for文と関数定義
- お知らせ
- VS Code の準備。
- [今日の達成目標]
- if文を読み書きできるようになる。
- for文を読み書きできるようになる。
- range, listを使ってシーケンスを用意することができる。
- 関数定義を読み書きできるようになる。
- VS Code で breakpoints を設定し、デバッグ実行できる。
- [講義スライド] 第3回: インタプリタとスクリプトの体験2: if文, for文, 関数の利用 *最初から。
- [講義スライド] VS Code入門
- 課題レポート2: うるう年判定関数を作ってみよう
- 提出先: Googleドライブのreport2。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第5回の講義日(予定)。
- ミニテスト
第5回(5/8): スコープ、while文とループ処理の補足
- 今週のお告げ: 自分なりに振り返って整理しよう。
- 例1: 第4回目までに出てきた道具一覧 (by FreeMind *ただしFreeMindアプリは相当古い。「マインドマップ (mindmap)」でいろいろ探してみよう。)
- 例2: 教科書 pp.431-433(quick rereference), pp.435-(index)
- お知らせ
- 5/12(火), 18時, 年次懇談会。
Zoom URLは当日 y20 チャンネルで告知。
- 5/12(火), 18時, 年次懇談会。
- [今日の達成目標]
- 局所変数の有効範囲(スコープ)を理解できるようになる。
- while文を読み書きできるようになる。
- continue, break を使ってループ処理を操作できるようになる。
- [講義スライド] 第5回: 関数の利用2、while文
- ミニテスト
- 課題レポート3: 基本構造の解説
- 提出先: Googleドライブのreport3。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第7回の講義日開始前。
講義時間中に使うため、期日厳守。
- [ グループ演習1回目: 初めてのペア・プログラミング ]
- 演習内容: 演習1〜演習4
- 演習の取り組み方
- 演習レポート共有場所: Google driveの「ex1」フォルダの中。
各演習を終えたら、「ex-progress」ファイルの演習インデックス下部に「done」と記入。check欄は教員・TAらが使う予定。
第6回: シーケンス集合・引数、浮動小数点の取り扱い、スコープの補足
- 今週のお告げ「問題解決の仕方を学ぼう」。
Web検索や友人レポートを参考にしたり、先輩・友人らに教えてもらいながら演習・課題に取り組むのはとても良いこと。だけど「言われたとおりに手を動かすだけだと、その後一人で同じことを再現したり、応用したりできない」ままです。もしそういう状況になっていると、これは学びになっていません。コピー機と一緒です。そうではなく、「何故そういう風に取り組むのか」「今どう取り組めばよいのか」といった問題解決の仕方を学ぼう。
- レポート1の採点結果
Googleドライブのscore。
大幅減点(1項目あたり10点程度)の場合、遅すぎなければ再提出により採点見直しをします。希望する人は、(1)レポート修正、(2)修正後に當間へメール報告。
微減点(1項目あたり5点程度)の場合には採点結果大抵変わりません。次回以降のレポート等に活かしてください。
- [今日の達成目標]
- シーケンスに対するインデックス指定、スライス処理を理解する。
- 関数定義時に引数のデフォルト値を設定できるようになる。
- 局所変数の有効範囲(スコープ)と、スタックフレームの関係を理解できるようになる。
- [講義スライド] 第6回: シーケンス集合・引数・スコープの補足
- ミニテスト
- 課題レポート3
〆切:来週授業前、忘れずに!
- [ グループ演習1回目: 初めてのペア・プログラミング ]
- 演習内容: 演習1〜演習4
- 演習の取り組み方
- 演習レポート共有場所: Google driveの「ex1」フォルダの中。
各演習を終えたら、「ex-progress」ファイルの演習インデックス下部に「done」と記入。check欄は教員・TAらが使う予定。
第7回: リスト型と辞書型オブジェクトの利用
- 今週のお告げ:
頭の中だけで考えるのではなく、紙の上で図を書きながら整理してみよう。
- 課題レポート3の説明。
- モブプロとは別に、ランダム構築したグループで実施。if・for・while・def、それぞれ教師役を交代しながら説明。
- 教師役は画面共有しながら2〜4分で説明。説明後に少しQ&A時間を取る。質問等でなければスキップOK。
- defまで終了後、ミニテストへ記入。
- [今日の達成目標]
- リストの基本的な操作を理解しよう。
- リスト操作時の注意点(参照とループ処理)に気をつけよう。
- 辞書型オブジェクト(ディクショナリ)の基本的な操作を理解しよう。
- (ファイル操作の基本的な流れを把握しよう。)
- (代表的な調べ方。 *時間あれば。)
- [講義スライド] *PDFなし。
- リスト型オブジェクトの基本 *教科書5.3節。
- Dictionaries (dict型オブジェクト) *教科書5.5節。
- File I/O(ファイル入出力)処理の基本 *教科書4.6節。=>来週
- 代表的な調べ方=>来週
- 課題レポート4: 平均値の算出
- 提出先: Googleドライブのreport4。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第9回の講義日(予定)。
第8回: ファイル入出力の基本、ドキュメンテーション、振り返り
- 事前環境構築。以下のコマンドをターミナルから実行し、matplotlibをインストール。
- VS Codeのターミナルから次のコマンドを実行:conda install matplotlib
- 補足:赤嶺先生の授業でpip3を使った人は「pip3 install -U matplotlib」でインストールしてください。また VSCode では、/usr/local/bin/python3 を使うようにしてください。
- 今週のお告げ:シラバス外観。
- ミニテスト *今週はアンケート。
- [今日の達成目標]
- ファイル操作の基本的な流れを把握しよう。
- docstring形式でドキュメントを書けるようになろう。
- 代表的な調べ方。
- [講義スライド] *PDFなし。
- [ グループ演習1回目: 初めてのペア・プログラミング ]
- 演習内容: 演習1〜演習4
- 演習の取り組み方
- 演習レポート共有場所: Google driveの「ex1」フォルダの中。
各演習を終えたら、「ex-progress」ファイルの演習インデックス下部に「done」と記入。check欄は教員・TAらが使う予定。
- 最後まで終えたら、他グループのナビとして参加してみよう。
第9回: モジュール、KISS原則&DRY原則、抽象化&再帰関数
- 今週のお告げ:「メリハリを付けよう」。
リフレッシュする時間を確保しよう。遠隔授業を含めこれまでと異なる生活環境のため大変だと思いますが、勉強以上に大事なものは心身面での健康。体は資本なので「命を大事に」。課題等は貯めこんだり締切間近になってから焦って徹夜したりするのではなく、余裕を持って取り組もう。
- ミニテスト
- [今日の達成目標]
- 独自モジュールや既存モジュールを利用できるようになろう。
- KISS原則、DRY原則を意識して、読みやすいコードとなるよう工夫してみよう。
- 再帰関数の動作を理解できるようになろう。
- [講義スライド] *PDFなし。
- 課題レポート5: 課題レポート5: テキストファイルの統計処理その1
- 提出先: Googleドライブのreport5。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第11回の講義日(予定)。
第10回: VS Codeによるデバッグ演習2、正規表現の紹介
- 今週のお告げ
課題レポート4補足。難易度。再提出後の返信について。
- ミニテスト
- [今日の達成目標]
- 正規表現の概念を理解しよう。
- コード実行時に想定外の動作をした場合、バグ要因を特定するデバッグの考え方を学ぼう。
- コンピュータからのメッセージであるエラー文を解釈する努力をしよう。
- [講義スライド] *PDFなし。
- [ グループ演習1回目: 初めてのペア・プログラミング ] *時間があれば。
- 演習内容: 演習1〜演習4
- 演習の取り組み方
- 演習レポート共有場所: Google driveの「ex1」フォルダの中。
各演習を終えたら、「ex-progress」ファイルの演習インデックス下部に「done」と記入。check欄は教員・TAらが使う予定。
- 最後まで終えたら、他グループのナビとして参加してみよう。
第11回: doctest による動作のテスト(検証)
- 今週のお告げ
新しい概念や用語を、自分の言葉で説明してみよう。
- ミニテスト
- [今日の達成目標]
- タプル型オブジェクトの紹介。
- ユニットテストの意義と使い方を身につけよう。
- [講義スライド] *PDFなし。
- 課題レポート6: コード読解
- 提出先: Googleドライブのreport6。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第13回の講義日(予定)。
- [ グループ演習 ]
- 演習レポート共有場所: Google driveの「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 宿題: 教科書読み。
- 6. Testing and Debugging
- 6.1 Testing については、ざっくりと読む(太字注意して用語の意味を掴む)ぐらいでok。
- 6.2 Debugging については、全体の流れを読み取ろう。特に6.2.3節はデバッグ時の取り組み方が整理されてます。
- 6. Testing and Debugging
第12回: テストとデバッグの補足、JupyterLabとNumpy入門
- 今週のお告げ
心身問題溜め込まず、相談しよう。[ 保健管理センター | ハラスメント相談支援センター ]
- ミニテスト
- [今日の達成目標]
- テストスイートの基本的な設計法を理解しよう。
- 実行可能なノートを使ってみよう。
- ベクトル・行列演算できるようになろう。
- [講義スライド] *PDFなし。
- Chapter 6の補足: Testing and Debugging(テストとデバッグ)の補足
- おまけ1: JupyterLab を使ってみよう
- おまけ2: Numpyを使ったベクトル・行列演算入門
- [ グループ演習 ]
- 演習レポート共有場所: Google driveの「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習レポート共有場所: Google driveの「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ]
第13回: 例外とアサーション
- 今週のお告げ:学修サポート(学サポ)開始!
先輩が授業・課題・進学・就職・人生相談等に対応してくれます! 実施タイミングはmattermostのgakusapoチャンネルにてその都度告知されます。「この時間帯にやって欲しい」等の希望があるなら担当者に伝えてみよう。担当者も授業等あるので複数希望伝えて選択できるようにすると調整がスムーズです。
- 検討中
近いうちに面談を兼ねてグループ単位で対面方式でモブプロやることを検討中。決まり次第 mattermost y20 で告知します。
- ミニテスト
- [今日の達成目標]
- 例外とアサーションという考え方に触れよう。(後期にもやります)
- [講義スライド] *PDFなし。
- 課題レポート7: 原始的なインデキシングによる検索エンジンの実装
- 新しい点:「取り組み方」を記述すること。
- 提出先: Googleドライブのreport7。各自で「アカウント名のフォルダ」を作成し、そこに提出すること。
- 〆切: 第16回(テスト期間)の講義日。
第14回: バージョン管理システム Git入門
- 今週のお告げ:システム管理チーム(シス管)の紹介。
mattermost/ie-syskan
- 321教室の条件付き開放について(1年次、7/13以降)
- Q&A
- 「課題が難しすぎる。」
=> 100%の回答は求めていません。必要な道具を用意した上で課題を用意していますので、自分なりにどう取り組んだかを報告してください。それがレポート(報告書)です。コードが不十分でも、取り組んだ際の思考や過程を十分に報告してもらえればそれなりに評価します。レポート自体が未提出のままだと何も評価できません。分からない部分については学サポ等使って相談しよう。相談の仕方がわからないなら、そのことを私に相談してください。
- 「課題が難しすぎる。」
- ミニテスト
- [今日の達成目標]
- Gitによるバージョン管理の基本(リポジトリの用意、編集結果をステージング・エリアに記録、編集結果をリポジトリに記録)を理解しよう。
- pass, delの紹介。
- [講義スライド] *PDFなし。
- バージョン管理システム Git入門
- 補足:
- これまでの授業解説では抜けてた補足 *抜けてたのはpass, delのみ。
第15回: 振り返りと今後の道標
- 今週のお告げ:「問題解決の仕方を学ぼう」。
先輩・友人らに教えてもらいながら演習・課題に取り組むのはとても良いこと。だけど「言われたとおりに手を動かすだけだと、その後一人で同じことを再現したり、応用したりできない」ままです。もしそういう状況になっていると、これは学びになっていません。コピー機と一緒です。そうではなく、「何故そういう風に取り組むのか」「今どう取り組めばよいのか」といった問題解決の仕方を学ぼう。
- お知らせ
- 授業自体は今日で終了。来週は祝祭日。7/31からはテスト期間。プログラミング1はテストありませんが、レポート相談等に対応するため、7/31(金), 10:20〜11:00 は prog チャンネル & Zoom で対応できるようにします。
- 年次懇談会(オンライン)
7/31(金), 8:30-9:30程度。終了次第、前述のレポート相談対応に移ります。
- 対面モブプロについて *希望者のみ
- 個別面談について *1年次全員
- 課題レポート関連
- 未提出者でこれから出したい人がいたら、アップロード後にメール報告すること。
- 全レポートについて、8/13(木)までは減点付きで受け取り保証(確実)。それ以降は受け取れるか分かりません。遅れそうな場合は早めの個別相談を。
- 大幅遅延でも受け取るのは今回までです。後期以降は大幅減点や受け取らないケースも出てきます。
- ミニテスト *アンケート
- 授業評価アンケート(準備中?)
- 振り返り(重要な点と、課題では特に扱っていないが大切な部分を中心に)
- 今後の道標
- 教科書の後半。
- 参考: 『フカシギの数え方』 おねえさんといっしょ! みんなで数えてみよう!
- 授業後の道標?(Python等プログラミングメイン)
- 1年次向けオススメ書籍
- [ グループ演習 ] *時間あれば。
- 演習レポート共有場所: Google driveの「ex5」。
[ 演習5: 数当てゲーム1 (大小ヒント付き) を実装してみよう。 ] - 演習レポート共有場所: Google driveの「ex6」。
[ 演習6: 簡易ガチャ・シミュレータを実装してみよう。 ]
参考文献・サイト
- 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