科目情報
科目名 アルゴリズムとデータ構造 
クラス − 
授業の概要 数学の問題には、その問題の解き方が分かったとしても現実的な時間の範囲内で解けるとは限らない問題が多く存在する。例えば巨大な合成数の素因数分解を考える。2 から順に割って行けば原理的には素因数分解を行うことは可能であるが、とてつもなく時間がかかることがある。問題の解き方とその計算時間との関係は、数学の問題だけではなく、プログラムを書く上でも重要である。本授業では各種アルゴリズムを提示し、その計算量について学び、そのアルゴリズムを用いたプログラム作成の演習を行う。  
授業の到達目標 本授業では、情報免許科目『コンピュータと情報処理II』で学習したC言語によるプログラミングの基礎を踏まえ、C言語の応用としてポインタの扱い方やデータ構造について学ぶ。最初の3コマでC言語の基礎(条件分岐、繰り返し処理、配列等)について復習を行った上で、ポインタと構造体について学ぶ。後半ではソートアルゴリズム、サーチアルゴリズムとデータ構造について学ぶ。この授業は、各種アルゴリズムとデータ構造を理解し、アルゴリズムの時間的・空間的複雑さを正確に評価できることを目標とする。  
授業計画
内容
1授業全体のオリエンテーション
C言語の基礎の復習(1) プログラムのコンパイルと実行、データ型 
2C言語の基礎の復習(2) 条件分岐、繰り返し処理 
3C言語の基礎の復習(3) 配列、ファイルの入出力 
4ポインタ(1) 概要 
5ポインタ(2) ポインタと関数と配列 
6ポインタ(3) ポインタと文字列 
7構造体(1) 概要 
8構造体(2) 応用 
9ソートアルゴリズム (1) バブルソート 
10ソートアルゴリズム (2) 選択ソート 
11ソートアルゴリズム (3) クイックソート 
12ソートアルゴリズムと計算量 
13サーチアルゴリズム 
14サーチアルゴリズムと計算量 
15まとめ 
 
テキスト・参考書 授業の中で適宜必要なテキストを紹介する。 
自学自習についての情報 授業で学習したアルゴリズムやデータ構造を定着させるには、授業で課す小レポートや最終課題のレポートに真剣に取り組むことが不可欠である。自宅のパソコンでも利用できるフリーのC言語のコンパイラを紹介するので、プログラミングの練習に活用して欲しい。  
授業の形式 講義と演習を行う。  
アクティブラーニングに関する情報 グループワークを行う可能性がある。 
評価の方法(評価の配点比率と評価の要点) 提出課題と授業全般への取り組みを総合的に評価する。 
その他(授業アンケートのコメント含む) 本授業を履修する前に、情報免許科目『コンピュータと情報処理II』を履修しておくことが望ましい。履修していない受講生は、指定したテキストの 1 〜 9 章を事前に読んでおくこと。