ソフトウェア設計論

科目基礎情報

学校 香川高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 ソフトウェア設計論
科目番号 4118 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 4
開設学科 情報工学科(2019年度以降入学者) 対象学年 3
開設期 通年 週時間数 4
教科書/教材 プリント配布
担当教員 金澤 啓三

到達目標

1. C言語を用いて演習に取り組み,与えられた課題を解くプログラムを作成できる。
2. 自分の力でプログラムの誤りを訂正する能力を養う。
3. アルゴリズムを見出す論理的な思考を養う。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1自分の力で課題を満足するプログラムを構築できる。説明を受けることにより課題を満足するプログラムを作成できる。C言語を用いてプログラミング演習ができない。
評価項目2自分の力でプログラムの誤りを訂正できる。ヒントを与えることによってプログラムの誤りを訂正できる。説明を受けてもプログラムの誤りを訂正できない。
評価項目3目的を達成するためにアルゴリズムを見出すことができる。アルゴリズムの動きを理解することができる。アルゴリズムがどのような動きをするのか理解できない。

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

教育方法等

概要:
C言語による構造化プログラミング技法を習得させることにより,設計からデバッグまで様々なシーンで活用できるプログラミング能力を養成する。本講義では,第2 学年で学んだプログラミングの基礎技術をさらに発展させ,問題を解決する手順として,データ構造や構造化プログラミング,簡単なアルゴリズムなど,プログラミングのより高度な機能とオブジェクト指向の基礎的な概念について学ぶとともに,演習を通して実践的な知識を身に付けることを目標とする。
授業の進め方・方法:
学習項目ごとに,学習内容に関連するプログラム文法やアルゴリズムを解説する。その後,学んだ知識を活用した演習課題プログラムを作成し理解を深める。プログラミング演習はLinux のパーソナルコンピュータ上で行い,プログラミング言語にはC 言語及びC++言語を用いる。作成したプログラムは演習レポートとして提出させる。また適宜,理解度確認のための小テストを実施する。
注意点:
定期試験70%,演習レポートと提出物を30%の比率で総合評価する。定期試験は中間試験と期末試験の平均点とし,演習レポート課題を20%,定期的に課す提出物を10%とする。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス
プログラミング言語
主要な言語処理プロセッサの種類と特徴を説明できる
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる D2:1
2週 C言語の復習:変数と型
変数、データ型、演算子の概念を理解し、提示された数十行程度のプログラムの作成に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
3週 C言語の復習:制御構造 基本的な制御構造を理解し,提示された数十行程度のプログラムの作成に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
4週 C言語の復習:関数 関数を理解し,提示された数十行程度のプログラムの作成に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
5週 C言語の復習:アルゴリズム 基本的なアルゴリズムを理解し,提示された数十行程度のプログラムの作成に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
6週 C言語の復習:アルゴリズム 基本的なアルゴリズムを理解し,提示された数十行程度のプログラムの作成に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
7週 変数とアドレス,変数の大きさ 宣言によって変数がメモリにどのように割り当てられるのかを理解する  D2:1
8週 記憶クラスとメモリマップ
前期中間試験
宣言によって変数がメモリにどのように割り当てられるのかを理解する  D2:1
2ndQ
9週 ポインタ演算 ポインタの動作を理解し,提示された演習課題をポインタを利用してプログラミングできる D2:1,2, E2:1,2, E3:1,2, E4:1,2
10週 ポインタ演算 ポインタの動作を理解し,提示された演習課題をポインタを利用してプログラミングできる D2:1,2, E2:1,2, E3:1,2, E4:1,2
11週 配列とポインタ ポインタの動作を理解し,提示された演習課題をポインタを利用してプログラミングできる D2:1,2, E2:1,2, E3:1,2, E4:1,2
12週 配列とポインタ ポインタの動作を理解し,提示された演習課題をポインタを利用してプログラミングできる D2:1,2, E2:1,2, E3:1,2, E4:1,2
13週 メモリの動的確保 動的なメモリの確保・解放を理解し,提示された演習課題をプログラミングできる D2:1,2, E2:1,2, E3:1,2, E4:1,2
14週 メモリの動的確保 動的なメモリの確保・解放を理解し,提示された演習課題をプログラミングできる
15週 関数とポインタ 関数の構築にポインタを用いて,演習課題に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
16週 試験問題の解答,授業評価アンケート
後期
3rdQ
1週 構造体 構造体を理解し,提示されたプログラム課題に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
2週 構造体 構造体を理解し,提示されたプログラム課題に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
3週 構造体 構造体を理解し,提示されたプログラム課題に活用できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
4週 データ構造 構造体を用いて,リスト、スタック・キューなどの基本的なデータ構造を構築できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
5週 データ構造 構造体を用いて,リスト、スタック・キューなどの基本的なデータ構造を構築できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
6週 データ構造 構造体を用いて,リスト、スタック・キューなどの基本的なデータ構造を構築できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
7週 分割コンパイル プログラムを複数の翻訳単位に分割して開発する手法を理解し,提示されたプログラム課題をプログラミングできる D2:1,2, E2:1,2, E3:1,2, E4:1,2
8週 分割コンパイル プログラムを複数の翻訳単位に分割して開発する手法を理解し,提示されたプログラム課題をプログラミングできる D2:1,2, E2:1,2, E3:1,2, E4:1,2
4thQ
9週 後期中間試験
試験問題の解答
10週 システム開発のプロセス ソフトウェアを中心としたシステム開発のプロセスを説明できる D2:1
11週 オブジェクト指向 オブジェクト指向プログラミングの概念を用いてクラスを作成できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
12週 オブジェクト指向 オブジェクト指向プログラミングの概念を用いてクラスを作成できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
13週 実践的プログラミング 要求仕様に従って、プログラムを設計し実装できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
14週 実践的プログラミング 要求仕様に従って、プログラムを設計し実装できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
15週 実践的プログラミング 要求仕様に従って、プログラムを設計し実装できる D2:1,2, E2:1,2, E3:1,2, E4:1,2
16週 試験問題の解答と授業アンケートの実施

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

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

評価割合

試験レポートその他合計
総合評価割合70300100
基礎的能力2010030
専門的能力5020070
分野横断的能力0000