MC102 — Algoritmos e Programação de Computadores
Instituto de Computação (IC/Unicamp)Profa. Sandra Avila (sandra@ic.unicamp.br)
Avisos Importantes:
- [03/07/2019] As notas da Prova 2 e as médias das provas foram divulgadas.
- [12/05/2019] As notas da Prova 1 foram divulgadas.
- [08/02/2019] A disciplina terá início no dia 27/02/2019.
Dias, Horários e Salas:
Tipo de Aula | Dia da Semana | Horário | Sala |
---|---|---|---|
Teórica (turmas KLMN) | Quarta | 14h–16h | CB04 |
Teórica (turmas KLMN) | Sexta | 14h–16h | CB04 |
Laboratório (turma K) | Segunda | 14h–16h | SI03 |
Laboratório (turma L) | Segunda | 14h–16h | SI05 |
Laboratório (turma M) | Segunda | 16h–18h | SI03 |
Laboratório (turma N) | Segunda | 16h–18h | SI08 |
Atendimento: Este oferecimento de MC102 conta com a colaboração de várias(os) alunas(os) de pós-graduação (PEDs) e graduação (PADs) que atuam como monitoras(es). Além do atendimento durante as aulas de laboratório, haverá plantões de dúvidas presenciais e aulas extras de revisão em horários e salas que serão divulgados na página web geral da disciplina (https://ic.unicamp.br/~mc102/atendimento.html). As(Os) monitoras(es) da disciplina são:
- Bárbara Benato (PED)
- Eva Maia Malta (PED)
- Jonlenes Castro (PED)
- Lucas de Magalhães Araújo (PED)
- Fernanda Garcia da Lavra (PAD)
Programa da Disciplina: Conceitos básicos de organização de computadores. Construção de algoritmos e sua representação em pseudocódigo e linguagens de alto nível. Desenvolvimento sistemático e implementação de programas. Estruturação, depuração, testes e documentação de programas. Resolução de problemas.
Data | Assunto | Material da Aula | |
---|---|---|---|
27/02/2019 | Introdução e Plano de Desenvolvimento | Aula, O que é um algoritmo?, O primeiro computador | |
01/03/2019 | Estrutura de um programa, Variáveis, Objetos e Atribuição | Aula, IPython Notebook | |
07/03/2019 | Python e a Ferramenta de Submissão e Testes Automáticos SuSy | Lab00 | |
08/03/2019 | Estrutura de um programa, Variáveis, Objetos e Atribuição | Aula, IPython Notebook | |
13/03/2019 | Expressões Relacionais, Lógicas e Comandos Condicionais | Aula | |
15/03/2019 | Comandos Condicionais: elif | Aula | |
15/03/2019 | Aritmética com Inteiros | Lab01 | |
20/03/2019 | Estruturas Repetitivas: while e for | Aula, IPython Notebook | |
22/03/2019 | Estruturas Repetitivas: Variável Indicadora e Contadora | Aula, IPython Notebook | |
24/03/2019 | Pagamento com Atraso | Lab02 | |
27/03/2019 | Exercícios & Laços Encaixados | Aula | |
29/03/2019 | Exercícios & Laços Encaixados | Aula, IPython Notebook | |
29/03/2019 | Intercâmbio? | Lab03 | |
01/04/2019 | Classificador de Triângulos | Lab04 | |
03/04/2019 | Listas | Aula, IPython Notebook | |
04/04/2019 | Vagas ENEM-Unicamp | Lab05 | |
05/04/2019 | Strings | Aula | |
10/04/2019 | Dou-lhe uma, dou-lhe duas… | Lab06 | |
10/04/2019 | Strings: Exercícios & Exemplos | Aula, IPython Notebook | |
12/04/2019 | Exercícios | Aula | |
17/04/2019 | Desenhando com números | Lab07 | |
17/04/2019 | Revisão 1: Prova 1 | Aula | |
24/04/2019 | Revisão 2: Prova 1 | Aula | |
26/04/2019 | Prova 1 | Boa Prova! | |
29/04/2019 | Critérios para Aprovação em MC102 | Lab08 | |
03/05/2019 | Tuplas e Dicionários | Aula | |
06/05/2019 | Medidor de Força de Senhas | Lab09 | |
08/05/2019 | Funções | Aula, IPython Notebook | |
10/05/2019 | Funções | Aula | |
13/05/2019 | Regiões Binárias | Lab10 | |
17/05/2019 | Matrizes | Aula, IPython Notebook | |
20/05/2019 | Meu time pode ser campeão!!! | Lab11 | |
24/05/2019 | Expressões Regulares | Aula | |
29/05/2019 | Ordenação | Aula | |
31/05/2019 | Busca Sequencial e Binária | Aula | |
03/06/2019 | Verificador de erros para Sudoku | Lab12 | |
05/06/2019 | Arquivos | Aula | |
07/06/2019 | Arquivos Binários | Aula | |
12/06/2019 | Recursão & QuickSort | Aula, Aula | |
17/06/2019 | MergeSort | Aula | |
19/06/2019 | Revisão: Prova 2 | Aula | |
26/06/2019 | Prova 2 | ||
28/06/2019 | Correção da Prova 2 | Aula |
Linguagem de Programação: Python, versão 3.
Critério de Avaliação: Serão levados em consideração os seguintes elementos: Atividades Conceituais, Tarefas de Laboratório e Provas Teóricas, sendo:
Atividades Conceituais: São atividades elaboradas com o intuito de avaliar o grau de compreensão apresentado pelos(as) estudantes dos conceitos referentes a determinado(s) tópico(s) da disciplina de maneira a auxiliá-los(as) a regular seu processo de aprendizagem. A nota atribuída a cada uma destas atividades será uma nota de participação, feita de maneira proporcional ao número de questões respondidas pela(o) aluna(o), independentemente do fato de estarem corretas ou não.
Para a realização das atividades serão disponibilizados questionários de múltipla escolha na área MC102 – 1S2019 – Algoritmos e Programação de Computadores do sistema Moodle, acessível a partir do endereço web http://www.ggte.unicamp.br/eam.
Durante o semestre serão propostas n Atividades Conceituais, com média ${M}_{AC}$.
Tarefas de Laboratório: Serão propostas m tarefas de laboratório, que deverão ser implementadas pelas(os) alunas(os) de maneira individual. Os programas desenvolvidos serão testados com um jogo de testes pré-determinado, subdividido em testes abertos, que podem ser vistos pelas(os) alunas(os) e testes fechados, que não podem ser vistos. A nota de cada laboratório será proporcional ao número de testes, abertos ou fechados, que executaram corretamente. No entanto, serão considerados válidos apenas os programas projetados de maneira a resolver o problema proposto para um conjunto amplo de possibilidades e não aqueles projetados para emitir a saída correta para o subconjunto de testes abertos.
Juntamente com o enunciado de cada tarefa de laboratório ${L}_{i}$ será indicado o peso desta tarefa ${PL}_i \in \{1,2,3,4,5\}$. A média dos laboratórios, $M_{L}$, é a média ponderada destas m notas.
O gerenciamento da submissão e testes das tarefas de laboratório é feito com o auxílio um sistema automatizado conhecido como SuSy (Submission and Testing System for Student Programs), e está acessível a partir do endereço web https://susy.ic.unicamp.br:9999/mc102.
Provas Teóricas: Serão realizadas duas provas teóricas, $P_1$ e $P_2$, em papel, de forma individual e sem nenhum tipo de consulta nas seguintes datas e com os seguintes pesos:
Prova Peso Data Horário $P_1$ 2 26/abril 14-16h $P_2$ 3 26/junho 14-16h A média de provas teóricas, $M_P$, é a média ponderada das provas $P_1$ e $P_2$ considerando seus respectivos pesos.
Frequência Mínima: De acordo com o Regimento Geral de Graduação as(os) alunas(os) devem ter sua presença às aulas controlada e a frequência Freq deve ser maior ou igual a 75% para aprovação.
Critérios de Avaliação: A média final $M_{Final}$ e a situação da(o) aluna(o) serão definidas de acordo com as regras a seguir.
- Caso $Freq ≥ 75%$:
- Caso $M_P ≥ 5$ e ${M}_{L} ≥ 5$:
Será calculada uma média ponderada dos elementos avaliativos: ${M}_{Elem} = (0.6*{M}_{P}) + (0.3*{M}_{L}) + (0.1*{M}_{AC})$.
A(o) aluna(o) estará aprovada(o) por nota e frequência com ${M}_{Final} = max(5,{M}_{Elem})$. - Caso ${M}_{P} ≥ 2.5$ e ${M}_{L} ≥ 2.5$: a(o) aluna(o) terá direito a fazer o exame Exame no dia 12/julho das 14h–16h. Sua média final será ${M}_{Final} = (min({M}_{P}, {M}_{L}) + Exame)/2$. Caso a(o) aluna(o) tenha obtido ${M}_{Final} ≥ 5.0$ estará aprovada(o) por nota e frequência, caso contrário estará reprovada(o) por nota.
- Caso $M_P < 2.5$ ou $M_L < 2.5$: a(o) aluna(o) estará reprovada(o) por nota com ${M}_{Final} = min({M}_{P}, {M}_{L})$.
- Caso $M_P ≥ 5$ e ${M}_{L} ≥ 5$:
Será calculada uma média ponderada dos elementos avaliativos: ${M}_{Elem} = (0.6*{M}_{P}) + (0.3*{M}_{L}) + (0.1*{M}_{AC})$.
- Caso $Freq < 75%$: a(o) aluna(o) estará reprovada(o) por frequência com $M_{Final} = min({M}_{P}, {M}_{L})$.
Informações Adicionais:
- Nos dias de prova será necessária a apresentação de documento oficial com foto.
- Não há possibilidade de troca de horário de provas e/ou exame final.
- Não haverá reposição de tarefas de laboratório.
- Todas as tarefas são individuais.
- Qualquer tentativa de fraude implicará em nota 0.0 (zero) na disciplina para todas as pessoas envolvidas.
- O sistema de correção automático dispõe de um eficiente detector de fraudes. Ele é programado para detectar plágios entre todas as respostas (de todas as alunas e de todos os alunos, entre todas as turmas). Ocorrência de fraude implicará em nota 0.0 (zero) na disciplina para todas as pessoas envolvidas.
Referências: Existem muitos textos sobre programação em Python. Neste semestre utilizaremos como referência principal o livro “How to Think Like a Computer Scientist: Interactive Edition” de Brad Miller e David Ranum, disponível em inglês e português, conforme descrito a seguir:
- How to Think Like a Computer Scientist: Interactive Edition
- Aprendendo com Python: Edição interativa (usando Python 3.x)
Caso tenha interesse por outro texto, verifique se a versão utilizada de Python é a 3. Se não for, fique atenta(o) aos detalhes que variam de uma versão para outra.
Adicionalmente, recomendamos o material disponível nas páginas oficiais da linguagem Python: www.python.org ou www.python.org.br (em português).