アルゴリズムとプログラミング(’16)

主任講師: 鈴木 一史

初歩的なプログラミング技術について学習する(C言語を利用)。
情報科学・計算機科学におけるソフトウェア作成の手続きを学習する。
基本的なアルゴリズム、データ構造、計算量などについて学習する。 検討中リストに追加

各回のテーマと放送内容

※テーマをクリックすると授業内容が表示されます。

第1回 プログラミング
アルゴリズムやプログラミングについて学習する。コンパイラによるソースコードから実行可能なターゲットプログラムへの変換の大まかな流れについて学習する。C言語を例として、簡単なデータの入力、データの出力、変数、式、コメント記述等の基礎的なプログラミングについて学ぶ。
担当講師: 鈴木 一史 (放送大学准教授)
第2回 条件分岐
条件分岐について学習する。条件分岐文では、設定した条件にしたがって実行するコードを変更することができる。C言語によるif文、if-else文、条件分岐に使われる比較演算子、switch文、条件演算子、goto文について学習する。
担当講師: 鈴木 一史 (放送大学准教授)
第3回 ループの仕組み
コンピュータは大量の繰り返しの計算を高速かつ正確にこなすことができる。プログラミングにおいて、何らかの命令を繰り返し実行する処理は非常に重要である。ループ(loop)はこのような計算を実行するために使われる。ループとは、ある条件が満たされるまで、繰り返し実行される一連の命令のことである。
担当講師: 鈴木 一史 (放送大学准教授)
第4回 ループの応用
ループを応用したプログラムの例として、モンテカルロ法による円周率πの計算シミュレーションについて学習する。また、アルゴリズムの動作に必要な資源の量を評価する計算量について考える。アルゴリズムの速度を比較するための方法として、ビッグ・オー記法について学習する。
担当講師: 鈴木 一史 (放送大学准教授)
第5回 関数
頻繁に使うコードは関数として1つのコードにまとめると繰り返し利用することが可能になり便利である。関数の“引数”と“戻り値”について学習し、“値渡し”と“参照渡し”の違いについて考える。さらに、関数などが自分自身を呼び出し実行する“再帰呼び出し”の概念について学ぶ。
担当講師: 鈴木 一史 (放送大学准教授)
第6回 配列の仕組み
配列の仕組みについて学習する。配列の宣言、初期化、配列要素の読み出しや書き込みについて学ぶ。また、多次元配列の仕組みや多次元配列の応用的な使い方について学ぶ。さらにC言語における配列を利用した文字列の表現や文字列に関連する関数等の使い方を学習する。
担当講師: 鈴木 一史 (放送大学准教授)
第7回 配列の操作
配列に対する操作として、挿入、削除、探索などの基本的な操作を学習する。線形探索と順序配列を利用した二分探索の仕組みを学習し、それぞれ探索の特徴について学ぶ。また、C言語による線形探索と二分探索のプログラム実装について考える。
担当講師: 鈴木 一史 (放送大学准教授)
第8回 配列の応用
配列を使った応用的なコード例を学習する。スタックとキューという基本的なデータ構造と操作について学習する。そして、C言語による配列を利用したスタックとキューの実装例について学ぶ。配列と関数を利用したコードの応用例として、コンウェイのライフゲームについて考える。
担当講師: 鈴木 一史 (放送大学准教授)
第9回 ファイル
ファイルの読み込みや書き込みに関するコードについて学習する。ファイル内のデータ値を読み込んで計算を行うコードについて考える。簡単な画像データのファイル形式や仕組みについて学習する。画像ファイルのデータをメモリへ読み込んで、メモリ上でデータの処理を行った後に、処理したデータを画像ファイルへ書き出すコードについて学ぶ。
担当講師: 鈴木 一史 (放送大学准教授)
第10回 ソーティング
バブルソート、選択ソート、挿入ソートなどの基本的なソーティングのアルゴリズムについて学び、これらのアルゴリズムのC言語によるコード例について学習する。また、これらのソーティングアルゴリズムの計算量や特徴について考える。
担当講師: 鈴木 一史 (放送大学准教授)
第11回 高速なソーティング
値の大小比較による高速なソーティング例として、クイックソートについて学習する。クイックソートは分割統治アルゴリズムであり、再帰プログラムで実現することができる。本章では、C言語によるクイックソートの実装について学ぶ。また、値の大小の比較によらないソーティングの例として、基数ソートについて学習する。
担当講師: 鈴木 一史 (放送大学准教授)
第12回 メモリ
メモリはコンピュータプログラムにとって主要な資源の一つである。プログラムを作成するにあたって、メモリがプログラムでどのように利用できるか知っておくことは重要である。本章では、一般的なコンピュータにおけるプログラムのメモリレイアウトについて学習する。また、C言語における要素数の大きな配列の利用方法などについて考える。
担当講師: 鈴木 一史 (放送大学准教授)
第13回 連結リスト
連結リストは基本的なデータ構造の一つである。本章では、連結リストのデータの挿入と削除といった主要な操作について学ぶ。また、データの探索、表示等の操作についても学習し、C言語による連結リストの実装について考える。そして、連結リストと配列を比較してその利点や問題点について考える。また、連結リストの操作に関する計算量について学習する。
担当講師: 鈴木 一史 (放送大学准教授)
第14回 連結リストの応用
連結リストを用いたスタックとキューのデータ構造の実装例について学習する。また、連結リスト(片方向連結リスト)の構造を拡張した、双方向連結リスト、環状連結リスト、環状双方向連結リスト等について学ぶ。そして、これらのリスト構造における利点や欠点、連結リストへのデータの挿入や削除の計算量について考える。
担当講師: 鈴木 一史 (放送大学准教授)
第15回 アルゴリズム「ハフマン符号化法」
ソーティング等のアルゴリズムや基本的なデータ構造は、より複雑なアルゴリズムの中で利用されることがある。本章では、ハフマン符号化法の事例について学習する。ハフマン符号の実装には、ソーティングアルゴリズムや優先度付きキューなどのデータ構造が使われることが多い。本章では、ハフマン符号化のアルゴリズムを学習するとともに、接頭符号、ハフマンツリー、カノニカル・ハフマン符号の例についても学ぶ。
担当講師: 鈴木 一史 (放送大学准教授)

放送メディア:

ラジオ

放送時間:


2017年度 [第2学期] (金曜)
21時30分〜22時15分

単位認定試験 試験日・時限:

2017年度 [第2学期]
2018年1月25日 (木曜)
8時限 (17時55分~18時45分)

開設年度:

2016年度

科目区分:

専門科目

科目コード:

1570161

単位数:

2単位
このページの先頭へ