日々精進

新しく学んだことを書き留めていきます

Computer ScienceとSoftware Engineeringの違い

・Computer Science
目標:未解決の問題を解決する方法を発見すること
必要な知識:情報工学の基礎理論、コンピュータの動作原理やプログラムの低レベルな動作、1つ〜2つの言語の詳細な仕様
作成するプログラムの規模:1k〜10k行程度


・Software Engineering
目標:効率よくソフトウェアを作ること
必要な知識:ソフトウェア構築プロセス、要件定義・設計、マネジメント、3つ以上の言語の大体の仕様
作成するプログラムの規模:100k〜10000k行程度


これらの分野は全く違うものだ。自分はComputer Science学科出身で、学生時代にはSimulated Annealing、隠れマルコフモデルベイズ推定、Threading、SOM等色んなアルゴリズムやそもそも情報って何?といった情報工学の基礎の勉強をしてきたがそれらの知識を仕事で使ったことはない。
情報系の学科でもSoftware Engineeringを教えているところって無いんじゃないだろうか。少なくとも自分は知らない。
企業が作る規模のソフトウェアを構築する際には必ずSoftware Engineeringが必要になるが、そのスキルを学ぶ機会が大学にないということは問題だと思う。


結論:
大学はSoftware Engineeringのコースを充実させるべき。
Computer Science出身の人は就職したらSoftware Engineeringを一から勉強しなければいけない。SIerで業務システムを作る場合、今まで学んできたことの多くが役に立たないということを覚悟しておくべき。