FACULDADE EM

Engenharia de Software

Forma engenheiros de alto nível para uma demanda concreta do mercado: profissionais capazes de projetar e desenvolver soluções computacionais complexas. Você aprende o ciclo completo do desenvolvimento de sistemas, incluindo requisitos de software, design e arquitetura de software, construção e teste de software, manutenção e configuração de sistemas e gestão do próprio processo de engenharia de software. Há blocos específicos para engenharia disciplinada de software e engenharia de softwares escaláveis, além do programa cobrir Android, .NET, Java, Python e Front-end, tanto com metodologias preditivas quanto ágeis.

PRÓXIMA TURMA

05/10/2020

DIAS DA SEMANA

Segunda a Sexta

HORÁRIO

20h30 às 22h00

DISCIPLINAS E COMPETÊNCIAS

Projeto de Bloco: Engenharia Disciplinada de Softwares

  • Explicar o Disciplined Agile Delivery e sua relação com o Unified Process e outras metodologias de engenharia de software
  • Conceber um projeto de software
  • Levantar requisitos, escrever e testar casos de uso
  • Usar modelagem ágil
  • Implementar sucessivas iterações no desenvolvimento de um software
  • Aplicar design patterns no desenvolvimento de um sistema

 

Análise, Projeto e Construção Disciplinada de Softwares I

  • Explicar a engenharia de software ágil, interativa e evolutiva
  • Conceber um projeto de software: visão, escopo e requisitos iniciais
  • Projetar um software: modelagem de domínio e projeto de objetos
  • Implementar um software a partir de um projeto
  • Refinar um software em sucessivas iterações, aplicando design patterns

 

Melhores Práticas de Codificação

  • Debugar software
  • Explicar os melhores princípios, padrões e práticas de leitura, crítica e escrita de código limpo.
  • Melhorar um código com refinamento sucessivo
  • Melhorar o código de um framework público

 

Análise, Projeto e Construção Disciplinada de Softwares II

  • Aplicar princípios de responsabilidade e padrões de projeto GoF na evolução de um software
  • Refinar o projeto e modelagem de um software
  • Aplicar mais padrões e um framework de persistência com padrões em um projeto de software

 

Refatoração

  • Explicar o que é refatoração, suas as limitações e alcance em casos avançados
  • Explicar os princípios e heurísticas do código bom e da suspeição de código ruim
  • Construir testes sólidos
  • Aplicar refatorações no desenho de métodos, objetos, dados, expressões condicionais, chamadas de métodos e orientação a objetos

Projeto de Bloco: Computação e Inteligência Artificial

  • Criar jogos simples
  • Projetar um jogo que utilize inteligência artificial
  • Desenvolver um jogo com inteligência artificial

 

Inteligência artificial simbólica: fundamentos

  • Descrever os fundamentos da inteligência artificial e seus diversos tipos de aplicações
  • Explicar o que são grafos e seus usos em diferentes tipos de algoritmos
  • Descrever a natureza, o propósito e o funcionamento de agentes inteligentes
  • Resolver problemas de IA por meio de busca

 

Inteligência artificial em jogos: fundamentos

  • Descrever os fundamentos da utilização da inteligência artificial em jogos
  • Implementar algoritmos simples de inteligência artificial em jogos
  • Implementar algoritmos básicos de inteligência artificial em jogos

 

Inteligência Artificial simbólica: lógica, planejamento e ação

  • Resolver problemas de IA por meio de busca competitiva
  • Realizar representações e operações utilizando lógica proposicional
  • Implementar algoritmos utilizando grafos e lógica proposicional
  • Implementar agentes lógicos
  • Realizar representações e operações utilizando lógica de primeira ordem
  • Resolver problemas de planejamento e ação

 

Inteligência artificial em jogos: decisão e estratégia

  • Implementar algoritmos genéticos em jogos
  • Implementar algoritmos deep learning em jogos
  • Implementar algoritmos reinforcement learning em jogos

Projeto de Bloco: Engenharia de Softwares Escaláveis

  • Descrever e aplicar as cinco forças de Porter que moldam a estratégia em projetos de software escaláveis
  • Projetar e implementar o modelo Canvas para projetos de software escaláveis
  • Aplicar o conceito de Desenvolvimento de Clientes em projetos de software escaláveis
  • Analisar e aplicar escalabilidade em projetos de software com regras de negócio complexas

 

Desenvolvimento de Software Ágil e Escalável com Microsserviços

  • Projetar arquitetura de software orientada a serviços
  • Projetar microsserviços
  • Desenvolver e documentar APIs de microsserviços
  • Consumir e publicar APIs de microsserviços

 

Algoritmos Avançados

  • Analisar e construir software com estruturas de dados: listas, pilhas, filas, hash tables
  • Analisar complexidade de algoritmos
  • Analisar e projetar algoritmos de busca e ordenação
  • Projetar algoritmos com técnicas de algoritmos gulosos, divisão e conquista, programação dinâmica e algoritmos genéticos
  • Analisar e reconhecer problemas P, NP e NP-Completos

 

Melhores Práticas em DevOps

  • Projetar software para integração e entrega contínua
  • Implementar software para integração e entrega contínua
  • Automatizar testes e realizar testes contínuos
  • Monitorar software proativamente

 

Segurança no Processo e Desenvolvimento de Software

  • Especificar requisitos software orientados a riscos
  • Especificar segurança, confiabilidade e proteção de software
  • Codificar para web com segurança
  • Codificar regras de negócio com segurança

Projeto de Bloco: Desenvolvimento Front-End

  • Explicar como as melhores práticas da engenharia de software se relacionam com o desenvolvimento de front-ends Web
  • Aplicar a metodologia de desenvolvimento extreme programming no desenvolvimento (XP) de um front-end Web
  • Planejar um projeto de desenvolvimento de front-end Web
  • Desenvolver um front-end Web utilizando HTML, CSS, JavaScript e implementando acessibilidade e as melhores práticas de interação humano-computador.

 

Interfaces com HTML e CSS

  • Desenvolver interfaces para a Web utilizando HTML
  • Aplicar estilos para páginas Web com CSS
  • Desenvolver interfaces para a Web seguindo padrões
  • Desenvolver aplicações Web progressivas

 

Fundamentos do Desenvolvimento JavaScript

  • Desenvolver algoritmos sequenciais, condicionais e de repetição com JavaScript
  • Desenvolver algoritmos com números, datas, texto formatado e expressões regulares em JavaScript
  • Desenvolver algoritmos coleções indexadas e chaveadas em JavaScript
  • Desenvolver aplicações JavaScript integradas com interfaces Web

 

Interação Humano-Computador para Desenvolvimento Front-end Web

  • Analisar criticamente diferentes aplicações Web em relação aos conceitos e paradigmas da interação humano-computador.
  • Aplicar as etapas do processo de design de front-end
  • Prototipar front-ends Web adotando normas de acessibilidade e as melhores práticas de IHC
  • Refinar protótipos de front-ends Web adotando as melhores práticas de IHC

 

Frameworks Front-End e Conexão com Back-End

  • Desenvolver aplicações Web responsivas e progressivas com Vue.js e Web APIs
  • Desenvolver roteamento de navegação e gerenciamento de estados com Vue.js
  • Contextualizar outros frameworks e linguagens de desenvolvimento front-end

Projeto de Bloco: Desenvolvimento Java

  • Construir softwares simples com interfaces gráficas utilizando os recursos visuais do NetBeans
  • Desenvolver em grupo com base na metodologia UP/RUP sistemas em Java utilizando os recursos visuais e wizards do NetBeans
  • Especificar sistemas utilizando diagramas UML
  • Desenvolver back-end MVC em Java
  • Projetar e publicar serviços em nuvem com Java
  • Versionar software e controlar dependências

 

Fundamentos do Desenvolvimento Java

  • Escrever programas em Java utilizando variáveis, estruturas condicionais, loops e vetores
  • Escrever programas em Java com orientação a objetos
  • Implementar o tratamento de erro em programas Java
  • Implementar o acesso a dados com Java
  • Utilizar classes padrão fundamentais do Java

 

Orientação a Objetos com UML e Modelagem de Dados

  • Compreender os fundamentos da orientação a objetos
  • Compreender e criar diagramas de caso de uso, classes, sequências e atividades
  • Criar e implementar modelos de dados relacionais em bancos de dados

 

Desenvolvimento Web com Java

  • Construir aplicações Java utilizando JSP e Servlets
  • Desenvolver aplicações Java Web utilizando arquitetura MVC com gerenciamento de estado
  • Desenvolver aplicações com Java Persistence API e o framework Hibernate

 

Desenvolvimento de Serviços em Nuvem com Java

  • Compreender e contextualizar arquiteturas de sistemas distribuídos
  • Desenvolver clientes para consumir e manipular dados de APIs
  • Desenvolver APIs para expor dados para leitura e escrita
  • Publicar APIs em ambientes em nuvem

Projeto de Bloco: Desenvolvimento .NET

  • Compreender a visão geral da metodologia de desenvolvimento CMMI1 Waterfall, suas vantagens, desvantagens e inserção no contexto das metodologias de desenvolvimento de software.
  • Receber e adaptar requisitos de software definidos previamente por terceiros.
  • Planejar e iniciar o desenvolvimento de um projeto de software .NET com backend e frontend Web utilizando a metodologia CMMI1 Waterfall.
  • Desenvolver um software .NET com backend e frontend Web conforme os requisitos recebidos e adaptados, utilizando a metodologia CMMI1 Waterfall e aplicando-a às várias etapas do processo de desenvolvimento de software.
  • Relatar os processos de trabalho e as diversas etapas, desde o processo de recebimento dos requisitos, passando pelas etapas e artefatos de projeto até a verificação e validação do software criado, bem como da sua manutenção.
  • Criticar o projeto de software desenvolvido, em especial avaliando a metodologia de desenvolvimento CMMI1 Waterfall; a implementação do tratamento de erros e a tolerância à falhas; a segurança do aplicativo criado.

 

Fundamentos de Desenvolvimento com C#

  • Compreender os fundamentos de programação com C# .NET e Visual Studio.
  • Criar métodos, classes e implementar coleções de fontes.
  • Criar interfaces e hierarquias de classes usando herança.
  • Ler e escrever dados locais.

 

Fundamentos do Desenvolvimento de Aplicações Web ASP .NET

  • Desenvolver sistemas web e utilizar arquiteturas em camadas
  • Criar aplicativos Web simples utilizando ASP .NET MVC.
  • Desenvolver modelos, visões e controladores no ASP .NET MVC.
  • Gerenciar dados usando o ADO .NET.

 

Desenvolvimento com serviços WCF e Microsoft Azure

  • Compreender as tecnologias e serviços disponíveis na nuvem
  • Armazenar dados no Microsoft Azure
  • Armazenar dados utilizando o SQL Azure
  • Disponibilizar serviços no Microsoft Azure

 

Desenvolvimento de Aplicações Web ASP .NET MVC e Web API

  • Projetar aplicativos Web com ASP .NET MVC e Web API
  • Implementar o front-end em aplicativos Web ASP .NET MVC
  • Implementar a lógica de negócios em aplicativos Web ASP Web API
  • Implementar o acesso a dados utilizando o Entity Framework

Projeto de Bloco: Arquitetura de Computadores, Sistemas Operacionais e Redes

  • Explicar desenvolvimento de software com acesso a hardware e dispositivos externos incluindo outros computadores
  • Desenvolver monitoramento de informações gerais do computador usando Python
  • Desenvolver monitoramento de informações detalhadas do computador, S.O. e Redes usando Python
  • Desenvolver serviços cliente-servidor usando Python

 

Arquitetura de Computadores e Sistemas Operacionais

  • Explicar os fundamentos da arquitetura de computadores
  • Descrever as unidades funcionais dos computadores e seus principais componentes
  • Avaliar a performance de computadores e dispositivos móveis
  • Explicar os fundamentos de sistemas operacionais

 

Fundamentos do Desenvolvimento Python

  • Resolver problemas simples usando a linguagem de programação Python
  • Desenvolver jogos simples usando a linguagem de programação Python
  • Desenvolver Web scraping usando a linguagem de programação Python

 

Arquitetura de Redes de Computadores

  • Descrever os fundamentos de redes de computadores
  • Praticar e explicar a visão de redes em camadas e os modelos OSI e TCP/IP
  • Conhecer e praticar gerência de redes
  • Conhecer segurança da informação e segurança de redes

 

Desenvolvimento Python para Sistemas Operacionais e Redes

  • Obter informações de sistemas operacionais usando Python
  • Desenvolver scripts básicos em Python de administração de sistemas operacionais
  • Desenvolver programas simples em Python que escrevam e leiam arquivos texto
  • Desenvolver serviços simples de rede usando Python

Projeto de Bloco: Desenvolvimento Android

  • Descrever os fundamentos da metodologia Scrum
  • Desenvolver em grupo aplicativos simples no Android usando Constraint Layout e a metodologia Scrum
  • Desenvolver aplicativos Android usando Android Studio e a metodologia Scrum
  • Distribuir aplicativos Android

 

Fundamentos do Desenvolvimento Android

  • Desenvolver aplicativos com múltiplas telas usando Kotlin
  • Desenvolver aplicativos que se comuniquem com outros aplicativos via Intents usando Kotlin
  • Desenvolver aplicativos com interfaces dinâmicas usando Fragments usando Kotlin
  • Desenvolver aplicativos usando a arquitetura MVVM utilizando os componentes de arquitetura Android
  • Desenvolver aplicativos com listas de dados usando RecyclerView

 

Desenvolvimento de Interfaces Android

  • Explicar os princípios da percepção visual aplicados ao design de aplicativos
  • Desenvolver e criar aplicativos utilizando Google Material Design
  • Aplicar técnicas de acessibilidade em interfaces Android
  • Elaborar o design de telas de aplicativos Android usando o Android Studio
  • Implementar modelos de navegação comuns a aplicativos comerciais

 

Desenvolvimento Kotlin: Android

  • Desenvolver aplicativos Android que realizem tarefas em segundo plano
  • Desenvolver aplicativos Android que acessem dados e arquivos usando Kotlin
  • Desenvolver aplicativos Android com consumo de APIs RESTful
  • Desenvolver aplicativos Android com autenticação usando Kotlin

 

Segurança, Monetização e Publicação de Aplicativos Android

  • Descrever a arquitetura de segurança para aplicativos Android
  • Proteger aplicativos Android, seus componentes, dados e a comunicação cliente-servidor
  • Implementar ads e compras dentro de aplicativos Android
  • Distribuir aplicativos Android

Sobre a graduação

Graduação. Habilita para o exercício profissional como engenheiro de software, desenvolvedor ou analista de sistemas e permite a continuação dos estudos em especialização, MBA, mestrado e doutorado, além da participação em concursos públicos.

Autorizado pela Portaria 927 de 27/11/2015, publicada no diário oficial no dia 30/11/2015, para a modalidade EAD.

Forma os profissionais mais valorizados do setor de software, um segmento de salários altos e vagas sobrando. O salário médio de um gerente de sistemas é de R$10 a 20 mil. Mesmo estagiários ganham bolsas significativas: a bolsa média de estágio em engenharia no Brasil é de R$2.008,00 para alunos do último ano (fonte: Exame/Robert Half).

Ajuda na preparação para as certificações: Oracle Java Programmer*, OMG Certified UML Professional, Programming in HTML5 with JavaScript and CSS3*, Microsoft Web Applications*, Microsoft Web Services*.

Para assistir às aulas, basta um celular com câmera e boa conexão internet wifi ou 4g, mas será bem mais produtivo se você usar um desktop ou notebook com câmera e um confortável fone de ouvidos, que é a configuração recomendada.

Para fazer os trabalhos e enviar pelo Moodle, você deve usar um computador com configuração mínima Core i3, 8gb de RAM e internet de boa qualidade. As exigências mínimas de hardware podem variar ao longo do curso, conforme a evolução tecnológica.

Ao tornar-se aluno, você terá direito a uma conta no G Suite do Google e acesso a todas as VMs (Virtual Machines) necessárias para seu aprendizado, assim como instruções para baixá-las e utilizá-las.

Engenheiro de Software, Analista de Sistemas, Arquiteto de Software, Analista de Qualidade de Software, Gerente de Projeto de Sistemas, Gerente de Sistemas, Projetista de Sistemas de Software e Projetista de Testes.

única

Aula todos os dias

A única diferença é que você não precisa sair de casa: as aulas são interativas, com participação dos alunos por áudio e vídeo, todos os dias. É como uma graduação presencial, mas flexível.

Alta empregabilidade

O programa cobre assuntos com pouca oferta de profissionais, incluindo softwares escaláveis, engenharia disciplinada de software e inteligência artificial, formando alunos disputados pelo mercado.

Visão Sistêmica

Forma profissionais com uma visão sistêmica das fases do processo de desenvolvimento de software: concepção, desenho, implementação, testes e segurança.

Certificações

Ajuda na preparação para as certificações: Oracle Java Programmer, OMG Certified UML Professional, Programming in HTML5 with JavaScript and CSS3, Microsoft Web Applications, Microsoft Web Services.

Portfolio de Projetos

O aprendizado é construído ao redor de oito grandes projetos que o aluno desenvolve. Montando um portfolio de projetos práticos, você enfrenta desafios iguais aos do mercado de trabalho.

Networking para vida

Colegas de alto nível que proporcionam um networking relevante para toda a vida, potencializado pela comunidade online, recheada de ofertas de emprego e novidades da área.

PARCERIAS

ORACLE
MICROSOFT
OMG

Flexível

Você assiste às aulas, estuda e faz os trabalhos no horário que puder.
Assistir ao vivo é o ideal, mas é você quem decide. Faça seu horário!

Certificações

Ajuda na preparação para as certificações: Oracle Java Programmer*, OMG Certified UML Professional, Programming in HTML5 with JavaScript and CSS3*, Microsoft Web Applications*, Microsoft Web Services*.

Certificações são reconhecimentos válidos internacionalmente que aumentam a mobilidade profissional e valorizam significativamente o currículo.

* ou similares que venham a substituí-los. O custo dos exames não está incluído nas mensalidades e eles podem ser feitos em centros oficiais existentes em muitas cidades do Brasil.

Metodologia pbl

project based learning

desenvolvimento

O aluno aprende desenvolvendo projetos. Ao invés de ensinarmos aos alunos um monte de teoria, e de vez em quando aplicar uma fração dela em exercícios, fazemos o oposto: oferecemos desafios cada vez mais difíceis para os alunos resolverem. As disciplinas de cada bloco trabalham os conceitos e ferramentas que os alunos precisam para superar cada desafio.

Cada bloco de seis meses possui um grande projeto, com desafios iguais aos que o aluno encontrará no mercado de trabalho, que substitui as provas tradicionais. Mais prática, menos teoria, desde o primeiro dia de aula. Durante a graduação, o aluno desenvolve projetos como uma rede social própria, um app para Android, um site responsivo, um projeto com metodologia SAFe publicado na nuvem, um software complexo usando metodologia ágil DAD e outros.

MATRIZ CURRICULAR

DEPOIMENTOS DE ALUNOS

TIRE SUAS DÚVIDAS SOBRE O ENSINO
REMOTO DO INSTITUTO INFNET

O Infnet é a melhor faculdade de tecnologia do Rio de Janeiro. Foi fundado em 1994, para o ensino de excelência voltado às necessidades do mercado, e tornou-se referência nesse segmento. A proposta do Instituto é ensinar tecnologia aplicada ao contexto de negócios, isto é, como uma ferramenta para o desenvolvimento das organizações.

Aulas ao vivo
Não são videoaulas gravadas, são aulas de verdade todos os dias. Você interage em uma turma de verdade, com áudio e vídeo, igual a uma sala de aula presencial.

Flexibilidade
Todas as aulas são ao vivo, mas você pode assisti-las em outros horários se preferir. As aulas ficam gravadas e disponíveis para você.

Comunidade online
Você participa de uma comunidade online com seus colegas e também milhares de alunos e professores do Infnet, parecida com um Facebook. Você acessa para tirar dúvidas, encontrar oportunidades, fazer amizades e muito mais.

Foco em tecnologia
O Instituto Infnet ensina tecnologia há mais de 25 anos. Nossa expertise é a computação. Ministramos o primeiro curso de Java do Brasil, em 1997. Até hoje, já foram mais de 20 mil alunos formados. 

Nossa qualidade foi reconhecida pelo MEC, que conferiu conceito máximo (5) para a modalidade EAD da instituição e para todas as graduações reconhecidas.
Este nível de qualidade só é possível pela metodologia que combina aulas ao vivo diárias e o aprendizado através do desenvolvimento de projetos com desafios reais da profissão. Além disso, a metodologia de avaliação por competências aproxima os alunos do mercado de trabalho.

É trocar as tradicionais grades centradas em conteúdos por um método focado nas competências necessárias para o aluno exercer sua profissão. O curso passa a ser orientado para o desenvolvimento de cada uma dessas competências, usando para isso conteúdos e exercícios mais adequados, sejam textos, vídeos, debates, projetos, casos ou outros. 

No ensino por competências, o curso torna-se mais alinhado ao mercado de trabalho, ensinando o que os empregadores exigem. Além disso, para aprovar o aluno, busca verificar se ele é capaz de demonstrar as competências previstas, em vez de simplesmente fazer uma prova teórica.

Todas as aulas são com professores, e não com monitores. É igual a um curso presencial, apenas é realizado de forma remota. Você vai poder tirar dúvidas fazendo perguntas durante as aulas ou na comunidade de alunos.

Não, você pode assistir no horário que quiser. Mas é muito importante que você dedique tempo ao curso. Para não ficar para trás, você deve assistir todas as aulas, de preferência diariamente. Sempre que possível, assista ao vivo para poder interagir e tirar suas dúvidas com o professor.

De 15 a 20 horas por semana, considerando aulas, projetos e estudo individual. A graduação na modalidade Live exige tanta dedicação quanto uma graduação presencial, sendo apenas mais flexível e não mais fácil.

Conforme a legislação vigente, diplomas de graduação Live são iguais aos diplomas de graduações presenciais. A titulação é exatamente a mesma. A única diferença está no número da portaria do curso, que aparece no verso do diploma. Em todos os casos, no verso do diploma, há uma indicação da portaria do MEC de autorização e reconhecimento do curso. Os cursos presenciais ou a distância possuem portarias diferentes. Então, no verso do diploma do aluno do presencial, o número da portaria é um, enquanto que, no verso do diploma da modalidade a distância, o número da portaria é outro.

Sim, o programa de um curso de graduação é dinâmico e suas disciplinas, competências, estrutura e regras podem ser modificadas pela instituição. Há várias razões para um curso sofrer alterações: mudanças na tecnologia, mudanças no mercado, evolução das certificações, aprendizados da instituição, ajustes no modelo de ensino, demandas do corpo discente, feedback dos docentes e outras.

Em nossa comunidade online de alunos. Todos os dias, os alunos trocam ideias, conversam, fazem amizades, compartilham oportunidades de emprego, tiram dúvidas dos colegas e muito mais. É muito mais animado do que o corredor de uma faculdade e você vai terminar a graduação com um forte networking profissional.