1. 1º Semestre
    1. Fundamentos de Programação
      1. Lógica de programação: Compreensão da estrutura lógica que orienta a resolução de problemas por meio da programação.
      2. Algoritmos: Desenvolvimento de sequências de passos para solucionar problemas e realizar tarefas computacionais.
      3. Linguagens de programação: Introdução às linguagens de programação, como Python, Java, C++, entre outras, e suas sintaxes básicas.
      4. Variáveis e tipos de dados: Conceitos sobre variáveis, tipos de dados (inteiros, caracteres, booleanos, etc.) e como usá-los em programas.
      5. Estruturas de controle: Conhecimento de estruturas condicionais (if-else) e de repetição (loops) para controlar o fluxo de execução do programa.
      6. Funções: Aprender a criar e utilizar funções, que são blocos de código reutilizáveis que podem ser chamados em diferentes partes do programa.
      7. Resolução de problemas: Desenvolvimento de habilidades para quebrar problemas complexos em etapas menores e abordá-los de forma mais organizada e eficiente.
    2. Lógica de Programação
      1. Algoritmos: Sequências de passos lógicos para resolver problemas e realizar tarefas computacionais.
      2. Variáveis: Espaços na memória para armazenar dados que serão utilizados pelo programa.
      3. Tipos de Dados: Definição dos diferentes tipos de informações que podem ser manipuladas pelo programa, como números inteiros, números de ponto flutuante, caracteres, booleanos, etc.
      4. Operadores: Símbolos utilizados para realizar operações matemáticas e lógicas, como adição, subtração, multiplicação, igualdade, etc.
      5. Estruturas Condicionais: Uso de comandos como "if", "else" e "else if" para permitir que o programa tome decisões baseadas em condições específicas.
      6. Estruturas de Repetição: Utilização de loops, como "while" e "for", para repetir um conjunto de instruções até que uma condição seja satisfeita.
      7. Sub-rotinas: Criação de blocos de código reutilizáveis, chamados de funções ou procedimentos, para modularizar o programa.
    3. Matemática Aplicada
      1. Modelagem matemática: Criação de modelos matemáticos para representar situações do mundo real e prever comportamentos futuros.
      2. Análise de dados: Utilização de técnicas estatísticas para analisar grandes conjuntos de dados e extrair informações relevantes.
      3. Otimização: Aplicação de métodos matemáticos para encontrar a melhor solução possível para um problema, sujeito a restrições específicas.
      4. Teoria das probabilidades: Estudo de eventos aleatórios e cálculo de probabilidades para auxiliar na análise de risco e incerteza.
      5. Equações diferenciais: Utilização de equações diferenciais para modelar fenômenos que envolvem taxas de mudança.
      6. Processos estocásticos: Estudo de sistemas que evoluem aleatoriamente ao longo do tempo.
      7. Dinâmica de sistemas: Análise do comportamento de sistemas complexos ao longo do tempo.
    4. Arquitetura de Computadores
      1. Unidade Central de Processamento (CPU): Estudo da CPU, que é responsável por executar as instruções dos programas e realizar operações lógicas e aritméticas.
      2. Memória: Compreensão dos diferentes tipos de memória utilizados em computadores, como memória RAM, memória cache e memória secundária.
      3. Barramentos: Estudo dos caminhos de comunicação entre os componentes do computador, como barramento de dados, barramento de endereços e barramento de controle.
      4. Conjunto de Instruções: Análise das instruções que a CPU pode executar e como elas são codificadas.
      5. Hierarquia de memória: Compreensão da organização hierárquica da memória, visando o acesso mais rápido e eficiente aos dados.
      6. Periféricos: Estudo dos dispositivos de entrada e saída que permitem a interação do computador com o mundo externo, como teclado, mouse, monitor, impressora, etc.
      7. Arquiteturas paralelas e distribuídas: Introdução a conceitos de processamento paralelo e distribuído para melhorar o desempenho dos computadores.
      8. Organização e interconexão de componentes: Compreensão da organização geral do computador e a interconexão entre seus componentes principais.
    5. Comunicação e Expressão
      1. Comunicação verbal: Desenvolvimento das habilidades de fala e expressão oral, incluindo a capacidade de articular ideias de maneira coerente e persuasiva.
      2. Comunicação escrita: Aprendizado de técnicas para redigir textos claros, organizados e gramaticalmente corretos, tais como ensaios, relatórios e e-mails profissionais.
      3. Leitura e interpretação de textos: Desenvolvimento da capacidade de compreender e analisar textos diversos, identificando pontos-chave, argumentos e estrutura.
      4. Linguagem adequada: Instrução sobre o uso apropriado da linguagem, considerando o público-alvo e o contexto da comunicação.
      5. Apresentações em público: Treinamento para falar em público com confiança, organização e clareza.
      6. Escrita acadêmica: Introdução às normas e convenções da escrita acadêmica, como citações e referências bibliográficas.
      7. Comunicação não verbal: Exploração da importância da linguagem corporal, gestos e expressões faciais na comunicação efetiva.
  2. 2º Semestre:
    1. Programação Orientada a Objetos
      1. Classe: É uma estrutura que define um tipo de objeto. Ela contém atributos (variáveis) que representam os dados do objeto e métodos (funções) que definem o comportamento do objeto.
      2. Objeto: É uma instância de uma classe, ou seja, um objeto é criado a partir da definição da classe e representa uma entidade real ou conceitual com seus dados e comportamentos.
      3. Encapsulamento: É o conceito de ocultar os detalhes internos de uma classe e permitir o acesso aos dados e comportamentos apenas através de interfaces bem definidas.
      4. Herança: É a capacidade de uma classe herdar atributos e métodos de outra classe, permitindo a criação de hierarquias de classes.
      5. Polimorfismo: Permite que objetos de diferentes classes sejam tratados de forma uniforme, através do uso de interfaces comuns ou sobrecarga de métodos.
    2. Banco de Dados
      1. Tabelas: As informações são organizadas em tabelas, que são estruturas retangulares compostas por linhas (registros) e colunas (atributos).
      2. Registros: Cada linha em uma tabela representa um registro individual contendo um conjunto de informações específicas.
      3. Atributos: As colunas de uma tabela representam os atributos ou características dos registros, como nome, idade, endereço, etc.
      4. Chaves: Uma chave é um atributo que identifica de forma única cada registro em uma tabela. Chaves primárias são utilizadas para identificação única, enquanto chaves estrangeiras estabelecem relações entre diferentes tabelas.
      5. Linguagem SQL: É uma linguagem de consulta que permite acessar, inserir, atualizar e excluir dados em bancos de dados relacionais.
      6. Modelo Relacional: É um modelo de banco de dados que representa as relações entre diferentes tabelas por meio de chaves primárias e estrangeiras.
      7. Normalização: É o processo de organização de tabelas em bancos de dados para evitar redundância e inconsistência de dados.
    3. Estrutura de Dados
      1. Listas: Sequências ordenadas de elementos, onde cada elemento pode ser acessado por sua posição na lista.
      2. Pilhas: Uma coleção de elementos organizados em uma ordem específica, onde o último elemento adicionado é o primeiro a ser removido (LIFO - Last In, First Out).
      3. Filas: Uma coleção de elementos organizados em uma ordem específica, onde o primeiro elemento adicionado é o primeiro a ser removido (FIFO - First In, First Out).
      4. Árvores: Estruturas hierárquicas compostas por nós, onde cada nó possui um ou mais nós filhos.
      5. Grafos: Conjuntos de nós (vértices) conectados por arestas, representando relações entre os elementos.
      6. Tabelas Hash: Estruturas que mapeiam chaves a valores, permitindo acesso rápido aos dados através de uma função de hash.
      7. Listas Ligadas: Sequências de elementos, onde cada elemento contém uma referência ao próximo elemento na sequência.
    4. Sistemas Operacionais
      1. Gerenciamento de Processos: O SO gerencia a execução dos processos (programas em execução) e coordena o compartilhamento de recursos do sistema entre eles.
      2. Gerenciamento de Memória: É responsável por alocar e desalocar memória para os processos e garantir a proteção dos espaços de memória uns contra os outros.
      3. Gerenciamento de Dispositivos: Controla a comunicação entre o software e os dispositivos de entrada e saída, permitindo que os aplicativos interajam com o hardware.
      4. Sistema de Arquivos: Gerencia a organização e o acesso aos dados armazenados em dispositivos de armazenamento, como discos rígidos.
      5. Interface de Usuário: Fornece uma interface gráfica ou de linha de comando para os usuários interagirem com o sistema e os aplicativos.
      6. Segurança: Implementa mecanismos de segurança para proteger os dados e garantir que os recursos do sistema sejam utilizados de forma autorizada.
      7. Agendamento de Processos: Decide qual processo será executado e por quanto tempo, otimizando o uso da CPU e garantindo que todos os processos sejam atendidos.
    5. Redes de Computadores
      1. Protocolos: São conjuntos de regras e convenções que governam a comunicação entre os dispositivos na rede. Exemplos incluem o protocolo TCP/IP, usado na Internet, e o protocolo Ethernet, utilizado em redes locais.
      2. Roteadores e Switches: São dispositivos de rede que encaminham dados entre os diferentes segmentos da rede. Os roteadores conectam redes diferentes, enquanto os switches conectam dispositivos dentro da mesma rede.
      3. Topologias de Rede: Refere-se à estrutura física ou lógica da rede, como estrela, anel ou malha.
      4. Endereçamento IP: Cada dispositivo conectado a uma rede possui um endereço IP exclusivo, permitindo a identificação e o roteamento dos dados.
      5. Modelo OSI e TCP/IP: São modelos de referência que definem as camadas e funcionalidades envolvidas na comunicação de rede.
      6. Segurança de Rede: Envolve a proteção dos dados e a prevenção de acessos não autorizados à rede e aos dispositivos conectados.
      7. Internet: É uma vasta rede global de computadores interconectados, permitindo a comunicação e o compartilhamento de recursos em escala mundial.
  3. 3º Semestre:
    1. Desenvolvimento Web
      1. Linguagens de marcação: HTML (Hypertext Markup Language) é usada para criar a estrutura e o conteúdo da página web, enquanto o CSS (Cascading Style Sheets) é usado para estilizar e formatar a aparência do conteúdo.
      2. Linguagens de programação: JavaScript é a principal linguagem de programação para adicionar interatividade e comportamento dinâmico às páginas web.
      3. Backend e Frontend: O desenvolvimento web é dividido em duas partes principais - backend, que lida com a lógica e a funcionalidade do servidor, e frontend, que lida com a interface do usuário e a interação do cliente.
      4. Frameworks: São conjuntos de bibliotecas e ferramentas que facilitam o desenvolvimento web, como React, Angular e Vue.js para o frontend, e Node.js, Django e Ruby on Rails para o backend.
      5. Bancos de Dados: São utilizados para armazenar e recuperar informações em aplicações web. Exemplos incluem MySQL, PostgreSQL, MongoDB, entre outros.
      6. API (Application Programming Interface): São interfaces que permitem a comunicação entre diferentes sistemas e aplicações, possibilitando a integração de serviços.
      7. Segurança: É uma preocupação importante no desenvolvimento web, envolvendo práticas para proteger as aplicações contra vulnerabilidades e ataques.
    2. Análise de Sistemas
      1. Levantamento de Requisitos: Compreender e documentar as necessidades dos usuários e da organização para o desenvolvimento do sistema.
      2. Modelagem de Processos: Representar graficamente os fluxos de trabalho e processos de negócio envolvidos no sistema.
      3. Projeto de Software: Definir a arquitetura e o design do sistema, determinando a estrutura e as funcionalidades.
      4. Integração de Tecnologias: Avaliar e selecionar as tecnologias e ferramentas adequadas para o desenvolvimento do sistema.
      5. Testes e Validação: Realizar testes para garantir que o sistema funcione corretamente e atenda aos requisitos.
      6. Implantação e Manutenção: Implementar o sistema em ambiente de produção e realizar a manutenção contínua para corrigir problemas e adicionar novas funcionalidades.
      7. Gerenciamento de Projetos: Planejar e coordenar todas as etapas do desenvolvimento do sistema, garantindo a entrega dentro do prazo e orçamento estabelecidos.
    3. Engenharia de Software
      1. Processos de Desenvolvimento de Software: São abordagens e metodologias utilizadas para guiar o desenvolvimento do software, como o modelo em cascata, desenvolvimento ágil, DevOps, entre outros.
      2. Gerenciamento de Projetos de Software: Envolve o planejamento, coordenação e controle de todas as atividades envolvidas no desenvolvimento do software, incluindo estimativas de tempo e recursos, rastreamento de progresso e gerenciamento de riscos.
      3. Análise de Requisitos: Compreender e documentar as necessidades dos usuários e das partes interessadas para garantir que o software desenvolvido atenda aos requisitos e expectativas.
      4. Design e Arquitetura de Software: Definir a estrutura e a organização do sistema, dividindo-o em componentes reutilizáveis e de fácil manutenção.
      5. Testes de Software: Realizar testes para garantir que o software funcione corretamente, esteja livre de erros e atenda aos requisitos especificados.
      6. Manutenção de Software: Realizar atividades de correção, aprimoramento e atualização contínua do software após a sua implantação.
      7. Controle de Qualidade: Implementar práticas e padrões para garantir a qualidade do software em todas as etapas do desenvolvimento.
    4. Interface Homem-Máquina (IHM)
      1. Elementos Gráficos: Botões, menus, barras de rolagem, caixas de diálogo e ícones que permitem aos usuários interagir com o sistema.
      2. Layout e Design: Organização visual dos elementos na interface para facilitar a compreensão e a usabilidade.
      3. Feedback Visual: Respostas visuais do sistema aos comandos do usuário, como mudanças de cor, animações ou ícones que indicam o estado ou o progresso das operações.
      4. Feedback Sonoro: Efeitos sonoros para fornecer feedback auditivo ao usuário sobre suas ações e eventos do sistema.
      5. Navegação: Métodos de navegação e fluxos de interação que facilitam a movimentação entre diferentes telas e funcionalidades do sistema.
      6. Interação Multitoque: Suporte para interações baseadas em toques, como gestos em telas sensíveis ao toque.
      7. Acessibilidade: Consideração de recursos que tornam a interface acessível a todos os usuários, incluindo aqueles com deficiências visuais, auditivas ou motoras.
    5. Gestão de Projetos
      1. Definição do Escopo: Determinação clara dos objetivos, entregas e limites do projeto.
      2. Estimativa de Recursos: Avaliação dos recursos necessários, como pessoal, equipamentos e materiais.
      3. Cronograma: Criação de um cronograma detalhado com as atividades e suas durações.
      4. Alocação de Tarefas: Designação de responsabilidades e tarefas para as pessoas envolvidas no projeto.
      5. Orçamento: Estabelecimento do orçamento do projeto e controle dos custos ao longo do desenvolvimento.
      6. Gerenciamento de Riscos: Identificação, análise e mitigação de riscos que podem afetar o projeto.
      7. Monitoramento e Controle: Acompanhamento regular do progresso do projeto e ajustes necessários para garantir a conclusão bem-sucedida.
      8. Comunicação: Manutenção de uma comunicação clara e eficaz com a equipe e partes interessadas do projeto.
  4. 4º Semestre:
    1. Desenvolvimento Mobile
      1. Linguagens de Programação: Para desenvolvimento nativo, as linguagens comuns incluem Java ou Kotlin para Android e Swift ou Objective-C para iOS. Para o desenvolvimento híbrido, são utilizadas linguagens como JavaScript, HTML e CSS.
      2. Frameworks e Bibliotecas: Para agilizar o desenvolvimento, são utilizados frameworks e bibliotecas, como React Native, Flutter ou Xamarin, que permitem criar aplicativos para múltiplas plataformas usando uma única base de código.
      3. Design Responsivo: É importante criar interfaces de usuário adaptáveis a diferentes tamanhos de tela e resoluções, garantindo uma experiência consistente em dispositivos móveis.
      4. Integração de Recursos do Dispositivo: O desenvolvimento mobile permite acessar recursos do dispositivo, como câmera, GPS, acelerômetro e notificações push.
      5. Testes: A realização de testes é crucial para garantir a qualidade dos aplicativos móveis, incluindo testes funcionais, de usabilidade e de desempenho.
      6. Distribuição de Aplicativos: Os aplicativos podem ser disponibilizados nas lojas de aplicativos (App Store para iOS e Google Play Store para Android) ou distribuídos internamente em empresas.
    2. Linguagens de Programação para Web
      1. HTML (Hypertext Markup Language): É a linguagem básica utilizada para criar a estrutura e o conteúdo de páginas web.
      2. CSS (Cascading Style Sheets): É usada para estilizar e formatar a aparência das páginas web, controlando o layout, cores, fontes, efeitos visuais, entre outros.
      3. JavaScript: É uma linguagem de programação client-side que permite adicionar interatividade e comportamento dinâmico às páginas web. É amplamente utilizado para validar formulários, criar animações, modificar conteúdo da página em tempo real e muito mais.
      4. PHP: É uma linguagem de programação server-side amplamente usada para desenvolver aplicativos web dinâmicos. Ela é executada no servidor e pode gerar conteúdo dinâmico que é enviado para o cliente.
      5. Python: É uma linguagem de programação versátil que também pode ser usada para desenvolvimento web, especialmente com frameworks como Django e Flask.
      6. Ruby: É outra linguagem de programação popular para desenvolvimento web, com o framework Ruby on Rails sendo uma escolha comum para criação rápida de aplicações web.
      7. Java: É amplamente utilizado em desenvolvimento web com o uso de frameworks como Spring e JavaServer Faces (JSF).
      8. TypeScript: É uma extensão do JavaScript que adiciona recursos de tipagem estática, tornando o desenvolvimento de aplicativos web mais robusto e seguro.
      9. Go: É uma linguagem de programação desenvolvida pelo Google que está ganhando popularidade em desenvolvimento web devido à sua eficiência e desempenho.
      10. C#: É frequentemente usado no desenvolvimento web em combinação com o framework ASP.NET da Microsoft.
    3. Segurança da Informação
      1. Confidencialidade: Garantir que as informações sejam acessíveis somente por pessoas autorizadas e que medidas sejam tomadas para evitar acesso não autorizado.
      2. Integridade: Assegurar que os dados e sistemas sejam precisos, completos e livres de alterações não autorizadas.
      3. Disponibilidade: Manter os recursos de informação e sistemas disponíveis para uso quando necessário.
      4. Autenticação e Controle de Acesso: Implementar métodos de autenticação seguros para garantir que apenas usuários autorizados tenham acesso aos recursos.
      5. Criptografia: Proteger dados sensíveis através da codificação, tornando-os ilegíveis para qualquer pessoa sem a chave de descriptografia.
      6. Gerenciamento de Riscos: Identificar e avaliar os riscos de segurança e implementar medidas para mitigá-los.
      7. Monitoramento e Detecção de Incidentes: Estabelecer sistemas de monitoramento para identificar e responder a eventos de segurança em tempo hábil.
      8. Conscientização e Treinamento: Educar os usuários e a equipe sobre as melhores práticas de segurança da informação e como evitar ameaças.
    4. Empreendedorismo
      1. Inovação: Os empreendedores são frequentemente impulsionados pela vontade de inovar e criar soluções únicas para problemas existentes ou atender a novas demandas do mercado.
      2. Assumir Riscos: Empreender envolve assumir riscos financeiros e incertezas, sendo necessário lidar com a possibilidade de sucesso ou fracasso.
      3. Visão de Negócio: Ter uma visão clara do negócio e do mercado, entendendo as tendências e necessidades dos clientes.
      4. Resiliência: Os empreendedores enfrentam desafios e obstáculos ao longo do caminho, e a resiliência é importante para superar essas dificuldades.
      5. Liderança: Ser capaz de liderar e motivar equipes é fundamental para o sucesso do empreendimento.
      6. Networking: Construir uma rede de contatos profissionais é essencial para obter suporte, parcerias e oportunidades de negócio.
      7. Planejamento Estratégico: Desenvolver um plano de negócio bem estruturado, que contemple as metas, recursos e estratégias para alcançar o sucesso.
      8. Foco no Cliente: Colocar o cliente no centro das decisões e criar soluções que atendam às suas necessidades e expectativas.
    5. Ética e Responsabilidade Profissional
      1. Integridade: Os profissionais devem agir com honestidade e transparência, evitando ações enganosas ou desonestas em suas atividades profissionais.
      2. Respeito: Devem tratar todos os indivíduos com dignidade e respeito, independentemente de sua origem, raça, gênero, religião ou posição social.
      3. Confidencialidade: É fundamental manter a privacidade e a confidencialidade das informações confiadas pelos clientes, colegas e empregadores.
      4. Competência Profissional: Os profissionais devem se esforçar para manter e aprimorar suas habilidades e conhecimentos, garantindo que estejam capacitados para desempenhar suas funções com excelência.
      5. Responsabilidade Social: Devem considerar o impacto de suas decisões e ações na sociedade e no meio ambiente, buscando contribuir para o bem-estar geral.
      6. Cumprimento de Leis e Normas: Devem agir de acordo com as leis, regulamentos e normas profissionais aplicáveis ao seu campo de atuação.
      7. Transparência e Prestação de Contas: Devem ser transparentes em suas ações e assumir a responsabilidade por suas decisões e resultados.
  5. 5º Semestre:
    1. Frameworks e Bibliotecas Front-end
      1. React: Desenvolvido pelo Facebook, o React é uma biblioteca JavaScript de código aberto amplamente utilizada para a criação de interfaces de usuário. Ele permite criar componentes reutilizáveis e atualizar somente as partes da página que precisam ser alteradas, proporcionando uma experiência rápida e fluida.
      2. Angular: Desenvolvido pelo Google, o Angular é um framework JavaScript completo para o desenvolvimento de aplicações web de grande escala. Ele oferece recursos poderosos, como injeção de dependências, duas vias de data binding e suporte para desenvolvimento de aplicações SPA (Single Page Application).
      3. Vue.js: Vue.js é um framework JavaScript progressivo e de fácil aprendizado que permite criar interfaces de usuário interativas. Ele é frequentemente usado em projetos menores e também pode ser adotado gradualmente em projetos existentes.
      4. jQuery: jQuery é uma biblioteca JavaScript que simplifica a manipulação do DOM (Document Object Model) e interações com elementos HTML. Embora sua popularidade tenha diminuído com a ascensão de frameworks modernos, ainda é amplamente usado em projetos legados.
      5. Bootstrap: Bootstrap é um framework CSS que oferece uma variedade de estilos e componentes prontos para uso, permitindo criar layouts responsivos e atraentes rapidamente.
      6. Material-UI: Baseado no conceito de Material Design do Google, o Material-UI é uma biblioteca de componentes React que oferece uma abordagem visual moderna e consistente para o design de interfaces.
      7. SASS/LESS: São preprocessadores de CSS que estendem a sintaxe do CSS, permitindo o uso de variáveis, funções, mixins e outras funcionalidades para tornar o código CSS mais organizado e reutilizável.
      8. Esses frameworks e bibliotecas front-end são amplamente utilizados pela comunidade de desenvolvedores web, e a escolha de qual usar dependerá das necessidades específicas do projeto e das preferências da equipe de desenvolvimento. Eles permitem acelerar o desenvolvimento, manter um código mais limpo e modular, além de oferecer uma experiência de usuário mais agradável e responsiva.
    2. Desenvolvimento de Aplicações Distribuídas
      1. Comunicação em Rede: Os componentes da aplicação precisam se comunicar através da rede para trocar dados e coordenar suas atividades.
      2. Middleware: É uma camada de software que facilita a comunicação e a integração entre os componentes distribuídos.
      3. Tolerância a Falhas: As aplicações distribuídas devem ser projetadas para lidar com falhas de comunicação ou de componentes de forma resiliente e recuperável.
      4. Escalabilidade: A capacidade de adicionar recursos e dimensionar a aplicação conforme a demanda, suportando um número crescente de usuários e cargas de trabalho.
      5. Segurança: A aplicação deve garantir a segurança das comunicações e dos dados em um ambiente distribuído, protegendo contra ameaças e acessos não autorizados.
      6. Consistência de Dados: É necessário garantir que os dados sejam consistentes entre os componentes distribuídos, evitando conflitos e inconsistências.
      7. Protocolos e Padrões: O desenvolvimento de aplicações distribuídas frequentemente envolve o uso de protocolos e padrões de comunicação, como REST, SOAP, gRPC, entre outros.
    3. Qualidade de Software
      1. Funcionalidade: O software deve atender a todos os requisitos funcionais especificados, ou seja, ele deve realizar todas as tarefas e funcionalidades esperadas.
      2. Usabilidade: O software deve ser fácil de usar e compreender, proporcionando uma experiência positiva aos usuários.
      3. Confiabilidade: O software deve ser confiável e ter um bom desempenho em diferentes situações e ambientes.
      4. Eficiência: O software deve ser otimizado em termos de tempo de resposta, consumo de recursos e desempenho geral.
      5. Manutenibilidade: O software deve ser facilmente mantido e atualizado, permitindo a correção de defeitos e a implementação de novas funcionalidades.
      6. Portabilidade: O software deve ser capaz de funcionar em diferentes plataformas e sistemas operacionais.
      7. Segurança: O software deve ser projetado com medidas de segurança adequadas para proteger os dados e os usuários de ameaças e ataques.
    4. Inteligência Artificial e Machine Learning
      1. Inteligência Artificial (IA):
        1. É o campo da ciência da computação que busca criar sistemas que possam realizar tarefas que normalmente exigiriam inteligência humana.
        2. Envolve o desenvolvimento de algoritmos e modelos que permitem aos computadores entender, raciocinar, aprender e adaptar-se com base em dados e experiências.
        3. Inclui várias abordagens, como aprendizado de máquina, processamento de linguagem natural, visão computacional e planejamento.
      2. Aprendizado de Máquina (Machine Learning):
        1. É uma subárea da IA que se concentra na construção de sistemas que podem aprender a partir de dados, identificar padrões e fazer previsões sem serem explicitamente programados.
        2. O aprendizado de máquina é baseado na criação de modelos estatísticos e algoritmos que permitem aos computadores aprender com exemplos e melhorar o desempenho ao longo do tempo.
        3. Existem três tipos principais de aprendizado de máquina: supervisionado, não supervisionado e por reforço.
    5. Estatística Aplicada
      1. Descrição de Dados: Resumo e apresentação de dados em gráficos, tabelas e medidas estatísticas, como média, mediana, desvio padrão, entre outros.
      2. Teste de Hipóteses: Avaliação da validade de afirmações ou hipóteses com base em dados amostrais.
      3. Análise de Regressão: Identificação de relações entre variáveis e a construção de modelos que possam prever ou explicar comportamentos futuros.
      4. Análise de Variância (ANOVA): Comparação de médias de diferentes grupos para determinar se há diferenças estatisticamente significativas entre eles.
      5. Probabilidade: Estudo de eventos aleatórios e a sua probabilidade de ocorrência.
      6. Estatística Inferencial: Estimação de parâmetros populacionais a partir de amostras e a obtenção de conclusões sobre toda a população.
      7. Controle de Qualidade: Utilização de ferramentas estatísticas para monitorar e melhorar a qualidade de produtos e processos.
  6. 6º Semestre:
    1. Análise e Modelagem de Sistemas
      1. Levantamento de Requisitos: Entendimento das necessidades dos usuários e das partes interessadas para definir os requisitos funcionais e não funcionais do sistema.
      2. Modelagem de Processos: Representação gráfica dos fluxos de trabalho e processos do sistema, ajudando a visualizar as interações e a lógica de funcionamento.
      3. Diagramas de Casos de Uso: Identificação das principais funcionalidades e interações do sistema por meio de diagramas de casos de uso.
      4. Modelagem de Dados: Definição da estrutura de dados e das entidades relevantes do sistema por meio de diagramas de entidade-relacionamento ou outros modelos de dados.
      5. Prototipagem: Criação de protótipos e modelos iniciais do sistema para validar e aprimorar os requisitos com os usuários.
      6. Análise de Requisitos: Avaliação dos requisitos para garantir sua consistência, completude e correta interpretação.
      7. Especificação de Requisitos: Documentação detalhada dos requisitos e especificações funcionais do sistema para orientar a etapa de desenvolvimento.
      8. Validação e Verificação: Garantia de que os requisitos capturados e os modelos desenvolvidos são precisos e adequados às necessidades do sistema.
    2. Testes de Software
      1. Testes Unitários: São focados em verificar a correta funcionalidade de unidades individuais de código (módulos ou classes) para garantir que elas funcionem conforme o esperado.
      2. Testes de Integração: São realizados para verificar a interação entre unidades de código ou componentes integrados para garantir que eles funcionem em conjunto de forma adequada.
      3. Testes de Sistema: São realizados em todo o sistema para verificar se ele atende aos requisitos especificados, incluindo funcionalidades, desempenho e segurança.
      4. Testes de Aceitação do Usuário (UAT): São conduzidos pelos usuários finais para validar se o software está de acordo com suas necessidades e expectativas.
      5. Testes de Desempenho: Verificam o desempenho do software em diferentes cenários de uso, identificando possíveis gargalos e problemas de escalabilidade.
      6. Testes de Segurança: Buscam identificar vulnerabilidades de segurança e garantir que o software esteja protegido contra ameaças.
      7. Testes de Usabilidade: Avaliam a facilidade de uso e a experiência do usuário para garantir que o software seja intuitivo e amigável.
      8. Testes de Regressão: São executados após a implementação de novas funcionalidades ou correção de defeitos para garantir que as alterações não impactem negativamente no restante do sistema.
    3. Computação em Nuvem
      1. Existem três principais modelos de serviço na computação em nuvem:
        1. Infraestrutura como Serviço (IaaS): Nesse modelo, os provedores oferecem infraestrutura de TI sob demanda, como servidores virtuais, armazenamento e redes. Os usuários podem criar e gerenciar suas próprias máquinas virtuais e sistemas operacionais, enquanto o provedor é responsável pela manutenção da infraestrutura física.
        2. Plataforma como Serviço (PaaS): Nesse modelo, os provedores fornecem uma plataforma completa de desenvolvimento e execução de aplicações, incluindo sistemas operacionais, bibliotecas, linguagens de programação e ferramentas. Os desenvolvedores podem se concentrar na criação de aplicações, sem se preocupar com a complexidade da infraestrutura subjacente.
        3. Software como Serviço (SaaS): Nesse modelo, os provedores oferecem aplicativos prontos para uso, acessíveis pela internet. Os usuários podem acessar esses aplicativos em seus navegadores, sem a necessidade de instalação ou manutenção local.
      2. Alguns dos principais benefícios da computação em nuvem incluem:
        1. Escalabilidade: Os recursos em nuvem podem ser escalados facilmente para cima ou para baixo, de acordo com a demanda, permitindo um uso eficiente dos recursos e evitando desperdício.
        2. Flexibilidade: Os usuários podem acessar os recursos em nuvem de qualquer lugar com conexão à internet e a partir de diferentes dispositivos, proporcionando maior mobilidade.
        3. Redução de Custos: A computação em nuvem permite que as empresas evitem grandes investimentos em infraestrutura física, pagando apenas pelos recursos utilizados.
        4. Atualizações Automáticas: Os provedores de nuvem são responsáveis por manter e atualizar a infraestrutura e os serviços, garantindo que os usuários tenham acesso às últimas versões e recursos.
        5. Segurança: Muitos provedores de nuvem oferecem medidas de segurança avançadas para proteger os dados e as aplicações dos usuários.
    4. Design de Interfaces
      1. Arquitetura da Informação: Organização das informações e conteúdos em uma estrutura lógica e hierárquica para facilitar a navegação e o acesso às informações.
      2. Design Visual (UI Design): Criação da aparência visual da interface, incluindo layouts, cores, tipografia, ícones e elementos gráficos para criar uma identidade visual atraente e coesa.
      3. Usabilidade: O design deve ser focado na usabilidade, garantindo que os usuários possam interagir facilmente com a interface, encontrar o que precisam e realizar suas tarefas de forma intuitiva.
      4. Fluxo do Usuário: Planejamento do fluxo de interações e ações que os usuários realizarão na interface, criando uma sequência lógica e fluente de eventos.
      5. Acessibilidade: Garantir que a interface seja acessível para todos os usuários, incluindo pessoas com deficiências, seguindo diretrizes de acessibilidade.
      6. Testes de Usabilidade: Realização de testes com usuários reais para avaliar a eficácia do design e identificar possíveis problemas ou melhorias.
      7. Responsividade: Adaptação do design para diferentes dispositivos e tamanhos de tela, garantindo que a interface seja funcional em smartphones, tablets e computadores.
      8. Interação e Animação: Adição de elementos interativos e animações para tornar a experiência mais envolvente e atrativa.
    5. Sistemas de Informação Gerenciais
      1. Coleta e Armazenamento de Dados: Os SIG coletam e armazenam dados de várias fontes, como transações comerciais, operações internas e fontes externas.
      2. Processamento de Dados: Os dados são processados e transformados em informações relevantes, utilizando técnicas como análise, cálculos e sumarização.
      3. Relatórios e Painéis de Controle: Os SIG geram relatórios e painéis de controle que fornecem uma visão geral das atividades da organização, permitindo que os gestores tomem decisões informadas.
      4. Apoio à Tomada de Decisões: Os SIG fornecem informações para apoiar a tomada de decisões estratégicas, táticas e operacionais em todos os níveis da organização.
      5. Integração de Dados: Os SIG podem integrar dados de diferentes sistemas e departamentos, proporcionando uma visão holística do desempenho da organização.
      6. Análise de Desempenho: Os SIG permitem a análise do desempenho da empresa ao longo do tempo e a identificação de tendências e padrões.
      7. Acesso Seguro: Os SIG garantem a segurança dos dados e o acesso apenas a usuários autorizados.
      8. Suporte à Colaboração: Os SIG podem facilitar a colaboração entre diferentes áreas e equipes dentro da organização.