Software Livre

Apresentação da Disciplina

  • LEP- 01527 - Software Livre
    • Pré-requisito: LEP- 01447
    • Créditos: 4
    • Carga Horária: 68h (4*17)
  • Horários das aulas
      • Disciplinas optativas tem horário variável a cada semestre
  • Sala
    • Sala de aula do LDSC.
  • Equipamentos
    • Computadores com sistema operacional Gnu/Linux - Fedora.
  • Monitoria
      • Sem monitor

Resumo da Ementa

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.

Conteúdo Programático

  • Parte I- Filosofia e Tendências
    • 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.
  • Parte II- Instalação do GNU/Linux
    • Sistema operacional livre - instalação, configuração (ex: GNU/Linux) e comandos de terminal.
    • Sistema GNU/Linux, estrutura de arquivos, sistema de pacotes e comandos avançados.
  • Parte III- Programas gráficos
    • Interfaces gráficas. O que é uma interface gráfica, conceitos de uso (ex: GNOME,..).
    • Programas gráficos. Como processar imagens com programa gráfico. Montagem de imagens vetoriais (diagramas) (ex: Gimp, Dia, xfig, umbrello).
  • Parte IV- Programas Internet e Gestão
    • Programas de acesso a internet (navegador). Acesso e uso da internet, navegação, acesso a e-mails, envio de arquivos para nuvem, acesso remoto (telnet, ssh) (ex: gFTP, wget, chrome, ..).
    • Controle de tarefas: Agenda eletrônica, controle de tarefas (ferramentas google).
    • Jogos: xadrez pela internet. (ex: chess).
  • Parte V: Programas de Engenharia e Programação
    • Programas de engenharia e matemática. Como montar sistemas de equações e sua solução usando programas matemáticos (ex: gnuplot, octave, scilab,..).
    • Desenvolvimento de software – compiladores, debugger, profiler, cmake. Instalação e uso de ambientes de desenvolvimento (ex: instalação java, kdevelop).
  • Parte VI: Programas de Edição Profissional
    • Edição de texto. Edição de texto básica (ex: emacs, kwrite, gedit).
    • Edição profissional de documentos científicos. Edição de teses e dissertações, artigos (ex: tex, latex, lyx).

Nota: Os programas a serem abordados em sala de aula serão os programas atuais. Os exemplos dentro dos parenteses referem-se a alguns dos programas disponíveis em 2016.

  • A avaliação será realizada através de provas teóricas, práticas, trabalhos de aula e seminários. 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 métodos numéricos e programação orientada a objeto com C++.
  • Os exercícios e trabalhos de aula serão relacionados a área de métodos numéricos, e análise de imagens. Fazendo-se um link com as disciplinas de métodos numéricos e análise de imagens.

Avaliações

  • 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.

Lista de Programas a Serem Utilizados

  • Sistema operacional
  • 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 Extra

Bibliografia

  • 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.

Exemplo o Sistema Operacional Livre GNU/Linux/Fedora

    • No exemplo a seguir, o site do FEDORA, uma distribuição livre do sistema operacional GNU/Linux. Usada em nossas salas de aula.

Exemplo o Software Livre LyX - Editor de Texto Acadêmico Profissional

    • 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.

Exemplo o Software Livre Kate - Usado no Desenvolvimento de Pequenos Programas

    • No exemplo a seguir, imagem do editor de texto Kate manipulando um arquivo de código em C++.

Exemplo o Software Livre Gnuplot - Usado para Montagem de Gráficos Profissionais

    • 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.