山梨大学電子シラバス>検索結果一覧>授業データ



授業科目名 組込みプログラミングI演習
時間割番号 TJM115
担当教員名 西﨑 博光/森澤 正之
開講学期・曜日・時限 後期・金・I-II 単位数 2
<対象学生>
(未登録)
<授業の目的>
同時開講科目「組込みプロブラミングI」で学ぶ内容+アルファに関して,コンピュータ端末を用いたC言語のプログラミング演習を行う科目である。本科目では,C言語のデータ型,データ構造とアルゴリズム,手続き表現の基本と,プログラムをコーディングするのに必要とされる知識と応用技術を習得することを目標とする。本科目を合格で修了したものは,C言語の基礎プログラミングができると言っても良い。加えて,データサイエンスで重要なプログラミング言語であるPythonにも触れる。Pythonは組込み機器でも利用されている言語でもある。なお,本科目で習得したプログラミング技術は,後続科目である「組込みプログラミングII」「メカトロニクス工学実習III」でも用いるため,全学生が習得することが望ましい。
<本授業科目による獲得・涵養が特に期待されるコンピテンシー>(能力・資質)
工学部(~2023年度入学生)>メカトロニクス工学科向け
記号コンピテンシー(能力・資質) 
JM-A専門2.三分野での活躍を目指す技術者・研究者にとって必要な基礎知識と技術C言語による基本的(データ型、制御構造、関数等)なプログラムが作成でき、組込み用マイコンの基本的なI/O制御プログラムをマイコンの概要と動作の理解の上で作成できる。
JM-B3.三分野のうち、一つ以上のより専門的な技術と知識。少なくとも一分野の技術と知識を十分に身につけ、さらに一つ以上の分野の技術と知識も身につける。2.電気分野動的変数、再帰関数などを用いた線形リスト、木構造、ソートのプログラムが書ける。
JM-C3.情報分野動的変数、再帰関数などを用いた線形リスト、木構造、ソートのプログラムが書ける。
<到達目標>  到達目標とは
目標NO説明コンピテンシーとの対応
JM
1C言語での構造体を理解し,そのプログラミングができること。JM-A
2C言語のポインタ(動的データ構造,メモリ管理,動的メモリ確保とメモリ開放)について理解し,これを使ったプログラミングができること。JM-C
3C言語で文字列を扱う方法を理解し,そのプログラミングができること。JM-A
4データ構造の一種である線形リストを理解し,C言語でプログラミングができること。JM-C
5データ構造の一種である「スタック」と「キュー」について理解し,C言語でプログラミングができること。JM-A
6C言語を使ったファイルの入出力方法を理解し,そのプログラミングができること。JM-B
7探索アルゴリズムの「二分探索」と「ハッシュ法」について理解し,C言語でプログラミングができること。JM-A
8C言語を使った関数の再帰呼び出しに基づくプログラミングができること。JM-C
9ソートアルゴリズムの「バブルソート」と「クイックソート」を理解し,C言語でプログラミングができること。JM-A
10Python言語を使った基礎プログラミングができること。
<成績評価の方法>
目標No割合評価の観点
18%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
215%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
310%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
415%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
510%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
610%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
710%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
810%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
910%演習課題ならびに実技試験で理解度ならびにプログラミングスキルを評価する。
102%演習課題でプログラミングスキルを評価する。
合計100% 
<授業の方法>
本科目の履修者は「プログラミング入門」(1年次前期開講,2024年度より「C言語プログラミング」に振替)の単位を取得しており,C言語の基礎知識を持っていることを前提として進める。本授業の履修者は,C言語プログラミングを復習して望むこと。

教育方法・授業方法は次のとおりである。
- 毎回,C言語 (or Python)のプログラミング課題を課し,その課題を取り組む形で授業を進める。
- ほとんどの単元で事前学習を必須とする。事前に授業ビデオを公開し,受講生は授業開始前々までにビデオを視聴し,事前課題に取り組んでおく。
- 授業内容よっては,学生による発表を実施する。
- 試験は実技試験形式(その場で出題されたお題に対するプログラムを時間内に完成させる)とする。
<受講に際して・学生へのメッセージ>
・例年,「プログラミング入門」と比べて,急に難易度が上がるため,「プログラミング入門」不合格者や成績が芳しくなかった履修生が履修する場合は,授業期間の開始前までにC言語プログラミングを勉強して基礎的な素養を身に着けておく必要があります。事前にC言語プログラミングを学習したい場合は担当教員に連絡をとってもよいです。

・質問がない場合は「分かっている」と解釈して授業を進めるので,分からないことはきちんと質問するようにしてください。

・本授業では,教員が作成したスライド資料を提供するため,教科書はありませんが,挙げてある参考書は分かりやすく勉強になるので,購入しておいても損はないと思います。
<テキスト>
(未登録)
<参考書>
  1. 柴田望洋著, 新・明解C言語で学ぶアルゴリズムとデータ構造 第2版, SBクリエイティブ, ISBN:4815609780,
    (2021年出版)
<授業計画の概要>
1タイトルC言語復習(制御構造・配列・キーボードからのデータ入力・関数)
事前学習
事後学習
事前学習:特になし
事後学習:プログラミング演習課題
授業内容「プログラミング入門」(1年次前期開講)の復習を行う。forやifなどの制御構造,変数・配列,キーボードからのデータ入力,関数について再学習を行う。C言語でのこれらの基礎的内容について再確認し,プログラムがかけることが目標である。
2タイトル関数(配列の受け渡し)・変数のスコープ
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容C言語の関数についての理解を深める。変数と配列を関数に渡す方法の理解,変数の寿命について理解し,プログラミングが書けるようになることが目標である。
3タイトル模擬コーディング試験の実施・構造体
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容本番のコーディング試験のために,本番と同等の条件でコーディング試験の練習を行う。また,C言語の構造体について理解をし,プログラミングが書けるようになることが目標である。
4タイトル第1回中間評価とまとめ
事前学習
事後学習
事前学習:試験のための試験勉強
事後学習:なし
授業内容1~3回目の授業内容に関して,C言語プログラミングのコーディング試験を行う。この試験を通して,1~3回目に実施した内容についての理解を深めることも目標である。
5タイトルポインタとメモリの動的確保,文字列処理
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容ポインタならびにポインタを使ったメモリの動的確保について理解をし,これらのプログラムが書けるようになることが目標である。また,C言語で文字列を扱う方法を理解し,これに関するプログラムが書けるようになることも目標である。
6タイトルポインタと関数・ポインタと配列・メモリ領域の解放・ 構造体に対するポインタ
事前学習
事後学習
ポインタを用いた関数の変数や配列の受け渡し,配列とポインタの関係,メモリの解放,構造体変数に対するポインタを使った操作に関して理解をし,これらのプログラムが書けるようになることが目標である。
授業内容事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
7タイトル線形リストの操作(データの追加・走査)
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容ポインタとメモリの動的確保を用いて,データ構造の一種である線形リストを構築する方法を理解し,線形リストの構築および線形リストの内容を表示できるプログラムを実装できるようになることが目標である。
8タイトル線形リストの操作(データの削除)
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容線形リストの任意のデータを削除する方法を理解し,一部のデータの削除や全データを削除するプログラムを実装できるようになることが目標である。
9タイトル第2回中間評価とまとめ
事前学習
事後学習
事前学習:試験のための試験勉強
事後学習:なし
授業内容5~8回目の授業内容に関して,C言語プログラミングのコーディング試験を行う。この試験を通して,5~8回目に実施した内容についての理解を深めることも目標である。
10タイトルスタックとキュー
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容データ構造の一種である,スタックとキューについて理解をし,動的配列を用いた方法と線形リストを用いた2通りの方法でこれらのデータ構造をC言語で実装できるようになることが目標である。
11タイトルファイル入出力と探索アルゴリズム(二分探索・ハッシュ法)
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容探索アルゴリズムの一種である,二分探索法とハッシュ法のアルゴリズムを理解し,これらのアルゴリズムをC言語で実装できるようになることが目標である。また,多くのデータを扱うために,あらかじめファイルに定義してある情報を読み込んだり,ファイルに書き込んだりする方法を理解し,このプログラムも実装できるようになることが目標である。
12タイトル再帰プログラミング
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容関数の再帰呼び出しを使ったプログラミングを学び,再帰呼び出しによって与えられた課題を解決するプログラムが書けるようになることが目標である。
13タイトルソーティングアルゴリズム(バブルソート・クイックソート)
事前学習
事後学習
事前学習:事前配布のビデオによる予習
事後学習:プログラミング演習課題
授業内容ソーティングアルゴリズムの一種である,バブルソートとクイックソートアルゴリズムを理解し,これらのアルゴリズムをC言語で実装できるようになることが目標である。
14タイトルPythonプログラミング入門
事前学習
事後学習
事前学習:なし
事後学習:プログラミング演習課題
授業内容Python言語を理解し,簡単なコーディング作法を身につける。これまでに学習したC言語の演習課題をPython言語を用いて実装できるようになることが目標である。
15タイトル期末評価とまとめ
事前学習
事後学習
事前学習:試験のための試験勉強
事後学習:なし
授業内容10~13回目の授業内容に関して,C言語プログラミングのコーディング試験を行う。この試験を通して,10~13回目に実施した内容についての理解を深めることも目標である。
<前年度授業に対する改善要望等への対応>
・TAが少ないという指摘については、TAの代わりに「AI」を導入するなどで対応する。
・提出期間が短いという点については、もとより授業時間内に終わる学生もいるため、考慮できない。
・反転授業において、授業時間の最初にビデオ内容の再確認をしたいという指摘に対して、授業の最初に内容を振り返る時間を取ることにする。
・質問フォームを作って欲しいという要望については、TeamsやCNS、電子メールで適宜質問を受け付ける旨説明をしている。
・課題の解答例を出すべきという指摘に対して、解答例は提示をしている(授業での説明をよく聞くこと)
<備考>
進捗具合,同時開講科目の「組込みプログラミングI」との整合性から,実施内容を変更することがある。
不正行為(他の履修生からのプログラムのコピーなど)は厳正に対処する。