/Projets_42_SP

🌵 Todos os projetos desenvolvidos na escola 42 São Paulo 💂 All projects developed at 42 school São Paulo

Primary LanguageC

Português 🌵 | English 💂

Projetos na 42sp

Todos os projetos desenvolvidos na escola 42 São Paulo.

roaraujo's 42 stats

O que é a 42

"Sem aulas, sem professores, sem grade horária: acreditamos no poder de botar a mão na massa, na excelência de habilidades, em avaliações entre pares e num sistema de progressão como de videogames para fomentar o aprendizado. Os grandes marcos se expressam através de níveis de experiência ao invés de horas-aula. Sua experiência individual determina o seu ritmo de aprendizado." Adaptado de material promocional (em inglês).

Galáxia da 42 - o santo gráfico

O programa-constelação se divide em duas partes principais: o tronco principal de conhecimentos fundamentais (camadas internas, também chamado de common core), e as trilhas complementares de especialização (camada mais externa), ramificando rumo ao infinito e além.

O common core é composto de 16 projetos que cobrem conceitos fundamentais da Ciência da Computação, e a cada projeto entregue você ganha habilidades novas e XP (pontos de experiência) para passar de fases e avançar em direção ao chefão: o grande Transcendence.

Visual representation of the 16 projects of the common core divided into 3 parts (Projetos sob o mesmo número são alternativas para aprender na prática determinado conceito, apenas um deve ser escolhido.)

A partir deste ponto, tripulantes da nave mãe passam a orbitar os anéis mais distantes da galáxica, e estão livres para escolher um caminho para seguir se epecializando, ou até mesmo criar uma trilha de especialização para que outras pessoas tripulantes possam seguir depois de zerarem o common core.

Visão geral do currículo

image

Fundamentalmente o grande objetivo de aprendizado da 42 é aprender a base e aprender a aprender, de maneira que a trilha básica de fundamentos forma pessoas capazes de aprender rápido qualquer linguagem, framework ou paradigma novo de programação, em um mundo em constante evolução.

Na 42 São Paulo, o common core se divide em 3 partes principais. As primeiras duas são desenvolvidas inteiramente em C e Shell Scripts. Na terceira parte há uma mudança para a linguagem C++ e o paradigma de Programação Orientada a Objetos (POO), e tecnologias complementares de front-end, back-end e containerização.

Todos os projetos da fase 1 são individuais. A partir da fase 2, tripulantes da nave-mãe devem se juntar para trabalhar em pares ou em grupos, para trabalhar, aprender e resolver problemas juntes. Os projetos em grupo estão sinalizados com um 🚻.

Fase 1

nome assunto resumo
libft Biblioteca estática, Makefile. Construa sua própria biblioteca de funções básicas em C, que será utilizada por todo o resto do common core. Algumas funções ft_* são réplicas de funções tradicionais da libC, outras são personalizadas, e todas devem ser escritas usando no máximo write() e malloc().
get_next_line File descriptors e alocação estática/dinâmica de memória. Escreva uma função que lê o conteúdo de um file descriptor e retorna uma linha, ou seja, uma sequência de caracteres terminada em \n. Este projeto é subsequentemente incorporado à Libft.
ft_printf String de formatação e funções variádicas. Faça sua própria printf! Este projeto é subsequentemente incorporado à Libft.
Born2BeRoot Virtualização. Monte um servidor SSH em Linux, com elementos fundamentais de administração de sistemas, regras de senha forte, criptografia e muito mais.
So_Long / fractol / fdf Renderização de janelas e gerendiamento de eventos de mouse/teclado. Aprendendo a desenhar visuais gráficos em janelas! Escolha entre desenhar fractais (fractol), projeção semi-3D isométrica (fdf) ou um videogame top-down em 2D (so_long). Projetos feitos utilizando a Minilibx, uma API do sistema X11.
pipex / minitalk Introdução a processos Unix. Escolha entre construir um par de cliente e servidor conversando entre si (minitalk), ou simular o operador de pipe (|) do Bash usando os conceitos de pipes e forks em C (pipex).

Fase 2

nome assunto resumo
Push_Swap Algoritmos de ordenação e pilhas. Uma lista de números desordenados deve ser ordenada, com um detalhe: para serem ordenados, devem-se utilizar exatamente duas pilhas, e 11 operações de pilhas pré-determinadas.
Minishell 🚻 Uma versão mini de uma shell Bash escrita em C. Inclui a análise léxica e semântica necessária para operar pipelines e redirecionamentos, determinados built-ins, e a estrutura necessária para executar comandos via $PATH ou caminhos absolutos.
Philosophers Paralelismo com threads em C. Resolva o famoso problema do Jantar de Filósofes proposto por Dijkstra, evitando concorrência de dados (data racing) e impasses (deadlocks).
Netpractice Redes e roteamento. Uma série de problemas simulando LAN's e redes conectadas à internet. Para resolvê-los (em menos de 15 minutos!) é necessário conhecimento de endereços IP e tabelas de roteamento.
Cub3d / miniRT 🚻 Renderização 3D Estudo aprofundado sobre computação gráfica para construir um motor de renderização em janelas utilizando a Minilibx. Escolha entre a renderização de perspectivas 3D por meio de raios projetados (raycasting, projeto cub3d), ou de renderização de objetos 3D com a técnica de contorno por luz e sombra (raycasting, projeto miniRT).

Fase 3

nome assunto resumo
CPP Programação Orientada a Objetos. 9 listas de exercícios para guiar o aprendizado mão-na-massa sobre conceitos clássicos da POO.
ft_containers Estruturas de dados clássicas. Cosntrua sua própria réplica de alguns containers (estruturas de dados) da biblioteca padrão de C++: vectors, maps, stacks e árvore binária rubro-negra, implementando classes, iteradores, overload de operadores e mais.
inception Containerização de uma aplicação web. Usando docker-compose e Dockerfile, configure uma rede de containers que contém os serviços necessários para rodar um servidor de Wordpress (servindo arquivos estáticos HTML e com banco de dados).
webserv / ft_irc 🚻 Protocolos da Internet em C++. Escolha entre construir um servidor HTTP que recebe requisições e serve um arquivo estático (webserv) ou um serviço de bate-papo IRC que segue o protocolo TCP/IP (ft_irc).
Transcendence 🚻 Jogue o renomado Pong online com as amizades! Em time, faça a implantação de uma aplicação web em que qualquer tripulante da 42 pode logar e arranjar uma dupla para jogar uma partida de Pong. A aplicação deve ser capaz de transmitir partidas ao vivo, permitir que tripulantes se adicionem em listas de amizades, achievements e mais.

Como clonar este repositório

Este repositótio contém submódulos git, ou seja, links para outros repositórios que guardam o código fonte de cada projeto separadamente. Se você apenas executar um git clone, a pasta baixada estará praticamente vazia. Caso deseje clonar esse repositório com todo o conteúdo de todos os submódulos, adicione a flag --recurse-submodules no seu git clone, desse jeito:

git clone --recurse-submodules https://github.com/rodsmade/Projets_42_SP.git

Mas se quiser clonar apenas o código de um projeto específico, basta clicar no link do projeto desejado na página principal deste repositório, e cloná-lo.






Valeu! 😉