UoPeopleでProgramming Fundamentalsのコースが始まったのでHomeBrewでPython3.8の環境をセットアップした。
English Composition1のコースをパスしたので、Foundation Courseを受けることになった。
コースグレードが発表されてすぐ、Online Education Strategies(UNIV 1001)とProgramming Fundamentals(CS 1101)のコースが自動で登録されていた。
今までの記事:
正式な学部生(Degree Seeking Student)になるには
実はまだ私は"Foundation Course Student"及び"Non-degree Student"扱いであって、正式な学部生(Degree Seeking Student)ではないのである。
以下のようなの条件を満たすとDegree Seeking Studentになれる。
- Students who complete the first two courses with a grade of 2.00 or higher in each course and who have submitted the official documentation may be accepted to begin studying towards a degree as early as the very next term.
- Students who do not earn a 2.00 or higher in each of their first two courses may take up to a maximum of five courses in UoPeople Foundations. Individuals in this group must earn a minimum cumulative grade point average of 2.00 or higher and submit the required documentation in order to be accepted to degree study.
University CatalogのP. 41 "Minimum Requirements at UoPeople Foundations"より引用
つまり、最初の2コースで73/100点以上とり、且つ高校の卒業証明書など書類を提出すればその次の学期からDegree Seeking Studentになれる。
73点とれなかったら、最大5つまでFoundation Courseを受講できて、追加のコースで挽回できればOK。
よって、この学期でOnline Education StrategiesとProgramming Fundamentals両方で73点以上とれれば、9週間後の次のTermでは正式な学部生になれるのである!
2コース並行受講が時間的に可能なのか問題
とはいえ、1コースあたりの学習目安時間が週に15時間なので、2コースを同時受講すると週30時間程度確保する必要がある。
もともと働いて子育てしながら30時間も勉強できるのか不安ではあった。
更に、現在は新型コロナウイルスの影響で我が家も保育園登園の自粛をしており、共働き夫婦フルタイムで在宅勤務+2歳児を終日家庭保育している状態のため、なんかもう無理なのでは感がある。
ていうかOnline Education Strategiesの方の課題のボリューム感がやばい。
課題図書の量結構多いしなあ…
— えんぴつ@子育て中フロントエンジニア (@empitsu88) 2020年4月10日
Programming Fundamentalsと同時受講はやっぱ無理そうだしどっちか見送りかな…。
普段なら奇跡的になんとかなったかもしれないが終日2歳児の家庭保育+フルタイム在宅勤務だけで毎日ヘトヘトなのである…。
Programming Fundamentalsの教材はThink Python
でも、ついに一番勉強したかったコンピューターサイエンスの授業が受けられるというのは素直に嬉しい…!
メインの教材はopen educational resourcesとなっているThink Pythonという書籍。
日本語版も公開されている。
この本の目標は、如何にしたらコンピュータサイエンティストのように考えることができるかをあなたに教えることである。
(Think Python:コンピュータサイエンティストのように考えてみよう第二版 p. 15より引用)
出だしから早速わくわくする。
目次を見ると、「 変数、表式、文」「クラスとオブジェクト」「継承」などの言葉がならんでおり、実務でプログラムをバリバリ書いている諸君は「あ〜はいはい」と思うかもしれない。
私もシラバスを見た時点では「あ〜はいはい」と思っていた。
でも、UoPeopleのコースはちゃんと「なんとなくわかる」で終わらせないようになっている。
Programming Fundamentalsの課題
課題やクイズには以下のような内容が出る。
- 下記の値をinterpreterに入力するとどんな結果が返ってくるか?そしてなぜそうなるのか説明せよ。(もちろん英語で)
>>> 05
- 下記の値をinterpreterに入力するとどんな結果が返ってくるか?
>>> 1,234.567,890
- 結果が4になるのは以下のうちどれか?正解以外の選択肢のoutputは?
a. 6 ^ 2 b. 6 ** 2 c. 6 +- 2 d. 6 += 2 e. 6 -+ 2
これらの出力結果から、あなたは何を理解し、学んだのか説明せよ。
structure of a program
は何という言葉の定義か?One of the basic elements of the syntactic structure of a program, analogous to a word in a natural language
は何という言葉の定義か?
※そもそもの課題の題材は概ねThinkPythonに沿っていますが、課題/クイズの出題と回答例をそのまま載せるとまずそうなので若干改変してます。
答えが気になる方はThinkPythonを読んだり、interpreterに実際に入力して出力を確認してみてください。
ご覧の通り、プログラミングの基本的な用語の意味を理解した上で、各演算子の働きなど言語仕様を理解し、それを英語で説明することを求められている。
もちろん、記述した内容はクラスメートやインストラクターにレビューされたり採点されたりする。
そうそう!そういうところから私はちゃんと学び直したかったんだよ!
「第一章プログラムが動くまで」の内容だけですでに興味深いので、後の章も楽しみ!
#UoPeople Programming Fundamentalsの今週の課題(1/2):
— えんぴつ@子育て中フロントエンジニア (@empitsu88) 2020年4月9日
・シラバスを読む
・Python 3の実行環境を整える
・テキスト(英語)の第一章を読む(7p)
・Tutorialの動画(英語)を見る
・提示されたPythonのstatement(10個くらい)をコンソールで実行して、なぜその結果になるのか説明する。(英語)
・その結果から何を学んだのか書く(英語)
— えんぴつ@子育て中フロントエンジニア (@empitsu88) 2020年4月9日
・他の3人の生徒の課題についてレビューする(英語)
・選択問題に答える(英語)
あれ?あかんやつではこれ…
Think Python読んでるんだけど、
— えんぴつ@子育て中フロントエンジニア (@empitsu88) 2020年4月9日
「token, syntax, parse, compileという言葉の定義」
「scriptとprogramの違い」
「formal languageとnatural languageの特性」
とかプログラミングの基礎の基礎から教えてくれてありがてえ…
いかに自分がこの辺の言葉をゆるふわに使ってきたかわかる…
Python3.8をどうやってインストールしよう
Unit1ではinterpreterの出力を確認する程度の内容だったので、Online Consoleが打てるPythonのサイトで十分事足りた。
だが、プログラミングのコースなのでもちろん今後に備えて開発環境を整える必要がある。
調べると、Pythonの開発環境を整えるには様々な選択肢があるらしい。
クラウドIDE Pythonanywhere
シラバスでは、PythonanywhereというクラウドIDEが紹介されていた。
これが一番楽そうだし、UoPeopleの課題くらいならなんとかなりそうだが…ちゃんとセットアップも経験しておきたい気持ちもある。
公式サイトからダウンロード
Syllabusでは、pythonの公式サイトからダウンロードしろと言っている。
You can find available downloads for Python v3 at the following URL: Python software Foundation. (2019). Download Python. http://www.python.org/download/
pyenv
いや、待て…pyenvというバージョン複数管理ができるツールがあるらしい。
Node.jsでいうnodenvのpython版みたいなやつだろうか。
GitHub - pyenv/pyenv: Simple Python version management
virtualenv/venv
でも以下の記事をみてたら課題こなすだけなのにpyenv必要か?って気がしてくる。
それかvirtualenv/venvもいい気がしてくる。
Anaconda
エディタはいつも使ってるVSCodeを引き続き使うつもりなので、「VSCode python」でぐぐったらこんな記事もでてきた。
VS CodeでPythonするために必要なこと (1/3):Visual Studio Codeで始めるPythonプログラミング - @IT
でもWindowsの人向けっぽい感じがするな…
Homebrew
待て待て、昔HomeBrewでPythonをインストールした記憶もあるぞ…。
以前、UdemyでPythonのコースを閲覧したときは、Homebrewが紹介されてたからそうしたんだった。
MacでPythonを使って『機械学習』を学ぶための環境構築 — キカガク技術ブログ ドキュメント
HomebrewでPython3.8を入れる
ということで、すでにHomebrewでインストールしていたのでそれをアップグレードしてみる。
Homebrewでpythonがすでにinstallされていることを確認。
$ brew list python
でもpythonコマンドの方は、OSにもとから入っている2系に向いているのである。
これがややこしい。
$ which python /usr/bin/python $ python --version Python 2.7.10
Homebrewでインストールした3系のpythonはpython3コマンド。
$ which python3 /usr/local/bin/python3
昔インストールしたやつは3系だけどバージョンが少し古いのでアップグレードする。
$ brew upgrade python Updating Homebrew... ==> Upgrading 1 outdated package: python 3.7.1 -> 3.7.7
あれ?3.7.7までしかアップグレードされない。
$ python3 --version Python 3.7.7
Homebrewの公式を見ると、3.8系にするにはpython@3.8という名前のFormulaeをインストールすればいいらしい。
$ brew install python@3.8 Updating Homebrew... ==> Downloading https://homebrew.bintray.com/bottles/python@3.8-3.8.2.mojave.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/51/511b4f2c3993f000516938ed0700936c8a7d8c054b5171fa733ac7d344291c30?__gda__=exp=1586447975~hmac=2f8c77 ######################################################################## 100.0% ==> Pouring python@3.8-3.8.2.mojave.bottle.tar.gz ==> /usr/local/Cellar/python@3.8/3.8.2/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python@3.8/ ==> /usr/local/Cellar/python@3.8/3.8.2/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python@3.8/ ==> /usr/local/Cellar/python@3.8/3.8.2/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python@3.8/ ==> Caveats Python has been installed as /usr/local/opt/python@3.8/bin/python3 You can install Python packages with /usr/local/opt/python@3.8/bin/pip3 install <package> They will install into the site-package directory /usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages See: https://docs.brew.sh/Homebrew-and-Python python@3.8 is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula. If you need to have python@3.8 first in your PATH run: echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.bash_profile For compilers to find python@3.8 you may need to set: export LDFLAGS="-L/usr/local/opt/python@3.8/lib" For pkg-config to find python@3.8 you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/python@3.8/lib/pkgconfig" ==> Summary 🍺 /usr/local/Cellar/python@3.8/3.8.2: 4,124 files, 62.7MB
でもこれだけだと、python3コマンドはまだ、3.7系に向いている。
$ python3 --version Python 3.7.7
$ which python3 /usr/local/bin/python3 $ which pip3 /usr/local/bin/pip3 $ ls -la /usr/local/bin/python3 lrwxr-xr-x 1 empitsu wheel 34 4 10 00:41 /usr/local/bin/python3 -> ../Cellar/python/3.7.7/bin/python3
インストール時の出力に以下のように出ていたから言うとおりにする。
If you need to have python@3.8 first in your PATH run: echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.bash_profile $ source ~/.bash_profile
これでpython3コマンドとpip3コマンドがpython3.8に向いた。
$ python3 --version Python 3.8.2 $ which pip3 /usr/local/opt/python@3.8/bin/pip3