プログラミングII

科目基礎情報

学校 熊本高等専門学校 開講年度 2019
授業科目 プログラミングII
科目番号 TE1306 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 情報通信エレクトロニクス工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 教科書:「新・解きながら学ぶC言語」柴田望洋,由梨かおる、 参考書:「新・明解C言語 入門編」柴田 望洋SBクリエイティブ
担当教員 大木 真

到達目標

C言語による基本的なプログラミングから,数学的に高度な数値計算,様々な状況での問題解決,並べ替え,暗号化等の各種アルゴリズムを学ぶ.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
C言語文法総合C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し,参考文献をほぼ必要としないで実行できる.C言語での,文字や数値の入出力,条件分岐,繰り返し,関数定義,配列,ポインタ,構造体などプログラミングⅠで習った内容を,深く理解し,参考文献を用いて実行できる.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

評価割合

試験課題合計
総合評価割合6040100
基礎的能力302050
専門的能力302050