コンピューターサイエンス科学の堅牢な理解を構築するために設計された包括的なガイドであるコンピューターサイエンスの栄養road-mapを探索してください。プログラミングの基礎から、データ構造やオペレーティングシステムなどの高度な概念まで、このロードマップは、推奨されるビデオリソース、実践的なエクササイズ、刺激的なプロジェクトを備えた構造化された学習パスを提供します。初心者や知識を深めることを目指している人に最適なこのリポジトリは、コンピューターサイエンスや関連分野の専門家を目指すための非常に貴重なリソースとして機能します。
このロードマップを作成している間、私の主な焦点は、より簡単な学習パスを促進するための主要な学習リソースとしてのYouTubeビデオにありました。ただし、学習者はこれらのリソースだけに限定されていないことに注意することが不可欠です。コンピューターサイエンスは広範な分野であり、このロードマップでは、その幅をカプセル化しようとしました。だから、飛び込んで学習の旅を楽しんでください!?
初心者向けのPython -1時間でPythonを学びます
Pythonを学ぶ - 初心者向けのフルコース[チュートリアル]
初心者Pythonプログラミングオールインワンチュートリアルシリーズ(6時間!)
実践
Hello World: 「Hello、World!」を印刷するプログラムを書くコンソールへ
2つの数字を追加します:ユーザーが入力した2つの数字を追加して結果を表示するプログラムを作成します
長方形の面積:ユーザーが提供する長さと幅に基づいて長方形の面積を計算して表示するプログラムを作成します。
摂氏から華氏:摂氏の温度を華氏に変換するプログラムを作成します。プログラムは、ユーザーからの入力として摂氏の温度を受け取り、変換を実行し、2つの小数点で結果を表示する必要があります。
2つの数字を交換します。3番目の変数を使用せずに2つの番号を交換するプログラムを作成します。ユーザーは2つの数値を入力するように求められ、プログラムは値を交換し、元の値が交換され、数字が効果的に逆転するようにします。
影付き領域:刻まれた円の正方形の日陰の領域の領域を計算します。刻まれた円の半径(r)を考えると、正方形の面積が円の面積を引いたところを見つけます。結果を提示して、日陰の領域の領域を正確に表すための2つの小数点以下の場所を提示します
登録ユーザー情報:名、姓、年齢、性別、学生のステータス、メートルの身長、キログラムの重量など、ユーザー情報を収集および登録するプログラムを開発します。
有効な三角形:指定された長さa、b、cを持つ3つのスティックを使用して有効な三角形を形成できるかどうかを決定するプログラムを作成します。プログラムは、スティックの長さをユーザーからの入力として取得し、2つのスティックの長さの合計が3番目のスティックの長さよりも大きくなければならない場合、スティックの不平等を満たしているかどうかを確認する必要があります。条件が満たされている場合は「三角形を形成できる」、またはそうでない場合は「三角形を形成できない」として結果を表示します。
グレード分類:ユーザーからの入力として数値グレードを受け取るプログラム(0〜100範囲内)を開発し、グレードを事前定義されたレターグレードカテゴリに分類します。このプログラムは、IF-ELSEステートメントを使用して、典型的なグレーディング範囲に基づいて適切な文字グレードを決定する必要があります(例:90〜100のグレードの「A」、80〜89のグレードの場合は「B」など)。分類後、計算された文字グレードをユーザーに表示します。
アスタリスクを連続して表示:入力として整数値を取得するプログラムを作成し、アスタリスク(*)文字を1列にw回表示します。プログラムは、Wの値を使用して、連続して連続して表示するアスタリスクの数を決定する必要があります。 wが0 <w <80の範囲内にあることを確認してください。ユーザーがW = 5に入力すると、プログラムが表示されます: ****
ASTERISKSを長方形に表示する: w列とh行を持つ長方形形式でアスタリスク(*)文字の配置を入力して表示する2つの整数値wとhを取得するプログラムを開発します。プログラムは、wとhの値を使用して、長方形の寸法を決定し、それに応じてアスタリスクで埋める必要があります。 wが0 <w <80の範囲内で、hが0 <h <24の範囲内であることを確認します。
ユーザーがw = 4とh = 3を入力すると、プログラムは以下を表示します。
****
****
****
右側の三角形パターン:特定の高さ(h)で右角三角形のパターンを表示するプログラムを作成します。
ユーザーがh = 4に入力すると、プログラムが表示されます。
*
**
***
****
右側の三角形パターン(反転):特定の高さ(h)で倒立した右角三角形パターンを表示するプログラムを開発します。
ユーザーがh = 4に入力すると、プログラムが表示されます。
****
***
**
*
ピラミッドパターン:特定の高さでピラミッドパターンを表示するプログラムを作成します(H)。
ユーザーがh = 4に入力すると、プログラムが表示されます。
*
***
*****
*******
中空の三角形のパターン:このように、特定の高さ(h)で中空の三角形パターンを印刷するプログラムを開発します。
ユーザーがh = 5に入力すると、プログラムが表示されます。
*
**
* *
* *
*****
数字の三角形パターン:特定の高さ(h)で数字の三角形パターンを作成するプログラムを作成します。
ユーザーがh = 4に入力すると、プログラムが表示されます。
1
12
123
1234
Pascal's Triangle: Pascalの三角形の最初の「H」行、数学的パターンを生成して表示するプログラムを作成します。
ユーザーがh = 4に入力すると、プログラムが表示されます。
1
1 1
1 2 1
1 3 3 1
フロイドの三角形: 「H」行でフロイドの三角形を印刷するプログラムを開発します。各行には連続した番号が含まれています。
ユーザーがh = 4に入力すると、プログラムが表示されます。
1
2 3
4 5 6
7 8 9 10
ダイヤモンドパターン:特定の高さ(h)でアスタリスク(*)を使用してダイヤモンドパターンを表示するプログラムを作成します。
ユーザーがh = 3に入力すると、プログラムが表示されます。
*
***
*****
***
*
砂時計パターン:特定の高さ(h)で砂時計パターンを印刷するプログラムを作成します。
ユーザーがh = 3に入力すると、プログラムが表示されます。
*****
***
*
*
***
*****
FizzBuzz:一連の数字(通常1からn)を繰り返して、各数値の次のアクションを実行するプログラムを作成します。
平日を見つける: 「DD/mm/yyyy」形式で特定の日付の平日を決定するプログラムを開発します。プログラムは、日、月、年を含む入力として日付を取得し、対応する平日を計算する必要があります。それはelep年を説明し、提供された日付の平日(例:「月曜日」、「火曜日」)の名前を提供する必要があります。
ユーザーが次のように日付を入力するとします:15/11/2023。
このプログラムは、2023年11月15日は水曜日であり、次の結果を提供する必要があります。
The weekday for 15/11/2023 is Wednesday.
計算関数:基本的な算術演算(追加、減算、乗算、および分割)を実行する簡単な計算機プログラムを構築します。操作ごとに個別の関数を作成してコードを整理します(例:追加、減算、乗算、分割)。これらの関数を呼び出して、ユーザー入力に基づいて計算を実行します。
To Doリスト機能:ユーザーがタスクを追加、表示、マークを付けることができるTo Doリストアプリケーションを作成します。タスクを追加する機能を実装し、リストを表示し、タスクをマークします。関数を利用して、コードを整理し、簡単に拡張可能にします。
配列内の最大数:整数の配列に最大数を見つけて表示するプログラムを作成します。アルゴリズムを実装して、配列を繰り返し、見つかった最大値を追跡します。
文字列反転:文字列を入力として取得し、文字列内の文字を逆にするプログラムを作成します。アルゴリズムを開発して、文字を逆に並べ替えて、逆の文字列を生成します。
ソートデータ:ソートアルゴリズムを実装して、整数のリストを昇順で配置します。特定のデータに上昇するソートを適用し、ソートされた結果を表示するプログラムを開発します。
配列内の最小数を見つける:整数の配列に最小数を見つけて表示するプログラムを作成します。
String Palindrome Checker :特定の文字列がPalindromeであるかどうかをチェックするプログラムを作成します(同じ前方と後方を読み取ります)。両端から文字列の文字を比較するアルゴリズムを開発して、それがパリンドロームかどうかを判断します。
配列での発生のカウント:アレイ内の特定の要素の発生をカウントするプログラムを開発します。配列を介して反復し、要素が何回表示されるかを追跡するアルゴリズムを実装します。
配列の平均(平均)を見つける:数値の配列の平均(平均)を計算および表示するプログラムを作成します。アルゴリズムを開発して、配列内の要素を要約し、平均を見つけるために要素の数で除算します。
配列内の要素の検索:配列内の特定の要素を検索し、見つかった場合にインデックスを返すプログラムを作成します。アレイを介して反復するアルゴリズムを実装して、目的の要素を見つけます。
文字列で単語をカウントする:特定の文字列に単語の数を数えるプログラムを書きます。単語の境界を識別し、文字列内の単語をカウントするアルゴリズムを開発します。
因子計算:特定の整数の因子を計算するプログラムを実装します(例:5!= 5 * 4 * 3 * 2 * 1)。アルゴリズムを開発して、要因計算を実行します。
平方根:指定されたレベルの精度「P」で正の数値「n」の平方根を計算する関数を開発します。この関数は、バイナリ検索方法を使用して、平方根を「P」小数の場所に近似する必要があります。
最小数を見つけます。リンク:https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number/problem
推測ゲーム:ユーザーがランダムに生成された数値を推測する必要がある推測ゲームを作成します。
指定された番号がプライムかどうかをチェックするプログラムをプライムまたは実装しないでください。
同じサイズの2つのマトリックスを追加します。同じサイズの2つのマトリックスを追加するプログラムを作成します。ユーザーは、マトリックスの寸法(行と列)を入力し、両方のマトリックスの各要素の値を提供する必要があります。プログラムは、マトリックスが追加のために同じ寸法を持ち、結果のマトリックスを表示することを検証する必要があります。
2つのマトリックスを掛ける: 2つのマトリックスを掛けるプログラムを作成します。ユーザーは、両方のマトリックスの寸法(行と列)を入力し、両方のマトリックスの各要素の値を提供する必要があります。プログラムは、マトリックスに乗算の互換性のある寸法があり、結果のマトリックスを表示することを検証する必要があります。
プロジェクト
学童のためのインタラクティブな算術学習ゲームを構築します
コンソールベースのヘビゲーム
データ構造とアルゴリズムをどのように勉強しているか(独学として)
初心者向けに説明されたアルゴリズム - 私が教えられたい方法
データ構造と15分でのアルゴリズム
データ構造は簡単になりやすいコース - Googleエンジニアからの完全なチュートリアル
実践:
Input:
nums = [8, 7, 2, 5, 3, 1]
target = 10
Output:
Pair found (8, 2)
or
Pair found (7, 3)
Input:
nums = [5, 2, 6, 8, 1, 9]
target = 12
Output: Pair not found

プロジェクト:
HashTableというクラスを設計および実装します。insert ):キー価値ペアをハッシュテーブルに挿入する方法を実装します。キーが既に存在する場合は、対応する値を更新します。get ):特定のキーに関連付けられた値を取得する方法を実装します。キーが見つからない場合は、欠席を示す指定値を返します(例: Noneまたはnull )。delete ):提供されたキーに基づいて、ハッシュテーブルからキー値ペアを削除するメソッドを実装します。Linuxとは何ですか?
Linuxとは何ですか? - Linuxは説明しました
Linuxディレクトリは100秒で説明しました
実践:
すべてのLinuxユーザーが知っておくべきトップ20コマンド
初心者向けの10 Linuxターミナルコマンド
Linux ubuntuの基本端末コマンド(初心者向けのUbuntuチュートリアル)
実践:
mkdirコマンドを使用して、デスクトップに「Foo」という名前のディレクトリを作成します。 cd使用して「foo」ディレクトリに移動し、 mkdirを使用して「bar」という名前のサブディレクトリを作成します。 mvを使用して、 'bar'ディレクトリ内の 'pwd.txt'に 'path.txt'ファイルを変更します。 mkdirを使用して「TMP」という名前のサブディレクトリを作成します。 touchコマンドを使用して、「file1.c」、 'file2.cpp'、および 'file3.py'という名前の3つのファイルを作成します。 cpを使用して、すべてのファイルを「TMP」ディレクトリから「Bar」ディレクトリにコピーします。 rmコマンドを使用して、すべてのコンテンツを持つ「TMP」ディレクトリを削除します。 lsコマンドを使用して、「bar」ディレクトリにすべてのファイル(非表示のファイルを含む)をリストします。 >オペレーターを使用して、「Report.txt」という名前の新しいファイルに出力をリダイレクトします。 rオプションでgrepコマンドを使用して、ホームディレクトリから「foo」または「bar」を含むすべての行を検索します。 wgetコマンドを使用して、指定されたURL(https://raw.githubusercontent.com/dwyl/english-words/master/words.txt)からファイルをダウンロードします。 grepを使用して、最近ダウンロードしたファイル(Words.txt)から「John」という単語を検索します。 「ジョン」を含む線と連続した行番号を表示します。 100秒でバッシュ
シェルスクリプトクラッシュコース - 初心者レベル
プロジェクト:
Progress Echoを使用してコマンド履歴からスクリプトを生成します。
history.txt (以前の実践タスクの結果)のコマンドのシーケンスをシェルスクリプト( script.sh )に変換して、進行状況を表示するために追加されたechoステートメントを示します。history.txt (以前の練習タスクの結果)ファイルを開き、コマンドを慎重に確認します。script.shという名前の新しいファイルを作成します。history.txtからコマンドをscript.shにコピーして貼り付けます。echoステートメントを追加して、視覚的な進行指示を提供します。echoステートメントを備えたscript.shの例のテンプレートを次に示します。 #! /bin/bash
# Displaying current progress
echo " Creating 'foo' directory on Desktop... "
mkdir ~ /Desktop/foo
# Displaying current progress
echo " Creating 'bar' directory inside 'foo'... "
cd ~ /Desktop/foo
mkdir bar
# Displaying current progress
echo " Creating 'path.txt' and inserting absolute path... "
echo " $( cd ~ /Desktop/foo/bar && pwd ) " > path.txt
# (Repeat for each command)
# Displaying final progress
echo " Script execution completed! "script.shファイルをデスクトップフォルダーに保存します。script.shを含むディレクトリに移動します。chmod +x script.shを使用してスクリプトを実行可能にします。./script.shでスクリプトを実行します。echoステートメントは、各コマンドの実行の進行状況を視覚化するのに役立ちます。 画面のスクリーンショットをキャプチャします
# User input for time interval
Enter the time interval for taking screenshots (in seconds): 60
# Script output during execution
Creating folder: screenshot data
Creating folder: 2022-03-28
Capturing screenshot: Screen Shot 2022-03-28 at 17.48.06.jpg
Capturing screenshot: Screen Shot 2022-03-28 at 17.49.06.jpg
...screenshot.shとして保存します。chmod +x screenshot.shを使用して実行可能にします。./screenshot.shでスクリプトを実行します。 初心者向けのGit&Githubクラッシュコース
初心者向けのGitおよびGithubチュートリアル
初心者向けのGitチュートリアル:コマンドラインの基礎
初心者向けのGitとGithub-クラッシュコース
プロジェクト:
gitのインストール:コンピューターにgitをインストールします。
gitの構成: gitユーザー名と電子メールをセットアップします。
ローカルリポジトリを作成します:
git init変更を加えてコミットします:ステージング領域にファイルを追加し、リポジトリに変更をコミットします。
git add .
git commit -m " Initial commit "リポジトリステータスを表示:リポジトリのステータスを確認します。
git status readme.mdを作成:プロジェクトのREADME.mdファイルを作成します。
readme.mdで自分自身について書く:あなた自身について書いてください
readme.mdを飾る:フォーマット、ヘッダー、箇条書き、または読みやすさを改善するその他の要素を追加することにより、 README.mdファイルの美学を強化します。
変更のコミット: gitを使用してステージを上げ、 README.mdファイルに変更された変更をコミットします。
意味のあるコミットメッセージを書く:コミットの目的を要約する説明的で意味のあるコミットメッセージを提供します。
コミット履歴を表示:リポジトリのコミット履歴を表示します。
git loggithubアカウントを作成します:
GitHubでリモートリポジトリを作成します。
ローカルリポジトリをgithubに接続します。
git remote add origin < repository_url >
git branch -M main
git push -u origin mainリポジトリのクローン:
git clone < repository_url >ブランチを作成する:
git branch < branch_name >
git checkout < branch_name >ブランチ間の切り替え:
git checkout < branch_name >ブランチのマージ:
git checkout < target_branch >
git merge < source_branch >競合を解決する:
リモートからの変更を引く:
git pull origin main変更をリモートに押します:
git push origin < branch_name >プルリクエストを作成して適用します:
フォークリポジトリ:
クローンとフォークリポジトリに寄与する:
git clone < forked_repository_url >
# Make changes
git add .
git commit -m " Description of changes "
git push origin < branch_name >リクエストのレビューとマージ:
コンピューターサイエンスファンデーションロードマップ©2023 by SaidAmir BotirovはCC BY-SA 4.0でライセンスされています