Skip to content

📚 Repositório para armazenar atividades, projetos e programas feitos na faculdade.

License

Notifications You must be signed in to change notification settings

mende1/projetos-da-faculdade

Repository files navigation

Meus projetos da Faculdade

Gustavo Mendel

Bacharelado em Ciência da Computação.

Em andamento 🎓

Desde 2019, até os dias atuais.

Pela Universidade Federal da Bahia (UFBA).

Disciplinas Cursadas


Introdução à Lógica de Programação (ILP)

[ 2019.2 ]

Meu primeiro contato com programação na vida, onde aprendi o básico de programação e a sua lógica através da linguagem C++.

Meus códigos

Tenho apenas os programas que escrevi, não lembrei de salvar os enunciados dos problemas.

Conteúdos estudados
Saída e entrada básica
Variáveis e constantes
Operações aritméticas
Operadores lógicos
Estrututuras de seleção
Estruturas de repetição
Arrays e matrizes
Algoritmos de ordenação
Algoritmos de busca binária
Funções e Recursividade

Edit: Felizmente consegui, com amigos da turma de 2020.3 (SLS), as questões daquele semestre, e peguei para brincar um pouco.

Códigos aqui


Laboratório de Programação I

[ 2020.3 ] - Semestre Letivo Suplementar (SLS) - Estudo Remoto, ante à pandemia do COVID-19

Aprofundamento em Lógica de Programação e nos recursos das linguagens de programação, usando C e C++.

Meus códigos

Dessa vez lembrei de pegar os enunciados das questões!

Conteúdos estudados
Revisão de ILP
Funções
Ponteiros
Alocação Dinâmica

Edit: Como em ILP, consegui questões e assuntos também de outra turma, desta vez de 2021.1, que abrangeu ainda mais assuntos sobre a matéria, como Vector, Queue, Stack, List, Map, Pair, Set, e algumas funções da biblioteca Algorithm.

Códigos aqui


Estrutura de Dados e Algoritmos I

[ 2020.3 ] - Semestre Letivo Suplementar (SLS) - Estudo Remoto, ante à pandemia do COVID-19

Aqui inicio o estudo de algorigmos: como compreender, aplicar seus conceitos básicos e analisá-los. E também o básico de estruturas de dados, e como implementá-las.

Um aprofundamento bem maior nos estudos e trabalhos mais complexos, usando bibliotecas gráficas para auxiliar no entendimento, assim como estruturas bem definidas para praticidade com vetores, como o vector. Usamos C++.

Uma matéria incrível, ministrada pelo professor Antônio Apolinário, que mesmo com as dificuldades do ensino remoto perante à pandemia do COVID-19, conseguiu entregar um ensino realmente muito bom.

Os códigos

É importante frisar que muitos códigos foram feitos inicialmente pelo professor, sendo responsabilidade do aluno fazer as alterações necessáras para estudar os conceitos das aulas.

Os principais trabalhos:

Problema 0

Problema 1

Problema 2

Note que cada problema tem a descrição do professor do que deveria ser feito, e no diretório src/ de cada problema tem a descrição detalhada da realização da solução do problema.


Programação para Competições

[ 2021.1 ]

Não é uma matéria da faculdade, mas neste período eu dei início ao estudo e treino de competições de programação, com o GruPro (Grupo de Programação) da UFBA.

Resolução de contests, treinos, maratonas, entre outros. E é aqui que deixarei guardado meus códigos juntamente com os problemsets dos mesmos.

Meus códigos


Arquitetura de Computadores

[ 2021.1 ] - Estudo ainda remoto

Continuação de Projeto de Circuitos Lógicos, aqui estudamos mais baixo nível na programação de computadores.

Estudo de Assembly usando RISC-V, e ainda desenvolvendo um mini-emulador de RISC-V, baseado no Vênus.

E também design de Computador, com ALUs, RegFiles, e mais, usando o Logisim.

Meus códigos


Programação Orientada a Objetos

[ 2021.1 ] - Estudo ainda remoto

Os pilares da programação Orientada a Objetos, teoria e prática. Abstração, Encapsulamento, Herança e Polimofismo.

Matéria maravilhosa com o Professor Rodrigo Rocha. Resolução de Listas e desafios incrementais com bibliotecas gráficas para o aprendizado do assunto.

Disciplina feita em Java ☕.

Meus códigos


Monitoria ILP (Introdução à Lógica de Programação)

[ 2021.2 ] - Estudo ainda remoto

Realizada monitoria na matéria de introdução à Programação.

Ajudando na montagem de questões de listas e provas. Realizando testes nas questões já feitas. Atendimento aos alunos para tirar dúvidas e ajuda no assuntos.

Realizado em Python 🐍

Meus códigos

Slides das aulas do Professor Rodrigo


Linguagens Formais e Autômatos

[ 2022.2 ]

Foi estudado conceito de linguagem, gramática geradora de linguagem, autômatos finitos e infinitos reconhecedores de linguagens. E mais:

  • Hierarquia de Chomsky.
  • Linguagens regulares e expressões regulares.
  • Reconhecedores, geradores e propriedades das linguagens discriminadas na hierarquia de Chomsky.
  • Ambiguidade e simplificação de gramáticas livres de contexto.
  • Formas normais de gramáticas livres de contexto.

Matéria ministrada pelo incrível professor Tiago Januário, que conseguiu trazer metodologias e atividades bem práticas apesar da disciplina ser bastante teórica.

Através do Google Colab, com a linguagem de programação Python, nós fizemos atividades envolvendo programação para estudar os conceitos vistos em sala de aula. E também exercícios envolvendo a integração da API do Twitter para obter tweets recentes e a partir deles, aplicar a lógica teórica da matéria para diversos fins práticos, inclusive análise sentimental dos usuários.

Realizado em Python 🐍

Minhas atividades


Metodologia e Expressão Técnico-científica

[ 2022.2 ]

Matéria pré-requisito para realizar o TCC. Foi estudado como escrever um artigo científico, as bases do conhecimento científico, dentre outros tópicos:

  • Visão geral dos Princípios Filosóficos e Epistemológicos das Ciências.
  • O processo da pesquia:
    • formulação do problema da pesquisa;
    • processo de observação;
    • ordenação dos dados.
  • Planejamento da pesquisa.
  • Os meios e técnicas de comunicação dos resultados da pesquisa:
    • relatório;
    • estudos monográficos;
    • artigos técnicos;
    • estudos explicativos;
    • técnicas de preparação do material para exposições.

Com o incrível professor Dr. Prof. Felipe Padilha.

A disciplina teve com objetivo final a escrita de um projeto de pesquisa, com ideia original do estudante (que inclusive pode ser aproveitada no TCC), com metodologias bem embasadas, referencial bibliográfico bem revisado e organizado e com um cronograma final de 12 meses para o planejamento final do projeto.

Inicialmente foi feito um resumo da ideia do estudante sobre o tema do trabalho, listando qual era a questão de pesquisa, os objetivos, motivações e as metodologias. Depois disso foi feito uma versão inicial do projeto, e após as sugestões e correções do professor, foi produzido a versão final do trabalho. Segue as informações abaixo:

Título:

Aprendizado com projetos de código aberto: como a participação em ambientes de desenvolvimento de código aberto pode contribuir para a formação profissional de um estudante de engenharia de software

Resumo do Projeto de Pesquisa:

A indústria de Engenharia de Software vem sofrendo com a falta de profissionais devidamente qualificados desta área, e a falta de atividades práticas e realistas nas disciplinas de Engenharia de Software pode ser a razão para isto. Já os Projetos de Código Aberto vêm se mostrando uma ótima alternativa para os estudantes e professores aproveitarem como método do aprendizado, já que estes projetos possuem um ótimo ambiente colaborativo formado por profissionais do mundo inteiro e conta também com um cenário totalmente realista para se praticar os conceitos da área. Neste âmbito, o principal objetivo deste trabalho é buscar entender como a participação do estudante em Projetos de Código Aberto pode contribuir para a sua formação profissional como engenheiro de software.

Autor:

Gustavo Mendel Queiroz e Souza.

Link:

Projeto de Pesquisa - Versão Final


Compiladores

[ 2023.2 ] - Estudo presencial

Estudo dos fundamentos de compiladores, abrangendo desde os conceitos básicos até a implementação de ferramentas como análise léxica e sintática.

Ministrada pela professora Christina von Flach, esta disciplina cobriu tópicos fundamentais:

  • Básicos de compiladores
  • Análise léxica e sintática
  • Gramáticas ambíguas
  • Uso de ferramentas como Flex e Bison (Yacc)
  • Construção de Árvores Sintáticas Abstratas (AST)

Os trabalhos realizados durante o curso estão disponíveis neste diretório. Eles incluem exercícios práticos e implementações relacionadas aos conceitos aprendidos em sala de aula.


Análise e Projetos de Algoritmos

[ 2023.2 ] - Estudo presencial

Sob a orientação do Professor Rafael Melo, esta disciplina proporcionou uma ampla compreensão dos fundamentos da análise e desenvolvimento de algoritmos, cobrindo diversos tópicos:

  • Estudo aprofundado dos algoritmos fundamentais
  • Notações de complexidade: Omega, O e Theta
  • Recursões e suas aplicações na resolução de problemas
  • Algoritmos de ordenação e suas eficiências
  • Programação Dinâmica (PD) para otimização de soluções
  • Backtracking para soluções exploratórias (nome técnico a ser confirmado)
  • Algoritmos gulosos e sua aplicabilidade

O material desenvolvido durante a disciplina pode ser encontrado neste diretório.

O aprendizado adquirido durante a disciplina proporcionou uma compreensão mais profunda da eficiência dos algoritmos e estratégias para resolver problemas complexos em diversas áreas da computação.


Tópicos em Sistemas de Informação e Web I

[ 2023.2 ] - Desenvolvimento prático

Sob a supervisão do incrível Professor Fred Durao, esta disciplina foi uma imersão completa no desenvolvimento web, abrangendo tanto o front-end quanto o back-end, além da gestão de projetos.

A abordagem adotada foi de simular uma relação real entre clientes e desenvolvedores, onde os alunos eram responsáveis por resolver problemas e atender requisitos semanais, refletindo a dinâmica de um ambiente profissional.

O projeto principal consistiu no desenvolvimento de um Sistema de Gestão Acadêmica. Este sistema permitia que universidades gerenciassem recursos como Cursos, Disciplinas, Turmas, Alunos, Professores, Coordenadores, entre outros.

As tecnologias utilizadas foram:

Front-end

  • Framework React
  • Tailwind CSS para estilização
  • React Hook Forms para gerenciamento de formulários

O código front-end está disponível neste repositório.

Back-end

  • Spring Boot em Java

O código back-end pode ser encontrado aqui.

Além dos repositórios, foi elaborada uma apresentação do projeto, disponível neste vídeo.

Essa experiência prática foi fundamental, pois proporcionou aos alunos a oportunidade de aplicar conhecimentos adquiridos em um ambiente simulado de desenvolvimento profissional. A dinâmica de entrega semanal de requisitos e a complexidade do projeto permitiram uma compreensão mais aprofundada do ciclo de desenvolvimento de sistemas web.

O aprendizado adquirido foi significativo, pois não se restringiu apenas ao uso das tecnologias, mas também à interação com clientes simulados e à resolução de problemas reais encontrados durante o desenvolvimento do sistema.