Este é o Git da disciplina de Desenvolvimento de Software. Aqui será compartilhado o material produzido em sala de aula assim como tarefas, wiki e discussões. Este arquivo contêm informações básicas sobre a disciplina e o plano de ensino do semestre.
- Curso:
- Engenharia de Software
- Professor:
- Fábio Macêdo Mendes
- Disciplina:
- Desenvolvimento de Software
- Semestre/ano:
- 02/2019
- Carga horária:
- 60 h
- Créditos:
- 04
- Práticas de programação em ambientes gráficos e lúdicos;
- Organização e processamento de dados;
- Introdução à arquitetura de software;
- Introdução aos conceitos de Engenharia de Software.
Aulas teóricas e de exercícios: terças e quintas-feiras às 14h Atendimento e monitoria: a definir
Este curso utiliza GitHub + Google classroom para gerenciar o curso. A comunicação com a turma é feita através do Google Classroom ou por issues no repositório do Github. Habilite a funcionalidade "Watch" no repositório para receber notificações sobre atualizações.
- Google Classroom:
- http://classroom.google.com/ - Código de inscrição: 3bkhgg
- Github:
- http://github.com/fabiommendes/desenvolvimento-de-software/
Cada aluno será avaliado com uma nota numérica onde a conversão entre a pontuação e a menção final é feita da forma usual: 9,0pts+: SS, 7,0pts+: MS, 5,0pts+: MM, 3,0pts+: MI e < 3,0 pts II. A distribuição de pontos segue os pesos:
Provas | 30% |
Exercícios e testes | 45% |
Projeto final | 25% |
A nota referente às "provas" é igual à média de duas provas (uma realizada no início do semestre e uma prova substitutiva realizada no final). Os "exercícios" e testes consistem em atividades de programaçãorealizadas em sala de aula individualmente ou em dupla. Finalmente, a nota de projeto se refere a um projeto de software realizado em grupo durante todo o semestre.
A turma será dividida em "coaches" e "trainees", onde os primeiros são alunos matriulados que estão no final do curso e serão responsáveis por coordenar um grupo de trainees no desenvolvimento de um produto de software.
O curso possui 2 provas, P1 e P2. O(a) estudante que realizar a P1 e optar por não realizar a P2 ficará com uma nota final nas provas igual a 0.80 P1. Caso realize as duas provas, a nota final será igual à média aritmética. No caso de uma falta justificada, a nota final será calculada com base em apenas uma das provas.
O aluno pode faltar até 7 vezes em um semestre. Faltas com justificativa médica não serão abonadas, exceto em casos excepcionais. Os alunos reprovados por falta ficarão com uma menção igual a SR.
Algumas avaliações serão realizadas com auxílio do computador no laboratório de informática. Todas as submissões serão processadas por um programa de detecção de plágio. Qualquer atividade onde for detectada a presença de plágio será anulada sem a possibilidade de substituição. Não será feita qualquer distinção entre o aluno que forneceu a resposta para cópia e o aluno que obteve a mesma.
As mesmas considerações também se aplicam às provas teóricas e atividades entregues no papel.
O curso utiliza alguns pacotes e ferramentas para os quais cada estudante deverá providenciar a instalação o mais cedo o possível. O curso requer Python 3.6+ com alguns pacotes instalados e um ambiente de desenvolvimento Javascript/Typescript
- Pip: Gerenciador de pacotes do Python (sudo apt-get install python3-pip)
- Npm: Gerenciador de pacotes Javascript (sudo apt-get install nodejs)
- Jupyter notebook/nteract/Google colab: Ambiente de programação científica (sudo apt-get install jupyter-notebook, ou https://nteract.io)
Não é estritamente necessário, mas vale a pena instalar as seguintes ferramentas:
- virtualenvwrapper: isola ambientes de desenvolvimento para não contaminar o resto do seu sistema
- flake8: busca erros de estilo e programação no seu código
- black: corrige alguns destes erros automaticamente
- pytest, pytest-cov: criação de testes unitários
- Editores de código/IDE:
- Utilize o seu favorito. Caso precise de uma recomendação, seguem algumas:
- PyCharm Educacional - IDE com ótimos recursos de introspecção e refatoração, mas adora memória RAM. Possui uma versão livre e uma versão profissional paga, mas que é gratuita para estudantes.
- VSCode - um bom meio termo entre uma IDE e um editor de código leve. Criado para Javascript, mas possui bons plugins para Python e várias outras linguagens.
- Vi/Vim - herança dos anos 70 que nunca morre ;) Instale os plugins para Python e Typescript.
DICA: em todos os casos, prefira instalar os pacotes Python utilizando o apt-get ou o mecanismo que sua distribuição fornece e somente se o pacote não existir, instale-o utilizando o pip. Se utilizar o pip, faça a instalação de usuário utilizando o comando pip3 install <pacote> --user
.
Semana | Data | Aula |
---|---|---|
1 | 14/03 | Início das aulas – Apresentação do curso
|
2 | 19/03 | Introdução ao Python
|
21/03 | Orientação a objetos
|
|
3 | 26/03 | Programação funcional
|
28/03 | Processamento de dados
|
|
4 | 02/04 | Avaliação: Python básico |
04/04 | Introdução ao Data Science
|
|
5 | 09/04 | Inteligência de Máquina
|
11/04 | Laboratório social: dados sobre o Brasil
e brancos? |
|
6 | 16/04 | Introdução ao desenvolvimento de Jogos
|
18/04 | Laboratório de Jogos: Super Mario FGA
|
|
7 | 23/04 | Introdução ao desenvolvimento Web
|
25/04 | Typescript/Javascript
|
|
8 | 30/04 | DOM/jQuery/Go horse
|
02/05 | Servidor web
|
|
9 | 07/05 | Laboratório Web: quão bem você está?
|
09/05 | Avaliação: Python intermediário | |
10 | 14/05 | Gerência de projetos
|
16/05 | Planejamento de projeto
|
|
11 | 21/05 | Instrumentação
|
23/05 | Atividade: Capture the flag | |
12 | 28/05 | Não haverá aula |
30/05 | PROVA: Programação e Desenvolvimento de Software | |
13 | 04/06 | Ergonomia, design e UX
|
06/06 | Testes automatizados
|
|
14 | 11/06 | Arquitetura de software
|
13/06 | Arquitetura orientada a objetos
|
|
15 | 18/06 | Simulando tipos nativos (meta-protocolo de objetos)
|
20/06 | Code smells
|
|
16 | 25/06 | Aplicações poliglotas
|
27/06 | Frameworks
|
|
17 | 02/07 | Laboratório de álgebra linear
|
04/07 | ENTREGA DOS TRABALHOS FINAIS | |
18 | 09/07 | Revisão de nota |
11/07 |
Obs.: O cronograma está sujeito a alterações.