Semestre: 2026/1
Docente: Prof. Hans Rogério Zimermann
Instituição: Universidade Federal de Santa Maria (UFSM)
Centro: Centro de Ciências Naturais e Exatas (CCNE)
Departamento: Departamento de Física
Carga Horária Total: 60 horas (4h/semana)
Número de Créditos: 4 (4.0.0)
Período Letivo: 16 semanas
| Aspecto | Descrição |
|---|---|
| Código da disciplina | FSC1189 |
| Nome da disciplina | Algoritmo e Programação |
| Turma | Licenciatura em Física |
| Docente | Prof. Hans Rogério Zimermann |
| hans@ufsm.br | |
| Sala de aula | A definir |
| Horários | A definir (4 horas semanais) |
| Atendimento | Mediante agendamento |
Fundamentos de algoritmos e programação estruturada. Linguagens de programação. Desenvolvimento de programas de caráter científico-tecnológico para resolução de problemas em Física. Estruturas de dados. Métodos numéricos aplicados. Análise e visualização de dados. Projeto integrado com aplicações em Física.
Capacitar o licenciando em Física para:
- Compreender e implementar algoritmos para resolução de problemas científicos
- Utilizar programação como ferramenta de investigação em Física
- Resolver equações diferenciais numericamente
- Analisar dados experimentais com rigor estatístico
- Comunicar resultados de forma clara através de visualizações
- Dominar conceitos de algoritmo, fluxograma e complexidade
- Implementar lógica de programação em Portugol (VisualG) e Python
- Declarar e manipular variáveis e tipos de dados
- Utilizar estruturas condicionais (SE-SENÃO)
- Aplicar validação de dados em contextos experimentais
- Implementar loops (PARA, ENQUANTO, REPETIR-ATÉ)
- Trabalhar com vetores e matrizes
- Realizar operações vetoriais (produto escalar, magnitude)
- Analisar convergência de séries numéricas
- Utilizar estruturas de dados em problemas de Física
- Escrever e reutilizar funções/procedimentos
- Implementar métodos numéricos: bisseção, diferenciação, integração
- Resolver equações diferenciais ordinárias numericamente
- Analisar dados experimentais: média, variância, outliers
- Aplicar interpolação e regressão linear
- Simular sistemas físicos complexos
- Implementar análise de Big-O empírica
- Integrar múltiplas competências em projeto final
- Comunicar resultados através de publicação de qualidade
Prova: P1 ao final da Semana 4
| Semana | Capítulos | Tópicos | Atividades | Artefatos |
|---|---|---|---|---|
| 1 | Cap 1, 2 | Introdução a algoritmos; lógica; tabelas-verdade; operadores relacionais | Aula expositiva + lab VisualG (fluxograma manual); exercício em Portugol | NB01 Ex 1.1 |
| 2 | Cap 2, 3 | Booleanos; variáveis (INTEIRO, REAL, CADEIA); escopo; tipos de dados | Aula + lab (conversor de temperatura em VisualG) | Lista 1 |
| 3 | Cap 3, 4 | Estruturas de controle SE-SENÃO; validação; casos de uso (estados da água, velocidades) | Lab orientado com feedback | NB02 Ex 4.1 |
| 4 | Cap 4 | Revisão estruturas de controle; exercícios integradores | Lab avaliativo em VisualG | P1 + Lista 2 |
Prova: P2 ao final da Semana 8
| Semana | Capítulos | Tópicos | Atividades | Artefatos |
|---|---|---|---|---|
| 5 | Cap 5 | Loops PARA; tabelas de queda livre; queda com arrasto; series temporais | Aula + lab (tabelas em VisualG, gráficos em Python) | NB02 Ex 5.1 |
| 6 | Cap 5 | ENQUANTO; REPETIR-ATÉ; série de Leibniz; convergência numérica | Lab com análise de convergência | Lista 3 |
| 7 | Cap 6 | Vetores e matrizes; produto escalar; magnitude 3D; coordenadas polares | Lab com visualização vetorial | NB02 Ex 6.1, 6.2 |
| 8 | Cap 5, 6 | Revisão integrada módulo 2 | Lab de revisão orientada | P2 + Lista 4 |
Prova: P3 ao final da Semana 11 | Projeto 1: Semana 12
| Semana | Capítulos | Tópicos | Atividades | Artefatos |
|---|---|---|---|---|
| 9 | Cap 7 | Funções e procedimentos; escopo local/global; módulos; bibliotecas | Aula + lab (módulo de energias em VisualG) | NB03 Ex 7.1 |
| 10 | Cap 8 | Método da bisseção; diferenciação numérica (progressiva, central); análise de erro | Lab com comparação de métodos | Lista 5 |
| 11 | Cap 8 | Método de Euler; integração (Trapézio vs Simpson); EDOs; circuito RC | Lab avaliativo (P3) | P3 + NB04 |
| 12 | Cap 9 | Estatística descritiva; outliers (3σ, IQR); interpolação; regressão linear | Projeto 1 — Análise experimental com dados de pêndulo | Lista 6 + Projeto 1 |
Projeto 1 (Pêndulo Simples): Estimar g de dados experimentais usando NB05, análise de incerteza e regressão linear.
Projeto 2: Semana 15 | Prova Final: Semana 16
| Semana | Capítulos | Tópicos | Atividades | Artefatos |
|---|---|---|---|---|
| 13 | Cap 10 | Simulação de projétil com arrasco; Euler; pêndulo amortecido | Lab com simulação dinâmica | NB03 Ex 10.1, 10.2 |
| 14 | Cap 10 | Oscilador amortecido (3 regimes); Big-O empírico; busca linear vs binária | Análise de complexidade algorítmica | Lista 7 |
| 15 | Cap 10 | Projeto Capstone — Integração completa; figura de publicação; orientação individual | Entrega Projeto 2 | Projeto 2 |
| 16 | Caps 1-10 | Revisão geral da disciplina; resolução de dúvidas | Prova Final | Prova Final |
Projeto 2 (Capstone): Simulação integrada de sistema físico (escolha orientada: oscilador, circuito RC, órbita, etc.) com análise numérica completa.
- Aprendizagem Centrada no Aluno: Ênfase em fazer, experimentar e descobrir
- Contextualização em Física: Todos os exemplos relacionados a fenômenos físicos reais
- Método do Laboratório Orientado: Instruções estruturadas com liberdade progressiva
- Comparação de Linguagens: Portugol (VisualG) → Python (Colab/Jupyter), mesmo problema, diferentes sintaxes
| Recurso | Descrição | Quando |
|---|---|---|
| Apostila | 10 capítulos (90 páginas) com fórmulas em MathJax | Leitura prévia (flipped) + referência |
| Notebooks Jupyter | 6 notebooks com exercícios resolvidos e propostos | Execução em Colab ou local |
| GUIA_DEBUGGING | Documento com 30+ erros comuns e como resolvê-los | Consulta conforme necessário |
| VisualG | IDE para Portugol (gratuito, Windows/Linux/macOS) | Lab 1-8 (primeiros 2 módulos) |
| Google Colab | Jupyter sem instalação; integrado ao Google Drive | Lab 9-16 + projetos |
| Listas de Exercícios | 7 listas (1 por módulo + integrador) | Entrega semanal com feedback |
Cada semana segue o padrão (4 horas = 2 sessões de 2h ou 4 sessões de 1h):
- Aula Teórica (1h): Apresentação de conceitos, exemplos, discussão
- Laboratório Orientado (2-3h): Exercícios em VisualG ou Python com apoio do docente
- Atividade Extra (1h): Listas, revisão, ou tutoria
| Instrumento | Peso | Semana | Conteúdo |
|---|---|---|---|
| P1 — Prova 1 | 12% | 4 | Caps 1-4 (Fundamentos) |
| P2 — Prova 2 | 12% | 8 | Caps 5-6 (Iteração e Dados) |
| P3 — Prova 3 | 12% | 11 | Caps 7-8 (Métodos Numéricos) |
| Projeto 1 | 18% | 12 | Análise experimental (Pêndulo) |
| Projeto 2 | 26% | 15 | Simulação integrada (Capstone) |
| Listas (L01–L07) | 10% | Contínuo | Todos os capítulos |
| Participação | 10% | Contínuo | Frequência, engajamento |
| Total | 100% |
- Nota Final ≥ 6.0: Aprovado
- Nota Final 4.0–5.9: Exame Final (conteúdo completo)
- Nota Final < 4.0: Reprovado
Frequência mínima: 75% das aulas (conforme Reg. UFSM)
- Formato: 2-3 horas; misto (questões discursivas + problemas de programação)
- Conteúdo: Capítulos específicos de cada módulo
- Ambiente: Sala de aula com acesso a compiladores (VisualG ou Python online)
- Critério: Corretude do algoritmo, eficiência, documentação clara
Exemplo P1:
- (1) Desenhe fluxograma para validar temperatura dentro de intervalo
- (2) Codifique em Portugol (VisualG) e execute
- (3) Converta para Python; justifique diferenças
Projeto 1 — Análise Experimental (18%):
- Objetivo: Estimar aceleração gravitacional (g) a partir de dados de pêndulo simples
- Entregáveis:
- Notebook Jupyter (NB05) com análise completa
- Código Python bem comentado
- Gráficos profissionais (período vs comprimento, ajuste linear)
- Relatório (1-2 páginas): resultados, incertezas, conclusão
- Critério: Análise estatística correta, propagação de incerteza, regressão linear adequada
Projeto 2 — Capstone (26%):
- Objetivo: Simulação numérica de um sistema físico integrado
- Escolhas orientadas: Oscilador amortecido, circuito RC, órbita, queda com arrasto, etc.
- Entregáveis:
- Notebook Jupyter (NB03, NB04, NB06 ou customizado)
- Código Python modular e documentado
- Figuras de publicação (resolução alta, legendas em inglês)
- Relatório técnico (3-4 páginas): teoria, método, resultados, análise de erro
- Critério: Implementação correta, visualizações profissionais, análise crítica de resultados
- Frequência: Uma por semana (ou a cada 2 semanas em módulos densos)
- Mix: Exercícios em Portugol + Python + teóricos
- Contexto: Sempre relacionados a física
- Entrega: Via Moodle ou GitHub
- Avaliação: Presença + Corretude (não precisa 100% correto, mas mostrar esforço)
Exemplo L01 (Semana 2):
- Ex 1: Fluxograma → Pseudocódigo → VisualG (lógica booleana)
- Ex 2: Trajetória de projétil em Python (NB01)
- Ex 3: Problema contextualizado em Física
- Presença em aulas (≥75%)
- Engajamento em discussões
- Perguntas durante aulas
- Tentativa de exercícios mesmo se incorretos
Nota Final = 0.12×P1 + 0.12×P2 + 0.12×P3 + 0.18×Proj1 + 0.26×Proj2 + 0.10×Listas + 0.10×Participação
- Zimermann, H. R. (2026). Algoritmos e Programação para Licenciatura em Física. Notas de Aula, UFSM. Disponível em: https://github.com/hansufsm/algoritmos-programacao-fisica
- Guazzelli, M. & Luca, R. (2023). Numerical Methods for Physics and Engineering. Springer.
- McKinney, W. (2017). Python for Data Analysis (2nd ed.). O'Reilly Media.
- Recktenwald, G. W. (2006). Introduction to Scientific Computing. MIT OpenCourseWare.
- Landau, R. H., Páez, M. J., & Bordeianu, C. C. (2015). Computational Physics (3rd ed.). Wiley-VCH.
- NumPy: https://numpy.org/doc/stable/
- Pandas: https://pandas.pydata.org/docs/
- Matplotlib: https://matplotlib.org/stable/contents.html
- SciPy: https://docs.scipy.org/
- VisualG: https://www.visualg.com.br/
- Real Python: https://realpython.com
- Stack Overflow: https://stackoverflow.com (buscar com tags Python, numeric-methods)
- GitHub: https://github.com (repositórios de código educacional)
- Google Colab: https://colab.research.google.com (notebooks na nuvem)
| Ferramenta | Custo | Acesso | Observação |
|---|---|---|---|
| VisualG | Gratuito | Windows, Linux, macOS | Essencial para Semanas 1-8 |
| Google Colab | Gratuito | Navegador + Google Drive | Jupyter sem instalação |
| Jupyter Notebook | Gratuito | Local (pip) | Alternativa a Colab |
| Python 3.10+ | Gratuito | Local ou Colab | Linguagem principal Semanas 9-16 |
| NumPy, Pandas, Matplotlib | Gratuito | pip install | Bibliotecas científicas |
- Laboratório Informática com 25-30 computadores
- Acesso à internet (para Google Colab)
- Projetor e quadro branco
Todos os materiais (apostila, notebooks, listas, este plano) estão disponíveis em:
https://github.com/hansufsm/algoritmos-programacao-fisica
Backup em Google Drive (compartilhado com alunos): FSC1189_2026_1
- Trabalhos copiados resultarão em nota 0
- Colaboração é permitida, mas cada aluno deve entregar código original
- Cite fontes externas (StackOverflow, blogs, etc.)
- Dúvidas? Converse com o docente antes de entregar
- Prazos: Respeitados conforme cronograma (extensões apenas por motivo justificado)
- Formato: Notebooks
.ipynbcom código comentado + arquivos de suporte - Nomeação:
L01_SeuNome.ipynb,Proj1_SeuNome.ipynb, etc.
- Feedback de provas e listas: até 7 dias após avaliação
- Recurso: até 5 dias após receber feedback
- Reapresentação de projeto: não é permitida; feedback antes da entrega final
| Canal | Frequência | Uso |
|---|---|---|
| E-mail (hans@ufsm.br) | 24h | Dúvidas formais, prazos |
| Moodle/AVA | Diário | Avisos, fóruns, submissão |
| Atendimento presencial | Agendado | Dúvidas conceituais |
| GitHub Issues | Conforme necessário | Erros em código dos notebooks |
- Presencial: A definir (mínimo 2h/semana)
- Remoto: Mediante agendamento por e-mail
Este plano segue a Resolução UFSM nº 010/2017 sobre Acessibilidade Pedagógica:
- Alunos com deficiência visual: Materiais em formato digital acessível (alt-text em imagens, descrição de gráficos)
- Alunos com deficiência auditiva: Legendas opcionais em vídeos (se utilizados)
- Alunos com transtornos funcionais: Prazos estendidos sob justificativa (até 15 dias)
Contacte o docente no início do semestre para acomodações necessárias.
Este plano pode ser ajustado conforme necessidade pedagógica, sem alterar prazos de avaliação ou cronograma geral. Mudanças serão comunicadas com antecedência mínima de 1 semana.
- Manter contato com o docente e acompanhar avisos
- Respeitar prazos de entrega
- Participar ativamente das aulas e laboratórios
- Manter frequência ≥ 75%
- Fornecer suporte acadêmico conforme disponibilidade
- Avaliar com critérios claros e transparentes
- Retornar feedback em prazo razoável
- Manter ambiente respeitoso e inclusivo
Prof. Hans Rogério Zimermann
Departamento de Física — UFSM
hans@ufsm.br
Data de aprovação: 16 de abril de 2026
Versão: 1.0
Próxima revisão: Agosto de 2026
| Competência | Módulo 1 | Módulo 2 | Módulo 3 | Módulo 4 |
|---|---|---|---|---|
| Dominar conceitos de algoritmo | ✅ | — | — | — |
| Implementar lógica condicional | ✅ | — | — | — |
| Usar loops efetivamente | — | ✅ | — | — |
| Trabalhar com vetores/matrizes | — | ✅ | — | — |
| Implementar funções reutilizáveis | — | — | ✅ | — |
| Resolver equações numericamente | — | — | ✅ | ✅ |
| Analisar dados experimentais | — | — | ✅ | — |
| Simular sistemas complexos | — | — | — | ✅ |
| Comunicar resultados cientificamente | — | — | — | ✅ |
Fim do Plano de Ensino