Metodologia - PythonUFRJ

Competências em programação de computadores tornam-se cada dia mais necessárias para profissionais de diversas áreas, uma vez que o grande volume de informações em meio digital, associado ao barateamento do poder computacional, abriu novas perspectivas. Aqueles que conseguem se apropriar deste ferramental são capazes não apenas de consumir os recursos disponíveis, mas de propor e usufruir de maneiras inovadoras de utilizá-los nos mais diversos contextos. Atualmente, fala-se do empoderamento tecnológico, termo que remete à real apropriação das Tecnologias da Informação e Comunicação (TICs). Tal apropriação transcende o que um curso introdutório em programação pode atingir, daí o investimento em um outro curso sobre programação após o curso introdutório.

Objetivo do Curso - Computação 2

O objetivo do curso de computação 2 da UFRJ é que os discentes de graduação de outras áreas que não computação possam melhor compreender e situar-se frente ao desenvolvimento de software e ferramentas computacionais para a sua área de atuação. Ela sucede à execução de uma capacitação em introdução à programação em Python (provida pelo curso de Computação 1), e visa dar continuidade ao processo de desenvolvimento de competências em programação. Para prover uma maior proficiência na programação, será trabalhado o aprimoramento das competências fundamentais da programação de computadores, bem como o desenvolvimento de competências em Programação Orientada a Objetos (POO). Para tornar o futuro graduado minimamente proficiente em programação de forma a atender às demandas de sua profissão, serão também abordados o uso significativo de pacotes matemáticos e a computação científica.

A Programação Orientada a Objetos é ao mesmo tempo uma ferramenta para escrita de programas (que podem ser puramente orientado a objetos ou não), como também um estilo de programação mais sofisticado, com grande potencial, porém que requer um conhecimento prévio das estruturas de programação básicas ou primitivas. Uma vez provida capacitação dessa natureza em estágio anterior, a POO é a sequência natural de evolução para quem pretende trabalhar com programação. É uma competência útil não só para o desenvolvimento de seus próprios programas, como também para a compreensão e participação em projetos maiores que envolvam desenvolvimento de software e programação.

Serão abordados conceitos mais sofisticados de programação: organização de um programa em objetos, como interagir com o usuário de modo não linear, usando uma interface gráfica, como usar Python para computação científica.

Objetivos Específicos

    Entendimento dos conceitos fundamentais da Programação Orientada a Objetos: classe, objeto, instância e encapsulamento;

    Uso de objetos na programação imperativo-estruturada;

    Uso de interfaces de interação não linear com o usuário (Interfaces gráficas - GUI);

    Projeto de Programas OO (métodos recursivos, polimorfismo, interfaces);

    Uso de pacotes para aplicações matemáticas (Numpy e Scipy) e plotagem de gráficos e aplicações gráficas (matplotlib);

    Persistência de dados;

    Construção de código organizado, reutilizável e legível, seguindo os princípios das boas práticas de programação.

Metodologia - Computação 2

Para atingir o objetivo, serão providas aulas teóricas e práticas de programação na linguagem de programação Python. Estão planejadas minimamente 12 semanas de aula, com carga horária de 2 horas cada aula, com a periodicidade de 2 aulas por semana. Aulas teóricas abordam exposição de conceitos novos e sua utilização (incluindo o estudo de situações problema e a realização de exercícios com a participação do professor, em esquema de estudo dirigido), bem como análise e discussão do processo de programação e de programas já prontos. Durante as aulas práticas, os participantes terão a oportunidade de programar suas soluções para as atividades propostas com a acessoria do professor.

Nossa abordagem parte da construção e uso de Classes e objetos na programação estruturada, trabalha os conceitos introdutórios de classe, objeto, herança e encapsulamento para representar informações e situações do universo da matemática. A seguir, passamos a uma exploração destes mesmos conceitos revisitando, com mais propriedade e sofisticação, estruturas de dados e programação vistas no módulo anterior, e aproveitamos para desenvolver, gradativamente, técnicas de programação efetivamente orientadas à objetos. Bibliotecas matemáticas são usadas para trabalhar de forma direta o uso de objetos de programação e a programação orientada a objetos, de forma que possamos abordar conceitos mais abstratos de programação, viabilizando assim a construção de programas mais sofisticados.

O recurso didático a ser usado majoritariamente será a construção de programas. Além dos exercícios de fixação serão propostos exercícios a serem resolvidos em caráter de estudo dirigido, ou seja, interagindo com os colegas e com o professor, para a construção da solução. Este tipo de construção colaborativa permite uma experiência “mão na massa” (hands on) permite uma experiência de aprendizagem mais rica e condizente com o estágio de conhecimento e competência em programação esperado dos participantes.