2ndセメスターが始まり、ウェブ開発用の言語習得、Demo Day向けに作成したiPhoneアプリの最終化、サマーインターン選考のインタビューなどにわかに忙しくなってきた。具体的にどのような内容・進行スピードか気になるという話をよく聞くため、2ndセメスターの週ごとの暫定的なカリキュラムをお示ししたい(2年プログラムのカリキュラム全体像についてはこちら)。

なお、今週は日本のメディア企業からの訪問者があり、タイミングよく映像コンテンツ横断プラットフォームのYidio訪問や、国連やダボス会議でバーチャルリアリティのイニシアティブを担当しているBarry Pousman氏の講演に同席してもらうことができた。ソフトウェアが他産業に浸食しつつあることを肌で感じて頂きたいので、もしMake Schoolやその繋がりでアクセス可能なネットワークに興味のある方は連絡をもらえればと思う。

1. Tech系:Web Development

第2セメスターの中心となるウェブ開発の進行予定は下記の通りだ。プロジェクトベースでの学習であり、大半の時間はここに使われる。第1セメスターとの大きな違いは、企業での開発に適応するため、グループワークが多く含まれていることである。

  • Week 1: HTML/CSS、Javascript
    • ウェブ開発基礎の復習という位置付けであり、経験が少ない生徒は必死で追いつく時期
    • デバイスプラットフォームを考慮したパーソナルウェブサイトの作成(既にパーソナルウェブサイトを作成済の生徒についてはブラッシュアップ)
  • Week 2: ReactJS
    • Facebookが開発したReactJSを中心に、様々なフレームワークを学習
  • Week 3~4: Ruby on Rails基礎
    • rails tutorial.orgのチュートリアルをベースに、Ruby on Railsを学習
    • Twitterのクローンサイトを作成
  • Week 5: Ruby Koans
  • Week 6~7: AngularJS
    • フロントエンド向けにAngularJSを学習
  • Week 8~9: Rails応用1
    • RailsとAngularJSの理解を深めるためRedditのクローンサイトを作成
    • チームワークを学ぶため、2人1組で実施
  • Week 10~17: グループプロジェクト
    • 4月上旬のDemo Nightに向けて、ウェブサービスを作成
    • チームワークを学ぶため、4人1組で実施
  • Week 18~21: オープンソースプロジェクト
    • 大規模なチームやオープンソースプロジェクトへの参加を見据えた学習

2. Tech系:Computer Science Foundation(任意参加)

上記に加えて、コンピュータサイエンス基礎のクラス・グループワークも予定されている。

  • コンピュータサイエンス基礎:レクチャー(毎週月曜)
  • コンピュータサイエンス基礎:実装(毎週水曜)
  • 問題解決&グループレビュー(毎週金曜)

トピックは下記から生徒の投票で選ばれる予定だ。

Discrete Math
  • exponents and logarithms
  • number bases
  • binary
  • decimal
  • hexadecimal
  • number theory
  • primes and divisibility
  • greatest common divisor
  • modular arithmetic
  • hash functions
  • pseudorandom numbers
  • set theory
  • sets
  • operations
  • relations
  • maps
  • functions
  • recursion and induction
  • recurrence relations
  • proof by induction
  • combinatorics
  • counting
  • permutations
  • combinations
  • binomial theorem
  • probability
  • statistical distributions
  • stochastic sampling
  • conditional probability
  • Markov models
  • hidden Markov models
Data Structures
  • abstract data types
  • lists
  • stacks
  • queues
  • sets
  • maps
  • circular buffers
  • vectors (aka resizable arrays)
  • linked lists
  • singly linked lists
  • doubly linked lists
  • heaps (aka priority queues)
  • representations
  • binary heaps
  • hash tables (aka associative arrays)
  • hash functions
  • collision resolution
  • chaining
  • open addressing
  • trees
  • binary trees
  • n-ary trees
  • operations
  • search
  • insert
  • delete
  • traversals
  • breadth-first
  • depth-first
  • inorder
  • preorder
  • postorder
  • minimax
  • self-balancing trees
  • red-black trees
  • splay trees
  • AVL trees
  • 2-3 trees
  • B-trees
  • tries (aka prefix trees or radix trees)
  • graphs
  • representations
  • object references
  • adjacency matrix
  • adjacency list
  • adjacency map
  • types of graphs
  • weighted and unweighted
  • directed and undirected
  • directed acyclic
  • bipartite
  • graph algorithms
  • topological sort
  • minimum spanning trees
  • Kruskal’s algorithm
  • Prim’s algorithm
  • connected components
  • shortest path
  • Bellman-Ford algorithm
  • Dijkstra’s algorithm
  • Floyd-Warshall algorithm
  • network flow
  • Ford-Fulkerson algorithm
  • min-cost max-flow
  • bipartite matching
  • graph coloring
  • Eulerian and Hamiltonian circuits
  • disjoint sets (aka union-find structures)
Algorithms
  • asymptotic analysis
  • notation: O, Ω, Θ
  • time complexity
  • space complexity
  • sorting
  • bubble sort
  • selection sort
  • insertion sort
  • heap sort
  • quick sort
  • merge sort
  • bucket sort
  • radix sort
  • Shell sort
  • Timsort
  • divide-and-conquer recursion
  • recurrence relations
  • substitution method
  • recursion tree method
  • master theorem
  • string matching
  • greedy algorithms
  • dynamic programming
  • memoization
  • NP-completeness
Automata Theory
  • regular expressions
  • finite-state automata
  • Turing machines
  • Chomsky’s hierarchy of languages
Hardware Architecture
  • logic gates
  • processor
  • ALSU: arithmetic, logic, shift unit
  • control unit
  • registers
  • cache
  • interrupts
  • volatile memory (RAM)
  • stack and heap allocation
  • virtual memory
  • persistent storage (hard disk)
  • spinning drives
  • solid state drives (SSD)
  • graphics cards
  • BIOS: basic input/output system
  • northbridge and southbridge chips
  • system-on-a-chip
Software Architecture
  • machine code and assembly
  • compiling and linking
  • libraries and frameworks
  • operating systems
  • concurrency
Programming Languages
  • programming paradigms
  • procedural/imperative
  • functional
  • declarative
  • object-oriented
  • multi-paradigm
  • program compilation
  • compiled
  • interpreted
  • JIT: just-in-time
  • type systems
  • static, dynamic
  • strong, weak, duck
  • data types
  • number bases (binary, hexadecimal)
  • integers (1’s and 2’s complement)
  • floating point (IEEE representations)
  • bit manipulation
  • pointers and arrays
  • characters and strings
  • classes and objects
  • virtual machines vs. bare hardware
  • comparison of common languages

3. Tech系:Computer Graphics(任意参加)

コンピュータ・シミュレーションによる図形描画やそのための数学基礎を学ぶ。

4. Non-tech系:Make School Speaker Series(任意参加)

Tech業界のゲストスピーカーによる講義。これまでにPixar Animation Studioのディレクター、IDEO初期メンバー・iMacデザイン責任者、Max Levchinが手掛けるHVFのディレクター、Google Health Strategyのディレクター、上記UNのVRイニシアティブ責任者などの話を聞く機会があった。

5. Non-tech系:Entrepreneurship(任意参加)

Make Schoolはスタートアップのエンジニアやファウンダーを育てる学校であるから、コーディングのみならず、コミュニケーションやアントレプレナーシップについて学ぶ機会も用意されている。日本人の自分にとっては英語の練習になるため有り難い。

  • Improv
    • こちらで流行っているImprovゲームによるコミュニケーションの授業。咄嗟の切り返しや発想力を鍛える。
  • Writing
  • Meditation
  • Issues in Tech and SF
    • 事前に与えられた課題記事をもとにディベートを実施
    • トピックは「AirbnbはResponsibilityを増やすべきか」「AIの開発は規制すべきか」など
  • Entrepreneurship
    • Y CombinatorのSam Altmanによるレクチャービデオの視聴
    • ビジネスモデルキャンパスを用いたビジネスモデルの作成・フィードバック

6. Non-tech系:Job hunting

リクルータへのコンタクトの仕方、メールの書き方、レジュメのフィードバックなど週に一度、トピックを変えて行うほか、3グループに分かれて現在のサマーインターン選考の状況をスタッフに共有する。

広告