ソフトウェア技法 2016年度

最新ニュース

[成績について, 2016/8/30] 大変時間がかかりましたが(レポートを見るのに四苦八苦しましたが)、成績をつけました。 「第4週までの必須課題に対する解答を(多少間違っていても)すべて提出」して、かつ、 「最終ミニプロジェクト課題の必須課題を(多少バグっていても)すべて提出」 した全員(つまり、ほぼ全員)が合格です。 成績は、 発展課題に意欲的に取り組んだ人、あるいは、レポートをしっかり書いた人に 追加点を与える方式で採点し、約3分の1の人にA以上(A+またはA)をつけています。 自分の成績は、ちかじかTWINS を通じて見られるはずです。 成績についての疑問や質問があれば、教員あてにメールしてください。

[レポート提出状況について] レポートはすべてmanaba にあるはずです。 締め切りより多少おくれて提出されたものも(受け付け可能なものは) TA の人たちが、manaba にアップロードしてくれていますので、 「自分ががどのレポートを提出したか」は自分でわかっているとおもいます。 もし、「自分は必須課題を全部だしたはずなのに、不合格だった」とか「自分 は発展課題もたくさんだしたはずなのに、成績がわるかった」という人は、 遠慮なく、教員あてにメールしてください。(ただし、個人の成績に関する解 答は、皆さんのcoinsのメールアドレスあてにのみ、返答します。)

[ミニプロジェクトの解答について] ミニプロジェクトの課題に対するプログラム例は、coinsマシンの ~kam/ocaml の下に section9-stack-sampleanswer.ml と section9-logic-sampleanswer.mlという名前のファイルで置いてあります。 これはあくまで一例であり、皆さんの方が優れたプログラム(効率、読みやす さ、などにおいて優れたもの)を書いているケースもありましたが、ともかく、 今回の講義の範囲内の構文で亀山が自然に書いてみた解答例です。 解けなかった人や、自分の実装では問題があるとおもっている人は参考にしてください。 なお、ここの解答例ではカバーできないもの(特に、自分で設定した発展課題 をやった人)については、提出されたレポートについて個別コメントをメール で返す予定です。

講義計画と資料

  1. 概要: 関数プログラミングとOCaml
  2. 基礎: OCamlの起動と終了、ファイルの読み込み、変数と関数の定義, 資料1 (7/6) (演習問題は、演習後に加筆)
  3. 基本データ型: 真理値、整数、浮動点小数、文字、文字列 資料2 (7/8) (演習問題は、演習後に加筆)
  4. 再帰プログラミング(1): 自然数上の再帰関数 資料3 (7/13)
  5. 再帰プログラミング(2): リストとリスト上の再帰 資料4 (7/15) (7/15 の授業時点では、この資料4 の insert関数に間違いがありました。 不等号が逆でした。修正したファイルをここには置いてあります。) また、資料4の演習問題に対する補足を、 ヒント1のページに書きました。
  6. 型システム: 資料5 (7/20)、 代数的データ型 資料6 (7/22) (7/22 午後 20:30, 資 料6 で、演習の例題における誤植を修正しました。お手数ですが再度ダウンロードしてください。)
  7. 高階関数 資料7 (7/27)、 末尾再帰その他 資料8 (7/29) (参考: TAのページ)
  8. ミニプロジェクト: 資料9 (8/3,8/5)

演習

  1. .emacsに追加する内容 (tuaregモード)
  2. 演習ファイルは coinsマシンの ~kam/ocaml の下にあります。(OCamlファイル)
  3. テキスト第N章のプログラムをいれたファイルは coinsマシンの ~kam/ocaml/sectionN.ml というファイル名で置きます (ただし,エラーをコメントにしたりするので,若干違うことがあります.)
  4. テキスト第N章の演習課題の解答(の一部)をいれたファイルは coinsマシンの ~kam/ocaml/sectionN-exc.ml というファイル名で置きます
  5. let と ;; に関する補足1を書きました。
  6. 虫取りに関する補足2を書きました。
  7. 非emacsユーザ向けの補足3を書きました。
  8. printに関する補足4を書きました。

参考資料

OCamlファイルは計算機室のコンピュータの /home/prof/kam/ocaml の下に置いてあります。


亀山 幸義 (kam[at]cs.tsukuba.ac.jp)