Explore o Computer-Science-Foundation-Roadmap, um guia abrangente projetado para criar uma compreensão robusta da ciência da computação. Desde fundamentos de programação a conceitos avançados, como estruturas de dados e sistemas operacionais, este roteiro oferece um caminho de aprendizado estruturado com recursos de vídeo recomendados, exercícios práticos e projetos inspiradores. Perfeito para iniciantes e para quem pretende aprofundar seus conhecimentos, esse repositório serve como um recurso inestimável para os aspirantes a profissionais em ciência da computação e campos relacionados.
Ao criar esse roteiro, meu foco principal estava nos vídeos do YouTube como os principais recursos de aprendizado para facilitar um caminho de aprendizado mais fácil. No entanto, é essencial observar que os alunos não estão confinados apenas a esses recursos. A ciência da computação é um campo extenso e, neste roteiro, tentei encapsular sua amplitude. Então, mergulhe e aproveite a jornada de aprendizado!?
Python para iniciantes - Aprenda Python em 1 hora
Aprenda Python - Curso completo para iniciantes [tutorial]
PROGRAMAÇÃO DE PITHON Python para iniciantes séries de tutoriais all-in-one (6 horas!)
Práticas
Hello World: Escreva um programa que imprima "Hello, World!" para o console
Adicione dois números: crie um programa que adiciona dois números inseridos pelo usuário e exibe o resultado
Área de um retângulo: Crie um programa que calcule e exiba a área de um retângulo com base no comprimento e largura fornecidos pelo usuário.
Celsius para Fahrenheit: Crie um programa que converte uma temperatura em Celsius em Fahrenheit. O programa deve receber a temperatura em Celsius como entrada do usuário, executar a conversão e exibir o resultado com dois locais decimais.
Troque dois números: Crie um programa que troca dois números sem usar uma terceira variável. O usuário é solicitado a inserir dois números e o programa deve trocar seus valores, garantindo que os valores originais sejam trocados e os números sejam efetivamente revertidos.
Região sombreada: calcule a área da região sombreada em um quadrado com um círculo inscrito. Dado o raio (r) do círculo inscrito, encontre a área do quadrado menos a área do círculo. Apresente o resultado com dois lugares decimais para representar com precisão a área da região sombreada 
Registre as informações do usuário: desenvolva um programa que coleta e registre informações do usuário, incluindo seu primeiro nome, sobrenome, idade, sexo, status do aluno, altura em metros e peso em quilogramas.
Triângulo válido: Crie um programa que determine se é possível formar um triângulo válido usando três palitos com dados comprimentos a, b e c. O programa deve tomar os comprimentos dos paus como entrada do usuário e verificar se eles satisfazem a desigualdade do triângulo, onde a soma dos comprimentos de dois palitos deve ser maior que o comprimento do terceiro bastão. Exiba o resultado como "o triângulo pode ser formado" se a condição for atendida ou "o triângulo não puder ser formado" se não for.
Classificação de notas: Desenvolva um programa que receba uma nota numérica como entrada do usuário (dentro de um intervalo de 0 a 100) e classifica a nota em uma categoria de grau de letra predefinida. O programa deve usar as instruções IF-ELSE para determinar a nota de letra apropriada com base em faixas de classificação típicas (por exemplo, "A" para notas entre 90-100, "B" para notas entre 80-89 e assim por diante). Após a classificação, exiba a nota de letra calculada para o usuário.
Exiba asteriscos em uma linha: Crie um programa que tome um valor inteiro, W, como entrada e exibe um caractere de asterisco (*) W vezes em uma única linha. O programa deve usar o valor de W para determinar quantos asteriscos exibem consecutivamente em uma linha. Verifique se W está dentro do intervalo de 0 <w <80. Se o usuário entrar w = 5, o programa será exibido: ****
Exiba asteriscos em um retângulo: desenvolva um programa que leva dois valores inteiros, W e H, como entrada e exibe um arranjo de caracteres de asterisco (*) em um formato de retângulo com colunas w e linhas H. O programa deve usar os valores de W e H para determinar as dimensões do retângulo e preenchê -lo com asteriscos de acordo. Verifique se W está dentro do intervalo de 0 <W <80 e H está dentro da faixa de 0 <h <24.
Se o usuário entrar w = 4 e h = 3, o programa será exibido:
****
****
****
Padrão do triângulo em ângulo reto: Crie um programa que exibe um padrão de triângulo em ângulo direito com uma dada altura (h).
Se o usuário entrar em H = 4, o programa exibirá:
*
**
***
****
Padrão de triângulo em ângulo direito (invertido): Desenvolva um programa para exibir um padrão de triângulo de ângulo direito invertido com uma dada altura (h).
Se o usuário entrar em H = 4, o programa exibirá:
****
***
**
*
Padrão de pirâmide: Crie um programa que exibe um padrão de pirâmide com uma dada altura (h).
Se o usuário entrar em H = 4, o programa exibirá:
*
***
*****
*******
Padrão do triângulo oco: desenvolva um programa para imprimir um padrão de triângulo oco com uma dada altura (h), como este:
Se o usuário entrar em H = 5, o programa exibirá:
*
**
* *
* *
*****
Número Triângulo Padrão: Escreva um programa que cria um padrão de triângulo numérico com uma dada altura (h), por exemplo:
Se o usuário entrar em H = 4, o programa exibirá:
1
12
123
1234
Triângulo de Pascal: Crie um programa para gerar e exibir as primeiras linhas 'H' do Triângulo de Pascal, um padrão matemático:
Se o usuário entrar em H = 4, o programa exibirá:
1
1 1
1 2 1
1 3 3 1
Triângulo de Floyd: Desenvolva um programa para imprimir o Triângulo de Floyd com linhas 'H', onde cada linha contém números consecutivos:
Se o usuário entrar em H = 4, o programa exibirá:
1
2 3
4 5 6
7 8 9 10
Padrão de diamante: crie um programa que exibe um padrão de diamante usando asteriscos (*) com uma dada altura (h), como este:
Se o usuário entrar em H = 3, o programa exibirá:
*
***
*****
***
*
Padrão de ampulheta: escreva um programa que imprime um padrão de ampulheta com uma dada altura (h), por exemplo:
Se o usuário entrar em H = 3, o programa exibirá:
*****
***
*
*
***
*****
FizzBuzz: escreva um programa que itera através de uma sequência de números (geralmente de 1 a N) e executa as seguintes ações para cada número:
Encontre o dia da semana: desenvolva um programa que determine o dia da semana de uma determinada data no formato "dd/mm/yyyy". O programa deve tomar uma data como entrada, incluindo o dia, o mês e o ano e calcular o dia da semana correspondente. Ele deve explicar anos bissextos e fornecer o nome do dia da semana (por exemplo, "segunda -feira", "terça -feira") para a data fornecida.
Suponha que o usuário insira a data da seguinte forma: 15/11/2023.
O programa deve calcular que 15 de novembro de 2023 é uma quarta -feira e fornecer o resultado como:
The weekday for 15/11/2023 is Wednesday.
Funções da calculadora : Crie um programa de calculadora simples que execute operações aritméticas básicas (adição, subtração, multiplicação e divisão). Organize o código criando funções separadas para cada operação (por exemplo, adicione, subtrair, multiplicar, dividir). Ligue para essas funções para executar cálculos com base na entrada do usuário.
Funções da lista de tarefas : Crie um aplicativo de lista de tarefas que permita aos usuários adicionar, visualizar e marcar as tarefas conforme concluído. Implementar funções para adicionar tarefas, exibir a lista e marcar tarefas como feito. Utilize funções para manter o código organizado e facilmente extensível.
Número máximo em uma matriz : escreva um programa que encontre e exibe o número máximo em uma matriz de números inteiros. Implementar um algoritmo para iterar através da matriz e acompanhar o valor máximo encontrado.
String Reversal : Crie um programa que pegue uma string como entrada e reverte os caracteres na string. Desenvolva um algoritmo para reorganizar os caracteres em ordem inversa, produzindo a string invertida.
Classificação de dados : implemente um algoritmo de classificação para organizar uma lista de números inteiros em ordem crescente. Desenvolva um programa que aplique a classificação ascendente aos dados fornecidos e exibe o resultado classificado.
Encontrando o número mínimo em uma matriz : escreva um programa que encontre e exibe o número mínimo em uma matriz de números inteiros.
Verificador de String Palindroma : Crie um programa que verifique se uma determinada string é um palíndromo (lê os mesmos para frente e para trás). Desenvolva um algoritmo que compare os caracteres da string de ambas as extremidades para determinar se é um palíndromo.
Contando ocorrências em uma matriz : desenvolva um programa que conta as ocorrências de um elemento específico em uma matriz. Implementar um algoritmo que itera através da matriz e acompanha quantas vezes o elemento aparece.
Encontrando a média (média) de uma matriz: escreva um programa que calcule e exiba a média (média) de uma matriz de números. Desenvolva um algoritmo para resumir os elementos na matriz e dividir pelo número de elementos para encontrar a média.
Procurando um elemento em uma matriz: Crie um programa que procure um elemento específico em uma matriz e retorne seu índice, se encontrado. Implemente um algoritmo que itera através da matriz para localizar o elemento desejado.
Contando palavras em uma string : escreva um programa que conta o número de palavras em uma determinada string. Desenvolva um algoritmo que identifique os limites das palavras e conta as palavras na string.
Cálculo fatorial: Implemente um programa que calcula o fatorial de um determinado número inteiro (por exemplo, 5! = 5 * 4 * 3 * 2 * 1). Desenvolva um algoritmo para realizar o cálculo fatorial.
Raiz quadrada: desenvolva uma função que calcula a raiz quadrada de um número positivo 'n' com um nível especificado de precisão 'p'. A função deve usar o método de pesquisa binária para aproximar a raiz quadrada a locais decimais 'P'.
Encontre o número mínimo . Link: https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number/problem
Adivinhando o jogo: crie um jogo de adivinhação em que o usuário precisa adivinhar um número gerado aleatoriamente.
Prime ou não implemente um programa que verifique se um determinado número é primo ou não.
Adicione duas matrizes do mesmo tamanho: crie um programa que adiciona duas matrizes do mesmo tamanho. O usuário deve inserir as dimensões (linhas e colunas) das matrizes e, em seguida, fornecer os valores para cada elemento em ambas as matrizes. Seu programa deve validar que as matrizes têm as mesmas dimensões para adição e exibir a matriz resultante.
Multiplique duas matrizes: crie um programa que multiplique duas matrizes. O usuário deve inserir as dimensões (linhas e colunas) de ambas as matrizes e fornecer os valores para cada elemento em ambas as matrizes. Seu programa deve validar que as matrizes possuem dimensões compatíveis para multiplicação e exibir a matriz resultante.
Projetos
Construa um jogo de aprendizado aritmético interativo para crianças em idade escolar
Jogo de cobra baseado em console
Como estou estudando estruturas e algoritmos de dados (como auto -ensinado)
Algoritmos explicados para iniciantes - como eu gostaria de ter sido ensinado
Estruturas de dados e algoritmos em 15 minutos
Estruturas de dados Curso fácil de avançado - Tutorial completo de um engenheiro do Google
Práticas :
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

Projetos :
HashTable que suporta as seguintes operações básicas:insert ): implemente um método para inserir um par de valores-chave na tabela de hash. Se a chave já existir, atualize o valor correspondente.get ): implemente um método para recuperar o valor associado a uma determinada chave. Se a chave não for encontrada, retorne um valor designado indicando ausência (por exemplo, None ou null ).delete ): implemente um método para excluir um par de valores-chave da tabela de hash com base na chave fornecida.O que é Linux?
O que é Linux? - Linux explicou
Diretórios Linux explicados em 100 segundos
Práticas :
Os 20 principais comandos todo usuário do Linux deve saber
10 comandos do terminal Linux para iniciantes
Comandos básicos do terminal no Linux Ubuntu (tutorial do Ubuntu para iniciantes)
Práticas :
mkdir para criar um diretório chamado 'foo' na área de trabalho. cd e crie um subdiretório chamado 'bar' usando mkdir . mv para renomear o arquivo 'path.txt' para 'pwd.txt' dentro do diretório 'bar'. mkdir . touch para criar três arquivos nomeados 'file1.c', 'file2.cpp' e 'file3.py'. cp para copiar todos os arquivos do diretório 'tmp' para o diretório 'bar'. rm para remover o diretório 'tmp' com todo o seu conteúdo. ls com opções apropriadas para listar todos os arquivos (incluindo os ocultos) no diretório 'bar'. Redirecionar a saída para um novo arquivo chamado 'report.txt' usando o operador > . grep com a opção r para pesquisar todas as linhas que contêm 'foo' ou 'bar' recursivamente do diretório doméstico. wget para baixar o arquivo do URL especificado (https://raw.githubusercontent.com/dwyl/english-words/master/words.txt). grep para pesquisar a palavra 'John' do arquivo baixado recentemente (words.txt). Exiba as linhas que contêm 'John' juntamente com números de linha consecutivos. Bash em 100 segundos
Curso de script de shell - nível de iniciante
Projetos :
Gere script do histórico de comandos com o Progress Echo:
history.txt (o resultado das tarefas de prática anterior) em um script shell ( script.sh ) com instruções echo adicionadas para exibir o progresso.history.txt (o resultado das tarefas de prática anterior) e revise cuidadosamente os comandos.script.sh .history.txt em script.sh .echo antes de cada comando para fornecer indicações de progresso visual.script.sh com declarações echo adicionadas: #! /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 em uma pasta de mesa.script.sh .chmod +x script.sh ../script.sh .echo ajudam a visualizar o progresso da execução de cada comando. Captura as capturas de tela da sua tela
# 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 Curtch Course para iniciantes
Tutorial Git e Github para iniciantes
Tutorial Git para iniciantes: Fundamentos da linha de comando
Git e github para iniciantes - curso intensivo
Projetos:
Instale o Git: instale o git no seu computador.
Configure Git: Configure seu nome de usuário e e -mail do Git.
Crie um repositório local:
git initAdicione e comprometa as alterações: adicione arquivos à área de estadiamento e comprometa as alterações no repositório.
git add .
git commit -m " Initial commit "Veja o status do repositório: verifique o status do seu repositório.
git status Crie readme.md: crie um arquivo README.md para o seu projeto.
Escreva sobre você no readme.md: escreva sobre você
Decore readme.md: aprimore a estética do arquivo README.md adicionando formatação, cabeçalhos, pontos de bala ou quaisquer outros elementos que melhorem a legibilidade.
Compromete as alterações: use o git para encenar e confirmar as alterações feitas no arquivo README.md .
Escreva uma mensagem de compromisso significativa: forneça uma mensagem de comprometimento descritiva e significativa que resume o objetivo da confirmação.
Veja o histórico de comprometimento: veja o histórico de commit do seu repositório.
git logCrie uma conta do GitHub:
Crie um repositório remoto no GitHub:
Conecte o repositório local ao Github:
git remote add origin < repository_url >
git branch -M main
git push -u origin mainClone um repositório:
git clone < repository_url >Crie uma filial:
git branch < branch_name >
git checkout < branch_name >Alterne entre as filiais:
git checkout < branch_name >Merge ramos:
git checkout < target_branch >
git merge < source_branch >Resolva conflitos de mesclagem:
Puxe as alterações do controle remoto:
git pull origin mainEmpurre mudanças no controle remoto:
git push origin < branch_name >Crie e aplique solicitações de tração:
Gifra um repositório:
Clone e contribua para o repositório bifurcado:
git clone < forked_repository_url >
# Make changes
git add .
git commit -m " Description of changes "
git push origin < branch_name >Revise e mesclando solicitações de tração:
Roteiro da Fundação de Ciência da Computação © 2023 por Saidamir Botirov está licenciado sob CC BY-SA 4.0