Informações da Disciplina

 Preparar para impressão 

Júpiter - Sistema de Gestão Acadêmica da Pró-Reitoria de Graduação


Escola de Engenharia de São Carlos
 
Engenharia Elétrica e de Computação
 
Disciplina: SEL0456 - Técnicas em Desenvolvimento de Software Livre
Software development Techniques

Créditos Aula: 4
Créditos Trabalho: 2
Carga Horária Total: 120 h
Tipo: Semestral
Ativação: 15/07/2023 Desativação: 31/12/2024

Objetivos
Desenvolver as habilidades de desenvolvimento de software empregando técnicas de programação orientada a objetos e de programação funcional. Apresentar as bibliotecas de desenvolvimento de aplicações de alto nível. Discutir as questões de licenças de softwares e suas implicações habilitando o aluno a distinguir os diferentes tipos de licença. Desenvolver a habilidade de se trabalhar com os ecossistemas de desenvolvimento de software que empregam os conceitos mais modernos da área, como desenvolvimento colaborativo, testes, otimização, depuração, dependência e distribuição.
 
 
 
Docente(s) Responsável(eis)
959351 - José Roberto Boffino de Almeida Monteiro
 
Programa Resumido
. Conceitos básicos de sistemas operacionais.
. Tipos de núcleos (kernel).
. Conceitos básicos de programação orientada a objetos.
. Conceitos básicos de programação funcional.
. Ferramentas de auxílio ao do processo de produção e testes de software.
. Ferramentas para o desenvolvimento de software colaborativo: controle deversões distribuída.
 
 
 
Programa
. Tipos principais de licenças de software.Abordagens de aprendizado de linguagens de programação: orientada a tarefas ou exemplos o orientada a componentes:
. tipos de dados e operadores;
. controle de fluxo e exceções;
. escopo e definição de funções e operadores;
. definição de novos tipos de dados;
. biblioteca padrão e espaços de nomes; e ecossistemas de desenvolvimento.
. IDE com suporte a LSP (language server protocol).
. As principais famílias de linguagens: LISP e Algol. A família de linguagens LISP, alguns exemplos em Common-LISP e Scheme.
. Programação funcional vs. programação imperativa, exemplos em Python e LISP.
, Sistema para controle de versão e desenvolvimento colaborativo: git.
. Programação orientada a objetos, conceitos principais, linguagens e suporte a OOP.
. Processos, threads e sincronização entre tarefas: semáforos e mutexes, spinlocks, etc.
. Comunicação entre processos: pipe, queue, sockets e shared memory.
. Criação de aplicativos utilizando biblioteca gŕafica GTK.
 
 
 
Avaliação
     
Método
Avaliação: Trabalhos e seminários. Método: A realização de seminários durante o curso tem como objetivo proporcionar a discussão de conceitos chave entre o professor e os alunos, onde sua avaliação deverá considerar a profundidade alcançada pelos alunos ao abordar o tema escolhido. Os quesitos considerados para a avaliação dos trabalhos e do trabalho final são: a efetiva inclusão e elaboração dos elementos e conceitos discutidos em sala de aula, evidenciando o aprendizado e evolução do aluno, a funcionalidade alcançãda que deverá ser devidamente demonstrada e sua completa documentação.
Critério
Média ponderada entre seminários, com peso 1, trabalhos com peso 3 e trabalho final, com peso 4. Critério de Aprovação: Média ponderada de todas as avaliações deve ser maior ou igual a 5,0 (cinco).
Norma de Recuperação
Disciplina sem recuperação.
 
Bibliografia
     
 Bil Lewis, Dan LaLiberte, R. Stallman. “Emacs LISP Reference Manual”, Free Software Foundation, Boston 2022.
 Luiciano Ramalho, “Python Fluente”, Novatec Editora, 2015.
 Mauricio Ayala-Rincón, Flávio Leonardo Cavalcanti De Moura, “Fundamentos da Programação Lógica e Funcional”, Editora UnB; 1a edição, 2014.
 Richard E. Silverman. “Git: Guia Prático”, Novatec Editora; 1a Edição (5 abril 2019).
 Edmund Weitz. “Common Lisp Recipes: A Problem-Solution Approach”, Apress; 1st ed. Edição (1 janeiro 2016).
 Paul Graham. “On LISP: Advanced Techniques for Common LISP”. Pearson (9 setembro 1993).
 Harley Hahn . “Harley Hahn's Emacs Field Guide”. Apress; 1a Edição (21 dezembro 2015)
 Steven F. Lott, “Modern Python Cookbook”, Packt Publishing; 2o edição, 2020.

Complementar:
 Michael Kerrisk, “The Linux Programming Interface: A Linux and UNIX System Programming Handbook”. No Starch Press; 1a Edição (27 outubro 2010).
 Paul Deitel, Harvey Deitel. “C: Como Programar”, Pearson Universidades; 6a Edição (25 junho 2011).
 Joel Murach, Mary Delamater. “Murach's C++ Programming”, Mike Murach and Associates, Inc. (28 setembro 2018).
 

Clique para consultar os requisitos para SEL0456

Clique para consultar o oferecimento para SEL0456

Créditos | Fale conosco
© 1999 - 2024 - Superintendência de Tecnologia da Informação/USP