MC102 — Algoritmos e Programação de Computadores
Instituto de Computação (IC/Unicamp)Profa. Sandra Avila (sandra@ic.unicamp.br)
Avisos Importantes:
- [18/07/2018] As notas do Exame e a média final foram divulgadas.
- [26/06/2018] As notas da Prova 2 e a média ponderada das provas foram divulgadas.
- [10/06/2018] Os labs de MC102 voltaram a ser realizados nas salas SIs.
- [09/05/2018] As notas da Prova 1 foram divulgadas.
- [18/03/2018] A área MC102 - 1S2018 está aberta no Moodle.
- [18/03/2018] Todos os atendimentos presenciais serão na sala SI-05. Veja aqui os horários.
- [23/02/2018] A disciplina terá início no dia 28/02/2018. Não teremos laboratório no dia 26/02/2018.
Dias, Horários e Salas:
Tipo de Aula | Dia da Semana | Horário | Sala |
---|---|---|---|
Teórica (turmas KLMN) | Quarta | 14h–16h | CB06 |
Teórica (turmas KLMN) | Sexta | 14h–16h | CB05 |
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 |
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 | |
---|---|---|---|
28/02/2018 | Introdução e Plano de Desenvolvimento | Aula01, O primeiro computador | |
02/03/2018 | Estrutura de um programa, Variáveis, Objetos e Atribuição | Aula02, IPython Notebook | |
05/03/2018 | Python e a Ferramenta de Submissão e Testes Automáticos SuSy | Lab00 | |
07/03/2018 | Escrita, Leitura, Expressões Aritméticas, Conversão de Tipos | Aula03, IPython Notebook | |
09/03/2018 | Expressões Relacionais, Lógicas e Comandos Condicionais | Aula04 | |
12/03/2018 | Minissomadora | Lab01 | |
14/03/2018 | Comandos Condicionais: elif | Aula05 | |
16/03/2018 | Comandos Repetitivos: while e for, break e continue | Aula06, IPython Notebook | |
19/03/2018 | Minicalculadora | Lab02 | |
21/03/2018 | Comandos Repetitivos: Exercícios | Aula07, IPython Notebook | |
23/03/2018 | Comandos Repetitivos: Variável Indicadora, Variável Contadora | Aula08, IPython Notebook | |
26/03/2018 | Classificador de Triângulos | Lab03 | |
28/03/2018 | Comandos Repetitivos: Laços Encaixados | Aula09 | |
02/04/2018 | Formas Geométricas Simples | Lab04 | |
04/04/2018 | Listas | Aula10, IPython Notebook | |
06/04/2018 | Strings | Aula11, IPython Notebook | |
09/04/2018 | Corrida de Lesmas | Lab05 | |
11/04/2018 | Strings & Listas: Exercícios | Aula12 | |
13/04/2018 | Revisão para Prova 1: Exercícios | Aula13 | |
18/04/2018 | Revisão para Prova 1: Exercícios | Aula14 | |
20/04/2018 | Prova 1 | ||
23/04/2018 | Detetives e Assassinos | Lab06 | |
25/04/2018 | Tuplas e Dicionários | Aula15 | |
02/05/2018 | Introdução a Funções | Aula16, IPython Notebook | |
04/05/2018 | Funções | Aula17, Bugs incríveis | |
07/05/2018 | Critérios para Aprovação em MC102 | Lab07 | |
09/05/2018 | Correção da Prova 1 | Aula18 | |
11/05/2018 | Matrizes e Vetores Multidimensionais | Aula19, IPython Notebook | |
14/05/2018 | Caça Palavras | Lab08 | |
16/05/2018 | Expressões Regulares (Celso Brennand) | Aula20 | |
18/05/2018 | Algoritmos de Ordenação | Aula21, IPython Notebook | |
21/05/2018 | Jogo da Vida | Lab09 | |
23/05/2018 | Busca Sequencial e Binária | Aula22, Labs 06 & 07 | |
06/06/2018 | Arquivos Textos | Aula23, Exemplos | |
08/06/2018 | Arquivos Binários, Funções Recursivas | Aula24-1, Aula24-2, Exemplos | |
11/06/2018 | Algoritmos de Ordenação | Lab10 | |
13/06/2018 | Algoritmos de Ordenação: Quick Sort & Merge Sort | Aula25, IPython Notebook | |
15/06/2018 | Revisão para a Prova 2 | Aula26 | |
20/06/2018 | Prova 2 | ||
22/06/2018 | Correção da Prova 2 | Aula27 |
Linguagem de Programação: Python, versão 3.
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). Os monitores da disciplina são:
- Celso Augusto R. L. Brennand (PED, Doutorado)
- Alceu Emanuel Bissoto (PED, Mestrado)
- Matheus Martins Susin (PED, Mestrado)
- Renato Noronha Máximo (PAD, Graduação)
- William Ryuji Massuda (PAD, Graduação)
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 pelas(os) estudantes dos conceitos referentes a determinado(s) tópico(s) da disciplina de maneira a auxiliá-las(os) a regular seu processo de aprendizagem. Para que possam cumprir efetivamente seu papel, estas atividades deverão ser realizadas de maneira individual e sem nenhum tipo de consulta. As Atividades Conceituais poderão ser aplicadas ao longo do semestre de duas formas:
- Questionários Online: serão disponibilizados questionários de múltipla escolha no sistema Moodle na área [MC102 – 1S2018 – Algoritmos e Programação de Computadores].
- Tarefas Presenciais: serão atividades também disponibilizadas via Moodle em área específica da turma da(o) aluna(o) e realizadas, sob supervisão, durante algumas aulas de laboratório. As datas destas atividades serão divulgadas na página web geral da disciplina (https://ic.unicamp.br/~mc102) com pelo menos duas semanas de antecedência.
Durante o semestre serão propostas n Atividades Conceituais. A nota atribuída a cada uma destas atividades $ {AC}_{i} $ será feita de maneira proporcional ao número de questões respondidas pela(o) aluna(o). Os Questionários Online terão peso 1 e as Tarefas Presenciais peso 3. A média das Atividades Conceituais, ${M}_{AC}$, é a média ponderada das n notas de Atividades Conceituais respeitando seus respectivos pesos.
Tarefas de Laboratório: Teremos m tarefas de laboratório, nas quais as(os) alunas(os) deverão implementar problemas propostos de maneira individual. O gerenciamento da submissão e testes das tarefas de laboratório será feito por um sistema automatizado conhecido como SuSy.
Os programas submetidos 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. Juntamente com o enunciado de cada tarefa de laboratório $L_i$ serão indicados o peso desta tarefa ${LP}_i \in \{1,2,3\}$, as regras específicas para a sua implementação e também a fórmula que indicará a nota das soluções válidas em função do número de testes abertos ou fechados que retornaram resultados corretos. A média dos laboratórios, $M_{L}$, é a média ponderada das m notas de laboratórios $L_i$ respeitando seus pesos $LP_i$.
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 20/abril 14-16h $P_2$ 3 20/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.
Resultado Final: Seja $M_{Elem}$ a média ponderada dos elementos da avaliação seguindo a fórmula:
e $M = min(M_{Elem}, M_P, M_L)$ a média sem exame. A média final F e a situação da(o) aluna(o) serão definidas de acordo com as regras abaixo.
- Caso Freq ≥ 75%:
- Caso M ≥ 5: a(o) aluna(o) estará aprovada(o) por nota e frequência com F = $M_{Elem}$.
- Caso 2.5 ≤ M < 5.0: a(o) aluna(o) terá direito a fazer o exame E no dia 13/julho das 14h–16h. Sua média final será F = (M+E)/2. Caso a(o) aluna(o) tenha obtido F ≥ 5.0 estará aprovada(o) por nota e frequência, caso contrário estará reprovada(o) por nota.
- Caso M < 2.5: a(o) aluna(o) estará reprovada(o) por nota com F = M.
- Caso Freq < 75%: a(o) aluna(o) estará reprovada(o) por frequência com F = M.
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).