C言語による基本的なプログラミングから,数学的に高度な数値計算,様々な状況での問題解決,並べ替え,暗号化等の各種アルゴリズムを学ぶ.
概要:
1年次の「情報基礎工学」、2年次の「プログラミングI」の上級科目であり、C言語の応用科目である.C言語は様々な製品・技術に用いられている基礎言語である.そのためC言語を理解していれば,それ以外の高級言語の学習導入がスムースになる.本科目では,それら他言語でも応用が出来るアルゴリズムをC言語によって理解し,記述できるように学習する.
授業の進め方・方法:
プログラミングは日本語や英語と同じ『言語』の一種である. そのため「勉強する」のではなく、スポーツや芸術のように「練習する」ことが習得に繋がる. 様々な目的のプログラムを繰り返し記述することが習得の鍵である.
注意点:
質問は,講義中だけでなく,休み時間,放課後にも受け付ける.ただし,TwitterやFacebook等,SNSによる質問は受け付けない.
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
ガイダンス |
一年間の講義の概要,成績評価の方法を理解する.
|
2週 |
C言語文法復習1 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
3週 |
C言語文法復習2 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
4週 |
C言語文法復習3 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
5週 |
C言語文法復習4 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
6週 |
C言語文法復習5 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
7週 |
C言語文法復習6 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
8週 |
中間試験 |
|
2ndQ |
9週 |
C言語文法復習7 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
10週 |
C言語文法復習8 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
11週 |
C言語文法復習9 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
12週 |
C言語文法復習10 |
(1) C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し実行できる.(2) フローチャートを用いてプログラム内容を記述できる.
|
13週 |
アルゴリズム理解1 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
14週 |
アルゴリズム理解2 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
15週 |
アルゴリズム理解3 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
16週 |
答案返却 |
|
後期 |
3rdQ |
1週 |
アルゴリズム理解4 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
2週 |
アルゴリズム理解5 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
3週 |
アルゴリズム理解6 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
4週 |
アルゴリズム理解7 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
5週 |
アルゴリズム理解8 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
6週 |
アルゴリズム理解9 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
7週 |
アルゴリズム理解10 |
(1) 素数探索アルゴリズムを数種類体験し,アルゴリズムによる効率化を理解する.(2) ソートアルゴリズムを複数学び,アルゴリズムの向き不向きを理解する.(3) 数値計算アルゴリズムを複数学び,数値解析への応用を理解する.
|
8週 |
中間試験 |
|
4thQ |
9週 |
暗号化と複合化1 |
(1) 任意の文字列をプログラムによって暗号化できる.(2) 暗号化された文字列を複合化できる.
|
10週 |
暗号化と複合化2 |
(1) 任意の文字列をプログラムによって暗号化できる.(2) 暗号化された文字列を複合化できる.
|
11週 |
アルゴリズム設計1 |
提示される複数の問題に対して、それらを解決するプログラムを自らで考え、実装できる。
|
12週 |
アルゴリズム設計2 |
提示される複数の問題に対して、それらを解決するプログラムを自らで考え、実装できる。
|
13週 |
応用プログラミング1 |
これまで学んだ全ての技術を応用して,様々な問題解決をC言語プログラミングによって行える.
|
14週 |
応用プログラミング2 |
これまで学んだ全ての技術を応用して,様々な問題解決をC言語プログラミングによって行える.
|
15週 |
応用プログラミング3 |
これまで学んだ全ての技術を応用して,様々な問題解決をC言語プログラミングによって行える.
|
16週 |
答案返却 |
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 数学 | 数学 | 数学 | 整式の加減乗除の計算や、式の展開ができる。 | 3 | |
分数式の加減乗除の計算ができる。 | 3 | |
実数・絶対値の意味を理解し、絶対値の簡単な計算ができる。 | 3 | |
平方根の基本的な計算ができる(分母の有理化も含む)。 | 3 | |
2次関数の性質を理解し、グラフをかくことができ、最大値・最小値を求めることができる。 | 3 | |
等差数列・等比数列の一般項やその和を求めることができる。 | 3 | |
総和記号を用いた簡単な数列の和を求めることができる。 | 3 | |
簡単な場合について、関数の極限を求めることができる。 | 3 | |
微分係数の意味や、導関数の定義を理解し、導関数を求めることができる。 | 3 | |
積・商の導関数の公式を用いて、導関数を求めることがができる。 | 3 | |
極値を利用して、関数の最大値・最小値を求めることができる。 | 3 | |
合成関数の偏微分法を利用して、偏導関数を求めることができる。 | 3 | |
簡単な関数について、2次までの偏導関数を求めることができる。 | 3 | |
偏導関数を用いて、基本的な2変数関数の極値を求めることができる。 | 3 | |
自然科学 | 物理 | 力学 | 速度と加速度の概念を説明できる。 | 3 | |
直線および平面運動において、2物体の相対速度、合成速度を求めることができる。 | 3 | |
物体の変位、速度、加速度を微分・積分を用いて相互に計算することができる。 | 3 | |
運動方程式を用いた計算ができる。 | 3 | |
簡単な運動について微分方程式の形で運動方程式を立て、初期値問題として解くことができる。 | 3 | |
静止摩擦力がはたらいている場合の力のつりあいについて説明できる。 | 3 | |
最大摩擦力に関する計算ができる。 | 3 | |
動摩擦力に関する計算ができる。 | 3 | |
運動量保存則を様々な物理量の計算に利用できる。 | 3 | |
万有引力の法則から物体間にはたらく万有引力を求めることができる. | 3 | |
万有引力による位置エネルギーに関する計算ができる。 | 3 | |
工学基礎 | 工学実験技術(各種測定方法、データ処理、考察方法) | 工学実験技術(各種測定方法、データ処理、考察方法) | 実験データの分析、誤差解析、有効桁数の評価、整理の仕方、考察の論理性に配慮して実践できる。 | 2 | |
情報リテラシー | 情報リテラシー | 同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。 | 3 | |
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。 | 3 | |
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。 | 3 | |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 代入や演算子の概念を理解し、式を記述できる。 | 3 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 4 | |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 3 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 1 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 2 | |
ソフトウェア | アルゴリズムの概念を説明できる。 | 2 | |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 2 | |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 2 | |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 3 | |
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。 | 1 | |
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。 | 1 | |
分野横断的能力 | 汎用的技能 | 汎用的技能 | 汎用的技能 | 書籍、インターネット、アンケート等により必要な情報を適切に収集することができる。 | 3 | |
収集した情報の取捨選択・整理・分類などにより、活用すべき情報を選択できる。 | 3 | |
収集した情報源や引用元などの信頼性・正確性に配慮する必要があることを知っている。 | 2 | |
複数の情報を整理・構造化できる。 | 3 | |
課題の解決は直感や常識にとらわれず、論理的な手順で考えなければならないことを知っている。 | 3 | |