専攻転換で補うべき専門科目
最近、CS への専攻転換やインターン探しについて相談してくる学生がいました。彼らの学部の専攻はたいてい数学/統計学/EE で、大学院で CS に転向し、できれば CS の学位(MSCS、MCS など)を取りたいと考えています。
この記事では、MSCS プログラムに出願するという観点から、どの前提科目を履修すべきかを説明します(UIUC の学部カリキュラムを例にします)。
プログラミング言語
ご存じのとおり、CS の学生は誰でも C++、C、Java など、機械が実行できるプログラミング言語を少なくとも1つは学びます。CS に転向するなら、まず C++/Java の授業から始めるとよいでしょう。 Java の授業:CS 125 - Intro to Computer Science
CS のコア科目
CS 学科には、データベース、コンピュータネットワーク、オペレーティングシステム、コンピュータアーキテクチャ、データ構造、並列計算、ソフトウェア工学、機械学習など、多くの科目があります。以下では、出願の観点からどの科目が必須で最も役に立つかを説明します。
一言でまとめると:データベース+コンピュータネットワーク+オペレーティングシステム+データ構造/アルゴリズム
データ構造:CS 225 - Data Structures(修了後には、LeetCode を楽に解けるようになっているはずです) データベース:CS 411 - Database Systems(修了後には、MySQL を使いこなし、MySQL のインデックスなどの概念を理解しているか、ゼロからデータベースを構築できるようになっているはずです) コンピュータネットワーク:CS 438 - Communication Networks(修了後には、ブラウザで URL を開いたときに裏側で何が起きているかを理解しているはずです) オペレーティングシステム:CS 423 - Operating Systems Design(修了後には、プロセスとスレッドの違いを理解し、C++ のメモリ関連のバグを手際よくデバッグできるようになっているはずです)
余裕があれば:(以下は任意です。時間があれば履修し、なければ飛ばしてください) コンピュータアーキテクチャ:CS 233 - Computer Architecture(修了後には、コンピュータの CPU と他の構成要素がどのように連携しているかを理解しているはずです) ソフトウェア工学:CS 427 - Software Engineering I(本番環境レベルの実際のプロジェクトを構築します) コンパイラ:CS 426 - Compiler Construction(簡単なコンパイラを構築します) CS 425 - Distributed Systems(分散型の key-value store を実装します)