プログラミング特論

科目基礎情報

学校 熊本高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 プログラミング特論
科目番号 CI1412 科目区分 専門 / 選択
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 制御情報システム工学科 対象学年 4
開設期 集中 週時間数
教科書/教材 辻 真吾, 下平 英寿,Pythonで学ぶアルゴリズムとデータ構造,講談社
担当教員 野尻 紘聖,教務係 (または非常勤講師)

到達目標

 3年次までに習得したプログラミング技術に基づき,世の中のさまざまな問題をコンピュータにより解決するために必要な各種データ構造の特徴を理解し,それらを意識したアルゴリズム(解法の手順)を問題に適用できる高度なプログラミング能力を身に付けることが目標である.
 さらに,4年次最初の学生実験と連動し,人工知能(AI)の分野で多くの研究および開発者が用いているPython言語の文法と基本ツール・ライブラリを理解し,世の中の問題解決に役立つプログラムを作成することが目標である.
1.「アルゴリズムの基本概念とデータ構造」を説明でき,さまざまなデータ構造を用いたプログラムが作成できる.
2.教科書に取り上げられている「サーチ(探索)とソート(整列,並べ替え)」を説明でき,基本的なプログラムの作成と時間計算量を求めることができる.
3.教科書に取り上げられている「アルゴリズムの設計⼿法」を説明でき,基本的なプログラムの作成と時間計算量を求めることができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1任意の課題を解決するため,適切なデータ構造の選定およびアルゴリズムを的確に表現し,計算量を求めることができる. 任意の課題に対して,リスト,スタックとキュー,木構造,グラフをプログラミング言語で表現できる.アルゴリズムの表現法や計算量について説明できる. リスト,スタックとキュー,木構造,グラフの構造と特徴について,それらの基礎的な語句を用いて説明できる.アルゴリズムの表現法や計算量について説明できない. リスト,スタックとキュー,木構造,グラフの構造と特徴について,それらの基礎的な語句を用いて説明できない.
評価項目2与えられたデータを特定の順序に並べ替えるアルゴリズムの考え方や各手法,データを探索する各手法を,それらの違いを含めて具体的に説明でき,コンピュータにより各手法を実現できる.与えられたデータを特定の順序に並べ替えるアルゴリズムの考え方や各手法,データを探索する各手法を,それらの違いを含めて説明できる.与えられたデータを特定の順序に並べ替えるアルゴリズムの考え方や各手法,データを探索する各手法を説明できない.
評価項目3分割統治法,動的計画法などの基本的なアルゴリズム設計法を具体的に説明でき,任意の問題をコンピュータにより解くことができる.分割統治法,動的計画法などの基本的なアルゴリズム設計法を説明できる.分割統治法,動的計画法などの基本的なアルゴリズム設計法を説明できない.

学科の到達目標項目との関係

教育方法等

概要:
 世の中のさまざまな問題をコンピュータにより解決するためには,何らかのデータ処理が必要である.コンピュータで処理しやすいように,データの集まりと各データ間の結合関係を表現(モデル化)したものがデータ構造であり,それを意識したアルゴリズム(解法の手順)を問題に適用することで効率のよい処理が可能となる.
 本授業では,3年次までに習得したプログラミング技術に基づき,人工知能(AI)分野で必須のPython言語を用いて,さまざまな問題解決に必要なデータ処理の知識およびプログラミング能力を身に付けることを目的とする.
 さらに,外国人講師による集中講義を実施することで,前期までに学習した内容の応用力を身に付けるとともに,海外の文献やWebサイトを理解できるように日本語での内容理解とのギャップを埋めることを目標とする.
授業の進め方・方法:
・本授業は多くのアルゴリズムを座学により理解し,演習を行うことで知識の定着を図る.
・授業中,または家庭でプログラムを何度も見返しながら,考え,それを実現する力を身に付ける.
注意点:
・90分の授業に対して90分程度に相当する放課後・家庭での自学学習,およびレポート課題を課す.
・本授業で学習する内容は3年次に学習するプログラム通論と関連があるため,十分に復習しておくことが望まれ,自ら学ぶ姿勢が求められる.

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス
アルゴリズムの基本概念と表現方法
本科目の学習内容や目標,評価方法について理解する.
アルゴリズムの重要性,アルゴリズムとデータ構造の関係,アルゴリズムの表現法と計算量について説明できる.
2週 Pythonの文法と実践的プログラミング(1) CI4学生実験で未習得の文法も含め,比較的簡単な課題に対してプログラミングできる.
3週 アルゴリズムの計算量 アルゴリズムの計算量について理解し,説明できる.
4週 ソートアルゴリズム(1) いくつかの並べ替え(ソート)アルゴリズムを例として,アルゴリズムの比較,検討および改良について説明できる.
5週 ソートアルゴリズム(2) 同上
6週 データの探索(1) いくつかの探索(サーチ)アルゴリズムを例として,アルゴリズムの比較,検討および改良について説明できる.
7週 データの探索(2) 同上
8週 グラフ構造(1) グラフとグラフ探索について理解し,最短経路問題を解くことができる.
2ndQ
9週 グラフ構造(2) 同上
10週 アルゴリズムの設計法 動的計画法,貪欲法,分枝限定法を理解し,ナップサック問題を解くことができる.さらに,計算にかかるコストについて定量的に表現できる.
11週 乱択アルゴリズムと数論 乱択アルゴリズムを理解し,提示された課題を解くことができる.
12週 現代社会を支えるアルゴリズム ネットワークセキュリティに用いられている基礎的なアルゴリズムを理解し,プログラミングできる.
13週 ネットワークセキュリティの基礎 暗号化・復号化について理解し,Pythonによるプログラミングができる.
14週 数値計算 Pythonライブラリを用いて,微分法や積分法,連立方程式などの数値計算ができる.
15週 前期期末試験 前期期末までの内容についての演習問題を解くことができる.
16週 答案返却
後期
3rdQ
1週 外国人講師による集中講義(1) Python言語を用いて,発展的な内容を理解およびプログラムを実装できる.
2週 外国人講師による集中講義(2) 同上
3週 外国人講師による集中講義(3) 同上
4週 外国人講師による集中講義(4) 同上
5週 外国人講師による集中講義(5) 同上
6週 外国人講師による集中講義(6) 同上
7週 外国人講師による集中講義(7) 同上
8週 外国人講師による集中講義(8) 同上
4thQ
9週 外国人講師による集中講義(9) 同上
10週 外国人講師による集中講義(10) 同上
11週 外国人講師による集中講義(11) 同上
12週 外国人講師による集中講義(12) 同上
13週 外国人講師による集中講義(13) 同上
14週 外国人講師による集中講義(14) 同上
15週 後期期末試験 発展的な内容についての演習問題を解くことができる.
発展的な内容についてのプログラムを実現できる.
16週 答案返却

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週

評価割合

試験レポート発表合計
総合評価割合603010100
基礎的能力0000
専門的能力603010100
分野横断的能力0000