2023-2I プログラミング1 第01回 講義資料

2023年04月13日(木)5・6時限

1 シラバスの確認

1.1 基本情報

1.2 関連科目

知能情報コースの専門科目は ソフトウェア系ハードウェア系応用情報科学系3系統があります。ここでは、ソフトウェア系応用情報科学系 のなかで本科目と特に関連がある科目を挙げています。

興味関心のある科目は、授業の開講を待つことなくウェブや書籍を活用 して学んでください。また、興味があるものの取っ掛かりがない場合は、知能情報コースの先生に相談してアドバイスをもらいましょう ( どの先生に相談すれば分からないときは、まずは担任に相談してみましょう )。

1.3 授業概要

プログラミングICTエンジニア(特に ソフトウェアエンジニア )にとって最重要スキルのひとつに位置づけられます。また、プログラミングは理工学分野の学び(情報工学系科目をはじめ数学や物理などの学習)においても理解深化のための強力なツールにもなります。

本科目では、その 導入教育 として、主に Python言語 を使ってプログラムに関する概念や用語、設計、実装、デバックについて 経験的に習得すること を目指します。

なお、Python言語 の特長や特性を知ってもらうために、その他のプログラミング言語( C言語やJavaScriptなど )についても簡単に体験 (実装) してもらうこともあります。また、実装演習では高専1・2年の数学や物理を題材としたものも取り上げ、実装力の向上と同時に数学や物理についても理解を深めてもらいます。

1.4 科目の達成目標

達成目標 (=2024年2月における皆さんのあるべき姿) として、次の事項を設定しています。

  1. Pythonの 開発環境および実行環境 を構築できる。
  2. エディタや バージョン管理システム などの各種開発ツールを効果的に利用できる。
  3. 関数、条件分岐、繰り返し処理を使用して基本的な 構造化プログラミング ができる。
  4. Pythonの多様なライブラリを活用して 日常生活や学習 に有用な小規模アプリを開発できる。
  5. エラーや意図せぬ結果が生じたとき、その原因特定と解決に向けて適切なアプローチができる。

1.5 成績評価法

総合成績(年度末の最終成績)は、次のように評価します。

中間試験や期末試験などの筆記形式の定期試験は実施しません

2 そもそも「プログラミング」とは

2.1 プログラム (Program)

プログラムとは コンピュータに対する作業指示を記述したもの です。

何らかのプログラミング言語によって記述されて、人間が編集可能な段階(読み書きできる状態)のプログラム のことを「ソースコード」「ソースファイル」「ソースプログラム」「ソースリスト」「スクリプト」「原始プログラム」のように表現します。

一方で、機械語(2進数)によって記述され、コンピュータ (CPU) が直接的に実行可能な段階(読み込みできる状態)になったプログラム のことを「実行ファイル」「ソフトウェア」「アプリ(アプリケーションの略)」「バイナリファイル」「EXEファイル(エグゼファイル)」のように表現します。

単に「プログラム」といっても2通り意味合いがあるので注意してください(どちらを指すかは文脈から判断してください)。

なお、プログラミング言語によって記述されたソースコード(=テキストファイル)から、機械語(2進数)で記述される実行ファイルを生成する操作を コンパイル(Compile) または ビルド(Build) といいます。コンパイルには機械語に翻訳するという意味があります。

コンパイルとビルドの違い

厳密には「コンパイル」と「リンク」の2つの作業を総称して「ビルド」と表現します。詳しくは「コンパイル ビルド 違い」などで検索してください。

プログラムは、コンピュータを相手に最も「効率良く」かつ「齟齬なく」コミュニケーション をとるための手段・媒体とも言えます。

2.2 プログラミング (Programming)

プログラミングとは、「ソースコード」を作成する行為や作業を指します。ほぼ同じような意味で 「コーディング」実装」「開発」という言葉が使われます(厳密には、それぞれニュアンスは異なります。興味がある人はネットで検索してみてください)。

2.3 プログラミングスキル (Programming Skill)

ラフな表現になりますが、

がプログラミングスキルといえるのではないかと思います。

3 プログラミング学習をはじめる前に…

これから、皆さんはプログラミングの 未経験者(未学習者) から 初心者 に向かって「学び」をしていきます。それに先立ち、ぜひ視聴して欲しい動画があります。以下、「エンジニアチャンネル」というYouTubeチャンネルの動画になります。

3.1 プログラミングをものにするために投資すべき時間

資格取得に必要とされる学習時間の目安

3.2 学校の授業はゲームで言えば「XXXX」

学校の授業というものは、ゲームで言えば チュートリアル でしかありません。その先につづく 膨大な本編のほんの入口 にしかすぎません。試行錯誤や失敗の連続でも、自分の意思で好きなように自由に取り組む実開発(ゲームで言えば本編)のほうが、はるかに夢中になれて、格段に「学び」も大きく深いです。

事実、この授業は1回約90分の通年授業(約30回の講義)ですが、ここでの累積学習時間は

\[ 90 \times 30 = 2,700 \mathrm{min} = 45 \mathrm{hr} \]

です。たとえ宿題で毎回90分を費やしても、90時間です。授業のなかだけの取組みでは、超初心者が初心者になるたための250時間の半分にも到達しない・・・。

残念ながら、授業は亀の歩み。独学すれば休日の午前中に収まる学習内容でも、授業では3週間かけて (1週間の間隔をあけて90分を3回で) 提供することになります。特に、1週間も学習間隔があけば、覚えたことも忘れてしまうので、その復習も授業中でやっているとすれば、休日午前で終わる内容を、授業では4週間から5週間かけて提供するのかもしれません。

3.3 1000~2000時間の差はなに?

3.4 教員としての願い

和田が理想と考える高専生は 自己効力感を持って、仲間と共に、創造的なモノづくり活動を楽しめる高専生 です。

砕けた言い方をすれば、自分なりの武器と自信を持って、仲間と一緒に何かクリエイティブな「モノづくり(アウトプット活動)」に取り組むことが「楽しい」「充実している」と思える高専生 です。

そのためのチュートリアル(導入やきっかけ)になるような授業を提供したいと思っています。

4 Python開発・実行環境: Google Colab.

これからしばらくは、Pythonの開発・実行環境として GoogleColab.(グーグルコラボ)というクラウドサービスを利用していきます。GoogleColab.はネットの接続が必須ですが、ウェブブラウザだけで簡単にプログラミングをはじめることができます。

また、以降の授業のどこかのタイミングで、ローカルPCにも Python実行環境を構築し、VSCode (+各種拡張機能) を IDE として利用して開発するスタイルに移行します。さらに、皆さんが想定以上に意欲的に取り組んでくれれば、Docker を活用した開発・実行環境の構築なども体験させたい、と思っています。

Tips:GoogleColab.が有料化やサービス終了してしまったら?

ローカルPCに JupyterNotebook(ジュピターノートブック/ジュパイターノートブック)という環境を構築すれば、GoogleColab. とほぼ同様の開発ができます。そもそも、JupyterNotebook を Google が独自拡張し、ウェブサービス(クラウド型)として提供したものが GoogleColab. です。

仮に、GoogleColab. のサービスが終了しても、それまでに開発したプログラムは ローカルPCの JupyterNotebook に引き継ぐことができます。

GoogleColab.についての詳しい情報(FAQ)はこちら

4.1 ノートブックの新規作成

4.2 コードセルの追加と編集・実行

4.3 テキストセルの追加と編集

4.4 ノートブックの保存と再開

5 文字列の扱いと出力

5.1 文字の出力1

文字の出力。きっちり表現すると「文字列リテラルを標準出力に送る」という表現になります。

%reset -f
print('Hello World')

5.2 文字の出力2

%reset -f
print('Hello World')
print('Hello Python')
%reset -f
print("Hello World")
print('私の名前は○○です。')
print('最寄り駅は○○で年齢は○○歳です。')
%reset -f
print('\U0001F923')

6 宿題

次回の授業までに GitHubアカウント を準備しておいてください(授業中にアクセスできるようにしておいてください)。このアカウント(リポジトリ)は、インターンシップ、就職、進学において、皆さんのポートフォリオ ( 取組み実績やスキルを示すための作品集 ) という位置づけになります。

そのため、ユーザーネームは慎重に設定してください (1年次の実験実習で作成したアカウントを継続使用しても、新規に作成しても、個人使用しているものを利用してもOKです。ユーザーネームは変更可能ですが色々と面倒があるので、この機会に適切なものにしておきましょう)。

この授業で作成したプログラミングのほか、他の授業や実験実習で作成したものも、このGitHubアカウントのなかに蓄積していってもらいます (少なくとも教員とクラスメイトには閲覧されるものになります) 。