/study

Repositório de anotações de aulas e exercícios resolvidos

Primary LanguageC++MIT LicenseMIT

study

Objetivo

O objetivo deste repositório é reunir, de forma organizada, todas as anotações de aulas e de exercícios resolvidos, ao longo do meu curso de Sistemas de Informação.

Este repositório deverá servir, para mim, como referências futuras que eu possa revisitar, assim como uma forma de praticar a minha organização das minhas notas de estudo.

Os exercícios aqui presentes não envolvem atividades pontuadas pelos professores, pura e simplesmente porque minha intenção não é facilitar o plágio, mas sim indexar minhas notas para meu uso próprio. Independente da forma como os arquivos deste repositório sejam distribuídos, desde já isento-me da responsabilidade sobre as informações nele contidas; dito isto, não tenho a pretensão ou a arrogância de afirmar a corretude dos textos e exercícios aqui listados.

A maioria ou todos os exercícios aqui presentes poderão, também, não incluir seus respectivos enunciados; também me comprometo a não redistribuir, aqui, nenhum dos materiais dos meus professores.

Um objetivo secundário é o aspecto da utilização de formatos e recursos abertos, ou de código-aberto, durante o curso de uma formação acadêmica na área da tecnologia. Ao realizar o uso de tecnologias abertas (exceto quando não houver outra saída senão utilizar uma tecnologia proprietária), pode-se reforçar os conceitos de flexibilidade e distribuição irrestrita de informação; desta forma, outros leitores não necessariamente precisarão, da mesma forma, de ferramentas fechadas e possivelmente restritas a alguns poucos sistemas, para lidar com problemas acadêmicos.

Conteúdo

A maior parte das informações aqui existentes estará escrita em texto plano, sob o formato Org, para melhor integração com o editor de texto Emacs. Trabalhos exigindo uma maior responsabilidade sobre a formatação estarão escritos em LaTeX; exercícios de linguagens de programação poderão estar escritos em pseudo- -código, ou na linguagem de programação estudada ou utilizada.

Todos os commits presentes neste repositório estarão digitalmente assinados por mim. Desta forma, acredito que posso atestar o fato de que as respostas para exercícios aqui descritas vieram de mim mesmo.

Relação de diretórios e atividades incluídas

Última atualização: [2024-07-09 ter]

SI

Exercícios feitos no curso de Sistemas de Informação. Nenhuma destas respostas tem a garantia de estar correta, e as respostas foram completamente feitas por mim.

  • 2018-2: Exercícios relacionados à faculdade, no segundo semestre de 2018.
    • AEDS I: Algoritmos e Estruturas de Dados I. Não necessariamente terminados.
    • Cálculo I: Alguns poucos documentos escritos em Org, servindo como resoluções de exercícios enviados via Moodle, na disciplina de Cálculo I.
  • 2019-1: Exercícios relacionados à faculdade, no primeiro semestre de 2019.
    • TC: Exercícios de Teoria da Computação.
    • AEDS2: Algoritmos e Estruturas de Dados II. Inclui notas de aulas e exercícios também.
  • 2019-2: Exercícios relacionados à faculdade, no segundo semestre de 2019.
    • AEDS3: Algoritmos e Estruturas de Dados III. Partes em destaque:
      • avl: Implementação de uma árvore AVL em literate programming. Fator de balanceamento não é armazenado nos nós.
      • tp3-rbtree: Implementação de uma árvore red-black em literate programming. Não inclui remoção de elementos.
      • tp4-huffman: Implementação de compactação de arquivos de texto através do algoritmo de Huffman. O arquivo binário será gerado ao final e pode ser descompactado também. Inclui ajuda via linha de comando, e foi igualmente feito com literate programming.
  • 2020-5: Exercícios relacionados à faculdade, no semestre emergencial de 2020, em meio à pandemia de COVID-19.
    • BD1: Bancos de Dados I. Inclui notas sobretudo relacionadas à sintaxe e ao uso de SQL. Também inclui uso de Docker para uso de SGBDs.
    • POO: Programação Orientada a Objetos. Inclui trabalhos da disciplina, feitos principalmente em Java.
  • 2021-1 Exercícios relacionados à faculdade, no semestre 2021/1 (final de 2021), em meio à pandemia de COVID-19.
    • BD2: Bancos de Dados II. Inclui exercícios resolvidos e notas rápidas sobre sintaxe e uso de SQL, MariaDB/MySQL. Também inclui recursos para uso de Docker para uso de SGBDs, especialmente MySQL.
    • IA: Inteligência Artificial. Inclui exercícios resolvidos da disciplina em Python.

exercises

Exercícios variados, não necessariamente relacionados a estudo. Para maiores informações, veja o README incluído nesta pasta.

research

Outros programas implementados com o intuito de pesquisa pessoal ou acadêmica.

  • ga: Implementação de um algoritmo genético simples baseado em um tutorial em Python. O algoritmo foi implementado em Common Lisp, utilizando um arquivo Org (ga.org) para programação literada. Exige o editor de textos Emacs para realizar entrelaçamento ou para execução dinâmica com o SLIME. Também inclui uma arquivo de código pós-entrelaçamento (ga.lisp) para acessibilidade.
  • neural-networks: Implementações de teste de redes neurais artificiais, feitas durante o aprendizado das mesmas, em C++ e JS.
  • asm: Aprendizado de Assembly em geral.
    • 68k: Notas e código produzido seguindo o tutorial de Assembly para Motorola 68k do Sega Genesis.
    • 65816: Notas e código produzido seguindo os tutoriais do Wikibooks de Assembly para o 65816 do Super Nintendo.
  • plan9: Codigos feitos atraves do uso do sistema Plan 9 from Bell Labs.
    • avltree: Arvore AVL totalmente programada usando o editor Acme, feita em C para Plan 9.
  • psp: Aprendizado de desenvolvimento para PlayStation Portable.

books

Exercícios variados de livros e afins.

sicp

Link direto para o repositório de exercícios do livro Structure and Interpretation of Computer Programs, de Abelson e Sussman.

land-of-lisp

Link direto para o repositório de exercícios do livro Land of Lisp, de Conrad Barski, M.D.

learn-apl

Arquivos relacionados à leitura de material para aprendizado da linguagem APL, em especial na APL Wiki.

little-mler

Arquivos relacionados à leitura e ao estudo do livro The Little MLer. Os exemplos utilizam OCaml ao invés de Standard ML; distinções são apontadas segundo necessário.

nand2tetris

Exercícios resolvidos do livro The Elements of Computing Systems, de Nisan e Schocken. Normalmente, não inclui os arquivos de testes do livro, que podem ser encontrados na distribuição do material eletrônico.

  • ch01: Implementação de chips básicos.
  • ch02: Implementação de meio-somador, somador; incrementador e somador de 16-bits; e finalmente, da unidade lógico-aritmética (ALU) da plataforma Hack.
  • ch03: Implementação de registrador, chips variados de memória, e do program counter (PC).
  • ch04: Auto-estudo. Réplica com ligeira modificação do programa em Assembly de exemplo do livro. Utilizado para melhor auto-conhecimento da linguagem de Assembly da plataforma Hack.
  • ch05: Implementação dos chips de memória (Memory) e do processador (CPU) da plataforma Hack, culminando em um chip representativo de uma máquina completa (Computer).
  • ch06: Implementação de um assembler capaz de gerar código de máquina para a arquitetura Hack. O trabalho foi feito em um repositório externo, que foi linkado como submódulo Git neste diretório.
  • ch07: Códigos Assembly gerados pela implementação inicial do tradutor da VM para a plataforma Hack. O projeto não foi incluído como submódulo neste diretório, pois não estava completo ainda Todavia, este estágio do projeto pode ser acompanhado na tag v0.5 do repositório do mesmo. A versão estável do software fica delegada para o capítulo 08.
  • ch08: Códigos assembly gerados pela implementação final do tradutor da VM para a plataforma Hack. O projeto final também suporta uma flag que inibe o código de bootstrap de ser injetado no cabeçalho do arquivo .asm final. Assim como no Capítulo 06, o VM Translator foi programado em um repositório externo, e linkado como submódulo Git no diretório deste capítulo.
  • ch09: Código Jack implementando um Campo Minado. É provável que o código não compile apropriadamente sob 32K, com o restante do sistema operacional a ser posteriormente desenvolvido. Todavia, os arquivos .vm gerados executam apropriadamente sob o VM Emulator incluído no material de apoio do livro.
  • ch10: Submódulo para implementação do analisador sintático do compilador de Jack. Assim como no caso do Assembler e do VM Translator, o projeto não foi incluído por ser grande demais e demandar manutenção em outro lugar. Você pode acompanhar este estágio do projeto na tag v0.5 do repositório.
  • custom-chips: Chips extras construídos por curiosidade. A maioria envolve estudos avulsos a respeito de circuitos integrados.

purescript-by-example

Projeto englobando arquivos escritos de acordo com o livro PureScript By Example, de Phil Freeman. Relação de módulos:

  • Chapter2: Exercícios do capítulo 2.
  • Data.AddressBook: Exercícios do capítulo 3.
  • Chapter4: Exercícios do capítulo 4.
  • Chapter5: Exercícios iniciais do capítulo 5.
    • Data.Picture: Exercícios finais do capítulo 5, contendo biblioteca de manipulação de figuras.

practical-common-lisp

Relação de arquivos criados ao ler o livro Practical Common Lisp, de Peter Seibel.

theorem-proving-in-lean

Notas e códigos relacionados ao livro Theorem Proving in Lean, de Avigad, Moura e Kong (2019).

power-of-prolog

Notas e códigos relacionados ao website The Power of Prolog.

xchgraxrax

Notas e resolução comentada para o livro xchg rax,rax de xorpd.

courses

Cursos variados de várias plataformas.

psx-programming

Notas do Curso de Desenvolvimento para PlayStation usando MIPS Assembly & C do Gustavo Pezzi.

As anotações desse curso são bem pessoais e foram documentadas de acordo com o meu gosto. É provável que você tenha dificuldades em acompanhá-las.

machine-learning

Notas do Curso de Algoritmos de MACHINE LEARNING da Udemy. Use só como referência para data science e Python, mesmo.

docker

Cursos de Docker e Docker Swarm da Alura.

kubernetes

Cursos de Kubernetes: Pods, Services e ConfigMaps e Deployments, Volumes e Escalabilidade na Alura.

az-900

Curso AZ-900: Microsoft Azure Fundamentals Exam Prep 2023 na Udemy.

Licenciamento

Todo e qualquer código aqui escrito estará distribuído sob a Licença MIT, o que fomenta o compartilhamento da informação e do software livre. Os dados neste repositório podem ser redistribuídos, no entanto esta licença deverá ser seguida à risca. Se você quiser um melhor detalhamento desta licença, veja a página da mesma em escolhaumalicenca.com.br ou veja o arquivo LICENSE.txt.