Categorias
Artigos

O melhor curso de programação para engenheiros (e que ninguém conhece)

Eu aprendi a programar na faculdade, e nos semestres finais eu só fazia os trabalhos com cálculos implementados em computador. Ao longo de minha carreira, utilizei diferentes linguagens, técnicas, e métodos, mas a programação sempre fez parte do meu trabalho.

Se você estuda Engenharia, você precisa aprender a programar.

Quando eu comecei no meu emprego atual, eu me deparei com um desafio que eu não tinha enfrentado antes: desenvolver programas não seria apenas um meio para outro objetivo (como escrever teses ou preparar aulas), mas é o trabalho; meu papel aqui é desenvolver, manter, testar e documentar softwares de Engenharia que outros pesquisadores e pesquisadoras usam. Eu precisava subir de nível na minha habilidade.

O caminho que escolhi é o projeto Open Source Society University, que prescreve um “caminho” para cursar Ciências da Computação com apenas cursos online. Eu não tenho essa pretensão, e nem acho que é possível. O meu objetivo é trazer conceitos mais rigorosos, efetivos e eficazes do mundo do desenvolvimento de software para a Engenharia.

E já no primeiro curso, o mais básico, surpreendi-me positivamente, e agora acho que todo estudante de Engenharia deve começar o quanto antes o curso online e gratuito How to Code: Simple Data, que usa o meu novo livro preferido de programação (também online e gratuito) How to Design Programas (2 ed.)

Esse não é um curso sobre uma linguagem específica, tanto que usa uma linguagem não muito popular chamada Racket. É sobre projetar programas, como um projeto qualquer de Engenharia: com requisitos, critérios de sucesso (como você sabe que o programa está correto? Você testa todas as suas partes). É sobre seguir um método, rigoroso e sistemático. Tanto no curso quanto no livros, os autores enfatizam a importância de documentar o que você está fazendo, com muitos exemplos.

Minha dica é essa: siga esse curso, tentando fazer todos os exercícios, e então busque traduzir os conceitos na linguagem que você usa nos seus projetos (provavelmente uma das minhas recomendadas). A qualidade dos programas que eu escrevo e o meu entendimento sobre eles aumentou exponencialmente.

Fora que programas em Racket é divertido.

Publicidade
Categorias
Artigos

Linguagens de programação que todo pós-graduando deve saber: a Tríade da Ciência de Dados

Se você está iniciando em uma carreira de pesquisa, você vai ter de tratar dados experimentais ou numéricos e apresentar seus resultados. Não há escapatória além de aprender a programar, e isto vale para todas as áreas; John MacFarlane, por exemplo, é professor de filosofia e um grande nerd.

Para mim, existem três linguagens básicas que você deve saber e estudar continuamente, e vou apresentar na ordem em que acho que devem ser estudadas. Também, como eu sou o Fábio, eu vou dar dicas de livros, que ainda são muito superiores a simples tutoriais para realmente aprender algo.

Python

Se você está começando, este é um excelente primeiro passo. Python é uma linguagem simultaneamente fácil de aprender e poderosa; é bastante geral, e tem bibliotecas para processamento de arquivos, interfaces web e cálculo numérico e matricial.

Eu uso Python regularmente para meus projetos de Engenharia desde 2011. No meu mestrado, criei scripts para pegar os arquivos que o sensor de pressão da minha bancada escrevia e criar gráficos de pressão x tempo para cada teste que eu havia feito. No meu doutorado, criei dois programas que resolviam as Equações de Maxwell para duas geometrias diferentes de ímãs permanentes e calculavam o campo magnético gerado por cada uma. Atualmente, mantenho alguns programas de simulação de poços de petróleo e cálculo de propriedades de óleos.

Uma boa introdução geral é este livro, enquanto este aqui é excelente e mais voltado para área de dados.

R

Você pode usar Python para praticamente qualquer tarefa, mas sempre há benefícios em conhecer mais linguagens. Bjarne Stroustrup, criador da linguagem C++, diz que um salto fundamental para alguém que sabe programar é passar de uma para duas linguagens: o conhecimento de uma alimenta o estudo da outra.

Acontece isso comigo ao estudar R, uma linguagem voltada à Estatística. Embora eu não use muito scripts em R em si, o conhecimento que tenho da linguagem me faz pensar melhor na organização das tabelas de dados, e em como posso juntar todas as simulações que faço em uma única tabela que é filtrada e transformada (e.g. calcular a média de todas as linhas da tabela mestre que correspondem a uma mesma condição de pressão) para diferentes tarefas. Esse conhecimento me acompanha mesmo quando escrevo os programas em Python.

Estes dois livros são excelentes e fundamentais para começar a estudar dados de maneira mais séria.

Julia

Julia é uma linguagem bem mais moderna que as outras, e bastante focada na rapidez de execução. Novamente: ao estudar e praticar Julia, eu posso tanto escrever scripts nessa linguagem como pensar em como acelerar meus programas em Python e R. Se você já tem um sistema que quer otimizar, sugiro fortemente aprender Julia; o ecossistema de bibliotecas está crescendo rapidamente.

Uma boa introdução a Julia é este livro online.


Se você quer aprender mais sobre alguma dessas linguagens, diga aqui nos comentários!

Categorias
Artigos

O que fazer com dados errados/faltantes/desorganizados? Parar de reclamar!

Não quero parecer mais velho e experiente do que sou, mas eu tenho certa experiência de Engenharia. Depois de me formar, há 11 anos, completei um Mestrado e um Doutorado, fiz estágio de Pós-Doutorado, trabalhei como professor, e atualmente sou engenheiro em um projeto de pesquisa. Participei de muitos projetos diferentes, com empresas diferentes, com assuntos e contextos diversos.

Sendo professor e pesquisador, interajo com muitos alunos e alunas, engenheiros e engenheiras menos experientes que eu, e é muito comum ouvir variações do tipo:

  • “Onde consigo esses dados?”
  • “A empresa X compartilhou os dados de maneira muito desorganizada”
  • “Os dados de medição e calibração estão num arquivo PDF, como vou usar isso no meu script?”

Engenheiros e engenheiras, pesquisadores e pesquisadoras: trabalhar com dados errados/faltantes/desorganizados não é um impedimento ao seu trabalho, é o trabalho.

A vida de Engenharia não é a vida dos livros-texto, onde as tabelas são bonitinhas. Os dados passam por mãos humanas, onde há algum erro (mesmo que sejam obtidos de um sensor de maneira automática, alguém programou aquele sensor).

Seja cuidadoso ao digitar seus dados manualmente. Muitos erros bobos aparecem quando se transferem dados de uma fonte para outra .

[…]

Muito da visualização envolve coletar e preparar dados. Raramente, você consegue os dados na forma como você precisa, então espere dar uma arrumada nos dados antes de visualiza-los.

Nathan Yau, Visualize This (Tradução livre minha)

Quer outra citação?

Para se tornar um cientista de dados, você precisa de dados. Na verdade, como um cientista de dados, você passará uma embaraçosa grande fração do seu tempo adquirindo, limpando e transformando dados.

Joel Grus, Data Science do Zero

Nesta bela tarde de segunda-feira, pegue uma xícara de café, abra o Excel com aquele arquivo desorganizado que você recebeu de alguém (ou use Tabula para extrair tabelas de PDFs), e confira os detalhes:

  • As unidades estão certas?
  • O separador decimal (ponto ou vírgula) está correto?
  • Os dados estão numéricos (1 em vez de “1”)?
  • Há linhas com colunas faltantes? Por quê? Adicione uma coluna de observações.
  • Valores nulos (de valor numérico 0) ou negativos são isso mesmo, ou algum sinal de erro do sensor?

Repito: ninguém vai fazer isso para você. Você precisa pensar sobre os dados – e sobre o que você quer fazer com eles.

Categorias
Artigos

Por que deixei meu emprego de professor

Vou fazer um anúncio quase 2 meses atrasado: eu deixei o meu emprego anterior de Professor Substituto em uma universidade estadual, e voltei à minha universidade (e cidade) de origem para trabalhar como pesquisador em um novo projeto.

Os anúncios são vários, mas a base é uma só: eu me sentia sem futuro.

Eu amei ser professor, fui muito feliz no meu ambiente de trabalho, e acho que tenho talento. Não pretendo abandonar o ensino, e um de meus projetos para 2023 é justamente reavivar meu canal de aulas no YouTube, modernizando os vídeos e criando verdadeiramente os meus cursos de Engenharia Mecânica. Mas a vida de professor substituto não é fácil: eu tinha uma caga horária de 17 horas-aula semanais, com 5 disciplinas por semestres, o que exigia mudar o assunto na minha cabeça várias vezes por dia, corrigir dezenas de provas e trabalhos por mês, e estar sempre revisando e preparando aulas.

O sinal de alerta veio quando percebi que, nas aulas, estava falando de tudo no passado: eu estudei, quando eu participei de tal projeto… eu comecei a me sentir perigosamente fora da Engenharia Mecânica como ela está ocorrendo agora. Em outras palavras: como todo bom professor, eu queria praticar e pesquisar em paralelo com o ensino – mas eu só ganhava por hora dentro de uma sala de aula.

Eu também comecei a me sentir desolado com a vida de concursos acadêmicos. Participei de alguns, não fui aprovado em nenhum, nem de perto. Sinceramente, comecei a questionar se era isso mesmo que queria, se estava disposto a caminhar nessa jornada de virar professor efetivo (ainda não tenho essa resposta). O que estava claro é que não era atuando a semana inteira como professor substituto que eu ia conseguir mudar isso.

Eu comecei a planejar a possibilidade de participar de algum projeto de pesquisa, ou mesmo de procurar um emprego de engenheiro, e a sorte me lançou as duas coisas ao mesmo tempo: um anúncio de vaga CLT, de Engenheiro, mas em um ambiente de pesquisa, com meus antigos colegas, com o meu orientador de sempre. Apliquei, e consegui.

Não sei o que é do futuro; minha prioridade agora é fazer um bom trabalho neste projeto e honrar a oportunidade dada. Estou trabalhando muito para me atualizar na Engenharia – que era o que eu queria. Estou feliz e animado com os próximos passos.

E você, leitor, teve alguma grande mudança de emprego e vida nesse ano? Quer promover essa mudança? Comente aqui embaixo!

Categorias
Artigos

Integridade acadêmica é coisa séria

Como professor recém-retornado às aulas presenciais, eu vejo constantemente alunos e alunas olhando o celular nas aulas. Eu acho ruim, mas não me ofendo. Eu estou lá na frente falando, e não posso forçar ninguém a aprender.

Durante o período de aulas remotas, até pegar bem a melhor maneira de avaliar, também apliquei “provas” online, com questionários cronometrados e questões misturadas, mas eu sabia que os alunos estavam trocando informações pelo WhatsApp (alguns até tiveram coragem de confirmar – anonimamente). Novamente: eu não concordo, mas não posso fazer muita coisa, a não ser utilizar maneiras mais inteligentes de avaliação.

Como professor, eu coloco alunos em primeiro lugar. Recentemente, atendi um aluno sobre uma questão de seu TCC, com o detalhe de que ele não era meu orientando e o trabalho não era da minha área. Como falei, eu procuro ao máximo auxiliar meus estudantes. Eu proporciono horários de atendimento, atendo fora desses horários, não me importo de negociar prazos para entregas de trabalhos, e procuro criar tarefas que realmente estimulem a criatividade e o pensamento analítico, sem a pressa de realizar uma prova.

É por tudo isso que eu tenho tolerância zero para plágios de trabalhos.

Todo semestre eu preciso me estressar com isso, então aqui vai um recado para todos os estudantes que lêem esse blog: copiar um trabalho de outra pessoa e colocar o seu nome é um crime.

Pessoalmente, eu não me importo que alunos e alunas discutam entre si as dificuldades e procedimentos para resolver os trabalhos. Honestamente, acho que, se fizerem isso e depois sentarem para escrever a sua versão, aprenderão bastante. É assim que artigos científicos são escritos. Mas você deve consultar o seu professor para verificar se ele ou ela estão OK com isso.

Mas o que eu não posso admitir é ter de ler 2 trabalhos, com parágrafos e mais parágrafos em comum, figuras idênticas, mas com nomes diferentes. A cereja do bolo: essas pessoas copiam trabalhos de um semestre anterior, não percebem as mudanças que ocorrem entre os enunciados de lá e do presente trabalho, e então entregam um plágio de um trabalho que não foi pedido. Nota zero, automaticamente.

Eu certamente não ajudo esse tipo de estudante em nada ao ter uma memória de elefante e uma cópia organizada de todos os trabalhos já recebidos por mim.

Categorias
Artigos

Algoritmo para uma boa aula

Antes da aula:

  1. Estudar os livros da disciplina;
  2. Tomar notas;
  3. Rever apresentações, gráficos, vídeos de semestres anteriores;
  4. Criar o que precisa ser criado;
  5. Ir para a academia pensando em como tornar a aula melhor.

Durante a aula:

  1. Cumprimentar os alunos e alunas;
  2. Revisar a aula anterior;
  3. Começar de leve;
  4. Resolver algum exercício numérico;
  5. Passar outro exercício para alunos tentarem resolver juntos;
  6. Discutir os resultados;
  7. Contar alguma história da minha carreira;
  8. Fazer a chamada.

Após aula:

  1. Tirar dúvidas de quem vier falar comigo;
  2. Fazer upload de todos os materiais no Moodle;
  3. Registar a chamada;
  4. Refletir sobre como melhorar na próxima vez.

Repetir.

Categorias
Artigos

Bibliotecas Python essenciais para Engenharia Mecânica

Preciso ainda falar que acredito muito em usar ferramentas computacionais dentro da sala de aula para resolver problemas reais de engenharia?

A minha linguagem de programação é Python, simplesmente porque venho usando há mais de 10 anos (!). Entretanto, algumas bibliotecas são essenciais para o tipo de trabalho que faço, e todas ou já estão disponíveis ou são facilmente instaláveis no pacote Anaconda (pesquise pela documentação sobre como instalá-las):

  1. NumPy – para trabalhar com arrays e matrizes, como ao resolver sistemas de equações lineares
  2. SimPy – para algoritmos de “Cálculo Numérico”: achar raízes e pontos de ótimo, integração numérica, funções especiais (e.g. funções de Bessel, bastante usadas em Transferência de Calor)
  3. pandas – para ler arquivos em tabelas e manipular; é basicamente a funcionalidade do Excel em Python
  4. CoolProp – para calcular propriedades de fluidos
  5. PYroMat – idem acima, mas especificamente para modelos de gases ideais (e propriedades mais relevantes para análise de reações de combustão)
  6. Matplotlib – para gerar gráficos de todas as análises que você vai fazer usando as ferramentas acima

Essas são o conjunto mínimo viável; se você é estudante de Engenharia Mecânica, deve aprender agora a utilizá-las, e o YouTube está cheio de tutoriais (eu aprendi basicamente lendo as documentações e pesquisando como resolver os erros que apareciam).

Como um bônus, vale a pena começar a mergulhar em scikit-learn e estudar um pouco de Aprendizado de Máquina.

Categorias
Artigos

Equipamentos que uso para dar aulas presenciais

Há alguns meses, no meio da pandemia e com aulas remotas, eu compartilhei que equipamentos eu usava para ministrar aulas online. A pandemia não acabou, mas a época de aulas remotas sim, então este é um update de como tenho feito agora, em sala de aula.

Eu sou professor de Engenharia; minhas aulas têm muitas equações, muito gráficos, alguns vídeos e fotos de equipamentos. Assim, eu tento equilibrar o uso do quadro negro e o uso de slides; em algumas aulas, eu apenos escrevo e resolvo exercícios no quadro-negro, em outras só discutimos o que aparece nos slides, mas mais comumente equilibramos os dois:

Aliás: eu adoro escrever em giz (muito melhor que caneta)

Para escrever em si, minha universidade fornece o giz, mas para me lembrar do que devo escrever, eu geralmente levo uma cópia dos meus livros-texto, um caderno de anotações e o meu iPad Air 3a geração.

Para projetar slides, fotos e vídeos, uso o meu laptop Samsung com um passador de slides Logitech R400 e um Adaptador USB-C (tipo C) para HDMI e VGA UCA09 da Geonav (algumas salas não têm o projetor de fácil acesso, mas apenas um cabo VGA).

Estudantes: como tem sido a volta das aulas presenciais?

Categorias
Artigos

5 livros de engenharia que uso nas minhas disciplinas

Por nenhum motivo em particular, aqui vão os 5 livros básicos que uso para preparar as minhas aulas:

  1. Incropera – Fundamentos de Transferência de Calor e de Massa – a maior referência; mostra todos os tópicos relevantes (e que aparecem na prática de projetos reais), desenvolve a teoria com rigor, e mescla exercícios leves e pesados. Um clássico justificado.
  2. Termodinâmica de Çengel e Boles – já falei sobre esse autor aqui, que escreve livros super didáticos mas levemente fáceis. O livro de Termodinâmica, porém, é bastante completo e tem exercícios mais avançados que os das outras disciplinas. Uso como referência sempre que quero desenvolver melhor algum tópico mais “básico” nas minhas disciplinas mais aplicadas.
  3. Motores de Combustão Interna de Franco Brunetti – bastante mal escrita, notação confusa, exercícios errados… mas um livro texto muito atualizado sobre motores e que engloba muitos tópicos importantes. Eu costumo complementar a discussão teórica com exemplos e explicações do livro do Çengel e acima e com o maravilhoso Internal Combustion Engine Fundamentals do Heywood (mas a edição que tenho é bastante antiga)
  4. Refrigeração e Ar Condicionado de Stoecker e Jones – esta é um problema; o livro é muito bom, une teoria e prática, mas preciso desesperadamente achar um livro de refrigeração atualizado (os fluidos discutidos neste livro nem podem ser mais usados, por exemplo)
  5. Geração de Vapor do Bazzo – o único livro-texto sobre o assunto; sério: para preparar a minha disciplina eu pesquisei ementas de disciplinas similares em todo o Brasil e todas usam esta bibliografia. Existem outros livros, mas são de referência e não para ensino. Apesar de antigo, não chega a ser desatualizado e é muito bom e completo.
Categorias
Artigos

Estudando para provas discursivas… resolvendo exercícios?

Concursos Públicos para Professor Efetivo geralmente começam com uma prova escrita, dissertativas, onde os candidatos e candidatas discorrem sobre algum ponto sorteado na hora.

Assim, parece absurdo que eu gaste tempo resolvendo exercícios numéricos, com calculadora e – pasmem – Python e R (como na foto acima), para algo que vai virar 4 páginas de texto, não?

Não é absurdo porque isso é Engenharia. Nossa profissão é provar nosso ponto com números. Naturalmente, eu preciso entender os conceitos básicos, e devo conseguir explicar com palavras o que é o “Princípio da Conservação da Quantidade de Movimento” ou quando a “Equação de Bernoulli” é válida. Mas, na minha experiência, quando você resolve problemas numéricos é que você realmente compreende o que são essas equações, quais as dificuldades de aplicá-las, como calcular as propriedades e termos relevantes – o que já vira um treino para a Prova Didática. É fácil compreender que um “escoamento incompressível” é aquele onde a densidade não varia, mas fica muito mais interessante quando você calcula a densidade da água líquida e do ar em diferentes temperaturas e mostra que um caso varia muito mais o outro.

Nas minhas próprias aulas, aliás, à medida que vou ficando mais experimente e maduro nos assuntos, eu frequentemente paro as explicações para simplesmente fazer uns cálculos básicos e mostrar que eu não estou inventando afirmações.

Eu continuo escrevendo redações para treino, mas quando percebo que não consigo expressar por palavras, é porque na verdade não entendi e está na hora de voltar livros – e seus problemas numéricos.