![]() |
| 科目一覧へ戻る | 2026/04/06 現在 |
|
開講科目名 /Course |
プログラミング言語/Programming Languages | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
時間割コード /Course Code |
S1401370_S1 | ||||||||||||||||||||||||||||
|
開講所属 /Course Offered by |
システム工学部/Faculty of Systems Engineering | ||||||||||||||||||||||||||||
|
ターム・学期 /Term・Semester |
2026年度/Academic Year 第3クォーター/3Q | ||||||||||||||||||||||||||||
|
曜限 /Day, Period |
月/Mon 1 | ||||||||||||||||||||||||||||
|
開講区分 /Semester offered |
後期/the latter term | ||||||||||||||||||||||||||||
|
単位数 /Credits |
2.0 | ||||||||||||||||||||||||||||
|
学年 /Year |
2,3,4 | ||||||||||||||||||||||||||||
|
主担当教員 /Main Instructor |
伊原 彰紀 | ||||||||||||||||||||||||||||
|
授業形態 /Lecture Form |
講義 | ||||||||||||||||||||||||||||
|
教室 /Classroom |
北1号館A202, 北1号館A203/北1号館A202, 北1号館A203 | ||||||||||||||||||||||||||||
|
開講形態 /Course Format |
|||||||||||||||||||||||||||||
|
ディプロマポリシー情報 /Diploma Policy |
|
|
教員名 /Instructor |
教員所属名 /Affiliation |
|---|---|
| 伊原 彰紀 | システム工学部(教員) |
|
授業の概要・ねらい /Course Aims |
プログラミング言語は、解釈に曖昧さを有する自然言語とは異なり、コンピュータが一意に解釈できるように明確なルールによってその文法や意味が定義されている。この授業では、コンピュータの仕組みや言語設計者の意図に着目しながら、プログラミング言語について深く理解し、さまざまなプログラミングの場面でその特徴を踏まえたよりよいプログラムが設計・記述できるようになること、さらにはデバッグやテスト、リファクタリングといったプログラム開発に関連する技術について学習するとともに、これらを支援するプログラム解析技術を理解することで、より品質の高いプログラムが実装できるようになることを目指す。 |
||||
|---|---|---|---|---|---|
|
到達目標 /Course Objectives |
・後置記法で記述された数式を評価するスタックマシンを説明することができる。 ・データ型のある言語とない言語について理解しそれぞれの振舞いを説明することができる。 ・制御構造を記述する構文をアセンブリ言語と対応付けて説明することができる。 ・関数呼出しの仕組みをスタックを用いて説明することができる。 ・ポインタの仕組みについて理解しそれを用いたプログラムを記述することができる。 ・抽象構文木で表現された数式を評価することができる。 ・効率的にバグを見つけて修正することができる。 ・プログラムスライスを計算することができる。 ・適切なテスト技法を選択しテストケースを記述することができる。 ・プログラムの品質を評価するためのコードメトリクスについて説明できる。 ・プログラムの保守性を向上するためのリファクタリングについて説明できる。 |
||||
|
成績評価の方法・基準 /Grading Policies/Criteria |
プログラミング言語、プログラムのデバッグやテスト技法、リファクタリング技法に対する理解度を、毎回の授業中に指示する課題(50%)の取り組み状況およびその内容および中間試験・単位認定試験(50%)により評価する。コンピュータの仕組みとプログラミング言語との関係、および品質の高いプログラムを実装するためのデバッグやテスト、リファクタリングの各技術について理解でき、それに基づいてプログラムが記述できれば合格とする。 | ||||
|
教科書 /Textbook |
記載事項なし | ||||
|
参考書・参考文献 /Reference Book |
授業中に使用することはありませんが、次の書籍を読むことで授業の内容を深く理解することができます。 プログラミング言語C 第2版(B.W.カーニハン/D.M.リッチー 著、石田晴久 訳、ISBN 978-4320026926、3,080円) コーディングを支える技術~成り立ちから学ぶプログラミング作法(西尾泰和 著、ISBN 978-4774156545、2,717円) プログラミング作法(B.W.カーニハン/R.パイク 著、福崎俊博 訳、ISBN 978-4048930529、3,080円) ソフトウェア・テストの技法 第2版(J.マイヤーズ/T.バジェット/M.トーマス/C.サンドラー 著、長尾真/松尾正信 訳、ISBN 978-4764903296、3,520円) リファクタリング 第2版~既存のコードを安全に改善する(M.ファウラー 著、 児玉公信/友野晶夫/平澤章/梅澤真史 訳、ISBN 978-4274224546、4,840円) リーダブルコード(D.ボズウェル/T.フォシェ 著、角征典 訳、ISBN 978-4873115658、2,640円) |
||||
|
履修上の注意 ・メッセージ /Notice for Students |
プログラミングの基礎技術をすでに修得しており、プログラミング経験(言語は問わない)があることを前提としている。説明は主にC言語を用いて行うが、内容に応じて他の言語を使用することもある。開発・実行環境については授業中に指示する。また、課題実施(プログラミングやレポート作成)のために授業内でPCを使用するため、各自持参すること。 | ||||
|
履修を推奨する関連科目 /Related Courses |
データ構造とアルゴリズム | ||||
|
授業時間外学修(予習・復習等)の内容 /students learning outside of the class, preparation and review are included |
授業計画に沿って、授業時間外学修(予習・復習など)を⾏うことが必要である。また、授業内容に関連する課題への調査・考察を含めた⾃主的学修を求める。 1単位の学修のために必要な学修量は、授業時間と予習復習の時間をあわせて45時間と定められている。それぞれに見合う自主的学修時間を確保すること。 |
||||
|
その他連絡事項 /Other messages |
昨年度のガイダンス資料を公開しています。 https://wakayamauniv-my.sharepoint.com/:b:/g/personal/ihara_wakayama-u_ac_jp/IQBSAb71063QT6_KfyT4JHPVAdudR0QY_Wy0p9KPsYLxuhQ?e=WmE4CH |
||||
|
授業理解を深める方法 /How to deepen your understanding of classes |
通常の課題に加えて、毎回の授業の中で発展的な課題を提示することにより、各自の理解度に応じた学習を促す。 【「アクティブ・ラーニング」実施要項 ⑦】 |
||||
|
オフィスアワー /Office Hours |
月曜日2限,A813(伊原研究室) 他学生との重複,出張等で不在の場合があるため,事前メール予約推奨. ihara@wakayama-u.ac.jp |
||||
|
科目ナンバリング /Course Numbering |
S60052J11100S212,S60052J11100T217,S60052J11100U210 | ||||
|
実務経験のある教員等による授業科目 /Practical Experience |
|
| No. | 回(日時) /Time (date and time) |
主題と位置付け /Subjects and position in the whole course |
学習方法と内容 /Methods and contents |
備考(担当) /Notes |
|---|---|---|---|---|
| 1 | 1 | プログラミング言語の歴史 | シラバスおよび授業の進め方の説明 プログラミングの歴史について プログラミングの基礎技術のおさらい |
ノートPC使用 |
| 2 | 2 | プログラミング言語の文法 | 数式の表現方法 抽象構文木 スタックによる数式処理 |
ノートPC使用 |
| 3 | 3 | データ型 | データの表現形式 データ型の指定によるプログラミング 仕様としての型 |
ノートPC使用 |
| 4 | 4 | 制御構造 | 構造化プログラミング Go to statement considered harmful データの集合に対する処理 |
ノートPC使用 |
| 5 | 5 | 関数 | 手続きのモジュール化 局所変数 再帰呼び出し |
ノートPC使用 |
| 6 | 6 | ポインタと動的メモリ管理 | ポインタとアドレス ポインタと配列 動的メモリ管理 |
ノートPC使用 |
| 7 | 7 | 構文解析 | 構文規則と抽象構文木 宣言の構文 中置記法の数式処理 |
ノートPC使用 |
| 8 | 8 | 前半のまとめと中間試験 | 前半の学習内容のおさらい 中間試験の実施 |
ノートPC使用 |
| 9 | 9 | プログラムのデバッグ | バグの再現とデバッグ デバッグツールの活用 |
ノートPC使用 |
| 10 | 10 | プログラム解析 | 静的解析 プロファイラによる解析 動的解析に基づくプログラムの変更 |
ノートPC使用 |
| 11 | 11 | プログラムスライシング | 静的依存関係 スタティックスライス スライシング技術の活用 |
ノートPC使用 |
| 12 | 12 | プログラムのテスト | アサーション カバレッジ テスティングフレームワーク |
ノートPC使用 |
| 13 | 13 | メトリクス | コードメトリクス メトリクス計測ツール オブジェクト指向メトリクス |
ノートPC使用 |
| 14 | 14 | リファクタリング | リファクタリングカタログ 不吉な匂いとリファクタリング |
ノートPC使用 |
| 15 | 15 | ソフトウェアの品質 | 品質特性 リーダブルコード |
ノートPC使用 |
| 16 | 16 | 全体のまとめと単位認定試験 | 全体の学習内容のおさらい 単位認定試験の実施 |
ノートPC使用 |