講義名 /Name of Subjecte

プログラミング中級A

配当年次 /Year of Study

学部 1年~4年

到達目標 /Course Objectives

・Pythonにおけるオブジェクトの型や、ミュータブル・イミュータブルの違い、変数の意味といったやや細かい言語仕様について説明できる
・変数や名前のスコープについて説明できる
・関数を定義する際に副作用を意識したプログラムができる
・テキストエディタとシェルを用いたプログラム開発ができる
・標準入出力やファイルの入出力を利用したプログラムが書ける
・他のプログラミング言語と比較したPythonの特徴について説明できる
・Pythonの小規模なプログラムを独力で書けるようになる

授業内容 /Schedule

実施回 /Week

内容 /Contents

第1回

授業の概要とPythonプログラミングのレベル確認(小テスト)

第2回

前回の小テストの解説
プログラミングの開発環境 - 箱庭(Jupyter Notebook / Colaboratory)の外に出る

第3回

Pythonのオブジェクトの性質
・オブジェクトの同一性と変数の意味
・ミュータブルなオブジェクトとイミュータブルなオブジェクト
・関数の副作用

第4回

エディタとシェルによるプログラム開発
・Google Cloud Shell の使い方
・階層ファイルシステムとディレクトリの移動
・パスによるファイルの参照(絶対パスと相対パス)

第5回

プログラムとファイルの入出力
・標準入力と標準出力
・標準入出力のリダイレクション
・文字コードとファイルの読み込み

第6回

百人一首(1) 句を順番に並べる
・テキストファイルの読み込み
・sorted 関数 と sort メソッドによる整列の違い
・整列キーの設定方法

第7回

百人一首(2) 一字きまりの句を取り出す
・問題を部分問題に分解する
・集合オブジェクトを使う
・文字の出現頻度のを数える

第8回

百人一首(3) n字きまりの句を取り出す
・問題の一般化
・可読性と計算効率

第9回

ナンプレ(数独)を解く(1) 設計方針
・解法の候補: モンテカルロ法、バックトラック法、SAT問題への変換
・マス目の表現方法とデータ構造
・マス目の行と列の参照

第10回

ナンプレ(数独)を解く(2) 盤面の評価指標
・現在の盤面の評価指標設計
・乱数による盤面へのランダムな値割当

第11回

ナンプレ(数独)を解く(3) 初期配置がない場合
・マス目の値の交換
・マルコフ連鎖モンテカルロ法による状態の改善

第12回

ナンプレ(数独)を解く(4) 初期配置がある場合
・値の交換箇所のサンプリング
・サンプリング方法の改善
・袋小路に陥ったときの対策

変数のスコープ
・大域変数と局所変数
・他のプログラミング言語との比較

第13回

ナンプレ(数独)を解く(5) オブジェクト指向
・リファクタリング(プログラムの構造改善)
・クラス定義
オブジェクト指向を用いたプログラムの事例紹介
・ブラウザの操作

第14回

Python以外のプログラミング言語の紹介
課題と小テストの説明

第15回

理解度確認

授業計画コメント /Comments on the Schedule

初回の授業で課す小テストの結果を参考にして、授業内容を変更することがあります。

この科目は以下のプログラムの指定科目(コア科目)です。
- 2023年度以降の入学者を対象とした「データサイエンス副専攻プログラム」
- 2022年度以前の入学者を対象とした「データサイエンスプログラム」

授業方法 /Teaching Method

実習を含む講義
・PC教室備え付けのノートPCでPythonの開発環境を含む Anaconda を用いる
・Google の提供するプログラミング環境である Colaboratory と Cloud Shell を用いる

使用言語 /Language of Instruction

日本語 /Japanese

1

英語 /English

日本語・英語以外 /Other Language

準備学習(予習・復習) /Class preparation and review

・事前に資料を配布した場合は事前学習をしておくこと(30分)
・授業後、受業で学習したプログラム内容を理解し、自分で実行できる状態にしておくこと(60分

成績評価の方法・基準 /Evaluation

評価項目 /Criteria

評価配分 /Percentage

備考/ Remarks

学期末試験(第1学期)
/First Term examination

学年末試験(第2学期)
/Second Term examination

中間テスト /Mid-term examination

レポート /Reports

小テスト /Quizzes

60 %

平常点(出席、クラス参加、グループ作業の成果等) /Particlpation, Attendance, Group Work, etc.

40 %

その他(備考欄を参照) /Other(see remarks column)

成績評価コメント
各目標についてどのような点が評価のポイントになるか、具体的に記入してください。 /General Comments on the Evaluation Criteria:

プログラミングでは、とにかく手を動かして試行錯誤をすることを重要視します。授業後に毎回提出してもらうコメントや疑問点から、授業への取り組みを評価します。疑問がある場合は積極的に質問するようにしてください。また、小テストを数回実施します。

課題等(試験やレポート等)に対するフィードバック /Feedback on Exams or Assignments

課題等の解法については授業中に口頭、もしくはLMS上で資料で解説します。授業へのLMSを通した質問については授業冒頭で履修者を匿名にして回答します。

教科書 /Textbook

教科書コメント /General Comments on the Textbooks

参考文献 /Reference Book

1.

書籍名 /Title

シリーズ名 /Name of series

著作者 /Author

『入門 Python 3』

Bill Lubanovic

出版元 /Publisher

版 /Edition

出版年 /Year

ISBN

オライリージャパン

2 版

2021 年

978-4873119328

2.

書籍名 /Title

シリーズ名 /Name of series

著作者 /Author

『Python実践入門』

WEB+DB PRESS plus

陶山嶺

出版元 /Publisher

版 /Edition

出版年 /Year

ISBN

技術評論社

2020 年

978-4297111113

参考文献コメント /General Comments on the Reference Books

履修上の注意 /A Note on Registration

1学期の授業「プログラミング初級(Python)」相当のプログラミングの経験があることを前提として授業を進めます。「プログラミング初級(Python)」を履修していない場合は、該当科目のシラバスを参照して内容を確認した上で履修してください。たとえば、次のような単純なプログラムについては、本やWebで調べながらでもよいので自力で書けるレベルに達していることが最低要件です。

「1つの整数を引数として受け取り、その整数が奇数であるとき True, 偶数であるとき False を返す関数 is_odd を定義せよ」

コンピューター教室での実習をともなう授業ですので、履修人数を制限することがあります。

授業では Google Cloud Shell 等の Google の開発環境を用いますので、履修者はあらかじめGoogleのアカウントを取得しておいてください。

旧科目「プログラミング2・一般向」または「情報処理入門2」の単位を既に取得している場合には、「プログラミング中級」を履修しても重複履修として随意科目の扱いとなるので注意してください。

その他 /Other Information

授業資料の配布や課題の提出など、授業に関する連絡はLMS(Moodle)を通して行います。

カリキュラムマップ /Curriculum map

以下URLを参照
https://www.univ.gakushuin.ac.jp/life/curriculummap.html

↑トップに戻る