Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scala and Education in Univ.

3,625 views

Published on

ScalaMatsuri2016

Published in: Education
  • Be the first to comment

Scala and Education in Univ.

  1. 1. 大学教育とScala 東京工業大学 情報科学科における事例 ScalaMatsuri2016 東京工業大学理学部情報科学科2年 @3tty0n
  2. 2. 目的 • 大学教育におけるScalaの導入事例を説明 • Scalaの教育に対する考察
  3. 3. 概要 • Scalaの大学教育への導入事例の説明 • 東工大理学部情報科学科の例 • 良い点、悪い点の整理、改善案の提案 • まとめ • 質問タイム
  4. 4. 自己紹介 • 所属: • 東京工業大学理学部情報科学科2年 • Scala歴: • 11か月 • 趣味: • アイカツ! • Twitter: • @3tty0n • GitHub: • https://github.com/3tty0n • 株式会社Sumallyにエンジニアインターンにいっているらしい
  5. 5. Scalaを大学教育へ • 東工大情報科学科では2年次の初心者向けプログラミング教育 にScalaが導入されている • 1年次でC言語を学んでいる人が対象 • Github(後期): https://github.com/titech-is-cs115 • 後期サポートサイト:https://titech-is-cs115.github.io/lecture/
  6. 6. 前期担当教員 • 青谷知幸助教 • https://taotani.wordpress.com/ • 他にTAが3人の4人体制
  7. 7. 後期担当教員 • 脇田建准教授(東工大数理・計算機科学専攻) • https://kwakita.wordpress.com/ • GitHub : https://github.com/wakita • 他に助教とTAが2人の4人体制
  8. 8. 何をやっているか 実際の授業内容の紹介
  9. 9. 何をやっているか • 2年前期:関数型プログラミングの基礎 • Haskell ライクの Scala を学び、関数型プログラミングの基礎を養う • 2年後期:sbtを用いたテスト駆動開発の基礎 • 課題の配布はgithubから行う • 各自srcとtestを作成→pull requestにより提出
  10. 10. 何をやっているか • 後期サポートサイト https://titech-is-cs115.github.io/lecture/
  11. 11. 何をやっているか
  12. 12. 何をやっているか
  13. 13. 何をやっているか • 課題の配布
  14. 14. 何をやっているか • 課題の内容
  15. 15. 何をやっているか • fork する
  16. 16. 何をやっているか • src を書く
  17. 17. 何をやっているか • test を書く
  18. 18. 何をやっているか • pull request を送って提出
  19. 19. 何をやっているか • Issueにおける質問
  20. 20. 今何をやっているか Scalafxによるドローイングアプリの開発 (titeh-is-cs115/ex13)
  21. 21. 習ってみて実際どうだったか 体験談
  22. 22. 習ってみて実際どうだったか • 数理的な考え方が必要なのでC言語とかに比べるととっつきに くい • 勉強することが多い • 慣れると短いコードで複雑なことができるので非常に面白い
  23. 23. 良い点、悪い点の整理 1年間Scalaでプログラミング教育を受けてきてわかったこと
  24. 24. 良い点 • Scalaが勉強できた • なお工学部情報工学科では2年次でCとSchemeを教えているので、時代 遅れ感が否めない • GitHubの使い方を学べた • 現場で役に立つ知識を蓄えることができる
  25. 25. 良い点 • GitHubを使っているのでレビューが受けれる • 教員からのフィードバックが参考になる • Issueで教員と話せる • 自分の課題の相談などができた • 他の生徒のコードが見れるので参考になる • 解き終わった後、人のコードを見て勉強できる
  26. 26. 悪い点 • テキストが整備されていない • 市販のScala本は初心者向けでない • 授業では、問題を配布し、とりあえず取り組む形になっている • わからないところがあれば適宜質問でフォロー、しかし… • 教員の数が足りておらず、全員のフォローができない • 40人の学生を4人の教員で教育することは難しい • 1年弱勉強してもScalaへの理解度が低い学生が過半数(私調べ
  27. 27. 悪い点 • 助言が理解できない • 助言の内容に専門用語があると途端に理解の度合いが落ちる(私が質 問対応した時の経験より) • 質問の無限ループ(私の経験より) • これでは時間がいくらあっても足りない • 質問内容も「検索すればわかる」ことが多い
  28. 28. 改善案の提案 どうすれば悪い点をなくせるのか
  29. 29. 改善案 • 自前で初心者向けのテキストを用意する • 例:昨日公開されたドワンゴ社の研修資料を使う • http://dwango.github.io/scala_text/ • 教えることが明確化されるので指導しやすい • 時間をたっぷりとる • 東工大情報科学科では週1回3時間の授業時間が充てられている • しかしこれは少なすぎる • 週に1回しかコードを書かない人が大半(私調べ) • コードを書くことへの目的意識を持たせる
  30. 30. 改善案 • 指導教員を増やす • 4人いるが、授業が終わって1時間したら研究室に戻ってしまう • 常に対応できる教員が必要 • オンラインでの対応は、現状、GitHubのIssueで行っている • しかし、質問する学生が少ない(私調べ) • カウンセラーのように、特定の場所に行けば質問対応してくれる人が 必要 • Slackなどのチャットツールの導入 • 気軽に生徒同士が教えあう場の提供
  31. 31. 改善案 • プログラミング入門「以前」が必要 • コンピューターの扱い方 • WindowsとOSXの違い • わからないことの解決方法を指導 • などなど、私たちが当たり前にやっていることを教える努力が必要
  32. 32. まとめ • Scalaは導入コストが結構大きい • 自前の初心者向けのテキスト整備 • カウンセラーのような役割の人を配置 • 根気強く教える努力を • プログラミング入門「以前」を指導 • 大学ではここでつまづいている人が非常に多い印象 • 環境の作り方とか実演するといいかもしれない
  33. 33. ご静聴ありがとうございまし た
  34. 34. 質問タイム • 何か聞きたいことはございませんか? • 実際の課題のソースは私が書いたものはのGitHubにおいてあり ます • 時間があれば課題の実演などします
  35. 35. 質問タイムのフィードバック
  36. 36. フィードバック • TDDは2年次にやるには重い • 授業の目指すものは高いが内容を詰め込みすぎてて消化不良に陥る 可能性 • 目的意識がないとプログラミングは辛い • 教える内容は最小限にする • 例えばbuild.sbtには触らせないで予め用意するなど • GUIをやらせるのは辛い
  37. 37. フィードバック • implicitなものはimplicitにしておこう!! • 科学技術計算のほうが興味が持てるので題材としてはGUIより よいのでは • いきなり初心者の大学生にScalaを教えても頑張れば大丈夫、と いうのは割りと知見な気がする

×