filmeu

Disciplina Linguagens de Programação II

  • Apresentação

    Apresentação

    Esta UC é o culminar de um caminho iniciado em Fundamentos de Programação e aprofundado em Algoritmia e Estruturas de Dados, solidificando os conhecimentos de programação. Com um foco no desenvolvimento e manutenção de programas de elevada complexidade, o paradigma imperativo deixa de ser suficiente e são abordados os paradigmas orientado a objectos e funcional. São igualmente abordados conceitos adjacentes à fase de implementação, como o controlo de versões, os testes unitários e funcionais, a cobertura de código e outras métricas de qualidade. Esta é uma UC fundamental na formação de qualquer profissional da área de Informática, pois fornece um conjunto de conhecimentos e ferramentas que serão essenciais nos projectos empresariais em que estes alunos virão a estar inseridos.
  • Conteúdos Programáticos

    Conteúdos Programáticos

    Paradigmas de programação Imperativo, funcional, orientado a objetos Conceitos de programação por objectos Entidades, Atributos, Acções Classe vs Objecto, Principio do encapsulamento Herança, polimorfismo, parametrização por herança, composição UML Diagramas de classes Java orientado a objectos Classes, objectos, variáveis Construtores, métodos Visibilidade, Exceptions Estruturas de dados: Arrays, Lists, Maps Herança, classes abstractas Input/Output Testes unitários JUnit Controlo de versões Git, Github Padrões de desenho Factory, Singleton, Observer/Observable, Composite Conceitos de programação funcional em Kotlin Funções puras, lambdas, funções de primeira ordem, iteração interna, operações com listas Boas práticas de programação multi-paradigma
  • Objetivos

    Objetivos

    Esta UC tem como objetivo apresentar uma visão multi-paradigma da programação. São analisados e comparados os 3 paradigmas mais populares: imperativo, orientado a objectos e funcional. Os alunos revêm conceitos da programação imperativa e adquirem conceitos fundamentais da programação orientada a objetos (herança, encapsulamento, polimorfismo, etc.) e da programação funcional (lambdas, funções de 1a ordem, etc.) de forma a que consigam aplicá-los em projetos de desenvolvimento de software complexo usando linguagens de programação modernas multi-paradigma (Java, C#, Python, Kotlin, JavaScript). Ao longo do semestre, os alunos são consciencializados para a necessidade de redução de custos de manutenção através de melhorias na qualidade do software produzido e aplicação de boas práticas tirando partido das vantagens específicas de cada paradigma. São igualmente expostos a ferramentas essenciais no desenvolvimento moderno de software, como controlo de versões e testes unitários. Todos estes conceitos são aplicados num projeto de elevada complexidade, multi-paradigma e multi-linguagem que atinge em média as 2500 LOC. O projeto tem que ser desenvolvido em Git e ter uma cobertura elevada de testes unitários. Mais do que as capacidades técnicas, os alunos trabalham a gestão de tempo, o rigor e a resiliência, a capacidade analítica e espírito crítico, a criatividade e o trabalho em equipa.
  • Metodologias de ensino

    Metodologias de ensino

    As aulas teóricas são parcialmente leccionadas no modelo "flipped learning": são disponibilizados vídeos antes da aula teórica que os alunos devem visualizar; a aula teórica é maioritariamente ocupada com exercícios sobre essa matéria e respetiva correção, intercalada com alguma matéria adicional. Os trabalhos de casa são avaliados no modelo "peer assessment": os alunos avaliam anonimamente os trabalhos uns dos outros. A validação do código produzido nas fichas práticas e no projeto é feita através de uma ferramenta de validação automática do código, que permite aos alunos grande autonomia. Alguns exercícios de programação são realizados obrigatoriamente com o apoio de um LLM (ChatGPT, Gemini, etc..). Estes exercícios terão enunciados adaptados, para evitar que seja simplesmente feito o copy/paste para o LLM - serão apresentados de forma visual, seja por diagramas seja por vídeos demonstrando o que se pretende. O objetivo é que os alunos treinem a construção de "prompts" eficazes.
  • Bibliografia principal

    Bibliografia principal

    Booch, G. et al (2007) Object-Oriented Analysis and Design with Applications, 3rd edition. Fowler, M. (2003) UML Distilled, 3rd edition. Downey, A. and Mayfield, C. (2019) Think Java: How to Think Like a Computer Scientist, 2nd edition.
  • Avaliação

    Avaliação

    Época de avaliação contínua

    • Componente teórica (50% da nota final, nota mínima 9,5) - tem duas opções: avaliação contínua ou apenas uma frequência completa
      • Avaliação contínua:
        • 4 TPCs teóricos individuais - 20%
        • Frequência intermédia (primeira metade da matéria) - 30% - nota mínima: 8
        • Frequência completa (toda a matéria) - 50% - nota mínima: 8 (apenas para quem passou na frequência intermédia)
      • Frequência completa (toda a matéria) - 100% - nota mínima: 9,5
    • Componente prática (50% da nota final, nota mínima 9,5)
      • 3 mini-fichas práticas individuais - 28%
        • mini-ficha 1 e 2 - 12% cada uma
        • mini-ficha 3 - 4%
      • Participação prática - 16%
      • Projeto em grupos de 2, com defesa individual - 56%
        • A defesa inclui alterações no código da aplicação que cada aluno terá que fazer individualmente.
        • A nota da discussão presencial pode ir de 0 a 100% e é aplicada à nota do projecto
        • O aluno terá que conseguir fazer pelo menos metade das alterações pedidas para passar na componente prática.

    Época de recurso e época especial

    • Exame (50% da nota final, nota mínima 9,5)
    • Projeto (50% da nota final, nota mínima 9,5)

    Transição de notas

    • As notas das componentes teórica e prática transitam automaticamente entre épocas do mesmo ano letivo. Isto é, se o aluno teve nota superior a 9,5 numa das componentes e reprovou na outra componente em avaliação contínua, apenas precisa de repetir a componente reprovada em época de recurso/especial.
    • Dado não ter havido mudança de conteúdos, as notas das componentes aprovadas em 2024/25 podem transitar para 2025/26. Para tal, o aluno tem que solicitar por email essa transição e nesse caso, não pode repetir a avaliação da componente aprovada. Não haverá transição de notas de outros anos letivos.

     

INSCRIÇÃO AVULSO
Lisboa 2020 Portugal 2020 Small financiado eu 2024 prr 2024 republica portuguesa 2024 Logo UE Financed Provedor do Estudante Livro de reclamaões Elogios