Apresentação¶
O LAVIME é um repositório digital aberto que agrega recursos de aprendizagem em métodos numéricos aplicados, tendo por base a visão de uma “engenharia computacional holística” para a era dos dados (leia o artigo Engenharia computacional para um mundo centrado em dados). O LAVIME é essencialmente composto por um livro e por tópicos complementares diversos escritos no formato de cadernos interativos (arquivos .ipynb). São cobertos não apenas os assuntos clássicos que costumam ser ensinados em disciplinas equivalentes em qualquer curso superior de universidades nacionais ou estrangeiras, mas também tópicos modernos que se entrelaçam para produzir uma engenharia cada vez mais centrada em dados. Vale citar:
exemplos teóricos e aplicados;
bancos de dados reais de pequena escala;
algoritmos demonstrativos;
receitas de código;
sessões de práticas dedicadas;
dicas de programação e
recortes suplementares.
Pretende-se mostrar que conceitos tradicionais são a base para os métodos numéricos de nova geração, que criam interdisciplinaridade com temáticas do estado-da-arte, tais como aprendizado de máquina científico (SciML), redes neurais informadas pela física (PINNs), modelos de ordem reduzida (ROMs) e técnicas que fazem interface com a ciência da computação e outras áreas aplicadas.
O conteúdo básico é ensinado na disciplina Cálculo Numérico (GDCOC0072) ministrada pelo Prof. Gustavo Oliveira ao longo de um semestre, atendendo tanto os cursos de graduação do Centro de Informática da UFPB, quanto de outros centros. Neste rol incluem-se:
Ciência da Computação;
Ciência de Dados e Inteligência Artificial;
Engenharias (todas, exceto Renováveis);
Estatística;
Física; e
Matemática.
História e impacto¶
O material começou a ser desenvolvido pelo professor no âmbito do Projeto Numbiosis em 2017. Em 2019, foi lançada a versão web. Até 2020, o projeto recebeu suporte do Programa Institucional de Monitoria com contribuições ativas de alguns alunos. De 2021 a 2024, o projeto teve suporte reduzido com atualizações esporádicas. A partir de 2025, uma nova etapa de melhorias foi iniciada para contemplar extensões de conteúdo para aplicações voltadas a dados e modernizações para um espectro novo de ciência e engenharia computacional. Em 2026, o material passou por uma atualização tecnológica completa de interface.
Empregado semestralmente, o LAVIME (anteriormente LVMN) já alcançou mais de 600 discentes oriundos dos diversos cursos de graduação em ciências exatas da UFPB. Há diversos relatos de discentes acerca do impacto positivo do LAVIME e dos materiais aqui dispostos em sua formação acadêmica e amplitude de perspectivas.
Objetivos¶
Os objetivos gerais do LAVIME são:
Apresentar o universo dos métodos numéricos a estudantes de graduação em ciências exatas e no eixo STEM;
Estimular a aprendizagem ativa através da resolução de projetos aplicados; e
Fomentar a maturidade do pensamento computacional e as habilidades de programação através do ecossistema Python para métodos numéricos;
Estrutura e Programa¶
O curso é normalmente realizado em 4 módulos, totalizando 60h de carga horária. O módulo especial é adotado como complementar e ensinado sob demanda. Cada módulo possui cadernos, sessões de código e avaliações como seus componentes. Nos cadernos estão os capítulos do conteúdo principal do curso. As sessões de código (code sessions) são aulas dedicadas ao estudo de funções de utilidade predefinidas em módulos Python para resolução direta de problemas aplicados. Essas funções são apresentadas como “receitas prontas” que abrem caminhos para implementações de maior complexidade.
A estrutura resumida segue abaixo:
Módulo 1 (5h)
Conteúdo (4h)
Avaliação: Quiz (1h)
Módulo 2 (15h)
Conteúdo (13h)
Avaliação: Prova (2h)
Módulo 3 (20h)
Conteúdo (16h)
Avaliação: Projeto Computacional (4h)
Módulo 4 (20h)
Conteúdo (16h)
Avaliação: Projeto Computacional Sorteado (4h)
Módulo Especial
Sob demanda
O programa do curso segue abaixo:
Módulo 1¶
Modelagem integrada e engenharia computacional
Módulo 2¶
Determinação de raízes de equações não lineares unidimensionais
Caderno 3 - Do Contínuo ao Computável: Discretização e Erros Numéricos (1h)
Caderno 4 - Domando Equações Não Lineares: Inspeção e Descobrimento de Raízes (2h)
Caderno 5 - Método da Bisseção: A Arte de Cindir e Convergir (2h)
Caderno 6 - Método de Newton: Sair pela Tangente sem Perder o Rumo (2h)
Avaliação: Prova (2h)
Módulo 3¶
Resolução de sistemas de equações multidimensionais
Módulo 4¶
Teoria da aproximação
Integração numérica
Caderno 14 - Integração Numérica: Regras de Newton-Cotes (4h)
Avaliação: Projeto Computacional (4h)
Módulo especial¶
Diferenciação numérica e resolução de equações diferenciais
Desenvolvimento¶
Este material é desenvolvido continuadamente no âmbito do Projeto Numbiosis pelo Prof. Gustavo Oliveira, UFPB/CI/DCC. Os seguintes alunos deram colaboradores relevantes:
Turma 2020 (CT): Thiago Ney Rodrigues
Turma 2017 (CI): Smith Lima e Vinícius Veríssimo
Metodologia de Avaliação¶
A disciplina é composta por 4 avaliações, organizadas de acordo com o seguinte quadro:
| Módulo | ID | Modalidade | Tipo | Peso | Descrição |
|---|---|---|---|---|---|
| 1 | P1 | Quiz | Individual | 1/3 | Ver manual de orientação |
| 2 | P2 | Prova | Individual | 1/3 | Ver manual de orientação |
| 3 | P3 | Projeto | Equipe | 1/3 | Ver manual de orientação |
| 4 | P4 | Projeto | Equipe | 1/3 | Ver manual de orientação |
Das 4 avaliações, extraem-se as 3 maiores notas para cálculo da média final.
Manuais de orientação¶
Exemplos de projetos¶
Para exemplo de projetos high-grade, clique aqui.
Cálculo da nota final¶
A nota final do curso, , é dada pela seguinte média ponderada:
com ,
onde:
: quantidade de módulos
: peso da -ésima avaliação
: peso da avaliação
Conteúdo Complementar¶
Alguns materiais complementares não contemplados no curso regular ou não explorados com maior detalhamento são fornecidos aqui para aguçar o interesse de estudantes para temas que orbitam ao redor dos métodos numéricos e são úteis para aplicações gerais.
Apostila introdutória de Python¶
Python é a linguagem escolhida para o curso devido à sua disponibilidade gratuita, versatilidade e facilidade de aprendizagem. Como forma de nivelamento dos estudantes que não possuem experiência com Python, a apostila Introdução à Linguagem Python para Ciências Computacionais e Engenharia, traduzido pelo professor a partir dos trabalhos do Prof. Hans Fanghor (Universidade de Southampton/UK), tem o propósito de fornecer conhecimento básico da linguagem para uso no curso e uma oportunidade de estudo paralelo. Caso você se enquadre neste grupo de estudantes, não deixe de consultar este material.
Tópicos¶
Recortes¶
Os recortes contemplam curiosidades ou anedotas sobre tópicos variados. Acesse-os pela barra lateral de navegação.
Obs.: este conteúdo está sendo gradualmente incorporado no livro-texto e será descontinuado no futuro.
Como contribuir?¶
O material passa por revisões periodicamente, mas possui suporte limitado. O projeto Numbiosis não recebe financiamento direto para bolsas. Todo o conteúdo é desenvolvido pelo Prof. Gustavo Oliveira e discentes (monitores e/ou tutores bolsistas ou voluntários, bem como aqueles que se matriculam no curso e contribuem com melhorias). Caso queira contribuir com melhorias, apontamento de erros ou sugestões diversas, fale com o professor.
Orientações acadêmicas¶
Consulte projetos do Prof. Gustavo nos horizontes estratégicos do TRIL Lab. Saiba mais na página pessoal do Prof. Gustavo.
Temas para TCCs¶
Você é de algum curso do Centro de Informática e deseja trabalhar com alguma tecnologia ou materiais digitais para ensino? Em particular, no âmbito do projeto Numbiosis e do LVMN existem vários tópicos possíveis, tais como:
Implementação de gráficos interativos para visualização 3D de processos iterativos.
Desenvolvimento e refatorações de códigos demonstrativos em Python com aplicações diversas para fins didáticos.
Geração de material didático portável (projeto de ensino).
Integração de ferramentas de autograding.
Programação orientada a objetos para criação de smart courses (módulos para geração de questões customizadas, avaliações e compilações em Latex).
Desenvolvimento de códigos para paradigmas modernos (métodos informados por física, aprendizado de máquina).
Métodos numéricos guiados por modelos de linguagem.
Outros Materiais do Professor¶
Seguem abaixo links para livros produzidos exclusivamente para outros cursos e disciplinas da UFPB: