シラバス参照

授業情報/Class Information

科目一覧へ戻る 2024/09/20 現在

基本情報/Basic Information

遠隔授業(授業回数全体の半分以上)の場合は、科目名の先頭に◆が付加されています(2023年度以降)
開講科目名
/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
要件年度
/Required Year
要件所属
/Course Name
ディプロマポリシー
/Diploma Policy
DP値
/DP Point
2020/04
~2022/04
システム工学部 1.幅広い教養と分野横断的な学力 1
2020/04
~2022/04
システム工学部 2.専門的知識や技能 6
2020/04
~2022/04
システム工学部 3.課題解決力と自己学修能力 3
2023/04
~9999/04
システム工学部 1.幅広い教養と分野横断的な学力 1
2023/04
~9999/04
システム工学部 2.専門的知識や技能 6
2023/04
~9999/04
システム工学部 3.課題解決力と自己学修能力 3

担当教員情報/Instructor Information

教員名
/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 後半のまとめ 学習内容のおさらい
最終課題の実施

科目一覧へ戻る