AI Programmer に B3 ゼミのプログラミング課題を解かせてみた.

こんにちは.あらい大先生です.

Stable Diffusion をはじめとする画像生成 AI が話題になっているなか,日本語からソースコードを生成する AI Programmer が登場したようです [1, 2, 3].
彼の実力を試すために,上原研の B3 ゼミで出題されるプログラミング課題を解かせてみました.

第1問 ナベアツ問題

世界のナベアツの持ちネタと言えば「3 の倍数と 3 が付く数字のときだけアホになる」でしょう.
上原研では,これを FizzBuzz 問題 [4] 風にし,以下のプログラミング課題を出題しています.

\(1\) から \(n\) までの間で,\(3\) の倍数と \(3\) が付く数字のときにアホという文字列を出力する.

AI Programmer はナベアツ問題を解くことができるのでしょうか?
試しに,このような文字列を与えてました。

数字の入力を受け付け、1からその受け付けた数字までの間、3の倍数、あるいは3がつく数字の場合、そのときの数字とアホという文字列を出力する、そうでなければ数字のみを出力する。

実行結果を以下に示します.

AI Programmer の入出力
実行結果

ダラダラと長い文で指示してしまいましたが,AI Programmer は意味を理解して適切なコードを生成してくれました.

第2問 素因数分解

RSA 暗号は「非常に大きな合成数を素因数分解することが困難であること」を安全性の根拠としています.
したがって,サイバーセキュリティの分野では素数や素因数分解への理解が重要であり,上原研では毎年「入力された数字を素因数分解する」というプログラミング課題が出題されています.

これも AI Programmer に解かせてみましょう.

実行結果を以下に示します.

試し割り法を行うコードが出力されました.
また,\(2\) から \(N\) までではなく,\(2\) から \(\sqrt{n}\) までの範囲で試し割りしている点も賢いですね(素因数分解は有名なので事前に学習させていた可能生はありますが).

おわりに

簡単なプログラムであれば,AI に任せられそうなことが分かりました(規模の大きいプログラムに関しては,調査していないので分かりません).
一方で,私は「AI が生成したソースコードを提出する学生が現れるのでは?」という懸念が生じました.
そう思っていた矢先に,AI (GPT-3) が作成したレポートを提出して高評価を獲得するという問題が起きた [5] みたいです.

学生のプログラミングの知識やコーディングの様子を現地で確認できる仕組み(例:TA によるチェック,対面での試験)があれば,上記の問題が生じる可能性は低いと思います.
一方,オンライン講座でのプログラミング課題の場合,上記の仕組みを実現することが難しく,AI によるプログラミング課題の代行が問題になってしまいそうです.

どうすれば良いでしょうか.
これの解決を卒業研究として取り組む学生が現れてほしいですね.

参考

  1. AI Programmer,入手先〈https://aiprogrammer.hashlab.jp/〉(参照 2022-10-20).
  2. 樽井 秀人:自然な日本語で注文するとソースコードを作ってくれるサービス「AI Programmer」が登場,窓の杜,入手先〈https://forest.watch.impress.co.jp/docs/serial/yajiuma/1444554.html〉(参照 2022-10-15).
  3. 樽井 秀人:ソースコード生成AI「AI Programmer」が対応言語を拡充、正規表現や日本語解説にも対応,窓の杜,入手先〈https://forest.watch.impress.co.jp/docs/news/1445449.html〉(参照 2022-15).
  4. IT用語辞典 e-Words:FizzBuzz問題(フィズバズ問題)とは,入手先〈https://e-words.jp/w/FizzBuzz%E5%95%8F%E9%A1%8C.html〉(参照 2022-10-20).
  5. 畑ともみ:人工知能に書かせた米大学生のレポートがA判定に 「盗作チェックソフトウェアは検出ができない」,リアルサウンド テック,入手先〈https://realsound.jp/tech/2022/10/post-1157342.html〉(参照 2022-10-22).

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です