Conhecimentos de Base Recomendados
Conceitos básicos de programação, algoritmos e estrutura de dados.
Conhecimentos básicos de controle de versão
Noções do protocolo HTTP (verbos GET, POST)
Métodos de Ensino
Nesta unidade curricular são utilizadas as seguintes metodologias de ensino:
1 – Método expositivo: método explicativo onde fundamentos teóricos e conceito são apresentados pelo professor e discutidos com a turma, seguido de exemplos demonstrativos;
2 – Método experimental: método ativo onde o aluno desenvolve o conhecimento através da resolução de problemas e o desenvolvimento de projetos laboratoriais individuais ou em dinâmica de grupo.
Cada aula será composta por dois momentos:
1 – Exposição introdutória: No início da aula o docente expõe e discute com os alunos os novos conteúdos em estudo;
2 – Aplicação prática: Após a exposição introdutória, os alunos desenvolvem fichas de trabalho e resolução de problemas, individualmente e em conjunto, para aplicação prática dos novos conceitos, de forma autónoma e sob a orientação do docente;
Resultados de Aprendizagem
Após a conclusão da unidade curricular, os alunos deverão ser capazes de:
- Reconhecer e identificar componentes de aplicações mobile e ferramentas de desenvolvimento
- Compreender o ciclo de desenvolvimento de aplicações mobile com suas respetivas ferramentas (IDEs) e linguagens de programação
- Utilizar as ferramentas de desenvolvimento para execução de tarefas de criação de componentes, telas e navegação
- Estimar em alto nível a complexidade da execução de tarefas de implementação
- Desenvolver aplicações básicas para dispositivos mobile (Android/iOS/Híbrido)
- Compreender o modo de funcionamento de ferramentas de desenvolvimento low code
- Utilizar ferramentas de desenvolvimento low code
Programa
1. Introdução ao desenvolvimento de aplicações e metodologias
- Introdução ao desenvolvimento de apps, apps nativas vs web-apps
- Estado da arte do mercado de mobile development
- Metodologias de desenvolvimento (agile/scrum)
- Workflow de desenvolvimento (git, IDEs, Tests, CI)
2. Desenvolvimento nativo para iOS
- Introdução
- Breve histórico de aplicações mobile para iOS
- Apresentação do XCode, ferramentas e funcionalidades, menus
- Criação de um novo projeto em XCode
- Compilar o projeto e rodar no simulador
- Swift
- Variáveis
- Operadores
- Funções
- Controlo de fluxo
- Coleções
- Classes e struct
- Protocolos
- Delegates
- Closures
- Elementos de UI e navegação
- Introdução aos elementos de UIKit nativos
- Breve histórico de XIB’s, storyboards e outlets
- Auto-layout e constraints programático
- Catálogo de assets de cores e imagens (Dark mode, acessibilidade)
- Navegação programática
- Collection view e data sources
- Apresentação da UITableView e UICollectionView
- Introdução a data sources e delegates
- Configuração de células, registo e reutilização
- Casos de uso com fonte de dados estática
- Network e persistência local
- Introdução a APIs, HTTP, verbos, formatos e autenticação
- Postman collections para testar funcionamento
- Acesso a API e network com Swift (nativo)
- Persistência de dados com UserDefaults (ênfase em modos offline)
- Keychain (detalhes, encrypt)
- Tópicos Avançados – Protocolos e Arquitetura
- Arquiteturas MVC e MVVM, tópicos de VIPER
- Design patterns
- SOLID principles
- Introdução a protocolos, herança, extensões, modificadores de acesso, opcionais
- Paralelos entre iOS e Android (Swift e Kotlin)
- Criação conta no portal da Apple, geração de certificados e provisionings
- Instalação de provisionings locais e dispositivos
- Archive e submit de aplicações na Apple App Store
3. Desenvolvimento nativo para Android
- Introdução
- Introdução ao Kotlin (decorators, keywords)
- Utilização do Kotlin Playground
- Elementos de UI nativos
- MVP, MVI, MVVM e respetivas implementações em Android e exemplos
- Networking
- Navigation (Jetpack)
- ViewModel (Jetpack)
- Retrofit, configuração e implementação
- Criação da camada de acesso a dados externos
- Topicos avançados
- Threads (UI e background)
- Coroutines e contextos
- Fundamentos e principais conceitos de Recicler views
- Adapters e listagens dinâmicas
- Processo de publicação de aplicações na Google Play Store
4. Desenvolvimento de aplicações com recurso a plataformas low code
Docente(s) responsável(eis)
Estágio(s)
NAO
Bibliografia
Griffiths, D., & Griffiths, D. (2017). Head First Android Development: A Brain-Friendly Guide (2nd ed.). O’Reilly Media.
Veen, T. in’t. (2019). Swift in depth. Manning.