シラバス
科目名 プログラミング演習B <a,b,c,d>
英語科目 ナンバリング (https://syllabus.kyoto-su.ac.jp/syllabus_search/#n)を参照
開講期 秋学期 開講学部等 情報理工学部 配当年次 1年次 単位数 2単位
教員名 木谷 公哉,玉田 春昭, 水口 充, 宮森 恒
 ※履修条件,配当年次等の詳細は履修要項をご確認ください。
授業概要/Course outline  
本演習はプログラミング演習Aに引き続き,Pythonによるプログラミングの演習を行う.
新しく導入される主要事項は関数の概念(引数,返り値,スコープ),再帰,クラスである.これらにより,実用
的かつ大規模なプログラムの実装が可能になる.

加えて,今日の情報系では当たり前になりつつあるデータ分析や機械学習についても,簡易な例を通じて実践する
.これらの例を通じてPythonとデータ分析,機械学習のスキルを身につける.

情報を専門とする学生にとってプログラミングスキルの習得はほぼ必須である.今後の専門科目でもプログラミン
グ能力が要求されるものが多数あり,それを避けてこの先進めていくことは難しい.つまりこの科目では基礎的な
プログラミングに関する知識と技術を習得し,操作を含めた訓練を行う.ただし,それはこの科目のためではなく
むしろ先に続く専門科目,特別研究の土台となっていることであると認識して取り組むこと.
本科目は,2コマの間の休憩時間も授業時間として利用する(195分/週)ため,授業回数は14回とし,オンデマン
ド授業は実施しない.

なお,この科目に先立ち,以下の科目の履修・習得を強く推奨する.

* 情報理工学概論
* コンピュータ概論
* プログラミング演習A
* 情報リテラシ基礎演習(高校までにPCを使用したことがあまりない場合)
授業形態,授業方法等/Course form・type  
【授業形態】
対面授業
【授業方法】
演習
授業内容・授業計画/Course description・plan  
以下の内容について,講義と演習を交互に繰り返しながら単元を進めていく.

1. プログラミング演習Aの復習
    * ヒストグラム,散布図の作成(Matplotlib)
    * 変数,タプル
2. Pythonの基本データ型(1/2)
   * リスト,タプル
3. Pythonの基本データ型(2/2)
    * セット,ディクショナリ,
4. 関数(1/2; 関数の基礎)
    * 関数の定義
    * 引数と返り値
    * assert文
5. 小テスト1,関数(2/2; 関数の応用)
    * デフォルト引数
    * 複数の値の返り値
    * 変数のスコープ
6. 再帰関数(1/2; 再帰関数の基礎)
   * 漸化式
7. 再帰関数(2/2; 探索)
   * 探索
8. クラス(1/2)
   * クラス定義
   * インスタンス作成
   * ドット記法
9. クラス(2/2)
    * カプセル化
    * コンストラクタ
    * メソッド(クラスメソッド,インスタンスメソッド)
10. 小テスト2,Webアプリケーション(Docker)
11. 機械学習(1/3)
    * ベクトルと行列
    * 機械学習とは(統計指標,データの可視化)
12. 機械学習(2/3)
    * 教師あり学習(線形回帰,決定木)
13. 機械学習(3/3)
    * 教師なし学習(クラスタリング,次元削減).
14. 最終課題,まとめ,期末テスト
事前・事後学修/Preparation and assignments  
この授業を受けるにあたって,キー入力操作が不慣れで授業中の作業時間で間に合わないと感じる場合は,十分に
練習し,タッチタイピングを習得すること.

第1回から第14回までの準備学習を次のように行うこと.

### 事前学習

授業に必要な資料はWebページ上に掲載しているため,毎回の授業当日までに十分に読み込んでおくこと.加えて
,例題や課題に事前に取り組み,自分が理解できない箇所を確認しておくこと.

### 事後学習

授業終了後に資料のWebページおよび授業中に取ったノートや演習成果物を見直し, 学習内容を確認して理解を深
めること.また、課された課題は取り組み提出すること.本演習で扱う知識は基礎的なものであり,いずれが欠け
ても今後の学部の専門授業の多くに支障を来す.そのため,理解不十分なまま放置しないこと.
授業の到達目標/Expected outcome  
* Pythonの基礎知識を身に付け,簡単なPythonプログラムが書ける.
* 与えられた仕様に従って,簡単なPythonプログラムが書ける.
* 基礎的な分析方法を理解し,Pythonプログラムを用いて実行できる.
* 基礎的なアルゴリズムを理解し,利用できる.
身につく資質・能力/Competencies to be attained  
専門知識・専門技能
【情報理工学部 情報理工学科】
 ・プログラミング
履修上の注意/Special notes, cautions  
タイピング速度は習熟度に大きく影響する.タッチタイピングは必須であり,1分間に120字程度(日本語入力で60
字程度)が入力できるようにしておくこと.入力速度が120字/分以下の場合は,単位を認めない場合もある.タイ
ピング速度は,次のサイトで測定できる.
https://www.e-typing.ne.jp/roma/check/

演習資料は事前によく読んでおくこと.また,演習資料中の例題は必ずコンパイル・実行すること.
疑問点は積極的に質問すること.

各講義ごと(週次)に2, 3題,課題を課す.期限までに取り組み提出すること.

生成系AIを用いること自体は禁止しないが,課題を生成系AIに投げた結果を確認することなくそのまま提出するこ
とは,自身のスキル向上に全く寄与しないため,お勧めしない.次のような活用方法をお勧めする.

* サンプルプログラムを説明してもらう.
* 期待通りに動かないプログラムの原因を教えてもらう.
* プログラムをどのように書けばよいかをアドバイスしてもらう.
* プログラムが正しく書けたかどうかを,どのように確認すればよいかを教えてもらう.
評価方法/Evaluation  
主に以下の3つの成績をもとに算出する.それぞれの割合は20%〜60%とする.

* 最終課題
* 期末試験(14回目に実施予定)
* 中間試験(5回目,10回目に実施予定)

また,各講義で課す週次課題の合計点数も成績に加味することもある(0%〜20%).

詳細は講義中に説明する.
教 材/Text and materials  
教科書 やさしいPython (「やさしい」シリーズ)
    高橋 麻奈(著)
    SBクリエイティブ(2018-04-20)
    ISBN 978-4797396027
    https://www.sbcr.jp/product/4797396027/

その他,講義用資料をWebにて公開する.
質問や相談の方法/Instructor contact  
* 主にMicrosoft Teamsで受け付ける.
  * Teams は授業開始時に Moodle にて指示する.
* 担当教員のオフィスアワーの情報は学部から提供されるため,そちらを参照のこと.
Copyright (C) 2025 Kyoto Sangyo University. All rights reserved.