プログラミング

科目基礎情報

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

到達目標

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

ルーブリック

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

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

教育方法等

概要:
 ポインタ,ユーザ関数,構造体と共用体,データ型と記憶クラス,ファイル処理等について,講義と実習を通じて学習する。小・中規模のプログラムを作成する課題を与える。課題を通じて基本アルゴリズムについても学習する。
 プログラミング基礎で学んだ知識に加えて,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
代入や演算子の概念を理解し、式を記述できる。4
制御構造の概念を理解し、条件分岐や反復処理を記述できる。4
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。4
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4
主要な言語処理プロセッサの種類と特徴を説明できる。4
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。4
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。4
ソフトウェアアルゴリズムの概念を説明できる。4
与えられたアルゴリズムが問題を解決していく過程を説明できる。4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。4
整列、探索など、基本的なアルゴリズムについて説明できる。4
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4
計算機工学整数・小数を2進数、10進数、16進数で表現できる。4
整数・小数をコンピュータのメモリ上でディジタル表現する方法を説明できる。4
情報数学・情報理論コンピュータ上での数値の表現方法が誤差に関係することを説明できる。4

評価割合

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