- 日時 2014年8月25日(月)午後 〜 8月29日(金)午後 (4泊5日)
- 場所 国立オリンピック記念青少年総合センター (〒151-0052 東京都渋谷区代々木神園町3番1号)
- 参加者 約25人(予定)
- スケジュール
スケジュールは変更される可能性があります.最新の情報はこのページでお知らせします.
8月25日(月)
15:30 集合・受付開始
16:00〜18:00 打ち合わせ・班決め,セミナー(1)
18:00〜19:00 夕食
19:00〜21:00 セミナー(2)
23:00 就寝
8月26日(火)
7:00 起床
7:30〜 8:30 朝食
9:00〜12:00 セミナー(3)
12:00〜13:00 昼食
13:00〜16:00 講義(1)
16:30〜18:00 セミナー(4)
18:00〜19:00 夕食
19:00〜21:00 セミナー(5)
23:00 就寝
8月27日(水)
7:00 起床
7:30〜 8:30 朝食
9:00〜12:00 セミナー(6)
12:00〜13:00 昼食
13:00〜18:00 セミナー(7)
18:00〜19:00 夕食
19:00〜21:00 セミナー(8)・交流
23:00 就寝
8月28日(木)
7:00 起床
7:30〜 8:30 朝食
9:00〜12:00 発表準備(1)
12:00〜13:00 昼食
13:00〜16:00 講義(2)
16:30〜18:00 発表準備(2)
18:00〜19:00 夕食
19:00〜21:00 発表準備(3)
23:00 就寝
8月29日(金)
9:00〜12:00 発表会(1)
12:00〜13:00 昼食
13:00〜15:00 発表会(2)
15:30 解散
- セミナーで使用するテキスト
夏季セミナーでは以下のテキストを使います.数人ずつのグループに分かれてテキストを輪講し,自分たちで考えて議論したり実際にプログラムを作ったりします.セミナーでの勉強の成果を最終日にプロジェクタで発表します.
テキストは情報オリンピック日本委員会が用意し,参加者には夏季セミナー会場でお渡しします.参加者が用意する必要はありません.
セミナーで使用するテキストは変更される場合があります.変更がありましたら,このページでお知らせします.
- 『Looking for a Challenge』(英語) (Krzysztof Diks (編), Tomasz Idziaszek (編), Jakub Lacki (編), Jakub Radoszewski (編)) 解き甲斐のある問題に挑んでみませんか?この本では,プログラミングコンテストの著名なコーダーたちがそれぞれ興味深い問題とその解説を紹介したものがまとめられています.著者には,Tomasz Czajka(tomek), Marek Cygan(marek.cygan)といったプログラミングコンテストでも最上位に入るコーダーや,Filip Wolski のような IOI で上位を取り続けたコーダーも含まれています.問題は,ポーランドの様々なコンテストの問題から選ばれており,もちろんすべてが英訳されています.
- 『並行コンピューティング技法 ― 実践マルチコア/マルチスレッドプログラミング』 (Clay Breshears (著), 千住 治郎 (翻訳))
普段の競技プログラミングでは「並行コンピューティング」というものにあまり触れることはないと思いますが,マルチコアプロセッサが当たり前になっている現代において,高速なプログラムを書こうとしたときに避けては通れない分野です.この本では,シングルスレッド用アルゴリズムをマルチスレッド用に書き換えるところから始まり,並列プログラミングの基礎・設計・実装について丁寧に解説されています.
- 『情報理論と符号理論』 (G. A. Jones (著), J. M. Jones (著))
プログラミングをしていて,情報(文字列,数列など)を効率よく圧縮したいと思ったことはありませんか?この本では情報を通信する際,どの程度圧縮できるかについて理論的な説明を与えます.また,通信に雑音が入ることを考慮した場合に正確さを損なわないようにすることについても考察します.
- 『集合知プログラミング』 (T. Segaran (著), 當山仁健 (翻訳), 鴨澤眞夫 (翻訳))
この本では,膨大なデータを収集・分析する方法や,メタヒューリスティック(最適解の求められない問題に対するアプローチ手法)について,豊富なサンプルコードを交えて解説されています.検索エンジンやレコメンドシステムなどの仕組みに興味がある人や,TopCoder の Marathon 部門に参加しようと思っている人の参考になるのではないかと思います.
- 『計算機プログラムの構造と解釈』 (G. J. Sussman (著), J. Sussman (著), H. Abelson (著), 和田英一 (翻訳))
この本はマサチューセッツ工科大学で使われていた,計算機科学分野の古典的な教科書です.プログラムにおける重要な概念が基礎的な事柄から順を追って解説されています.最大の特徴は,記述に Scheme という Lisp の方言であるプログラミング言語が用いられていることです.Scheme の文法は適宜解説されているので Scheme の入門書としても役立ちます.前提知識は特に要求されていませんが,関数型言語についてある程度の知識があると読みやすいでしょう.
- 『入門 自然言語処理』 (S. Bird (著), E. Klein (著), E. Loper (著), 萩原正人 (翻訳), 中山敬広 (翻訳), 水野貴明 (翻訳))
この本では自然言語処理の入門として,テキスト処理に始まりテキスト分類の学習や構文解析などについて,Python のソースコードによるサンプルとともに解説されています.たとえば IOI2010 では自然言語処理の分野が題材となった問題が出題されています.構文解析はプログラミングコンテストでもよく見かける分野です.便利な翻訳サイトも自然言語処理による成果でしょうし,プログラミングコンテストと自然言語処理の間も浅くない関係で結ばれています.この本のソースコードは Python で書かれているので,Python が使えるようになっていると望ましいですが,本の中でも Python の解説に多くのページが割かれています.実際に実装してみるのが大事だと思うので,セミナーでは積極的にコードを書きましょう.
- 講義概要
夏季セミナー中に 2 回の講義を行う予定です.(講義についての情報を掲出8/12)
- 8月26日 (火) 13:00〜16:00
- 講師 堀山貴史 (埼玉大学情報メディア基盤センター 准教授)
- タイトル 1つ,2つ,たくさん 〜列挙アルゴリズムの入門から応用まで〜
- 講義概要
列挙アルゴリズムは,与えられた条件を満たす解を,ただ1つだけ求めるのではなく,漏れなく重複なく,すべて求めるための技術です.本講義では,列挙のための要素技術として,以下の2つを取り上げます.1つ目は,ZDD (Zero-suppressed Decision Diagram;零抑制二分決定グラフ) です.これは,有向非巡回グラフによる,集合族 (集合の集合) の表現法であり,集合族を圧縮して保持するデータ構造と見ることもできます.2つ目は,逆探索である.列挙対象の間に親子関係を与えるルールを設計し,木構造を定義することで,ルールに基づいて次の出力を計算で求めることができます.本講義では,これら2つの要素技術の基礎を述べるとともに,それぞれの技術の応用として,展開図の列挙やタイリングの列挙について紹介します.
- 8月28日 (木) 13:00〜16:00
- 講師 塩田 明弘 (株式会社NTTデータ基盤システム事業本部セキュリティビジネス推進室セキュリティ技術担当主任)
- タイトル Webアプリケーション開発におけるセキュアプログラミング手法
- 講義概要
インターネットの普及に伴い,ブラウザ等を通じたWebアプリケーションの利用が一般的になりました.一方で,Webアプリケーションに対するサイバー攻撃も増加し,毎年多くの被害が発生しています.本講義では,Webアプリケーションを構成するソースコード中のアルゴリズムに脆弱性を作りこまないための開発時における基本的な考え方と,そのサポートとなる機能がフレームワークやプログラミング言語においてどのように実装されているかを解説します.