Licenciatura | Engenharia de Redes e Segurança Informática

Introdução ao Sistemas Computacionais

Área Científica

Ciências Informáticas

Duração

Semestral

ECTS

6

Horas de Contacto Teórico Práticas

48h

Objetivos de aprendizagem e a sua compatibilidade com o método de ensino

Preparar os estudantes em tópicos relacionados com teoria da computação, com um ênfase especial em tópicos relacionados com linguagens formais.
Munir os estudantes dos conhecimentos necessários que lhes permitam utilizar corretamente? linguagens regulares, expressões regulares, linguagens não regulares, autómatos finitos deterministas e não-deterministas, linguagens e gramáticas livres de contexto, autómatos de pilha, e Máquinas de Turing.
Capacitar os estudantes para que estes sejam capazes de expressar problemas computacionais usando linguagens formais, autómatos e máquinas de Turing bem como sobre métodos para formalizar problemas computacionais relacionados com linguagens e para provar afirmações relacionadas com esses problemas.

Conteúdos programáticos

1. Introdução e definições básicas: linguagens, gramáticas, autómatos.
2. Autómatos finitos determinísticos e não-determinísticos e suas relações. Transdutores.
3. Linguagens regulares, gramáticas regulares, expressões regulares, autómatos finitos e suas relações.
4. Propriedades das linguagens regulares.
5. Linguagens livres de contexto não-regulares, parsing.
6. Simplificação das gramáticas livres de contexto, formas normais.
7. Autómatos de Pilha não-determinísticos e determinísticos.
8. Máquinas de Turing padrão.
9. Outros modelos de Máquinas de Turing, autómatos linearmente limitados.
10. Hierarquias de linguagens formais e autómatos.
11. Limites da computação algorítmica.
12. Outros modelos de computação.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular.

Ao completar a unidade curricular, espera-se que os estudantes sejam capazes de:

– Nomear as contribuições significativas para a teoria da computação e os seus protagonistas;
– Identificar problemas tratáveis com autómatos finitos e exprimi-los com notação rigorosa;
– Comparar os autómatos finitos deterministas, não-deterministas e as expressões regulares no reconhecimento das linguagens regulares;
– Aplicar as propriedades das linguagens regulares em provas;
– Identificar problemas que se podem tratar com gramáticas sem contexto e usar notação rigorosa para os descrever;
– Comparar as gramáticas sem contexto e os autómatos de pilha no reconhecimento das linguagens sem contexto;
– Exprimir problemas de computação com recurso ao modelo da máquina de Turing;
– Relacionar os modelos de computação estudados com as suas aplicações na teoria da computabilidade e da complexidade.

Metodologias de ensino e de aprendizagem específicas da unidade curricular articuladas com o modelo pedagógico.

Na componente teórica são apresentados os conceitos e discutidas situações problemáticas, em geral motivadas por desafios gerais de várias áreas da informática, através de apresentações feitas pelo docente em sala de aula, complementada, quando adequado, com outros elementos pedagógicos, que estimulem o interesse e participação dos alunos e a interação docente/discentes. Na componente prática, os alunos discutem e resolvem exercícios propostos pelo docente de uma lista predefinida. As competências de saber fazer são também exercitadas nas aulas teóricas, de forma a aumentar a ligação entre os conceitos teóricos e a sua aplicação.
Em suma, a metodologia de ensino e aprendizagem encontra-se consubstanciada nos princípios enumerados no modelo pegadógico de ensino do ISTEC (Aprendizagem Significativa, Motivação, Orientação, Interação, inclusão e Aprendizagem Centrada no Estudante).

Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da unidade curricular.

Os conteúdos programáticos foram definidos de forma a permitir uma progressão que, partindo de conceitos básicos, possibilite a compreensão do edifício conceptual que sustenta os fundamentos teóricos da ciência dos computadores, especialmente no que respeita aos problemas de computabilidade e da complexidade espacial e temporal dos algoritmos.
A metodologia centrar-se-á na interatividade entre os vários agentes educativos, começando pelo docente e estendendo-se a todos os estudantes, envolvendo os estudantes no processo de ensino aprendizagem de forma crítica e ativa através dos fóruns. Com uma abordagem de debate e utilizando?os fóruns e documentos de apoio inerentes às temáticas abordadas, espera-se que exista uma forte motivação e participação por parte dos estudantes nas atividades a desenvolver. O aluno deverá ser capaz de perceber e usar a capacidade de computação das máquinas, assim como os seus limites teóricos, bem como de formalizar adequadamente e avaliar se determinados problemas têm solução computacional ou não. Deverá perceber e saber usar modelos, técnicas e algoritmos de computação simbólica introduzidos na resolução de problemas informáticos do dia-a-dia.
Deste modo procura-se estimular o trabalho?autónomo dos estudantes e desenvolver os seus sentidos e pensamentos críticos sobre as questões que o envolvem, direta ou indiretamente.

Bibliografia

Brooksher, Glenn & Brylow, Dennis (2019). Computer Science: An Overview, 13th edition, Pearson
Sipser, Michael (2013). Introduction to the Theory of Computation, 3rd.Ed., Cengage Learning
Sedgewick & Wayne (2016). Computer Science: An interdisciplinary Approach, Pearson
Hickey, Jason; Madhavapeddy,Anil & Minsky, Yaron (2014)?Real World OCaml. O’Reilly.
Hopcroft, Motwani & Ullman (2007). Introduction to Automata Theory, Languages and Computation, 3rd Ed., Pearson

INTERNET:
Acesso a publicações da especialidade, gratuitamente, através da rede SPRINGER:
https://link.springer.com/