プログラミング

科目基礎情報

学校 仙台高等専門学校 開講年度 平成30年度 (2018年度)
授業科目 プログラミング
科目番号 0049 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 情報ネットワーク工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 「アルゴリズムとデータ構造」藤原暁宏(森北出版)
担当教員 藤原 和彦,奥村 俊昭

到達目標

1. ポインタや構造体など,プログラミングにとって重要な考え方を理解する。
2. ソフトウェア開発工程およびアルゴリズムの重要性を理解する。
3. 各種アルゴリズムの仕組みと特徴を理解する。
4. 課題や問題に対して各種アルゴリズムを駆使して解決することができる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
ポインタや構造体などを利用し,複雑な処理を実現することができる。ポインタや構造体などの基本的な利用方法を理解し,適切なプログラムを記述することができる。ポインタや構造体を利用したプログラミングができない。
ソフトウェア開発工程を正しく理解し,適切なドキュメントとともにプログラムを作成することができる。ソフトウェア開発工程を正しく理解し,必要な手順を踏んで開発することができる。ソフトウェア開発工程を理解していない。
基本的なアルゴリズムを理解し,実装できるとともに,正しく説明することができる。基本的なアルゴリズムを理解し,実装することができる。基本的なアルゴリズムを実装することができない。

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

学習・教育到達度目標 1 通信機器や情報通信システム構築に必要なハードウェア・ソフトウェアの知識と技術の習得

教育方法等

概要:
 ポインタ,ユーザ関数,構造体と共用体,データ型と記憶クラス,ファイル処理等について,講義と実習を通じて学習する。小・中規模のプログラムを作成する課題を与える。課題を通じて基本アルゴリズムについても学習する。
 プログラミング基礎で学んだ知識に加えて,C言語に関する文法を全て習得し,小・中規模のプログラムを作成できることを目標とする。
授業の進め方・方法:
 前期は,C言語に関する文法(ポインタ,構造体,ファイル操作)を学習し,各節ごとに演習課題に取り組む。
 後期は,基本的なアルゴリズムについて学び,演習課題に取り組む。
注意点:
 課題の提出期限を必ず守ることが大切である。また,自分の頭で考えることが,アルゴリズム設計能力やソフトウェア作成能力の向上には欠かせない。この事を念頭に置いて,主体的に学習してほしい。
 実習にあたっては,基本的にソフトウェア開発工程に沿って行うこと。課題内容をじっくり検討し,プログラムの設計図をきちんと書いてからコーディングを行うこと。作成したプログラムはしっかりと検証(テスト)を行い,要求された課題を十分に満たしているかどうか確認すること。
 課題は必ず全て提出すること。期限までにどうしても完成しない場合は,どこで引っかかっているか担当教員へ事前に(期限前に)相談に行き,適切なアドバイスを受けること。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ポインタ ポインタの特徴と動作を理解し,適切に扱うことができる。
2週 ポインタ演習1 ポインタの特徴と動作を理解し,適切に扱うことができる。
メモリ空間の動的確保と可変長多次元配列を利用できる。
3週 ポインタ演習2 ポインタの特徴と動作を理解し,適切に扱うことができる。
メモリ空間の動的確保と可変長多次元配列を利用できる。
4週 ポインタ演習3 ポインタの特徴と動作を理解し,適切に扱うことができる。
メモリ空間の動的確保と可変長多次元配列を利用できる。
5週 構造体と共用体 構造体の特徴を理解し,適切なデータ操作ができる。
共用体の意味とメモリ領域の扱いを理解し,ビット単位でのデータ操作ができる。
6週 構造体と共用体 演習1 構造体の特徴を理解し,適切なデータ操作ができる。
共用体の意味とメモリ領域の扱いを理解し,ビット単位でのデータ操作ができる。
7週 構造体と共用体 演習2 構造体の特徴を理解し,適切なデータ操作ができる。
共用体の意味とメモリ領域の扱いを理解し,ビット単位でのデータ操作ができる。
8週 ファイル処理 テキストファイルとバイナリファイルの違いを理解し,適切に操作することができる。
2ndQ
9週 ファイル処理 演習1 テキストファイルとバイナリファイルの違いを理解し,適切に操作することができる。
10週 ファイル処理 演習2 テキストファイルとバイナリファイルの違いを理解し,適切に操作することができる。
11週 前期総合演習課題1 これまでに学習した内容を応用し,課題の要求を満たすプログラムを作成することができる。
12週 前期総合演習課題2 これまでに学習した内容を応用し,課題の要求を満たすプログラムを作成することができる。
13週 前期総合演習課題3 これまでに学習した内容を応用し,課題の要求を満たすプログラムを作成することができる。
14週 前期総合演習課題4 これまでに学習した内容を応用し,課題の要求を満たすプログラムを作成することができる。
15週 前期期末試験の返却 前期期末試験の答案返却と解説
16週
後期
3rdQ
1週 ソフトウェア開発工程の進め方 ソフトウェアを中心としたシステム開発のプロセスを理解している。
2週 アルゴリズムの基礎 アルゴリズムの概念を説明できる。
3週 アルゴリズムの基本データ構造と基本概念1 コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを理解している。
4週 アルゴリズムの基本データ構造と基本概念2 リスト構造,スタック,キューなどの基本的なデータ構造の概念と操作を説明できる。
5週 アルゴリズムの基本データ構造と基本概念3 リスト構造,スタック,キューなどの基本的なデータ構造の概念と操作を説明できる。
6週 アルゴリズムの基本データ構造と基本概念4 同一の問題に対し,選択したデータ構造によってアルゴリズムが変化しうることを理解している。
7週 後期中間試験
8週 後期中間試験の返却 後期中間試験の答案返却と解説
4thQ
9週 データの探索1 整列,探索など,基本的なアルゴリズムについて説明できる。
種々のデータ探索法について理解できる。
同一の問題に対し,それを解決できる複数のアルゴリズムが存在しうることを理解している。
10週 データの探索2 整列,探索など,基本的なアルゴリズムについて説明できる。
種々のデータ探索法について理解できる。
同一の問題に対し,それを解決できる複数のアルゴリズムが存在しうることを理解している。
11週 ソートアルゴリズム1
与えられたアルゴリズムが問題を解決していく過程を説明できる。
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。
種々のデータソート法について理解できる。
12週 ソートアルゴリズム2 与えられたアルゴリズムが問題を解決していく過程を説明できる。
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。
種々のデータソート法について理解できる。
13週 ソートアルゴリズム3 与えられたアルゴリズムが問題を解決していく過程を説明できる。
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。
種々のデータソート法について理解できる。
14週 ソートアルゴリズム4 与えられたアルゴリズムが問題を解決していく過程を説明できる。
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。
種々のデータソート法について理解できる。
15週 後期期末試験の返却 後期期末試験の答案返却と解説
16週

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

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

評価割合

試験課題合計
総合評価割合5050100
基礎的能力202040
専門的能力202040
分野横断的能力101020