タイトル

ナンバリングコード B3INF-cbxT-2O-Px2   科目ナンバリングについて
授業科目名 科目区分 時間割 対象年次及び学科
情報システム・セキュリティ実験I    
Experiments in Computer Science, Systems, and Security Ⅰ
  前期 火3~5 3~ 創造工学部 
講義題目 水準・分野 DP・提供部局
対象学生・
特定プログラムとの対応
 
Linux実習とPythonによるデータ分析基礎、および研究室紹介
B3INF cbxT 2O
担当教員 授業形態 単位数 時間割コード
最所 圭三, 喜田 弘司 [Saisho Keizo, Koji KIDA] Px 2 5005310
DP・提供部局  
cbxT
 
授業形態  
Px
 
関連授業科目  
プログラミング、中級プログラミング、インターネットⅠ、インターネットⅡ、オペレーティングシステム、情報セキュリティⅠ
 
履修推奨科目  
 
学習時間  
演習180分×15回+自学自習(準備学習 15時間 + 事後学習 15時間)
 
授業の概要  
実験は3つテーマに分かれ、第1部ではLinuxリテラシ、第2部ではPythonの基礎およびデータ分析の基礎、第3部ではPythonによるアプリ開発の実習を行う。第1部は最所が担当し、第2部と第3部は喜田が担当する。また、第1部と第2部の間に希望研究室を検討することを目的に研究室紹介を行う。
 
授業の目的  
情報サービスの管理者、ソフトウェアの開発者およびデータ分析官として必須となる経験的な技能を習得する。IT技術者として多くのサーバで採用されているLinux環境をCUIで使うためのスキルやプログラム開発に必要なスキルを身につける。また、どんな分野へ進んでも将来ますます重要となってくる、人工知能、データ分析に関して、ユーザとしてではなくエンジニアとして必要なスキルをPythonの学習を通して養う。
 
到達目標  
1. シェル、リダイレクト、スクリプトに仕組みを理解し (DPの「知識・理解」に対応)、それらを用いた簡単なLinux操作を行うことができる (DPの「問題解決・課題探求能力」に対応)。

2. 分割コンパイル、マクロおよびシステムコールの概念を理解し (DPの「知識・理解」に対応)、それらを用いたプログラム開発が作成できる (DPの「問題解決・課題探求能力」に対応)。

3. Pythonおよびデータ分析の開発環境を構築できる(DPの「知識・理解」に対応)。

4. Pythonの基礎を理解し、自分向けのチュートリアルを作成できる(DPの「知識・理解」に対応)。

5. システムの構成を検討し、仕様書にまとめ、他人にわかりやすくプレゼンができる(DPの「問題解決・課題探求能力」に対応)。

6. 希望研究室を検討できる(DPの「問題解決・課題探求能力」に対応)。
 
成績評価の方法  
前半(最所)と後半(喜田)で、1:2の比率とする。毎回の授業の小課題、プログラミング課題を総合して、単位認定を行う。ただし、無断欠席や未提出物があれば、得点によらず不可とする。発展的な課題への取組みに加点することがある。
 
成績評価の基準  
成績の評価は、100点をもって満点とし、秀、優、良及び可を合格とする。各評価基準は次のとおりとする。
 秀(90点以上100点まで)到達目標を極めて高い水準で達成している。
 優(80点以上90点未満)到達目標を高い水準で達成している。
 良(70点以上80点未満)到達目標を標準的な水準で達成している。
 可(60点以上70点未満)到達目標を最低限の水準で達成している。
 不可(60点未満)到達目標を達成していない。
ただし、必要と認める場合は、合格、了及び不合格の評語を用いることができる。その場合の評価基準は次のとおりとする。
 合格又は了 到達目標を達成している。
 不合格  到達目標を達成していない。
 
授業計画・授業及び学習の方法・準備学習及び事後学習のためのアドバイス  
【授業計画】

第1回:第1部 Linuxリテラシ(1) 仮想マシンの構築
- ★いつでもLinuxの環境を使えるようにするために自分のPCに仮想マシンを構築し、代表的なコマンドの使い方を学ぶ。
- 課題1: 仮想マシンの構築および動作確認
- 課題2: 代表的なコマンドの仕様確認および動作確認

第2回:第1部 Linuxリテラシ(2) ファイル検索、ファイル編集
- ★ファイルの検索方法、エディタの使い方について学ぶ
- 課題1: ファイル名や内容、作成日付などを条件とした検索
- 課題2: Linux環境での代表的なエディタを用いたファイル編集

第3回:第1部 Linuxリテラシ(3) 分割コンパイル、make
- ★分割コンパイルおよび make の概念について学ぶ
- 課題1: 複数のソースファイルで構成されるプログラムの作成
- 課題2: ソースファイルから実行形式プログラムを作成するための Makefile の作成および make の実行

第4回:第1部 Linuxリテラシ(4) パイプ・リダイレクト、スクリプトの基礎
- ★標準入力・標準出力・標準エラーとパイプ・リダイレクトとの関係、スクリプトによるバッチ処理の基礎について学ぶ
- 課題1: パイプ・リダイレクトの実践
- 課題2: 条件処理、ループ処理を行うスクリプトの作成

第5回:第1部 Linuxリテラシ(5) 時間計測、変数のアドレス、システムコール、環境変数
- ★Linux環境での時間測定、C言語でのメモリ配置、システムコールの位置付け、環境変数を用いたプログラム間の情報共有について学ぶ
- 課題1: 時間測定を行うプログラムの作成・実行
- 課題2: C言語の変数のクラスとメモリ上の位置、再帰処理における変数の位置を表示
- 課題3: 子プロセスを生成するプログラム、ファイル操作を行うシステムコールを用いたプログラムの作成
- 課題4: 環境変数を用いた子プロセスへの引数の受け渡しを行うプログラムの作成

第6回:第1部 Linuxリテラシ(6) スクリプトの実践
- ★スクリプトによるバッチ処理や複数のコマンドを用いた複合処理について学ぶ
- 課題1: 与えられた課題を実現するスクリプトの作成

第7回:研究室紹介
- ★研究室配属を検討することを目的に、各研究室から15分程度の研究室紹介をする。
- 課題:後日、研究室を訪問し、希望研究室に関するレポートを作成する

第8回:第2部 Pythonによるデータ分析 環境構築
★データ分析用のPythonの環境を構築する。Anaconda、Jupyter notebook, Markdown
- 課題:今日の授業の内容を以下の3つのMarkdownで提出しなさい
(1) プログラマのココロ
(2) データ分析用のPythonの環境を構築方法
(3) Markdown

第9回:第2部 Python速習 初級編
★言語としての基本を学ぶ
- コメント、print、変数、四則演算、型
- データ型:リスト、辞書、集合、タプル
- 制御文:繰り返し、条件分岐
- 関数
- 課題 今日の授業の内容をチュートリアルとしてまとめる

第10回:第2部 Python速習 中級編
★オブジェクト指向を復習し、ライブラリの使い方を学ぶ
- クラス
- スコープ
- 例外処理
- ライブラリの利用例
- 課題 今日の授業の内容をチュートリアルとしてまとめる

第11回:第2部 Python速習 データ分析編
★データ分析、分析結果の可視化を学ぶ
- NumPy,pandas,matplotlibとは
- 配列をつくる、データ検索、配列計算
- データフレームをつくる、データ抽出、検索、ソート
- データの可視化
- 課題 今日の授業の内容をチュートリアルとしてまとめる

第12回:第2部 Python速習 データ分析編 つづき
★データベース観点から、データ分析をさらに学ぶ
- pandasとは
- データフレームをつくる
- データ抽出、検索、ソート
- データへ関数適用、クロス集計
- 課題 今日の授業の内容をチュートリアルとしてまとめる

第13回:第3部 Python アプリ開発編
★アプリケーションの開発を学ぶ
- ITシステムのプレゼンの仕方
- 発表会のガイダンス
- コーディング
- 課題 プレゼン準備

第14回:第3部 Python アプリ開発編 発表会
★デモ、プレゼン大会

第15回:第3部 Python アプリ開発編 発表会 つづき
★デモ、プレゼン大会

※理解度等に応じて、適宜、授業内容の順番等を変更することがある。

【授業及び学習の方法】
第1部については、各回の開始時に実験に必要な知識の講述および課題について説明する。そのあと、各自、課題に従って教育用計算機や自身の仮想マシン上のLinux環境でコマンドの実行やプログラムの作成を行う。
第2部は、技術トピック毎に、技術解説⇒コーディングを繰り返す。コーディングが授業内にできなかった者は宿題とする。
第3部は、第2部で学んだことを応用してアプリケーションを開発し、発表会を行う。

この科目は全回対面授業を行います。なお状況によっては全てまたは一部の授業回の授業形態を遠隔へ変更する可能性があります。

【自学自習に関するアドバイス】
第1回~第6回
- ホームページで公開する実験の資料に事前に目を通し、実験に備える。(6時間)
- Linuxに慣れるために、構築した仮想マシンを用いて実験で学んだことを復習してください。(6時間)

第7回 希望の研究室関連の技術をインターネット等で調べて下さい(2時間)。

第8回〜第15回
-プログラミングが上達するコツは、少しでも毎日プログラミングすることと、プログラミングメモをとることです。
- プログラミング課題を与えますので、復習して下さい(12時間)
- また、プログラミングの際に考えたこと、つまったところ等をメモでまとめて下さい。(1時間弱/週)

 
教科書・参考書等  
配布プリントや授業のWebページを用いる。
参考書は、必要に応じて、授業中やWebで紹介する。

課題で利用:
[1]Python実践データ分析100本ノック,下山 輝昌,秀和システム,ISBN-13: 978-4798058757

[2]100問でわかるPython,松浦 健一郎,ソシム,ISBN-13: 978-4802611282

初心者向け:
[3]スラスラ読める Pythonふりがなプログラミング,リブロワークス,インプレス、ISBN-13: 978-4295003861

[4]いちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで,鈴木たかのり,インプレス、ISBN-13: 978-4295002086

[5]いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ,鈴木たかのり,ISBN-13: 978-4295006411

実践向け
★[6]退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング、Al Sweigart 、オライリー、ISBN-13: 978-4873117782
 
オフィスアワー  
授業終了後、しばらくは自由演習の時間とする。教員やTAが質問を受け付ける。
 
履修上の注意・担当教員からのメッセージ  
- PCを持参すること
- 課題のレポートは、後日、何度も参照できるように自分向けのノウハウ集に育てること
- 授業以外にGoogle等で積極的に調べ、課題レポートに反映すること
- 操作方法を覚えるのではなく、技術の本質を考えること
- 実験が時間通りに終わらないことがあるため、この後の予定は時間に余裕をもたせること
- 昨年の授業の様子(YouTube)です。
第2部:Pythonの基礎およびデータ分析の基礎、第3部:Pythonによるアプリ開発の実習YouTube
https://www.youtube.com/playlist?list=PLRlDO1ie2nM6m5nbhQ8b7y8FYwFoLD3fc
- 昨年の発表会の様子(YouTube)です。
https://www.youtube.com/playlist?list=PLRlDO1ie2nM6PwFcVXudm0fYDOGAlGjrf
 
参照ホームページ  
- 適宜、授業中に指示する

- 参考情報:昨年の授業の様子(YouTube)です。
第2部:Pythonの基礎およびデータ分析の基礎、第3部:Pythonによるアプリ開発の実習YouTube
https://www.youtube.com/playlist?list=PLRlDO1ie2nM6m5nbhQ8b7y8FYwFoLD3fc

- 参考情報:昨年の発表会の様子(YouTube)です。
https://www.youtube.com/playlist?list=PLRlDO1ie2nM6PwFcVXudm0fYDOGAlGjrf
 
メールアドレス  
- 最所:saisho.keizo@kagawa-u.ac.jp
- 喜田:kida.koji@kagawa-u.ac.jp
 
教員の実務経験との関連  
喜田は、NECにて、10年以上の間、人工知能のセキュリティへの応用研究をすすめており、事業化も成功しています。この経験を活かし、表面的な解説ではなく、なぜそうしないといけないのか?なぜ必要なのか、コンピュータ技術の本質を理解できるように進めます。
 
予備項目7  
 
予備項目8  
 
↑ページの先頭へ戻る