MINISTÉRIO DA EDUCAÇÃO

UNIVERSIDADE FEDERAL DE SANTA CATARINA

CENTRO TECNOLÓGICO

DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA

PROGRAMA DE ENSINO

1. Identificação

Disciplina:INE5646 - Programação para Web
Nível:Graduação
Carga Horária:72 horas-aula (Teórica: 36; Prática: 36)
Vigência:De 2020-1 até a presente data

2. Ementa

Arquiteturas. Serviços. Protocolos de comunicação entre cliente e servidor e entre servidores. Representação de dados no cliente. Acesso a bases de dados. Escalabilidade. Linguagens de modelagem da interface com o usuário. Linguagens de programação no cliente e no servidor. Segurança. Instalação e configuração de servidores. Prática de programação.

3. Cursos Relacionados

4. Objetivos

4.1 Objetivo Geral:

Capacitar os estudantes para que compreendam os fundamentos conceituais e tecnológicos bem como as linguagens pertinentes ao desenvolvimento de aplicações para web.

4.2 Objetivos Específicos:

  1. Apresentar as principais tecnologias utilizadas no desenvolvimento de aplicações exemplo.
  2. Possibilitar que os estudantes pratiquem o desenvolvimento de aplicações para web.
  3. Possibilitar que os estudantes aprendam a instalar, configurar e administrar servidores web.

5. Conteúdo Programático

  1. Parte 1 - Linguagens para Desenvolvimento Web [14 horas-aula]
    1. Visualização de dados
      1. HTML
      2. CSS
        1. Frameworks
        2. Pré-processadores
    2. Representação de dados
      1. XML
      2. JSON
    3. Programação
      1. Visão Geral sobre PHP, Java, Python e Ruby
      2. JavaScript
        1. Elementos de Programação Orientada a Objetos
        2. Elementos de Programação Funcional
        3. Técnicas de Processamento Assíncrono: Callback, Promise, Observable, Async/Await
        4. Modularização
        5. Bibliotecas
        6. Linguagens Alternativas: TypeScript e Elm
  2. Parte II - Modelagem de Aplicações para Web [42 horas-aula]
    1. Modelo Cliente-Servidor
      1. Protocolos de Comunicação
        1. HTTP
        2. Websocket
      2. Tecnologias de Comunicação
        1. Ajax
        2. SSE
    2. Finalidade
      1. Aplicações orientadas a serviço
        1. Protocolo SOAP
        2. Estilo Arquitetural RESTful: REST, GraphQL e Protobuf
      2. Aplicações orientadas a página
        1. Múltiplas Páginas
        2. Página Única
        3. Progressivas
        4. Browser APIs
    3. Arquiteturas
      1. Monolíticas
        1. Em camadas
      2. Distribuídas
        1. CQRS
        2. Microserviços
    4. Aspectos de Segurança
      1. Transmissão da Informação
      2. Autenticação do Usuário
      3. Autorização para Acesso aos Recursos
      4. Protocolo OAuth 2
        1. OpenID Connect
        2. JSON Web Token
      5. Protocolo HTTP
        1. Política de Mesma Origem
        2. Cabeçalhos de Segurança
        3. Filtros
        4. Cookies
    5. Operações de E/S Escaláveis
      1. Acesso a webservices
      2. Acesso a bases de dados
    6. Técnicas de Desenvolvimento
      1. No lado servidor
        1. Domain Driven Design
        2. Event Driven Design
        3. Event Sourcing
        4. Programação Reativa
      2. No lado cliente
        1. Componentes Web
        2. Design Responsivo
        3. Material Design
        4. Gerenciamento de Estado
        5. Processamento de Fluxos de Dados
        6. MVC
        7. Fluxo Unidirecional: Redux, MVI
  3. Parte III ? Estudo de Um Servidor de Aplicações [16 horas-aula]
    1. Servidor Node.js
      1. Características:
        1. Ferramenta npm
        2. Biblioteca libuv
        3. Event Loop
        4. Streams
        5. Bibliotecas
      2. Instalação, configuração e gerenciamento

6. Bibliografia Básica

  1. LINDLEY, Cody. Front-end Developer Handbook 2019. Frontend Masters, 2019. Disponível em https://raw.githubusercontent.com/FrontendMasters/front-end-handbook-2019/master/exports/Front-end%20Developer%20Handbook%202019.pdf
  2. MARDAN, A. Practical Node.js, 2nd ed, Apress, 2018. Disponível em https://itbook.download/topic/Practical_Node_js_2nd_Edition
  3. KALBACH, James. Design de navegação web: otimizando a experiência do usuário. Porto Alegre: Bookman, 2009. xiii, 427p. ISBN 9788577804917.
  4. SEBESTA, Robert W. Programming the world wide web 2009. 5th ed. Boston: Addison Wesley, c2010. xviii, 734p. ISBN 9780136076636.
  5. SILVA, Maurício Samy. HTML 5: a linguagem de marcação que revolucionou a web. São Paulo: Novatec, 2011. 320 p. ISBN 9788575222614.
  6. EVANS, Eric. Domain-driven design: atacando as complexidades no coração do software. Rio de Janeiro: Alta Books, 2009. xxviii, 499 p. ISBN 9788576083603.

7. Bibliografia Complementar

  1. AMUNDSEN, Michael. Building hypermedia APIs with HTML5 and Node. Beijing: O'Reilly, 2011. xvii, 219 p. ISBN 9781449306571.
  2. BONÉR, Jonas. Reactive Microservices Architecture. Sebastopol: O?Reilly Media, Inc, 2017. 84 p. ISBN 9781491994368.BURNS, Brendam. Designin Distributed Systems. Sebastopol: O?Reilly Media, Inc, 2017. 160 p. ISBN 9781491983638.
  3. FREDERICK, Gail Rahn; LAL, Rajesh. Dominando o desenvolvimento web para smartphone: construindo aplicativos baseados em JavaScript, CSS, HTML e Ajax para iPhone, Android, Palm Pre, BlackBerry, Windows Mobile e Nokia S60. Rio de Janeiro: Alta Books, 2011. xiii, 344 p. ISBN 788576085140.
  4. GHOSH, Debasish. Functional and Reactive Domain Modeling. New York: Manning Publications Co, 2017. 322p, ISBN 9781617292248.
  5. HERRON, David. Node Web Development. Birmingham: Packt Publishing Ltd, 2013. 230p. ISBN 9781782163305.