Archive for the ‘プログラミング1’ Category

インタプリタ設定 for PyCharm on macOS / Windows

木曜日, 6月 14th, 2018

先週の授業でPyCharmさせて、設定周りでかなり時間かかったのですが、環境構築自体はひとまず一度やれば基本的には良いので同じことやら無くて良いだろうなと思いつつ、実際には10人ぐらい?の学生が例題動かせず。

私が確認した範囲で多かったのは、「何故かインタプリタがPython2.7になっている」、「インタプリタ設定自体が消えている」。また、インタプリタ設定し直そうとすると「ターミナル上から起動してるインタプリタをフルパスで指定しようとしても、設定自体が通らない」。特に最後のやつはかなり悩んだんですが、結果的には「開いてるプロジェクトを閉じて、PyCharm本体のPreferencesからなら設定が通る」ことが判明。いや、確かにプロジェクト開いてる状態だと「そのプロジェクト上での設定」になるのは分かるけど、それならそれで設定通ってくれよ〜(この場合、また新規プロジェクト時にトラブル再発するわけだが)。

あと、2名?がWindows環境で頑張ってるんですが、このうち1名がAnaconda起動できず。具体的には、Anacondaのプロンプト起動しようとすると「activate.batが存在しない」となり、python自体が起動しない状態。ただし、実行ファイルがあるディレクトリに移動したら動く。赤嶺先生がいろいろ試した結果、「Anacondaインストール時に用意されるっぽい起動スクリプトは無視して、OSのシステム環境設定でpythonへのパスを通す」ことで動作するように。

なんだかんだで環境設定はやっぱり手間かかりますね。それ考えるとGoogle Colaboratoryは偉大だ。

環境構築

木曜日, 6月 7th, 2018

プログラミング1も後半戦です。振り返りはともかくとして、PyCharmのインストールから環境設定までで予想以上に時間がかかり、予定してたことを終えることができず。

インストール大会でpyenv + anaconda3-5.1.0 な環境にしてあるはずですが、何かの拍子にPATHが変更されててOSデフォルトのpython2.7とか別バイナリが選択されてたり。anaconda環境自体が壊れてるのか、PyCharm側から選択できなかったり。それ以前に同じバージョンインストールしたはずの、私の環境と学生とで異なるのは何故なんだぜ〜。ということであれこれ「指示したとおりに操作できない」状況が重なり、PyCharmだけで時間かかりました。

来年度は1週目(ほぼ環境同一なはず)で環境設定までやった方が良さげかなぁ。ターミナルでの操作も覚えさせたいという意図で、ターミナル+エディタという形を取ってみてるけど、最初からIDE使わせたほうが楽っちゃ楽だろうし。

一方で、未だにターミナル上だと「今どのディレクトリで作業してるか」を意識できてない学生も、3割ぐらいは見かけるのだよな。サンプルコードをダウンロードして、それをターミナル上で実行する際にディレクトリ移動するということが分からないか、「No such file or directory」出てもスルーしちゃってただ「動かない」と困るケース。使わせててこのぐらいだと、使わせなくなったらもっとわからなくなりそうなのが怖いのだよなぁ。

その割には、余裕でこちらの話してる内容に付いてきてるし、それ以上のことを予習して質問に来る学生もいるので、レベル差は大きいですね。毎年のことですが、悩ましい。

再帰関数

木曜日, 5月 31st, 2018

先週で関数とスコープ、スタックフレームの話やったしということで、今週は再帰関数のお話。初学者が全体を理解するには難しいと思いつつも、迷路探索なコードと動作イメージ(説明時はアニメーション付き)で再帰関数のイメージを掴んでもらえれば。

動作をちゃんと確認したいならデバッグ実行だよねということで、(今日やれなかったので)来週はPyCharmします。先週やったThonnyでも良いんだけど、停止単位が細かすぎるしbreakpoint設定できないしで長いコードで使うには不向きなんだよな。Thonnyはあくまでも初学者向けであって。

プログラミング初心者で、かつ、Python向けのIDE

木曜日, 5月 24th, 2018

多言語で慣れた人はPyCharmなり他のやつが良いでしょう。

「プログラミング初心者」に対してはThonnyを強く推してて、去年から授業で導入してみてます。デモ動画見たら一発で良さが分かるはず。それぐらい推してるんですが、まだあまり広まってないっぽい?

どこが凄いかというと、1つ目は、

Simple debugger. Just press Ctrl+F5 instead of F5 and you can run your programs step-by-step, no breakpoints needed. Press F6 for a big step and F7 for a small step. Steps follow program structure, not just code lines.

です。通常のIDEだと行単位での実行ですが、Thonnyでは「変数を評価する」ぐらいの細かい粒度で実行してくれます。

Faithful representation of function calls. Stepping into a function call opens a new window with separate local variables table and code pointer. Good understanding of how function calls work is especially important for understanding recursion.

2つ目が上記で、関数呼び出しの都度新しくウィンドウ生成してくれて、そこにスタックフレームも作ってくれるので、スコープやスタックフレームの参照順序を意識しやすいです。

この辺りを視覚的に参照しやすいので、プログラミング初心者向けとして強く推してます。逆に、ブレークポイントとかは設定できない(多分)ので他言語なりで慣れた人にとっては苦痛でしょう。

レポート採点

水曜日, 5月 23rd, 2018

プログラミング1,2のレポートはTAにも採点と指導のため見てもらってます。

採点はそのまんま点数つけてもらうことで、「指定条件を満足してるか」をメインに見てもらってます。それとは別に、「誰かと協力して取り組んだのか(書くように伝えてある)」も抽出してもらってますが、ここに時間取られるぐらいなら自動化したほうが良さげかもな。

指導の方は「レポートの書き方」に関するコメント指導のことで、章立てや段落の使い方、図表あるならその書き方、事実と考察の混在が明確に分けられてるか、考察が感想になってないかとか、諸々気づいた点についてコメントしてもらってて、助かってます。

まだ1年次なりたてで複雑な課題も出してないので簡単なレポートですが、段落の使い方がおかしい学生はいっぱいる(4年次になってもいるが)な。割と多いのは背景色と文字色が同系色になってて視覚検査させられてるような書き方がちらほら。若いと見分けられるかもしれませんが、おじさん的には辛いです。

help(print)

月曜日, 5月 21st, 2018

プログラミング1な話。

1週目だったか2週目だかの早い段階でマニュアル参照するhelp()を教えてるんですが、実際に触ってるかどうかは別問題で。一応演習にも組み込んでますが、それっきりなこともあるのが実態です。

それはそれとして、先週print関数でfileやらflushやらの引数の説明が要領得ないという質問を受けました。stdoutあたりの話は「プログラミング演習1」の方でやってるからそっちに投げるとして。flushの機能はともかく、それが欲しい状況は普通想像できないよな。

私自身は、Cで重いシミュレータ書いてたときに printfとファイル出力とでちぐはぐなことがあってトラブルシューティングしてからその意味に気づいたのだけど、授業中にそういう説明があったかは覚えてないです。それぐらい、普通のちっちゃな演習課題では普通影響がないよなぁ。と思いつつ説明してみましたが、CPU・キャッシュ・メモリ・HDDとかの階層構造とか意識できないと「ふーん」で終わっちゃうんだろうな。(一応その辺りの話もしてみた)

GWで1週間休みを挟んでの授業

木曜日, 5月 10th, 2018

プログラミング1の4回目が終わりました。内容的に新しいのはスコープ(局所変数)、whileなループ処理ぐらいで、授業時間の半分ぐらいはペアプロにあてました。今日で2回目ですが、今の所「ペア相手と相談しながら取り組むこと自体ができてない」ケースはなさそうな雰囲気。見落としていなければ。悩みまくってて進捗遅いペアはいますが、それは当面問題考えない方向で。

ペアプロ用の演習には「~/prog1/ex1/を作成しろ」とかターミナル上での操作も含めた内容になってるのでそこでつまずく(Pythonインタプリタ上でUnixコマンド実行する)学生がちらほら。ま、それも狙っての内容なので復習のつもりで取り組んでください!

3週目にしてペアプロ開始

木曜日, 4月 26th, 2018

先週躓いて終われなかった部分をやってから、本題のif文と関数定義やreturnまで一度通してやりました。話すだけだと体に染み込まないよなということで演習(コード写経+実行)もさせて、その時点で残り時間20分。

ペアプロさせたいよねということで、7分ぐらいで概念とやり方を伝えて初ペアプロ突入。10分ちょいしかやれなかったし、想定外の質問(問題文と回答記入とが別々に用意されてることに気づいていないとか、日本語入力できないとか)もあったけど、一応導入ぐらいはできたのかな。終了合図しても休憩時間そっちのけで(多分)全ペアが楽しそうにそのまま続けてました。

来週はGWで休みです。少しペース早いので、GW明けの次回は新しい内容は少しだけに留めて、ペアプロ時間を優先する予定です。今のまま継続できると良いな!

授業でやった!=使いこなせる

木曜日, 4月 19th, 2018

プログラミング1の2週目が終わりました。予定してた内容を終えることはできなかったのですが、想像の範疇ではあったのでよし。

「ホームディレクトリにprog1という名前でディレクトリ作って」
「そこにtest.pyという名前保存して」

去年はTerminal操作でやらせてましたが、今年は試しにFinderでやらせてみました。結果的にはCUI/GUIどっちでも混乱する人はいるというかどっちもどっちですね。ディレクトリをフォルダと言い換えても同じで、そういう思考に慣れてないという感じがします。一般高校含めて高校でPC触った演習もやってるはずですが、必ずしも身についてるわけではないというのはどこでも一緒といえばそうか。ということで演習時間もとろう(増やそう)。

100本ノック(100 exercises)系の演習問題作れば良いのかな。ググるとシェルスクリプトなものは見つかるけど、それ以前の部分は「解説+演習」な形式になってるのが多いのかな。Linux標準教科書もそうだし、英語だとUnix MagesのPDF版がかなり丁寧に書いてあるっぽい。beer donateしてるらしいw

P.S.
ミニテストの自由記述欄で「趣味は?」と。例題で「スライム2匹に遭遇した」とか言ってるのでそっち方面は伝わってるだろうということでラノベとか言っときましたが、そこそこ新しいやつだとアニメやってる(た?)「りゅうおうのおしごと」も読んでます。SAOとかSFチックなものも好物です。スマートフォンユーザなってから持ち歩きに不便せず読めるようになったのは素晴らしい。

プログラミング1の始まり

木曜日, 4月 12th, 2018

1年次必修科目のプログラミング1も始まりました。本題に入るまでの補足説明というか告知関連でかなり時間かかりましたが、「ターミナル起動して」で全員(?)が起動できたのは凄い。一方で「ooした結果がxxになることを確認して」の「ooする」を見落とすなり聞きもらすなりで確認失敗(と本人が判断する)ケースも。これは例年の話か。喋り捲る&動きまくるので体力的な意味での消耗も激しいです。

一度に60名強対象にやるとどうしても漏れが出ちゃう。技術職員&TAにサポートしてもらえなかったら死ぬな。初めて担当した年に比べると「ゆっくり話す」「繰り返し説明する」ことを心がけるようにしてるのと、資料等見直して「資料の説明漏れや分かりにくいところの修正」をしてるので、当時よりは漏れが出にくくなってるだろうとは思います。

まだインタプリタでの実行しかやってないので、来週は課題レポートの書き方演習しつつ、ファイル保存してからの実行やることになるのかな(多分)。