コンピューターサイエンスの基礎

# この記事の概要
下の資料のUdemyとYoutubeチャンネルのアウトプット記事です。
具体的な内容はUdemyでご確認してください。

# この記事の対象
コンピューターサイエンスに興味がある方で入門としてご活用ください。

# 有益動画
良かったらこちらの動画も見てみてください。

https://www.youtube.com/watch?v=giXls-qoPVw


# コンピューターサイエンスとは
情報や計算の論理的基礎のことです。
これらののコンピューター上への適用し、コンピューター全般を扱う学問分野です。
世間でよく知られているプログラミングはその中の一分野に過ぎないんですね。

#### フローチャート

https://www.youtube.com/watch?v=O47JA1ESFtM

こちらに説明があるので見てみてください。


####  ２進数と10進数

⚫︎資料
https://suwaru.tokyo/%E3%80%90%E4%B8%80%E8%A6%A7%E8%A1%A8%E3%81%82%E3%82%8A%E3%80%91%E5%8D%81%E9%80%B2%E6%95%B0%E3%81%8B%E3%82%89%E4%BA%8C%E9%80%B2%E6%95%B0%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B%E6%96%B9%E6%B3%95%E3%80%9010/

この記事を参考にしてみてください。

### コンピューターサイエンスの論理
こちらのYoutubeチャンネルを見てみてください。

https://www.youtube.com/watch?v=JfG-dqixmsQ&list=PLcd5jOpoEDGBY5vgF8o2BRs4mNcmLg0F4&index=6




# 計算量
紹介しているUdemyを見ていただけると具体的に載っています。

### メモリとcpu
```メモリ```は```RAM```のことで命令や操作対象を格納し、
多くのメモリセルで構成され、それぞれのセルには８桁の２進数(バイト)が格納されています。

```cpu```はメモリからデータを取得し、計算をします。

### cpuとメモリの接族
```バス(bus)```というものがあります。
```アドレスバス```：アドレスの伝達、単方向
```データバス```:データの伝達、双方向
```制御バス```:読み出し/書き込みの切り替えなど、双方向

### cpuクロック
⚫︎```クロック(clock)```
cpuの1秒あたりの実行サイクル

⚫︎```コア(core)```
スレッド(ひとまとまりの命令)を処理する単位

# データの制御
⚫︎抽象データ型
ADT(Abstract Data type)のことでメモリに対する直接的な操作は隠蔽され、
メモリ上のデータを簡単に操作が可能です。

⚫︎データ構造
メモリ上のデータの構成と扱われ方

#### 抽象データ型
⚫︎```基本データ型```
整数型、文字列型などです。

⚫︎```キュー(queue)```
並んだデータの末尾に新たなデータを加え、先頭からデータを取り出す

⚫︎```スタック```
並んだデータの末尾に新たなデータを加え、末尾からデータを取り出す

⚫︎```優先度付きキュー、リスト、辞書、集合 etc..```

⚫︎```グラフ(graph)```
ノードと、ノードとの連結関係を表すエッジで構成され、データ間の関係を表す。
エージに向きがある有向グラフと向きがない無向グラフです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/86f96816-7ad8-0351-b982-d35a6ee55e21.png)

> 引用　https://japan.cnet.com/article/20366534/

他に```配列```、```連結リスト、```双方向連結リスト```、```木構造```があります。

Youtubeで画像などは確認してみてください。

https://www.youtube.com/watch?v=9pV0zsnLt5c&list=PLcd5jOpoEDGBY5vgF8o2BRs4mNcmLg0F4&index=10

# アルゴリズム
```アルゴリズム```は作業をする際の手順の集合体で、プログラムを実装する際は、
曖昧さが排除され、記録に残る最古のアルゴリズムは原論のものです。

### 再起(recursion)
関数が、関数内部でその関数を呼び出す仕組みです。

### フィボナッチ数列
２つの整数の和が次の数になります。

```
    0,1,1,2,4,6,10,16,26
```

### ソートと探索
⚫︎ ```ソート```
データを昇順、降順に並びかえるアルゴリズム
⚫︎ ```探索```
メモリから特定の情報を取り出すこと
⚫︎ ```選択ソート```
並んだ複数の要素から最小値(最大値)を探し、
最初(最後)の要素と入れ替えをする。
⚫︎```バブルソート```
隣同士の要素の大きさを比較しながら整列させる。
⚫︎```マージソート```
データを分割し、それぞれをソートして結合します。
⚫︎```クイックソート```
ピポットと呼ばれる要素を使いデータの分割を繰り返す
⚫︎```線形探索```
データの先頭から終盤に向かって、目的の要素を探し出すアルゴリズム
⚫︎```二分探索```
探索の間隔を半分に分割しながら、目安の要素を探し出すアルゴリズムで、
対象はソート済みである必要がある。


# データベース
都合によりこちらのYoutubeをご覧ください。

https://www.youtube.com/watch?v=uf0HbES7xbA&list=PLcd5jOpoEDGBY5vgF8o2BRs4mNcmLg0F4&index=14

# プログラミング
都合によりこちらのYoutubeをご覧ください。

https://www.youtube.com/watch?v=Fjv1RucjV34&list=PLcd5jOpoEDGBY5vgF8o2BRs4mNcmLg0F4&index=17


# 人工知能
### 人工知能 機械学習 ディープラーニング
下の図のように人工知能の中に機械学習があり、機械学習の中にディープラーニングがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/5fc72d2d-7947-e69c-331a-40bb5380eb43.png)

> 引用　  https://markezine.jp/article/detail/29471

```人工知能```とは自ら考える力があるプログラムです。
中にはドラえもんの、ような強いAIと画像認識のような限定的な問題解決をする弱いAIもあります。
弱いAIだと画像認識や音声会話、文章認識などもあります。

### 人工知能の種類
⚫︎機械学習
⚫︎遺伝的アルゴリズム
⚫︎群機能

### 機械学習とは
人工知能の一分野で、コンピュータープログラムが学習、経験などをします。


### ニュートラルネットワーク
機械学習の一分野で、人間の神経ネットワークを模倣し、ディープラーニングのベースになっています。
```ディープラーニング```が多層で構成される***ニュートラルネットワークを用いた学習***です。

# コンピューターの中の宇宙
```セールオートマン```という格子状のセルと単純な規則によるモデルです。

### ライフゲーム
２次元のセルオートマンの一種です。時間とともに変化する複雑なパターンが描かれます。





# 参考資料

https://www.udemy.com/course/min-computer-science/


https://www.youtube.com/c/SAILab/playlists