LEP- 01527 - Software Livre
Pré-requisito:
Créditos: 4
Carga Horária: 68h (4*17)
Horários das aulas
Disciplinas optativas tem horário variável a cada semestre
2026-2 Segunda e quarta, 10-12h
Sala
Sala de aula do LDSC.
Equipamentos
Computadores com sistema operacional Gnu/Linux - Fedora.
Monitoria
Sem monitor
Filosofia e conceitos de software livre. Tendências no mundo da informática. Sistema operacional livre - instalação, configuração e comandos básicos. Shell Script. Interfaces gráficas. Programas gráficos. Programas de engenharia e matemática. Edição de texto. Edição profissional de documentos científicos (TeX/LaTeX). Desenvolvimento de software – compiladores, debuger, profiler, controle de versões, ambientes desenvolvimento.
Filosofia e Tendências - 4h
Filosofia e conceitos de software livre - SL. Software livre versus software proprietário – discussão.
Consequências do SL para os países em desenvolvimento.
Tendências no mundo da informática. Discussão sobre o hardware atual e inovações tecnológicas.
Instalação do GNU/Linux - 4h
Sistema operacional livre - instalação, configuração (ex: GNU/Linux/Fedora), sistema de pacotes.
Sistema GNU/Linux, estrutura de arquivos. Sistemas de arquivos.
Ambientes de Janela - gnome/kde - 4h
Como funcionam os ambientes de janela. Janelas virtuais. Atalhos. Ex: Gnome.
Comandos de Terminal - 12h
Comandos de terminal - agilidade na execução de tarefas. O que é um mainframe, um terminal? O que é um shell? O shell bash. Configurando seu shell bash. Como obter ajuda. Como obter informações de seu computador. Como gerenciar pacotes, processos, memória. Como gerenciar os discos, diretórios. Como usar diretórios e arquivos. Como manipular pdf, imagens. Como usar o tmux. Como executar comandos para root/administrador. Como criptografar arquivos. Como se comunicar com outros computadores. Como programar em bash (exemplos básicos). Programas úteis por categoria. Exemplos práticos em sala.
Programas de Engenharia - Acesso Remoto - 2h
Acesso remoto (wget, ssh). Ex: acesso remoto em empresas como a Petrobras.
Programas de Engenharia - Edição de Texto Profissional - 10h
Programas de Engenharia - Sistema de Controle de Versões - Git/Github - 8h
Controlando versões de documentos, relatórios, projetos de engenharia usado git/github.
O github do ldsc. Ajuda, lista de repositórios/projetos, metodologia dos projetos de software, proposta de desafio tecnológico, modelo de projeto completo, modelo TCC tradicional. Exemplos práticos em sala.
Programas de Engenharia - Gráficos Profissionais com Gnuplot - 4h
Como fazer gráficos profissionais usando Gnuplot. Exemplos práticos em sala.
Programas de Engenharia - Desenvolvimento de software - 4h
Modelagem UML: plantuml.com/ , dia, umbrello/Visual Paradign. Exemplos práticos em sala.
Compiladores, debugger, profiler, cmake. Instalação e uso de ambientes de desenvolvimento (ex: QT-Creator).
Programas de Engenharia - Grafos/Redes/Esqueletos - 4h
Propriedades/definições dos grafos, nós/nodes, conexões/edges. Rede e esqueleto. O que é a framework Graphviz? Como obter/instalar. Sinopse dos arquivos do Graphviz. Tour - Exemplos de uso. Aplicação: Redes de percolação em engenharia de reservatório. Diagramas pert/cpm.
Programas de Engenharia - Processamento de Imagens com Gimp - 4h
Manipulação e processamento de imagens com gimp. Exemplos práticos em sala, filtros de passa baixa/passa alta, transformada de fourier (dados geofísicos, imagens de rochas).
Montagem de imagens vetoriais (diagramas) (ex: linkscape).
Programas de Engenharia - Matemática - 6h
Como montar sistemas de equações e sua solução usando programas matemáticos livres (ex: octave). Exemplos práticos em sala.
Calculadoras científicas com notação polonesa reversa. Usando HP15C, HP42S no android.
Nota: Os programas a serem abordados em sala de aula serão os programas desktop atuais. Os exemplos dentro dos parenteses referem-se a alguns dos programas disponíveis em 2026.
A avaliação será realizada através de provas e seminário. Alguns exercícios e trabalhos de aula serão relacionados a área de métodos numéricos, fazendo-se um link com as disciplina de introdução ao projeto de engenharia, métodos numéricos, programação orientada a objeto com C++ e análise de imagens.
Os exercícios incluem o uso de comandos de terminal, controle de versões com git/github, manipulação de documentos modelos (como modelo de TCC). Uso prático dos programas em sala de aula.
Exercícios
O arquivo de apresentação de cada aula inclui uma seção exercícios. Os exercícios passados em uma semana devem ser entregues no primeiro dia de aula da próxima semana (de cada grupo de 3 exercícios o aluno é obrigado a fazer 1. Por exemplo: exercícios 1, 4, 7, 10, 13, etc).
Testes
Os testes são realizados no início da aula e tem duração de até 20 minutos.
Abordam temas já vistos e o material da aula presente. De cada 10 testes a pior nota é desconsiderada.
Provas
Três provas teóricas.
Nas provas são incluídos pontos extras. Mas os pontos extras só serão contabilizados para quem passar na média final, isto é, primeiro calcula a média final, aqueles que passaram terão contabilizados os pontos extras.
Sistema operacional
GNU/Linux - Fedora.
Modelagem UML
Documentação - manuais.
Controle de versões (acesso ao repositório de programas)
Edição de programas (editor)
emacs.
kate.
gedit.
devC++ [Para Windows, o pacote completo já instala o gcc/g++].
Compilador
Ambiente de desenvolvimento
Debugagem de código (debuger)
Programas auxiliares
indent (formatação de código).
patch (upgrades).
diff (diferenças entre arquivos).
Programação multi-plataforma
autoconf/automake/libtool.
cmake
Visualizadores
evince.
ggv, gv.
acroread (leitor pdf - manuais internet).
Bibliotecas:
libstdC++.
Qt .
GTK++.
magick++.
boost++.
blitz++.
commonC++.
Desenvolvimento de bibliotecas:
ar, ranlib, libtool.
Documentação
Material da disciplina (apresentação das aulas), material extra e fontes relacionadas a disciplina são disponibilizados aos alunos via compartilhamento do dropbox.
Material da disciplina (apresentação das aulas), material extra e fontes relacionadas a disciplina são disponibilizados aos alunos via compartilhamento do dropbox.
Apostilas:
Apostila: Modelo de IC/MSC/DSC os arquivos para o modelo podem ser baixados no link Github.
Apostila: Calculadoras Científicas RPN Programáveis - Breve Histórico e Exemplos de Uso.
Veja na página de softwares desenvolvidos um emulador para calculadoras HP.
Apostila: Provas e Provas Resolvidas de C++ versão de 2018 (entre em contato para dados atuais).
Apostila: Metodologia Científica em Engenharia (versão bem preliminar em desenvolvimento, disponibiliza apenas para alunos).
Aulas que podem ser uteis:
SOFTWARE LIVRE
Sérgio Amadeu da Silveira. Software livre: A luta pela liberdade do conhecimento, São Paulo: Editora Fundação Perseu Abramo, 2004.
http://www.fpa.org.br/conteudo/software-livre-luta-pela-liberdade-do-conhecimento
Sergio Amadeo et al., (2003). Software Livre e Inclusão Digital. CONRAD, São Paulo.
Anderson Fernandes et all. Software Livre Cultura Hacker e Ecosistema de Colaboração. https://www.ufmg.br/proex/cpinfo/educacao/docs/10f.pdf
Jorge Ruas. Software Livre para Concursos, Campus, 2009.
GNU/LINUX
Negus, C. (2003). Red Hat Linux 9 Bible. John Wiley & Sons.
Rubem E. Ferreira, (2003). Linux – Guia de Administração do Sistema. Novatec.
Welsh, M., Kaufman, L., Dalheimer, M. K., and Dawson, T. Running Linux. O'Reily & Associates.(2002).
Bryant, S. C., Hodgson, T., and Livingston, B. (2000). GIMP for Linux Bible. John Wiley & Sons.
Richard Peterson (2008). Fedora 10 Linux Desktop. Surfing Turtle Press.
Mark G. Sobell (2008). Um Guia Prático Linux de Comandos, Editores e Programação Shell. Alta books.
DESENVOLVIMENTO SOFTWARE
Bueno, A. D. (2003). Programação Orientada a Objeto com C++ - Aprenda a Programar em Ambiente Multiplataforma com Software Livre. Novatec, São Paulo.
Veja dados atualizados na página da disciplina de C++
PROCESSAMENTO DE GRÁFICOS
Philipp K. Janert. (2016). Gnuplot in Action. Manning Publications. 2Nd.
PROCESSAMENTO IMAGENS
Bunks, C. (2000). Grokking the GIMP. Que.
Neumann, S. (2000). GIMP Pocket Reference. O Reily, Sebastopol - CA.
PROCESSAMENTO TEXTO
Cameron, D. (1999). GNU Emacs Pocket Reference. O'Reily & Associates.
Cameron, D., Rosenblatt, B., and Raymond, E. S. (1996). Learning GNU Emacs. O'Reily & Associates, 2 edition.
EDIÇÃO DE TEXTO PROFISSIONAL
Grossens, M., Mittelbach, F., and Samarin, A. (1993). Latex Companion. Addison-Wesley, New York.
Grossens, M. (1997). The Latex Graphics Companion. Addison-Wesley, New York.
Knuth, D. E. (1986). The Texbook. Addison-Wesley.
Lamport, L. (1985). Latex - A Document Preparation System. Addison-Wesley.
Steding-Jessen, K. (2000). Latex Demo: Exemplo com Latex 2e.
Team, L. (2003). The LyX User's Guide. LyX Team - http://www.lyx.org.
MODELAMENTO NUMÉRICO
Eaton, J. W. (2002). Gnu Octave Manual. Network Theory Ltd.
Jesper Schmidt Hansen. (2011) GNU Octave – Beginner's Guide. Packt Publishing.
No exemplo a seguir, o site do FEDORA, uma distribuição livre do sistema operacional GNU/Linux. Usada em nossas salas de aula.
No exemplo a seguir, a página do site do LyX, o editor de texto usado na elaboração dos TCCs/mestrado/doutorado de nossos alunos.
No exemplo a seguir, imagem do editor de texto Kate manipulando um arquivo de código em C++.
O emacs é o melhor editor/processador de texto que existe, ele se adapta (interface, barra de tarefas, menus, teclas de atalho) de acordo com o tipo de arquivo que esta aberto. Se ofr um arquivo .bib ele adiciona funcionalidades para manipulação de bases de dados bibliográficas. Se for um arquivo .cpp ele se reconfigura para editar códigos em C++, se for um arquivo .py se configura para Python. Se o arquivo for um arquivo de texto com extensão .org ele adiciona diversas funcionalidades para controle de tarefas, agendas, projetos.
Características do emacs no orgmode.
Controle de tarefas
Controle de agendas
Controle de projetos
Controle de ideias
Abaixo suas vantagens e desvantagens no uso para GTD.
Vantagens: Propriedade Total dos Dados: Seus dados são arquivos de texto puro (.org). Você pode abri-los no bloco de notas daqui a 50 anos. Não existe vendor lock-in. 100% Offline: Funciona no meio do deserto. Você sincroniza seus arquivos textuais via Git, Dropbox ou como quiser. O Emacs pode ser operado sem mouse. A velocidade de movimentação de tarefas e criação de links usando atalhos destrói qualquer interface gráfica. Processamento de Dados Infinito: Como tudo é texto plano e o Emacs usa a linguagem Lisp, você pode rodar scripts para extrair relatórios, automatizar tarefas e cruzar dados de formas que nenhum Trello ou Jira jamais permitiriam. Existem milhares de pacotes e tutoriais completos sobre seu uso para cada tipo de atividade.
Desvantagens: Curva de Aprendizado Alta: Não é apenas aprender um app, é aprender uma nova forma de usar o computador. Estética Simples: Visualmente, ele roda no terminal ou em janelas simples. Quem precisa do "efeito dopamina" de arrastar um card colorido com o mouse não vai gostar do Emacs.
Na imagem o emacs com o arquivo de controle do Projeto Manual da Página, Note que a construção da página que você esta lendo foi gerenciada usando o Emacs com um arquivo orgmode. Note que temos as marcações TODO DOING DONE do GTD. Note que cada item tem subitens que se abrem. É possivel usar checkbuttons.
Dica: Comentário no Redit sobre "o emacs é para mim?". O emacs é muito usado por escritores, programadores e até pastores!
No exemplo a seguir, imagem do site do Gnuplot. Usamos o gnuplot para montar gráficos e como mecanismo de programação. Programas escritos em C++ se comunicam com o Gnuplot que fica responsável por gerar gráficos. Vide exemplo prático na página Extensão. Onde mostramos o software da ATCS.
Já vimos que devemos organizar bem nossos diretórios de arquivos. Podemos fazer backups com frequência usando sistemas na nuvem como google drive ou dropbox que permitem armazenar o histórico de atividades passadas.
No entanto, para projetos de engenharia, surgem questões que esses sistemas não resolvem plenamente:
Não há um controle claro de quem realizou cada alteração;
Não existe um registro preciso de quando cada modificação foi feita;
É difícil comparar as diferenças entre a versão atual (que pode não estar funcionando) e a versão da semana passada (que estava funcional). Precisamos de um sistema de controle de versões do projeto.
Para solucionar esses problemas, utilizamos o Git. Ele é um aplicativo desenvolvido por Linus Torvalds, o criador do GNU/Linux, e é atualmente o sistema de controle de versões de projetos e documentos mais utilizado no mundo. Existem milhares de vídeos, livros e guias que ensinam a dominar essa ferramenta indispensável.
Dica: Faça já seu cadastro no site github, ele é uma plataforma que permite armazenar seus projetos na nuvem de forma segura e profissional, utilizando o motor do software Git.
Dica de Ouro: O GITHUB do LDSC é a central de projetos e repositórios do LDSC, incluindo ajuda (guias de referência), modelos de projetos e projetos desenvolvidos por estudantes do curso de engenharia de petróleo da UENF.
Linguagem de Programação Científica. Sintaxe poderosa, orientada à matemática, com ferramentas integradas de plotagem e visualização 2D/3D. Software livre, compatível com GNU/Linux, macOS, BSD e Microsoft Windows. Fácil integração com diversos scripts do Matlab.