プログラミング演習

科目基礎情報

学校 熊本高等専門学校 開講年度 平成28年度 (2016年度)
授業科目 プログラミング演習
科目番号 0004 科目区分 専門 / 必修
授業形態 実験・実習 単位の種別と単位数 履修単位: 2
開設学科 人間情報システム工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 オリジナルテキスト使用
担当教員 神﨑 雄一郎,大隈 千春

到達目標

(1) プログラミングスタイルや実行効率を考慮したプログラムを,C言語を用いて記述できる.
(2) デバッグやテストなどについて理解し,バグの少ないプログラムを効率的に開発するための技術を身に付ける.
(3) 2年次の情報処理で作成したものよりも規模の大きい,複数の関数,複数のソースコードから成るプログラムを記述できる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
プログラミングスタイル「標準的な到達レベルの目安」に加え,効果的なコメントの付け方について理解し,プログラムに適用できる.インデントなどのソースコードの整形方法,変数名の付け方について理解し,プログラミングスタイルを考慮したC言語プログラムを作成できる.インデントなどのソースコードの整形方法,変数名の付け方について理解できない.
デバッグ・テスト「標準的な到達レベルの目安」に加え,効果的なテストケースを作成し,自身のプログラミングに活用できる.デバッグの基礎について理解し,デバッガを用いた効率的なプログラムの修正ができる.また,ソフトウェアテストの意義について理解し,様々な入力を考慮したプログラムを作成できる.デバッグあるいはテストについて理解できない.
ポインタとメモリ「標準的な到達レベルの目安」に加え,バッファオーバーランなど,メモリ領域確保に関する問題・現象について理解し,説明できる.ポインタの意義について理解し,ポインタとメモリとの関係について説明できる.動的なメモリ割当てについて理解し,それを用いたプログラムを作成できる.ポインタや動的なメモリ割当てについて理解できない.
分割コンパイル・プロファイリング「標準的な到達レベルの目安」に加え,プロファイラの分析結果に応じてプログラムの実行効率を改善できる.(分割)コンパイル,アセンブル,リンク,実行可能形式について理解し,複数のソースコードからなるプログラムを作成できる.また,プログラムの効率を改善するためのプロファイリングの方法について理解し,プロファイラを用いてプログラムの性能を分析できる.分割コンパイルやプロファイリングについて理解できない.

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

本科(準学士課程)での学習・教育到達目標 2-1 説明 閉じる
本科(準学士課程)での学習・教育到達目標 3-2 説明 閉じる

教育方法等

概要:
プログラミングの技術を身に付けるための科目である.プログラミング言語は,C言語を用いるが,総合演習では,C言語以外のプログラミング言語を用いる場合がある.
2年次の情報処理の授業で作成したものよりも規模の大きいプログラムを,プログラミングスタイルや実行効率を考慮して記述できるようになるのが目標である.
授業の進め方・方法:
演習主体で進める.
演習レポート(80%)と小テスト(20%)とを総合して評価し,60%以上の得点率で合格とする.
注意点:
規定授業時数(単位時間)は60である.
演習レポートの提出遅れは大きな減点となるので受講者は注意すること.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス
2週 プログラミングスタイル:講義 プログラミングスタイルの基礎(インデントなどのソースコードの整形方法,変数名の付け方,コメントの働きなど)について理解し,プログラミングスタイルを考慮したプログラムを作成できる.
3週 プログラミングスタイル:演習(1) 同上
4週 プログラミングスタイル:演習(2) 同上
5週 デバッグとテスト:講義 デバッグの基礎について理解し,デバッガを用いた効率的なプログラムの修正ができるようになる.ソフトウェアテストの意義について理解し,簡単なテストケースを作成・利用できる.
6週 デバッグとテスト:演習(1) 同上
7週 デバッグとテスト:演習(2) 同上
8週 小テスト(I) 小テストを通して,プログラミングスタイル・デバッグ・テストの知識の確認を行い,理解を深める.
2ndQ
9週 ポインタとメモリ:講義(1) ポインタの意義について理解し,メモリとの関係について説明できる.また,配列とポインタの関係について理解し,説明できる.
10週 ポインタとメモリ:講義(2) 同上
11週 ポインタとメモリ:演習(1) 同上
12週 ポインタとメモリ:演習(2) 同上
13週 メモリの動的割当て:講義 メモリの動的割当てについて理解し,それを活用したプログラムを作成できる.
14週 メモリの動的割当て:演習(1) 同上
15週 メモリの動的割当て:演習(2) 同上
16週 小テスト(II) 小テストを通して,ポインタ・メモリ等の知識の確認を行い,理解を深める.
後期
3rdQ
1週 分割コンパイルとリンク:講義 (分割)コンパイル,アセンブル,リンク,実行可能形式について理解し,複数のソースコードからなるプログラムを作成できる.
2週 分割コンパイルとリンク:演習(1) 同上
3週 分割コンパイルとリンク:演習(2) 同上
4週 プロファイリング:講義 プログラムの効率を改善するためのプロファイリングの方法について理解し,プロファイラを用いてプログラムの性能を分析できる.
5週 プロファイリング:演習(1) 同上
6週 プロファイリング:演習(2) 同上
7週 プロファイリング:演習(3) 同上
8週 小テスト(III) 小テストを通して,分割コンパイルやプロファイリング等の知識の確認を行い,理解を深める.
4thQ
9週 総合演習(1) これまでの学習内容を基盤として,提示されたテーマに沿ったプログラムを作成できる.また,作成したプログラムの処理の流れや性能を評価して説明できる.
10週 総合演習(2) 同上
11週 総合演習(3) 同上
12週 総合演習(4) 同上
13週 総合演習(5) 同上
14週 総合演習(6) 同上
15週 総合演習(7) 同上
16週 小テスト(IV) 小テストを通して,これまで学習した知識の確認を行い,理解を深める.

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング変数とデータ型の概念を説明できる。3
代入や演算子の概念を理解し、式を記述できる。3
制御構造の概念を理解し、条件分岐や反復処理を記述できる。3
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。3
主要な言語処理プロセッサの種類と特徴を説明できる。3
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。3
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。3
ソフトウェアアルゴリズムの概念を説明できる。3
与えられたアルゴリズムが問題を解決していく過程を説明できる。3
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。3
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。3
整列、探索など、基本的なアルゴリズムについて説明できる。3
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。2
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。2
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。2
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。2
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。2

評価割合

小テストレポート合計
総合評価割合2080100
基礎的能力000
専門的能力2080100
分野横断的能力000