Syntax and semantics of classical propositional logic; conjunctive and disjunctive normal forms; natural deduction for classical propositional logic; soundness and completeness theorems. Syntax, Tarski semantics and natural deduction for classical first-order logic. Introduction to intuitionistic propositional logic: Kripke semantics; natural deduction; Godel's interpretation into classical logic.
Métodos de Avaliação:
Periodic assessment (2 written tests) or written final exam.
Pré-requisitos:
Elementary notions of set theory.
Resultados de Aprendizagem:
On successfully completing the course the student should be able to:
1. manipulate formal syntax of propositional and predicate logic;
2. use first-order formulas to represent sentences in natural language;
3. give meaning to formulas and decide their validity in the context of a given interpretation;
4. explain and construct formal proofs in natural deduction;
5. describe some of the consequences of soundness and completeness results;
6. explain differences between intuitionistic and classical validity.
Bibliografia:
1. Logic and structure, van Dalen, Springer
2. Language, Proof and Logic, Barwise and Etchemendy, CSLI Publications
Docentes:
Luís Filipe Ribeiro Pinto
Carla Albertina Carvalhinho da Silva Mendes
8504N2 - Computational Logic
Regime: S2
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 70
Créditos: 6
Métodos de Ensino:
First-order Logic: Sequent Calculus; Prenex/Herbrand/Skolen normal forms; Propositional resolution in LPO; Unification; Resolution (first order). Horn clauses and SLD resolution.
Curry-Howard analogy: Term annotations in natural-deduction proof systems; proof equality and normalization; pure typed lambda-calculus and the Curry-Howard analogy.
Elementary notions of Discrete Mathematics and Logic.
Resultados de Aprendizagem:
Exploit efficient methods for validity checking of propositional formulas.
Justify/apply the resolution mechanism as a mean to establish the inconsistency of a first-order theory.
Take advantage of logic programming in (medium-sized) problem solving.
Bibliografia:
Proof Theory and Automated Deduction. Jean Goubault-Larrecq & Ian Mackie , Kluwer Academic Publishers, 1997.
From Logic to Logic Programming. Kees Doets, MIT Press, 1994.
Proofs and Types. Jean-Yves Girard & Yves Lafont & Paul Taylor, Cambridge University Press, 1990.
Docentes:
José Carlos Bacelar Almeida.
8504N3 - Language Processing and Compilers
Regime: S2
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 70
Créditos: 6
Métodos de Ensino:
2 hours/week of theorectical lectures; 1 hour/week theorectical-practical and 2 hours/week of practical work.
Programa: Language Processing Introduction: interpreters and compilers; Language processor architecture: lexical analysis, syntactic analysis and semantic analysis; Language and Grammar Comcept; Kinds of Languages and Grammars: Chomsky hierarchy. Regular Languages and Lexical Analysis: concept; Regular language specification with regular expressions; Regular Languages Recognition: automaton concept; Regular Expression to Finite State Automaton Conversion; flex as an automaton generator. Non-regular Languages and Syntactic Analysis: Context Free Grammars and Languages; Parser structure; Top-Down Parsing and LL(1) invariant; LL(1) conflicts and their resolution; Top-Down Parsing; Bottom-UP Parsing: LR(0) automaton, shift/reduce and reduce/reduce conflicts; SLR(1) automaton; LALR(1) automaton; yacc as a Bottom-UP parser generator. Semantic Analysis: abstract syntax tree; concrete grammar and abstract grammar; Intermediate representation.
Métodos de Avaliação:
60% (written mark) + 40% (Lab Project)
Pré-requisitos:
Imperative Programming
Resultados de Aprendizagem:
The student will be able to develop new domain specific languages and associated tools. He will also be able to develop front-ends and back-ends to other software applications.
Basically he will be able to specify and program any transformation from a textual forma tinto another format.
R. G. Crespo , Processadores de Linguagens: da concepção à implementação , IST-Press , 1998 .Pittman , Peters , The Art of Compiler Design: theory and pratice , Prentice-Hall , 1992 .
Docentes:
José Carlos Ramalho
José João Almeida
8504N4 - Object Oriented Programming
Regime: S2
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 70
Créditos: 6
Métodos de Ensino:
The Object Oriented Programming Paradigm: Data abstraction and modularity. Objects: structure and behaviour. Messages. Classes, hierarchy and inheritance. Inheritance versus Composition. Abstract Classes. The substitution principle. Dynamic binding. Polymorphism.
JAVA5: The J2SE5 platform: JDK5, JVM and byte-code. Basic constructs: Primitive types and operators. Control structures. Arrays. Object level: Classes and instances. Constructors. Instance methods and variables. Scope and access modifiers. Normal and static import. Class and variable methods. Vararg methods. Class hierarchy and inheritance. Abstract classes. Interfaces and user defined types. Method overloading and method overriding. Static and dynamic types. Dynamic method lookup. Polymorphism and extensibility. JCF: parameterized types and generic collections. Parameterized interfaces. Iterators. Lists, Maps and Sets. Type safe Enumerations. Streams: character, byte and object streams. Generic classes.
BlueJ: Study and practical use of the IDE BlueJ.
Métodos de Avaliação:
Final exam (55%) and group project(45%).
Pré-requisitos:
Previous knowledge of programming and data structures.
Resultados de Aprendizagem:
a) Understand the fundamental concepts of OOP (Objects, Classes, Inheritance, Polymorphism);
b) Understand how OOP concepts map into JAVA constructs;
c) Understand techniques for large scale programming;
d) Design the classes and interfaces needed to implement a given software problem (modelling);
e) Develop medium scale type safe, generic and extensible Java applications.
Bibliografia:
JAVA5 e Programação por Objectos, F. Mário Martins, Editora FCA, Setembro de 2006. - An Introduction to Object Oriented Programming, T. Budd, Addison-Wesley, 2nd Edition, 1997. - Java in a Nutshell, D. Flanagan, O´Reilly & Associates, 3th. Edition, 1999. - Core Java, G. Cornell, C. Horstmann, Prentice-Hall, 1996.
Docentes:
Fernando Mário Junqueira Martins
António Manuel Nestor Ribeiro
António José Borba Ramires Fernandes
8504N5 - Operating Systems
Regime: S2
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 56
Créditos: 6
Métodos de Ensino:
Lectures, practical exercises.
Programa:
Introduction to operating systems and systems programming. Process management and inter-process communication. Memory management, file systems and device management. Case studies.
Métodos de Avaliação:
Written examinations.
Pré-requisitos:
None.
Resultados de Aprendizagem:
1. To understand the role of the operating system.
2. To demonstrate an understanding of the architecture and operation of modern operating systems.
3. To understand the concept of process/task and the way the operating systems manages multiple activities.
4. To discuss trade-offs, mechanisms and strategies for resource management.
5. To write simple multi-process programs that correctly use communication and synchronisation primitives.
Bibliografia:
·Operating System Concepts (7ª ed), Avi Silberschatz, Peter Baer Galvin, Greg Gagne, John Wiley & Sons , 2005. Advanced Programming in the UNIX Environment, W. Richard Stevens, Stephen A. Rago, Addison Wesley, 2005
Docentes:
Paulo Sérgio Soares Almeida
António Luís Pinto Ferreira Sousa
8504N1 - Programme Calculation Álgebra of Programming
Regime: S2
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 70 60
Créditos: 6
Métodos de Ensino:
Lectures, Tutorials and Lab Classes.
Theory and lab classes
Programa:
Combinators and equational laws for Functional Programming.
Regular inductive data-structures and their programming algebra.
Introduction to generic programming.
An introduction to theory and method in programming. Reasoning about programs. Compositionality. Program combinators. Programming packages and software components. * Functional programming: motivation and historical background. The Haskell language and libraries. * Function composition. Abstraction and isomorphism. Introduction to the Hindley-Milner type system. Basic data/function combinators and properties (universal, reflection, fusion, absorption, cancellation, functorhood). Algebra of a datatype. Exchange law. McCarthys conditional. * An introduction to inductive regular datatypes. Functor algebras and the «cata-ana-hilo» triology. Polinomial recursion patterns. Case study: sorting algorithms. * Rules for encoding Haskell data definitions in the C programming language. Expressiveness and compatcness of a programming language. * Parametric polymorphism. Generic programming. Type functors. Introduction to polytypism. * Functional programming using monads. `Input/output'. Exceptions. Monad laws.
Basic knowledge of functional programming concepts and data-structures.
Functional Programming
Resultados de Aprendizagem:
To be able to establish simple equational reasonings about functional programs.
To write functional programs using "fold" and "unfold" recursion patterns over arbitrary regular datatypes.
To be able to establish simple equational reasonings about datatype-generic recursive programs.
To interpret functional programs as hylomorphisms.
This course teaches a constructive method for functional programming based on a selected library of combinators and associated calculus. This introduces students to the Algebra of Programming and pointfree reasoning, as well as to polytypism and genericity.
Bibliografia:
J.N. Oliveira, An Introduction to Pointfree Programming, DIUM 1999.
J.N. Oliveira, Recursion in the Pointfree Style, DIUM 1999.
[Bir98] R. Bird. Introduction to Functional Programming Using Haskell . Series in Computer Science. Prentice-Hall International, 2nd edition, 1998. C. A. R. Hoare, series editor. [Hu00] P. Hudak. The Haskell School of Expression - Learning Functional Programming Through Multimedia . Cambridge University Press, 1st edition, 2000. ISBN 0-521-64408-9. [Ol99a] J.N. Oliveira. An Introduction to Pointfree Programming. 37p., Departamento de Informática, Universidade do Minho, 1999. [Ol99b] J.N. Oliveira. Recursion in the Pointfree Style. 33p., Departamento de Informática, Universidade do Minho, 1999. [Ol01a] J.N. Oliveira. A Quick Look at Monads, 2001. Departamento de Informática, Universidade do Minho. Chapter of book in preparation. [VB00] J.M. Valença and J.B. Barros. Fundamentos da Computação II: Programação funcional. Universidade Aberta, 2000. ISBN 972-674-318-4, 234 p.
Docentes:
José Nuno Fonseca de Oliveira
Olga Maria Pacheco
Jorge Miguel Matos Sousa Pinto
8505N3 - Computability
Regime: S1
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 56
Créditos: 6
Métodos de Ensino:
Turing machines and computable functions. Partial recursive functions. Church’s thesis. Recursive and recursively enumerable languages.
Decidability and semi-decidability. Recursive and recursively enumerable sets. Complexity classes P and NP. NP-complete problems.
Métodos de Avaliação:
Final exam. Individual project during the semester.
Periodic assessment (two written tests) / Written final exam.
Pré-requisitos:
None.
Basic formal language and automata theory as in Language Theory.
Resultados de Aprendizagem:
To understand the concepts of Turing machine and partial recursive function and to describe in these models computational solutions for simple problems.
To know some of the evidence for Church’s thesis and to recognize its importance.
To apply universal functions in computability arguments and to explain the main ideas underlying the construction of these functions.
To give proofs of undecidability in Computability Theory.
To relate the concepts of decidability and semi-decidability.
To understand the concept of NP-complete problem and to know some examples of this kind of problem.
Bibliografia:
J. Hopcroft e J. Ullman, Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, 1979.
N. Cutland, Computability, Cambridge, 1994.
M. Davis, Computability and Unsolvability, McGraw Hill, 1982.
Docentes:
José Carlos Cruz da Costa
José Carlos Soares Espírito Santo
8505N5 - Concurrent Programming
Regime: S1
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 56
Créditos: 6
Métodos de Ensino:
Lectures and practical classes.
Programa:
Concurrent systems modeling, concurrency in shared-memory systems (mutual exclusion, deadlocks, semaphores, monitors), concurrency in message-passing systems (channels and ports, synchronous and asynchronous systems, client-server, faults).
Métodos de Avaliação:
Written exam and programming assignment.
Pré-requisitos: None.
Resultados de Aprendizagem:
Model concurrent systems.
Understand the main models and programming primitives for shared-memory concurrency.
Write shared-memory concurrent applications.
Understand the main models and programming primitives for message-passing concurrency.
Write message-passing concurrent applications.
Bibliografia:
Principles of Concurrent and Distributed Programming: Algorithms and Models, M. Ben-Ari, Prentice-Hall, 2006;
Java Concurrency in Practice, Brian Goetz, Tim Peierls, Joshua Bloch, Addison Wesley, 2006
Programming Erlang, Joe Armstrong, OReilly, 2007
Docentes:
Paulo Sérgio Soares Almeida
8505N2 - Databases
Regime: S1.
Tipo: Compulsory.
Língua de Instrução: Portuguese.
Horas/Semana: 56.
Créditos: 5.
Métodos de Ensino:
- Lectures (2 hours/week) and practical classes (2 hours/week) in computer room work.
Programa:
- Introduction to database systems.
- The Relational Model
- Relational Algebra and Relational Calculus.
- Database analysis and design.
- Architectures of database systems.
- The SQL language.
- Database systems administration.
- Data security, recovery and protection.
- Distributed database systems.
- Web Applications of databases.
- New application areas for database systems.
- Tools and computational environments for databases.
Métodos de Avaliação:
- 2 written tests and 1 practical project.
Pré-requisitos:
None.
Resultados de Aprendizagem:
At the end of the course students should be able to:
- know the terminology and the basic concepts related to database systems.
- acquire knowledge and expertise to design and develop database systems.
- know the Relational Model, Relational Algebra and Relational Calculus.
- administrate and apply security, recovering and protect policies to database systems.
- deal with SQL, creating, manipulating and controlling databases effectively.
- learn how to deal with database management systems.
- develop efficient and robust database systems applications.
Bibliografia:
- Connolly, T., Begg, C., Database Systems, A Practical Approach to Design, Implementation, and Management , Addison-Wesley, 3ª Edição, 2002.
- Garcia-Molina, H., Ullman, J., Widom, J., Database Systems: The Complete Book, Prentice Hall, 2001.- Teorey, T., Database Modeling and Design: The Fundamental Principles, II Ediçao, Morgan Kaufmann, 1994.- Date C., An Introduction to Database Systems , Volume I, VI Edição, Addison-Wesley Systems Programming Series, 1996. - Date, C.J., Darwen, H., A Guide to the SQL Standard , IV Edição, Addison-Wesley Inc, 1997.
- Ramakrishman, R., Database Management Systems, McGraw-Hill International Editions, 1998.
Docentes:
Orlando Belo.
8505N4 - Geometry
Regime: S1
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 56
Créditos: 6
Métodos de Ensino:
Theoretical and practical classes.
Programa:
Affine and euclidian spaces. Geometrical tranformations. Curves and surfaces.
Métodos de Avaliação:
Individual resolution of exercises and written examination.
Pré-requisitos:
Basics notions of linear algebra.
Resultados de Aprendizagem:
By the end of the course the student should be able to:
- solve incidence and metric problems;
-identify simple geometrical transformations and analise their properties;
- describe differential structures on simples curves and surfaces;
- apply basics notions of projective geometry to solve practical problems.
Bibliografia:
“Geometry and its Applications”, W. Meyer, Harcout Academic Press (1999);
“Mathematics for 3D Game Programming and Computer Graphics”, E. Lengyel, Charles River Media (2002);
“Géométrie”, M. Audin, Éditions Belin (1998)
Docentes: Lucia Fernandez Suarez
8505N1 - Numerical Analysis
Regime: S1
Tipo: Compulsory
Língua de Instrução:
Horas/Semana: 70
Créditos: 7
Métodos de Ensino:
Lectures (2 hours/week) and problem solving sessions in a computing lab, with MATLAB (3 hours/week) The problems to be solved are proposed to the students with 1 or 2 weeks in advance.
Programa:
Numerical errors and stability of algorithms. Polynomial interpolation. Numerical quadrature (Newton Cotes’ methods). Non-linear equations. Simultaneous linear equations (direct methods only).
Métodos de Avaliação:
Problem solving in the computing lab during the semester (about every two weeks).
Pré-requisitos:
Linear Algebra, functions of several variables, programming skills.
Resultados de Aprendizagem:
1. To analyse, in simple cases, the numerical erros produced in floating point arithmetic. – 2. To solve problems using methods on polynomial interpolation, numerical quadrature, non-linear equations, simultaneous linear equations. – 3. To evaluate algorithms in terms of their efficiency and numerical stability. – 4. To develop MATLAB codes for the studied methods. – 5. To select MATLAB’s routines to solve problems and discuss the results obtained. -6. To explain the numerical errors in the results in terms of the conditioning of the problem and the stability of the algorithm used.
Bibliografia:
1-Cálculo Científico com Matlab e Octave, A. Quarteroni, F. Saleri, Springer-Verlag Itália, 2006; 2-Métodos Numéricos, Heitor Pina, McGraw-Hill de Portugal, 1995.
Docentes:
Rui Ralha
8506N5 - Computational Number Theory
Regime: S2
Tipo: Compulsory
Língua de Instrução: Portuguese
Horas/Semana: 56
Créditos: 6
Métodos de Ensino:
Theoretical a practical classes.
Programa:
Primitive roots and indexes, application to the study of some kinds of congruences. Distribution of primes, prime number theorem. Primality and pseudo-primality testing. Algoritms for prime numbers generation. The RSA cypher. Quadradic residues, quadratic reciprocity law. Rational fractions, Pell's equations. Factorization algoritms (Fermat, Pollard, via continued fractions, etc.). Representation of integers as a sum of squares. Gaussian integers and primes.
Métodos de Avaliação:
Written examination.
Pré-requisitos:
Basic number theory as in Discrete Mathematics.
Resultados de Aprendizagem:
Study some kinds of non-linear congruences.
Apply the knowledge about continued fractions to solve ceratin equations.
Know the main factorization algoritms.
Know the main primality and pseudo-primality tests.
Bibliografia:
David M. Burton, Elementary Number, Wm. C. Brown, 1989.
Kenneth Rosen, Elementary Number Theory and its applications, Longman, 2000.
Song Y. Yan, Number Theory for Computing, Springer, 2002.