シラバス検索システム
シラバス
科目名
応用プログラミング(Python)
英語科目
ナンバリング
Ilab207
開講期
集中
開講学部等
コンピュータ理工学部
配当年次
2年次
単位数
2単位
教員名
青木 淳
※履修条件,配当年次等の詳細は履修要項をご確認ください。
授業概要/Course outline
この授業は秋学期集中の講義(演習を伴う集中講義)であり、実施日時は12月の土曜日、12月03日(土)・12月10日(土)・12月17日(土)の3日間、1限から5限までをフルに活用して行う。1週間ごとの通常のプログラミングの授業と異なり、3日間(3週間)という短期間に1つのプログラミング言語を一気に習得できるチャンス(効率のいい授業:3日間(3週間)で2単位は美味しいはず<笑>)である。
情報系の産業において主流となっているオブジェクト指向プログラミングをPythonを用いて学ぶ。同時にPythonを介して関数プログラミングのスタイルも会得する。世の中に必要とされているプログラミングの知識と技術を、実際に動作する例題プログラムをふんだんに用いて解題してゆく。
基礎プログラミング演習を通して手続き的なプログラムを作ることに先に慣れてしまうため、発展プログラミング演習で垣間見るオブジェクト指向プログラミングに馴染めなかった学生も多いのではなかろうか。いわんや関数プログラミングをや。演習の不足や消化不良を払拭してしまおう。
CやJavaなどはプログラムを実行するのにコンパイルを必要とする。一方、Pythonはスクリプト言語(scripting language)であり、コンパイルを必要としない。情報産業において、コンパイル言語も、スクリプト言語も共に多用されている。コンパイル言語だけの習得では、これから先が立ち行かない。ぜひともスクリプト言語で表現されたプログラムの取り回しの良さを実感してほしい。
この授業ではプログラミングにおけるマルチパラダイム(いくつものプログラミングのスタイルを場合に応じて押し出せること)を徹底的に指導する。オブジェクト指向プログラミングも、関数プログラミングも、手続きプログラミングも、メジャーなスタイルを自らのものにしてしまおうではないか。プログラミングに対する苦手意識を解消し、いずれのプログラミングのスタイルも楽しく愉快に駆使できる高みをめざす。
同時にプログラミングの厳しさや険しさの自覚を働きかける。人命にかかわるような、社会基盤にかかわるような、ミッションクリティカルと呼ばれる極めて重要なプログラムが多く存在する。けっしてバグってはならないプログラムである。そのようなプログラムの開発に携わってきた講師自らの経験を基にして、一行一行を丁寧に書き下ろすための精神力や技術力について、勘どころを伝えてゆく。
授業内容・授業計画/Course description・plan
この授業では「まず、やってみる、それから、学ぶ」をライトモチーフにしながら、以下のようなテーマに沿って進めてゆく。ただし授業の進行状況に応じて変更することがある。
<1日目:12月03日(土)>
[第01回]
テーマ:プログラミング事始め(Getting Started Guide)
[第02回]
テーマ:変数と組み込み型(Variable and Build-in Type)
[第03回]
テーマ:条件分岐と繰り返し(Conditional Branch and Loop)
[第04回]
テーマ:関数:定義と利用(Function:Definition and Calling)
[第05回]
テーマ:組み込み関数(Build-in Function)
<2日目:12月10日(土)>
[第06回]
テーマ:ファイル入出力(File Input/Output)
[第07回]
テーマ:内包表記・イテレータ・ジェネレータ(Comprehension・Iterator・Generator)
[第08回]
テーマ:オブジェクト指向プログラミング:クラスとインスタンス(Object-Oriented Programming:Class and Instance)
[第09回]
テーマ:継承と集約(委譲)(Inheritance and Aggregation (Delegation))
[第10回]
テーマ:エラーと例外処理(Error and Exception)
<3日目:12月17日(土)>
[第11回]
テーマ:モジュールとパッケージ(Module and Package)
[第12回]
テーマ:名前空間とスコープ(Name Space and Scope)
[第13回]
テーマ:標準ライブラリと自作ライブラリ(Standard Library and Home-made Library)
[第14回]
テーマ:アプリケーション開発(Application Development)
テーマ:プログラミング過程(Process of Programming)
[第15回]
テーマ:リファクタリング過程(Process of Refactoring)
テーマ:頒布(はんぷ:広く配るため)のしつらえ(Distribution: Software Configuration, Licence, etc.)
準備学習等(事前・事後学習)/Preparation and assignments
[第01回]〜[第15回]の授業テーマに共通する予習と復習について
[事前学習]配付資料を教員ページ(リポジトリ)またはmoodleページからダウンロード(チェックアウト)し、それを良く読み、事前に関係するところを調べて、疑問点を明らかにして授業に臨むこと。
[事後学習]授業で学んだ知識内容と配布資料にメモした事柄を整理してノートに書き写して復習すること。さらに理解を深めるため、授業中に指示される宿題レポートや小テストなどに果敢に取り組むこと。
授業内容が実際のソフトウェアの開発・運用・保守の現場(ソフトウェア開発会社)でのプログラミングを想定している。そのため、学問的なことばかりではなく、作法(さほう・さくほうの両方)や書法(プログラムやドキュメントの著し方)なども範疇に入り、たいへん多くのことに気を配らなければならない。事前に関係するところを調べて授業に臨み、その後、講義で学んだ知識を整理し、さらに理解を深めるために宿題レポートを真剣に行い、理解(りげ)から行解(ぎょうげ)に変えてほしい。また、数々の宿題には複数の配付資料やプログラムが関連する。したがって、それらの整頓も大切である。
授業の到達目標/Expected outcome
動くプログラムと正しいプログラムの相異を知ることが到達目標である。少なくとも、オブジェクト指向プログラミングと関数プログラミングの双方を会得し、スクリプト言語とは何ぞや?に応じられるようになり、UML(Unified Modeling Language)やデザインパターンなどオブジェクト指向デザイン(設計)への橋渡しも到達目標とする。最高学府のプログラミングの授業である。将来の情報社会に寄与できる精神とプログラミングの知識と技術を保持した人間の育成をめざす。
身に付く力/Special abilities to be attained
論理的思考力(課題発見力、計画力、論理的分析力、総合的判断力)、実践力(働きかけ力、実行力、主体性)、そして、実社会の開発現場で役立つコンピュータ理工学「オブジェクト指向プログラミングと関数プログラミング、加えて手続きプログラミング」の知識と技術を身につけることができる。
履修上の注意/Special notes, cautions
定員を45名とし、受講希望者多数の場合はコンピュータ抽選を行う。平成26年度以前入学生は履修不可。詳細は履修要項別冊ガイドを参照。
システムエンジニア(SE)などの情報産業界の職種を希望している者の履修を強く勧める。より良いプログラム作りをめざしたい、効率的にコストをかけずに高品質のプログラムを開発したい・運用したい・保守したいと望む者の履修を歓迎する。
毎回、各自のコンピュータを持参し、必ずネットワークに接続して、授業が始まる前までに稼働状態にしておくこと。講義中に援用するプログラムはネットワークを介して取得する。リポジトリ(SCM: Software Configuration Management、たとえばSubversionやGitなどのソフトウェア構成管理)もアクセスするので、その作法(マナー)に慣れること。
評価方法/Evaluation
毎回の授業の初めに課す小テストを50%、毎回の授業の終わりに課す宿題レポートを50%、合計100%として、それらの出来具合を総合的に評価する。法令に則り「1単位45時間(2単位90時間)の学修」が宣われている。授業の終わりに課される宿題レポートは、当該時間(1回の授業を受けたら約4時間の学修)を確保するものであるから、その時間に見合うレポート内容を必要とする。また、授業の初めに課される短時間の小テストは、当該学修時間の成果を見極めるために実施し、授業への取り組みや姿勢を(出欠および遅刻などを含めて)つまびらかにするものでもある。
教 材/Text and materials
教科書:配付資料
参考書:John V. Guttag著,久保幹雄監訳『Python言語によるプログラミング イントロダクション』(近代科学社,2014)
参考書:柴田淳『みんなのPython』第3版(ソフトバンククリエイティブ,2012)
参考書:Pythonサポーターズ著『パーフェクトPython』(技術評論社,2013)
参考書:Tarek Ziade著,稲田直哉・他訳『エキスパートPythonプログラミング』(KADOKAWA/アスキー・メディアワークス,2010)
参考書:青木淳,浅岡浩子,澤本依里『Smalltalkで学ぶオブジェクト指向プログラミングの本質』(日経BP社,2008)
参照URL:http://www.cc.kyoto-su.ac.jp/~atsushi/
その他/Others
研究室:第2実験室棟3階65実験室
オフィスアワー:木曜日3限(13:15-14:45)
連絡先:配付資料の表紙に記載されているメールアドレス
授業に関する質問やホウレンソウ(報告・連絡・相談)がある場合には、オフィスアワーの時間に研究室へ訪問するか、メールで問い合わせること。
Copyright (C) 2016 Kyoto Sangyo University. All rights reserved.