filmeu

Class Programming Languages II

  • Presentation

    Presentation

    This CU ends a journey that started with Programming Fundamentals, followed by Algorithms and Data Structures and is now focused on deepening the students' programming knowledge. Focused on the development and maintenance of highly complex programs, the imperative programming paradigm is no longer adequate and the object-oriented and functional paradigms are addressed. Some concepts adjacent to the implementation phase are equally addressed, such as version control, unit/functional tests, code coverage and other software quality metrics. This is a fundamental CU in the training of any IT professional, as it provides the knowledge and tools that will be required by the real-world projects that will, some day, be developed by the students.
  • Code

    Code

    ULHT2531-898
  • Syllabus

    Syllabus

    Programming paradigms Imperative, object-oriented, functional Object-oriented programming concepts Entities, attributes, actions Class vs Object, encapsulation principle Inheritance, polymorphism, parameterisation by inheritance, composition UML Class diagrams OOP applied to Java Classes, objects, variables Constructors, methods Visibility, exceptions Data structures: Arrays, Lists, Maps Inheritance, abstract classes Input/Output Unit tests JUnit Version Control Systems Git, Github Design patterns Factory, Singleton, Observer/Observable, Composite Function programming concepts in Kotlin Pure functions, lambdas, first-order functions, internal iteration Best practices in multi-paradigm programming
  • Objectives

    Objectives

    This CU aims to present a multi-paradigm vision of programming. The 3 most popular paradigms (imperative, object-oriented and functional) are analysed and compared. Students review concepts of imperative programming and acquire concepts of object-oriented programming (inheritance, encapsulation, polymorphism, etc.) and functional programming (lambdas, first-order functions, etc.), applying them to complex software development projects, using modern multi-paradigm languages (Java, C#, Python, Kotlin, Javascript). Along the semester, students become aware of the need for maintenance cost reduction by developing software with better quality, taking advantage of the specific advantages of each paradigm.
  • Teaching methodologies

    Teaching methodologies

    Theoretical classes are partially taught in the "flipped learning" model: videos are provided before the theoretical class that students must watch; the theoretical class is mostly occupied with exercises on that subject and their respective correction, interspersed with some additional material. Some homework assignments are assessed in the "peer assessment" model: students anonymously evaluate each other's assignments. The validation of the code produced in practical assignments and the project is done through an automatic code validation tool, which allows students great autonomy. Some programming exercises are mandatory with the support of an LLM (ChatGPT, Gemini, etc.). These exercises will have adapted instructions to prevent simple copy/paste to the LLM - they will be presented visually, either through diagrams or videos demonstrating the desired outcome. The goal is for students to practice constructing effective prompts.
  • References

    References

    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.
  • Assessment

    Assessment

    É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)

     

SINGLE REGISTRATION
Lisboa 2020 Portugal 2020 Small financiado eu 2024 prr 2024 republica portuguesa 2024 Logo UE Financed Provedor do Estudante Livro de reclamaões Elogios