私は長年にわたって多くのプログラミングを行ってきました。Linux の make/open ソース コードで C/C++ を使用しています。Python を使用してアルゴリズムのプロトタイプを作成します。私は C#/Visual C++ MFC を使用して、Windows でおもちゃのプログラムを作成しています。そして、これらのコードはバージョン管理システムの下に保管されます。しかし、ソフトウェア エンジニアリングの面接の質問を見直した後、私はまだ CS の基礎知識を持っていないことに気付きました。私のプログラミングのほとんどは、注意深い設計のない「ブラインド」です。私の質問は、SE が知っておくべき基本的な CS の知識は何ですか?
1) データ構造とアルゴリズム
2) 離散数学
他に勉強すべきことはありますか?