Expor o estudante a conceitos fundamentais de programação de baixo e médio nível através de aulas teóricas e projetos práticos envolvendo o desenvolvimento de projetos de software utilizando linguagem de montagem, ferramentas para gerenciamento de compilações e construção de programas de médio porte em uma linguagem procedimental. Apresentar os fundamentos básicos, teóricos e práticos, do uso de expressões regulares e gramáticas no desenvolvimento de software através de analisadores léxicos e sintáticos. .
Conceitos básicos de arquitetura de computadores. Linguagem de montagem, montadores, ligação de programas, interrupções, interface com linguagens de alto nível, interrupções, interface com hardware. Gerenciamento de compilação de programas e bibliotecas com ferramentas como make. Modularização de código. Construção de um programa de médio porte em uma linguagem procedimental (por exemplo, C). Técnicas de depuração e testes de programas. Ferramentas auxiliares no desenvolvimento de programas. Expressões regulares, geradores de analisadores léxicos, noção básica de gramáticas, geradores de analisadores sintáticos. Entrada e saída padrão, concatenação de programas através de pipelines, linguagens de processamento de texto (por exemplo, awk e perl).
1 - Bob Neveln. LINUX assembly language programming. Prentice Hall PTR, 2000. 2 - Andrew Oram e Steve Talbott. Managing projects with Make. 2nd ed., Feb. 1993. O'Reilly & Associates, 1993. 3 - Free Software Foundation. GNU Make Manual. 2006. Disponível em http://www.gnu.org/software/make 4 - Brian W. Kernighan e Rob Pike. The practice of programming. Addison-Wesley, 1999. 5 - Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger. The AWK Programming Language, Addison-Wesley, 1988. 6 - Reuven Lerner, Reuven M. Lerner. Core Perl', Prentice-Hall, 2002