大堀・上野研での学生教育

大堀・上野研では,研究室に配属された学部4年生,修士・博士課程の学生に対し,研究室での研究内容に合わせつつ,各学生の興味の赴くままに学生ごとに研究課題を設定します.学年ごとに週に数回ゼミを行うことを基本として,研究に関する議論を学生とスタッフで定期的に行い,密度の高い研究および教育を行います.

研究室での教育活動

学年ごとに分けて,当研究室での教育方針を紹介します.現在行われているゼミの例はゼミの紹介をご覧ください.

学部4年生

前半の約半年間は,ゼミ形式で,卒業研修の基礎となる以下の分野を学びます.

  • 基礎理論: 教科書を用いて型理論やラムダ計算の基礎を学びます.
  • プログラミング: SML#によるプログラミングやLaTeXやUNIXコマンドの使い方などのリテラシー,および言語処理系の開発の初歩を学びます.
  • 最先端の話題: 最近の国際会議論文やサーベイ論文,あるいは教科書を輪読することで,興味深い動向を探るとともに,研究論文を読み解くための英語力を磨きます.
  • コンパイラ開発: SML#の開発ミーティングに参加し,SML#の内部構造に触れ,また実際に開発プロジェクトに参加することで,コンパイラ開発の最前線を経験します.

この過程で各自研究テーマを見つけ,後半の半年間で卒業研修に取り組みます.

各学生が取り組む卒業研修テーマは,冬学期が始まった頃に学生とスタッフで相談して,各自の希望や興味に合わせて決めています.

学部3年生が研究室を選ぶための参考として,以下の学部研修題目を挙げています.

次世代高信頼プログラミング言語SML#の開発
大堀研で進めている次世代プログラミング言語開発プロジェクトに参加し,関連する理論や処理系の一部を構築する.詳しくはSML#の開発をご覧ください.
SML#等の高機能関数型言語のためのプログラム開発環境の研究
SML#の構造エディタやデバッガの開発,OSやゲーム開発などの特殊なプログラミングを必要とする領域でのSML#を用いた開発手法の研究.
種々のデータソースを統合するデータモデルおよび検索システムの研究
PostgreSQL等の既存の関係データベースやExcelファイル等のデータファイル,XML等のWeb上のデータなど,種々のデータを自由かつ柔軟に扱えるようなプログラミングシステムの実現に向けた要素技術の探究.
大規模並列計算の基礎理論
大規模並列計算を高水準に行うためのプログラミングモデルの構築,並列性を意識せずに記述したプログラムから大規模並列計算向けコードへコンパイルする技術の研究.
コンパイルや機械語コードの論理学的基礎の研究
専門的ですが,興味があれば,日本での特別講演のスライド日本での講演のスライド海外での講演のスライドなどをご覧ください.
高信頼Webプログラミングのための開発基盤に関する研究
Webアプリケーションに必須なJSONの取り扱いやテンプレートエンジンの操作を型付き言語から安全に行うための言語機能や,それらを統合した,プログラマが全てを制御可能なWebプログラミングフレームワークの開発.

博士前期・後期課程

週1回数時間程度のゼミを基本として,各自が独立して研究を行い,外部発表につながる研究成果を目指します.

また,外部発表に向けたミーティングなどを不定期に開催し,研究室スタッフと共に論文を執筆し,プレゼンテーション能力を磨きます.

能力が高く意欲のある学生は,SML#プロジェクトへの積極的な参加など,当研究室だからこそ取り組める高度なプログラミング経験を積むことができます.

関連する講義

当研究室での研究に取り組む上で,以下の講義の内容は参考になります.

  • プログラミング演習B前半(ML)
  • システムソフトウェア工学
  • 計算機ソフトウェア工学
  • コンパイラ
  • データベース
  • 数理論理学

当研究室に配属を希望する学生には,これらの講義を履修していることが推奨されます.逆に言えば,これらの講義の内容を面白いと思う学生ならば,当研究室での研究内容と親和性が高いと思います.

これらの授業を履修していなかったとしても,研究室配属後のゼミで基礎を学ぶことはできます.ただし,ゼミは講義形式ではなくゼミ形式で進みますので,講義よりも積極的な各自の努力が求められます.