Issei Suzuki:プログラミングは、分野(OS、ゲーム、機械学習)や言語(Python, Rust, Java,
etc...)毎に固有の知識と、共通して必要とされる基礎知識があります。
プログラミング入門的な書籍・サイトや、プログラミング言語開発元が公開しているチュートリアルなどを使って必要最低限の知識を身につけたら、AIなどの自身が興味がある分野の勉強と並行して情報工学の基礎も押さえておくと良いと思います。特に次の4科目は、学習にかかる時間と将来の利益を比較すると費用対効果が高いです。
* ハードウェアアーキテクチャ
* アルゴリズムとデータ構造
* コンパイラ理論
* ネットワーク理論
プログラミング言語やホットな開発分野は比較的速いスピードで移り変わっていきますが、これらの基礎知識は古くなりません。また新しいプログラミング言語やライブラリの使い方などを学ぶ際にも、基礎知識があれば短時間で深く理解することが可能になります。
推薦図書
ハードウェアアーキテクチャについては、「コンピュータの構成と設計」 David Patterson, John Hennessy,
成田光彰(訳)(日経BP)という名著があります。
アルゴリズムとデータ構造は、私は大学の授業と「定本 Cプログラマのためのアルゴリズムとデータ構造」という書籍を使って学びましたが、今だと C
言語を使うことは少ないので、別のものを探したほうが良います。アルゴリズムとデータ構造自体はプログラミング言語とは独立したものですが、本当に理解するためには自分で手を動かして実装する必要があるため、自分が知っているプログラミング言語でサンプルコードがあるものが良いと思います。
コンパイラ理論は、本格的なプログラミング言語を自分で作れるようになる必要はありませんが、文字列処理に使う正規表現や、もう少し複雑な変数・ループ・関数呼び出しの実現方法ぐらいを理解しておくと良いと思います。自分でプログラムを書く際にも「コンピュータは、自分が書いたコードを最終的にどう解釈して実行するのか」を理解できるようになり、極端に非効率なコードを書くことがなくなります。
ネットワークは、現在のインターネットで使われているTCP/IPの基礎をおさえれば十分です。「マスタリングTCP/IP―入門編―」井上 直也, 村山 公保
他(オーム社)などが代表的な入門書でしょうか。