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