科 目 | プログラミングU ( Programming II ) | |||
---|---|---|---|---|
担当教員 | [前期] 戸崎 哲也 教授, [後期] 尾山 匡浩 准教授 | |||
対象学年等 | 電子工学科・3年・通年・必修・2単位 ( 学修単位I ) | |||
学習・教育 目標 |
A3(100%) | |||
授業の概要 と方針 |
アルゴリズム,データ構造などのプログラミングを実践的な見地から学習する.前期では,C言語の復習とファイル入出力,およびオブジェクト指向型言語であるjava言語について触れる.後期では各種のハードウェアやウェブサービスなどと連携した実用的で発展性のある技術について,各種プログラミング言語を用いて広く紹介する.プログラミングで “何か” を実現する歓びを感じて頂きたい. | |||
到 達 目 標 |
1 | 【A3】 C言語によるプログラミングの基礎を理解できる. | 2 | 【A3】 プログラミングによりファイル入出力操作をすることができる. | 3 | 【A3】 オブジェクト指向型プログラムを理解することができる. | 4 | 【A3】 提示された問題を解決できるようなプログラミングをおこなうことができる. | 5 | 6 | 7 | 8 | 9 | 10 |
評 価 方 法 と 基 準 |
到 達 目 標 毎 |
1 | C言語プログラミングの基礎を理解できているかを小テスト,前期中間試験および授業中の演習で評価する. | |
2 | ファイル入出力操作を理解できているかを小テスト,前期中間試験および授業中の演習で評価する. | |||
3 | オブジェクト指向型プログラムの特徴であるインスタンス化,コンストラクタ,クラスの継承が理解できているかを前期定期試験および授業中の演習で評価する. | |||
4 | プログラミングによる問題解決能力を総合演習,プレゼンテーションおよび関係資料,レポートで評価する. | |||
5 | ||||
6 | ||||
7 | ||||
8 | ||||
9 | ||||
10 | ||||
総 合 評 価 |
成績は,試験35% レポート40% 小テスト10% 総合演習5% プレゼンテーションおよび関係資料10% として評価する.前期成績は,中間及び定期試験の平均点,小テスト,総合演習で評価する.尚,前期中間試験は前期中間課題として置き換える.後期成績は,プレゼンテーションおよび関係資料,レポートで評価する.総合評価は前期成績と後期成績の平均とし,100点満点で60点以上を合格とする. | |||
テキスト | 「新C言語入門シニア編」:林晴比古(ソフトバンククリエイティブ) 配布プリント |
|||
参考書 | 「プログラミング言語C ANSI規格準拠」:B.W. カーニハン(共立出版) 「Java言語プログラムレッスン 上下」:結城浩(SBクリエイティブ) 「Raspberry Piをはじめよう 第3版」:Matt Richardson他著,水原文訳(オライリー・ジャパン) 「入門 Python 3」:Bill Lubanovic著,斎藤康毅監修,長尾高弘訳(オライリー・ジャパン) 「プログラマの数学 第2版」:結城浩(SBクリエイティブ) |
|||
関連科目 | 情報基礎,プログラミングI,ソフトウェア工学,数値解析,電子工学実験実習 | |||
履修上の 注意事項 |
本科目では,プログラミングIをさらに実践的なものへと発展させることを目指す.そのため,プログラミングIの内容を十分理解しておく必要がある.加えて,電子工学科におけるプログラミングは電子工学の知識と密接に関わっているので,実験実習などの実習系科目についてもその楽しさを理解しておく必要がある. |
週 | 上段:テーマ/下段:内容(目標、準備など) |
---|---|
1 | C言語の復習1 |
2年次に学習したC言語の復習を行う.ここでは,標準入出力や四則演算,2進数の計算に必要な論理演算やシフト演算,科学計算に欠かせない算術演算関数について復習する. | |
2 | C言語の復習2 |
関数と変数についての講義を行う. | |
3 | ポインタ1 |
C言語では,ポインタを利用してメモリ上のアドレスにアクセスすることができる.ここでは,メモリに割り当てられたポインタ変数がどのような振る舞いを行うかを学び,その使用方法について理解を深める. | |
4 | ポインタ2 |
配列とポインタ,構造体のポインタ,ポインタのポインタを学習し,その使用方法について理解を深める. | |
5 | ファイル入出力1 |
プログラミングにおいて,データを読み込んだり,結果を書き出したりする処理は重要である.このような処理はファイル入出力と呼ばれるが,その概要を示す.また,ファイルにはテキストファイルとバイナリファイルが存在するが,ここではテキストファイルを中心にその入出力方法を学ぶ. | |
6 | ファイル入出力2 |
科学計算を行う上で,バイナリファイル を扱うことは重要である.ここでは,バイナリファイルの入出力に関して学習を行う. | |
7 | 演習 |
ファイル入出力に関する演習を行う. | |
8 | 前期中間課題 |
1〜7週に関する内容の課題をレポート形式でまとめる. | |
9 | これまでの振り返りと構造体の復習 |
これまでの内容を振り返り,質問対応を行う.その後,構造体に関する復習を行う. | |
10 | 構造体の利用 |
構造体のポインタ,構造体の構造体を例を基に理解する.さらに,これらを利用した自己参照構造体を講義し,リスト表現について学ぶ. | |
11 | java言語1 オブジェクト指向型プログラミングの説明およびクラスとインスタンス |
オブジェクト指向型プログラミングの説明を行い,手続き型プログラミングとの違いを学習する.また,クラスとオブジェクト,オブジェクトの生成方法(インスタンス)を講義し,その使い方を理解する. | |
12 | java言語2 コンストラクタ |
クラスからオブジェクトをインスタンス化する際,その初期化処理を行うコンストラクタという概念が存在する,その使用方法を学び,理解を深める. | |
13 | java言語3 継承 |
あるクラスに,新しいメソッドやフィールドを追加して新しいクラスを作ることを継承という.これらの概念を理解し,演習を通して理解を深める. | |
14 | java言語演習 |
java言語に関する総合的な演習を行う. | |
15 | 定期試験の解答 |
定期試験の返却と問題の解説を行う.また,後期に向けての動機付けを行う. | |
16 | Raspberry Piの環境構築 |
ARMプロセッサを搭載した低価格シングルボードコンピュータであるRaspberry Pi(以下,RPiと表記)の環境構築をおこなう.また,RPiにはGPIO(汎用の入出力端子)が備わっているが,RPiではコマンドラインから極めて容易にGPIOへアクセスすることができるので,この機能も試す. | |
17 | Raspberry Piを用いたSonicPi入門 |
RPiではリアルタイムに音楽を“プログラミング”できるSonicPiが動作する.SonicPiでは,事前に演奏情報を入力しておくだけではなく,演奏中にリアルタイムに音色や音量の変更がおこなえるので,これらを体験する. | |
18 | Raspberry Piを用いたMathematica入門 |
RPiの標準OSであるRaspbianには高度な数式処理や美しい可視化などが容易におこなえるMathematicaが無償で付属している.数学のみならず,その他の講義や実験等で扱う事象の理解にも有用であると考えられるので,基本的な使い方を講義する. | |
19 | 演習 |
16週目から18週目の内容に関する演習を行う. | |
20 | Raspberry Piを用いたPython入門1 |
各分野で幅広く用いられているスクリプト言語であるPython3を紹介する.Pythonは実行速度は遅いものの各種ライブラリが充実しており,様々な高度な機能を短期間で開発することができる.第1週目はGPIO端子を扱う簡単なプログラムを記述し,ハードウェアがソフトウェアから容易に扱えることを実感する. | |
21 | Raspberry Piを用いたPython入門2 |
Python言語の基本を学ぶ.特徴的なインデントの書き方や変数や配列の扱い,ifやforなどの制御構造について解説する. | |
22 | Raspberry Piを用いたPython入門3 |
Pythonは様々なライブラリが充実しており,その使いこなしが重要である.ここではそのライブラリの紹介と使い方について講義する. | |
23 | 演習 |
20週目から22週目の内容に関する演習を行う. | |
24 | Raspberry Piを用いたWebサーバ構築 |
RaspbianはDebianをベースにしたLinuxであるので,ウェブサーバ等の構築も容易である.ここでは,Apache2を用いてウェブサーバ構築について体験する. | |
25 | Raspberry Piを用いた並列計算入門 |
RPiは安価なシングルボードコンピュータでありながら比較的高速なマルチコアCPUが搭載されており,容易に並列演算をおこなえるようになっている.ここでは,C言語で書いたコードをOpenMPを用いて極めて簡便に並列化する手法について解説する.加えて,最適化コンパイルの方法とその効果についても確認する. | |
26 | Raspberry Piを用いたProcessing入門 |
Processingはビジュアルデザインのためプログラミング言語で,手軽にアートやアニメーションなどを作ることができる.ここでは,その基本的な使い方について学ぶ. | |
27 | 演習 |
24週目および26週目の内容に関する演習を行う. | |
28 | 自由課題 1 |
前週までに学習した内容に基づき,各自が希望する自由課題に取り組む.使用言語や内容は自由である.本講義で紹介していない言語でも差し支えない.RPiを使わないソフトウェアのみの開発,外部のハードウェアやオンラインサービス等と連携するものや,RPiのハードウェアそのものの可能性を追求するものなどでもよい. | |
29 | 自由課題 2 |
前週に引き続き自由課題に取り組む. | |
30 | プレゼンテーション |
自由課題についてのプレゼンテーションを行う(一人2分程度). | |
備 考 |
前期定期試験を実施する.後期は試験を実施せず,かわりにプレゼンテーションおよびレポートで評価する. |