シラバス参照 |
科目一覧へ戻る | 2024/09/20 現在 |
開講科目名 /Course |
(人数制限科目)プログラミング言語/Programming Languages | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
時間割コード /Course Code |
S1401370_S1 | ||||||||||||||||||||||||||||
開講所属 /Course Offered by |
システム工学部/Faculty of Systems Engineering | ||||||||||||||||||||||||||||
ターム・学期 /Term・Semester |
2024年度/Academic Year 第3クォーター/3Q | ||||||||||||||||||||||||||||
曜限 /Day, Period |
月/Mon 1 | ||||||||||||||||||||||||||||
開講区分 /Semester offered |
後期/the latter term | ||||||||||||||||||||||||||||
単位数 /Credits |
2.0 | ||||||||||||||||||||||||||||
学年 /Year |
2,3,4 | ||||||||||||||||||||||||||||
主担当教員 /Main Instructor |
伊原 彰紀 | ||||||||||||||||||||||||||||
科目区分 /Course Group |
_ | ||||||||||||||||||||||||||||
授業形態 /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言語を用いて行うが,内容に応じて他の言語を使用することもある.開発・実行環境については授業中に指示する. |
履修する上で必要な事項 /Prerequisite |
課題実施(プログラミングやレポート作成)のために授業内でPCを使用するため,各自持参すること. |
履修を推奨する関連科目 /Related Courses |
データ構造とアルゴリズム |
授業時間外学修についての指示 /Instructions for studying outside class hours |
授業計画に沿って、計30時間の授業時間外学修(予習・復習など)を⾏うことが必要である。また、授業内容に関連する課題への調査・考察を含めた⾃主的学修を求める。 |
その他連絡事項 /Other messages |
本講義のガイダンス資料を事前公開しています. https://drive.google.com/file/d/1S_3oNduI-qlYaPCQGtqjbYf7ylqBRjfU/view?usp=sharing |
授業理解を深める方法 /How to deepen your understanding of classes |
通常の課題に加えて、毎回の授業の中で発展的な課題を提示することにより、各自の理解度に応じた学習を促す。 【「アクティブ・ラーニング」実施要項 ⑦】 |
オフィスアワー /Office Hours |
非常勤講師のため、授業前後に対応 |
科目ナンバリング /Course Numbering |
S60052J11100S212,S60052J11100T217,S60052J11100U210 |
No. | 回(日時) /Time (date and time) |
主題と位置付け /Subjects and instructor's position |
学習方法と内容 /Methods and contents |
備考(担当) /Notes |
---|---|---|---|---|
1 | 1 | プログラミング言語の歴史 | シラバスおよび授業の進め方の説明 プログラミングの歴史について プログラミングの基礎技術のおさらい |
|
2 | 2 | プログラミング言語の文法 | 数式の表現方法 抽象構文木 スタックによる数式処理 |
|
3 | 3 | データ型 | データの表現形式 データ型の指定によるプログラミング 仕様としての型 |
|
4 | 4 | 制御構造 | 構造化プログラミング Go to statement considered harmful データの集合に対する処理 |
|
5 | 5 | 関数 | 手続きのモジュール化 局所変数 再帰呼び出し |
|
6 | 6 | ポインタと動的メモリ管理 | ポインタとアドレス ポインタと配列 動的メモリ管理 |
|
7 | 7 | 構文解析 | 構文規則と抽象構文木 宣言の構文 中置記法の数式処理 |
|
8 | 8 | 前半のまとめ プログラムのデバッグ |
前半の学習内容のおさらい 課題の実施 バグの再現とデバッグ デバッグツールの活用 |
|
9 | 9 | プログラム解析 | 静的解析 プロファイラによる解析 動的解析に基づくプログラムの変更 |
|
10 | 10 | プログラムスライシング | 静的依存関係 スタティックスライス スライシング技術の活用 |
|
11 | 11 | プログラムのテスト | アサーション カバレッジ テスティングフレームワーク |
|
12 | 12 | メトリクス | コードメトリクス メトリクス計測ツール オブジェクト指向メトリクス |
|
13 | 13 | リファクタリング | リファクタリングカタログ リファクタリングの例 不吉な匂いとリファクタリング |
|
14 | 14 | ソフトウェアの品質 | 品質特性 リーダブルコード |
|
15 | 15 | 後半のまとめ | 学習内容のおさらい 最終課題の実施 |