Capacitar o aluno a resolver problemas envolvendo as estruturas de dados básicas de memória principal, descritas no programa, assim como discernir qual a melhor estrutura para um determinado problema no contexto em que ele se insere.
Introduzir os conceitos de linguagens formais e autômatos e suas relações com linguagens de programação. Introduzir os conceitos básicos de computabilidade e complexidade, discutindo as limitações da ciência da computação.
O objetivo desta disciplina é que o aluno compreenda os conceitos teóricos envolvidos no reconhecimento sintático e estrutural de padrões e seja capaz de aplicá-los em problemas práticos. Tais conceitos envolverão noções gerais de Grafos e Reconhecimento de Padrões, e grande ênfase em Linguagens Formais, tanto do ponto de vista determinístico quanto estocástico. Serão abordados exemplos de problemas práticos em várias áreas como Bioinformática, Processamento de Linguagem Natural e Visão Computacional.
Introduzir o conceito de complexidade dos algoritmos e conscientiza-lo das limitações da ciência da computação, habilitando-o a melhor resolver problemas com o auxílio do computador. Introduzir os conceitos de linguagem formal e autômatos, para auxiliar a resolver outra classe de problemas relacionados às linguagens de programação.
Permitir que o aluno se familiarize com o ambiente similar ao do exercício de sua profissão. Além disso, dar-lhe uma visão mais abrangente da área e a possibilidade de trabalhar junto a uma equipe desenvolvendo um projeto da prática profissional. Desenvolver no estudante o espírito, a mentalidade de pesquisa e a capacidade de síntese. Permitir que obtenha uma visão mais global das áreas de Ciência de Computação ou Sistemas de Informação através da elaboração de um projeto assistido por docente.