プログラミング基礎

科目基礎情報

学校 熊本高等専門学校 開講年度 平成28年度 (2016年度)
授業科目 プログラミング基礎
科目番号 0061 科目区分 一般 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 建築社会デザイン工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 新版明解C言語中級編, 柴田望洋, Softbank Creative
担当教員 小島 俊輔,磯谷 政志,米沢 徹也,村田 美友紀

到達目標

1.標準ライブラリ関数を利用してプログラムを作成することができる.
2.ソートやサーチなど基本的なアルゴリズムで記述されたプログラムを理解し説明することができる.
3.現実世界のさまざまな事象をシミュレートする100行程度のプログラムを記述できる.
4. コンピュータグラフィックスを使用して計算結果をわかりやすく表示することができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1多用する関数は説明書がなくても使用することができ,あまり使用しない関数でも自分で仕様を調べて利用することができる.代表的な標準ライブラリ関数を,説明書や仕様書を参考にしながら,正しく使用することができる.関数のプロトタイプ宣言や入出力の意味がわからず,説明を聞いても関数を使用することができない.
評価項目2バブルソートや選択ソート,線形探索などのプログラムを作成することができる.また,基礎的なアルゴリズムを,自らプログラムや解説を読んで理解することができる.バブルソートや選択ソート,線形検索などのプログラムを理解しており,昇順・降順などプログラムの動作を変更する際のプログラムの変更箇所を指摘することができる.ソートや探索など基本的なアルゴリズムを実装したプログラムの説明を受けても,動作をまったく理解することができない.
評価項目3プログラムで記述すると50~100行程度の現実世界の問題について,適当な大きさの関数に分割した構成のプログラムを作成することができる.ローカル変数やグローバル変数を適切に使用することができる.関数が何かを理解しており,関数の入出力仕様やプロトタイプ宣言を与えられると関数(5~10行程度)を記述することができる.また,他者が記述した関数を利用することができる.関数の入出力仕様やプロトタイプ宣言を与えられても,それを関数として記述することができず,また他者が記述した関数を利用することができない.
評価項目4配列をグラフ表示する際,値に応じて色を変える,個数に応じて表示幅を変える,目盛りを表示する,などの工夫ができる.グラフィックスプログラムの基本形を自分なりに応用することができる.配列の内容を,グラフで表示することができる.グラフィックスプログラムの基本形を与えられると,それを適切に変更して表示結果を少しだけ変えてみることができる.グラフィックスの基本的な命令が何をするためのものかを説明することができず,グラフィックスを使用したプログラムを書くことができない.

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

本科到達目標 2-1 説明 閉じる
本科到達目標 3-3 説明 閉じる

教育方法等

概要:
プログラムによる具体的な問題の解決手法を学ぶ.多くの例題を通したプログラムの作成方法に慣れてもらい,プログラミングにおける考え方の基礎を固める.プログラムの基礎的な事柄から徐々に発展し,数学関数や公式,物理法則などを利用した現実世界の簡単な問題についてのシミュレーションを行い,結果を棒グラフなどのグラフィックスを用いて表示する.
授業の進め方・方法:
 プログラミングに必要な共通基盤的な概念を学習するだけでなく,専門分野の応用に向けた基礎的な課題演習を実施する.講義では,基礎的な動作をするプログラムを示し,動作を解説した後,グループワークや調べ学習により,発展した内容の演習に取り組む.最低でもC 言語の基本文法を理解していることが前提となり,未学習の文法や関数についてはその都度説明する.
 教科書や資料をよく読み,内容を理解しようと努力することが肝要である.プログラムを表面的に理解するのではなく,動作を深く考える癖をつけること.課題プログラムを作成する際は,教科書やノートのサンプルを丸写しせず,内容を理解した後,すべて自力で書き直してみること.
注意点:
 教科書や資料をよく読み,内容を理解しようと努力することが肝要である.プログラムを表面的に理解するのではなく,動作を深く考える癖をつけること.課題プログラムを作成する際は,教科書やノートのサンプルを丸写しせず,内容を理解した後,すべて自力で書き直してみること.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス 本講義で学習する内容を大まかにつかむ
Office365, WebClass, C言語学習システムなどの利用方法を覚える
2週 2重ループと関数によるプログラミング 2重ループが自在に使用できる
関数によるプログラムの記述ができる
3週 効率を考えたif文の記述方法と整数演算 実行効率を考えながらif文の記述ができる
整数演算を用いた応用ができる
4週 乱数の発生方法とドモルガンの定理 乱数発生方法を理解する
ドモルガンの定理を応用できる
5週 簡単なアニメーション表示の仕組み
式を用いた勝敗の判定
アニメーション表示の原理を理解する
目的に応じた数式を作成できる
6週 処理の抽象化と関数分割 処理の抽象化を理解し,プログラムを関数に分割できる
7週 総合演習(1)
3山崩しにチャレンジ
ポインタによる値の受け渡し方法について理解する
8週 〔中間試験〕
2ndQ
9週 試験返却と解説
10週 入力のエラーチェック 厳密なエラーチェックを理解する
11週 総合演習(2)
N山崩しの関数作成にチャレンジ
自分なりに工夫してN山崩しができる強い関数を作成する
12週 動的メモリ確保と日時の取り扱い 動的メモリ確保関数と日付取得関数を使えるようになる
13週 情報の保存と取得(ファイル取得) テーブルや循環配列などの概念を理解する
コマンドラインによるコンピュータの操作ができるようになる
14週 テキストファイルとCSV形式(〃) 標準入出力ストリームの概念を理解する
csvファイルによる出力とExcelへの取り込み方法を理解する
15週 〔前期末試験〕
16週 前期末試験の返却と解説
後期
3rdQ
1週 コンピュータグラフィックスの基礎 四角や円などの基本的なグラフィックス描画関数が使えるようになる
2週 シミュレーション応用(1) グラフィックス演習 グラフィックスの座標変換の概念を理解する
3週 シミュレーション応用(2) 〃 sin(),cos()関数と座標変換を用いて現在時刻を時計の針として描画する
4週 シミュレーション応用(3) 〃 アニメーションの仕組みを理解し,リアルタイムに表示が変化する時計を作成する
5週 シミュレーション応用(4) 作成した作品の発表会
6週 シミュレーション応用(5) 計算結果の可視化 温度(数値)情報を色情報に変換する方法を学習する
7週 シミュレーション応用(6) 〃 有限要素法などのシミュレーションの基本的な考え方を理解し,メッシュに分割して配列に保存する方法を理解する
8週 〔中間試験〕
4thQ
9週 シミュレーション応用(7) 計算結果の可視化 熱伝導方程式を用いて実際の温度変化の様子を物理シミュレーションする
10週 シミュレーション応用(8) 〃 作成した作品の発表会
11週 シミュレーション応用(9) アルゴリズム 挿入ソートとシェルソートの概念を理解する
12週 シミュレーション応用(10) 〃 線形探索j,番兵,二分探索,ハッシュの仕組みを理解する
13週 シミュレーション応用(11) 〃 モンテカルロ法による数値積分や確率計算を理解する
14週 シミュレーション応用(12) 〃 ソートの可視化やモンテカルロ法などの応用作品の発表会
15週 〔後期学年末試験〕
16週 学年末試験の返却と解説

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー数値計算の基礎が理解できる3後2,後3,後6,後7,後9
コンピュータにおける初歩的な演算の仕組みを理解できる。3前2
データの型とデータ構造が理解できる2前12,後7
専門的能力分野別の専門工学情報系分野プログラミング変数とデータ型の概念を説明できる。3前3,前7
代入や演算子の概念を理解し、式を記述できる。3前3,前5,前7,後2,後3,後6
制御構造の概念を理解し、条件分岐や反復処理を記述できる。3前2,前3,前4,前7,前11
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3前2,前6,前7,前11,前12,後1,後2,後4,後6,後9
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3前7,前10,前11,前14,後3,後4,後7,後9
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。3前3,前10
ソフトウェアアルゴリズムの概念を説明できる。2前13,後11,後12,後13
与えられたアルゴリズムが問題を解決していく過程を説明できる。1前13,後11,後12,後13
整列、探索など、基本的なアルゴリズムについて説明できる。2後11,後12,後13
計算機工学基本的な論理演算を行うことができる。2前4

評価割合

試験課題相互評価態度ポートフォリオその他合計
総合評価割合50500000100
基礎的能力010000010
専門的能力5030000080
分野横断的能力010000010