プログラミング

科目基礎情報

学校 仙台高等専門学校 開講年度 平成30年度 (2018年度)
授業科目 プログラミング
科目番号 0053 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 履修単位: 2
開設学科 情報システム工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 A. 「明快入門C」 林晴比古 著 (SBクリエイティブ) B. 「C言語によるアルゴリズム入門」 河西朝雄 著 (技術評論社 ) C. 「やさしいJava オブジェクト指向編」 髙橋麻奈著 (ソフトバンククリエイティブ)
担当教員 安藤 敏彦,竹島 久志,張 暁勇

到達目標

1. C言語の文法全般を理解し、小・中規模なプログラムを作成できる。
2. 基本アルゴリズム(整列、探索)について説明でき、それらを使ったプログラミングができる。
3. Java言語を用いてクラスとメソッドを理解し、小規模なJavaプログラムを作成できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
C言語の文法全般を理解し、小・中規模なプログラムを作成できる。C言語の文法全般を理解し、中規模なプログラムを作成できる。C言語の文法全般を理解し、小規模なプログラムを作成できる。C言語の文法の理解が限定的で、プログラミングができない。
基本アルゴリズム(整列、探索)について説明でき、それらを使ったプログラミングができる。基本アルゴリズム(整列、探索)のすべてについて説明でき、それらを使ったプログラミングができる。基本アルゴリズム(整列、探索)の一部について説明でき、それらを使ったプログラミングができる。基本アルゴリズム(整列、探索)の説明が限定的で、それらを使ったプログラミングができない。
Java言語のクラスを理解し、小規模なJavaプログラムを作成できる。Java言語のクラスを理解し、小規模なJavaプログラムを作成できる。 Java言語のクラスを理解し、基本的なJavaプログラムを作成できる。Javaプログラムを作成できない。

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

学習・教育到達度目標 1 情報システムの中核となるソフトウェアの知識とスキルの体系的で確実な修得

教育方法等

概要:
2年次の「プログラミング基礎」で学んだC言語プログラミングを復習および強化しながら、不足していた文法(構造体等)学習し、小・中規模のプログラムを作成する課題に取り組む。基本アルゴリズム(整列、探索)について学習し、それらを使ったプログラムを作成する。Java言語を学習し,オブジェクト指向プログラミングの基礎であるクラスとメソッドについて学習する。
授業の進め方・方法:
前期前半はC言語の完成、前期後半は基本アルゴリズムの整列・探索、後期前半は応用課題、後期後半はJava言語の導入を行う。前期の基本的な1回の授業の構成は、前半に説明・演習問題・確認問題等により、その単元の内容を理解し、後半にプログラムを作成する実習課題に取り組む。実習課題は次の授業までに提出する。試験前には演習問題を行う。
注意点:
・本科目は,2年の「プログラミング基礎」の続きであり,4年の「応用プログラミングI」,「ディジタルシステムA・B」に発展する。Java言語については4年の「ソフトウェア分析設計」への導入である。
・授業は講義と実習からなり,実習課題はレポートとして提出する。
・プログラムの作成にあたっては,①課題内容を十分検討,②プログラムの設計図(フローチャート/PAD),③コーディング,④検証(テスト)を行い、課題を満足するか確認することが大切である。
・事前事後の学習内容:実習課題は授業時間内に終わらない場合が多いため、事後の学習として放課後等を利用して実習課題を完成させる。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ◇C言語の完成
導入、復習1、PADの導入
基礎的なプログラムを読み書きできる。PADを描ける。
2週 復習2:課題プログラミング 乱数関数を使うことが出来る。じゃんけんの勝敗規則を発見できる。「じゃんけんゲーム」のPADを描き、プログラミングできる。
3週 復習3:ポインタとコマンドライン入力 ポインタを使ったプログラムを読み書きできる。コマンドライン引数を使ったプログラミングができる。
4週 構造体1 構造体を使ったプログラムを読み書きできる。
5週 構造体2 構造体のポインタを使ったプログラムを読み書きできる。
6週 動的領域確保 malloc 記憶領域の動的確保関数mallocを使ったプログラムを
読み書きできる。
7週 演習問題 演習問題を解くことができる。
8週 前期中間試験 試験問題を解くことができる。
2ndQ
9週 デバッガ(gdb) デバッガgdbを使うことができる。gdbのクイック・リファレンスを作成できる。
10週 ◇アルゴリズム基礎
ウォーミングアップ:漸化式
アルゴリズムとは何か説明できる。「組み合わせ数」を求めるプログラムを求めるプログラムを、複数のアルゴリズムで作成できる。
11週 基本ソート1:直接選択法、バブルソート 基本ソートである直接選択法とバブルソートについてアルゴリズムを説明できる。バブルソートのプログラムを作成できる。
12週 基本ソート2:基本挿入法 基本挿入法によるソートアルゴリズムを説明できる。基本挿入法によるソー
トプログラムを作成できる。直接選択法、バブルソート、
基本挿入法のプログラムを作成できる。
13週 ソートの計算量 基本ソートの計算量(ビッグO表記)を求めることができる
14週 サーチ:逐次探索、2分探索 探索アルゴリズムを2種類学び、それらの探索速度が
大きく異ることを説明できる。2分探索法のアルゴリズム
のPADを描ける。2分探索法を用いたプログラムを作成で
きる。
15週 演習問題 演習問題を解くことができる。
16週 試験返却 テストの間違いを修正できる。
後期
3rdQ
1週 文字列の照合、置き換え 文字列の照合アルゴリズムBoyer-Moore法を説明できる。Boyer-Moore法によるテキスト照合のプログラムを作成できる。
2週 ハッシュ ハッシュについて説明できる。ハッシュを用いた探索プログラムを作成できる。
3週 再帰呼び出し、組み合わせ数 再帰呼び出しとは何か説明できる。再帰呼出しを用いた組み合わせ数の計算プログラムを作成できる。
4週 迷路 再帰呼び出しの応用として、迷路を探索するプログラムを作成できる。
5週 クイックソート クイックソートアルゴリズムを説明できる。そのプログラムを作成できる。
6週 応用課題 応用課題のプログラミングができる。
7週 演習問題 演習問題を解くことができる。
8週 中間試験 中間試験問題を解くことができる。
4thQ
9週 ◇Java言語とオブジェクト指向プログラミング
オブジェクト指向概論
オブジェクト指向の特徴である継承、カプセル化、ポリモーフィズムについて説明できる。
10週 クラスとインスタンス
演習(Java言語の基本的な書き方)
クラスを用いたJava言語のプログラムを書くことができる。
11週 クラスと継承
演習(継承)
クラスの継承をJava言語で書くことができる。
12週 パッケージとクラスのアクセス制限 Java言語における変数やメソッドのスコープについて説明できる。
13週 ポリモーフィズム1
抽象クラス
抽象クラスについて説明でき、抽象クラスを使ったプログラムを書くことができる。
14週 ポリモーフィズム2
インタフェース
演習(ポリモーフィズム)
インタフェースについて説明でき、インタフェースを使ったプログラムを作ることができる。
15週 まとめ
16週 試験返却

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

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

評価割合

試験課題その他合計
総合評価割合80200000100
専門的能力80200000100
0000000
0000000