Danilo S. Carvalho, Ph.D. Assistant Professor - Computer Programming / AI / NLP

Computação I (Python) (DCC - UFRJ)

Curso de Computação I (para Engenharias) do Departamento de Ciência da Computação - UFRJ

Informações:

  • Professor: Danilo Carvalho (danilosc .at. dcc.ufrj.br )
  • Local: Google Meet e Google Classroom (inscrição pelo SIGA).
  • Horário: 2ª-feira de 8h - 10h e de 13h - 15h (Engenharia Civil), 3ª e 5ª-feira de 15h - 17h (Química / BCMT).
  • Início: 22 de março de 2021.

  • Avaliação:

    A avaliação do curso é feita através de questionários teóricos, listas de exercícios (laboratórios), uma prova oral (entrevista) e um trabalho final de disciplina. As listas de exercícios consistem de problemas de programação que devem ser resolvidos e entregues em um certo tempo.

    O trabalho final consiste em um problema mais elaborado, a ser resolvido em grupos, e um questionário sobre as soluções elaboradas, a ser respondido individualmente. O enunciado do trabalho será apresentado à turma no lugar da última lista de exercícios.

    As distribuição e cálculo das notas são feitos da seguinte forma:

    A nota da disciplina será dividida em 11 módulos, cada um correspondente a um conjunto de laboratórios práticos e de questionários teóricos os pesos de cada parte da nota estão discriminados abaixo:

    • Módulos 1 - 3 (teoria): 3%
    • Módulos 1 - 3 (prática): 7%
    • Módulos 4 - 6 (teoria): 4%
    • Módulos 4 - 6 (prática): 11%
    • Módulos 7 - 10 (teoria): 5%
    • Módulos 7 - 10 (prática): 20%
    • Módulo 11 (teoria): 15%
    • Módulo 11 (prática): 35%

    A nota teórica do módulo 11 corresponde a uma avaliação oral (entrevista) individual com o aluno sobre todo o conteúdo do curso, e a nota prática desse módulo será dada através de um trabalho final em grupo, onde serão usados todos os conceitos aprendidos.

    Cada atividade será corrigida segundo 3 critérios:

    • Corretude (60%): Se o código está sintaticamente correto e produz as saídas esperadas, dadas as entradas definidas.
    • Clareza (20%): Se o código é legível, com nomes de funções e variáveis elucidativos.
    • Documentação (20%): Se a documentação foi escrita e está condizente com o código. A documentação deve também incluir os testes pertinentes ao código.

    Zerar a nota do critério de corretude implica zerar a nota de um exercício. Portanto testem bem o código para ver se o programa está funcionando corretamente.

    A nota de aprovação na disciplina é 5.0, pois não há prova final.

  • Material de apoio
  • Livros úteis:
    • Nilo Ney Coutinho Menezes: Introdução à Programação com Python: Algoritmos e Lógica de Programação Para Iniciantes. Novatec Editora [ISBN: 8575227181].


Objetivo:

  • Desenvolvimento das competências fundamentais da programação de computadores.
  • Habilitar o aluno à aplicação de conceitos de Programação Imperativa, Estruturada e Modular, para produção de código compreensível e reutilizável.
  • Capacitar o aluno ao desenvolvimento de programas usando a linguagem Python, usando das boas práticas apropriadas à linguagem.
  • Estimular a competência na leitura da documentação da linguagem, bem como a criação da documentação própria para os programas.


Ementa:

1ª aula

  • Apresentação do curso.
  • Conceitos iniciais: Programa de computador, Software, Aplicativo, Algoritmo.
  • Funcionamento básico do computador.
  • Linguagems de programação: O que são e para que servem; Interpretadores e compiladores.
  • A linguagem Python.
  • Operações aritméticas, e funções básicas usando Python.

2ª aula

  • Paradigmas de programação: Imperativo estruturado; Modular.
  • Uso articulado de funções
    • Definição e uso.
    • Decomposição de funções.
    • Reuso.
    • Argumentos default.
    • Escopo
  • Tipos de dados: Introdução.
  • Testes: Teste de mesa.

3ª aula

  • Tipos de dados: numéricos, string, bool.
  • Operadores e expressões booleanas.
  • Estrutura condicional.

4ª aula

  • Variáveis
    • Criação e utilização.
    • Atribuição de variáveis e seu funcionamento.
    • Alias (sinônimo) de variável.
    • Tipo e escopo.
  • Strings.
  • Tuplas.
  • Fatiamento.
  • Imutabilidade.

5ª aula

  • Manipulação e formatação de strings
    • str.lower(), upper(), count(), index(), find() e format().
    • str.replace() e str.strip().
  • Operador de pertinência: in e not in.
  • Listas: Introdução.
  • Conversão entre sequências: str.partition(), str.split() e str.join().

6ª aula

  • Listas:
    • Fatiamento.
    • Mutabilidade.
    • Atribuição de fatias.
  • Alias x cópia / Referência x valor.
  • Funções e operadores para manipulação de listas.
    • Inserção e exclusão.
    • Contagem e busca.
    • Ordenação.

7ª aula

  • Introdução às estruturas de repetição
    • Loop com teste de parada: while.
    • Contadores e acumuladores.
    • Erros comuns: Loop infinito e retorno precoce.

8ª aula

  • Estruturas de repetição: for.
    • Percorrendo sequências.
    • Erros comuns.

9ª aula

  • Laços aninhados.
  • Matrizes
    • Criação de matrizes.
    • Utilização.
  • Aplicação de laços aninhados à matrizes.

10ª aula

  • Projeto de aplicações
    • Padrão de arquitetura em camadas.
    • Função principal e organização do código.
    • Módulos do programa.
  • Interação com o usuário
    • Conceito.
    • Entrada de dados: Uso da função input().
    • Saída de dados: Uso da função print().
  • Coordenação dos módulos do programa.

11ª aula

  • Ponto de entrada do programa
    • A chamada da função main().
    • Condição de guarda.
  • Projeto e desenvolvimento de aplicações modulares.