MAC0216  Técnicas de Programação I

Por | Em

Até 2015 se chamou MAC0211 Laboratório de Programação I.

OBJETIVOS:  Expor o estudante a conceitos e ambientes de programação e integração de módulos e programas, partindo de baixo nível (linguagem de montagem), utilização de ferramentas do sistema operacional e de desenvolvimento de software até atingir os princípios de orientação a objetos. Estes tópicos são aplicados em uma parte prática que consiste em desenvolver um sistema de software em linguagem procedimental.

PROGRAMA RESUMIDO:  Arquitetura de computadores. Linguagem de montagem e ligação de código objeto. Interação com o sistema operacional e Shell scripts. Gerenciamento de compilação de programas Modularização de código. Bibliotecas estáticas e dinâmicas. Teste e depuração. Linguagens procedimentais de alto nível. Linguagens dinâmicas de script. Introdução aos conceitos de orientação a objetos.

PROGRAMA:  Conceitos básicos de arquitetura de computadores. Linguagem de montagem e montadores, ligação de código objeto, interface com hardware e com linguagens de alto nível. Interação com o sistema operacional no nível do shell: streams, entrada e saída padrão, redirecionamento e pipes. Shell scripts. Gerenciamento de compilação de programas e bibliotecas com ferramentas como make. Modularização de código. Ligação de módulos, estática e dinâmica. Construção de bibliotecas. Técnicas de depuração e teste de programas. Construção de um sistema em uma linguagem procedimental (por exemplo, C). Estudo de uma linguagem dinâmica de script (por exemplo, Python ou Ruby). Introdução aos conceitos de orientação a objetos no âmbito de linguagens dinâmicas.

RESPONSÁVEIS:  Alfredo Goldman vel Lejbman, Fabio Kon, Kelly Rosa Braghetto Marco Dimas Gubitoso.

PRÉ-REQUISITO:  MAC0110.

CARGA HORÁRIA SEMANAL E NÚMERO DE CRÉDITOS:  8 horas, 4 créditos-aula e 2 créditos-trabalho.

CRITÉRIO DE AVALIAÇÃO DA APRENDIZAGEM: 
Método: O aluno será avaliado continuamente durante o semestre, tendo em vista as atividades apresentadas ao professor, monitores e seus pares na disciplina.
Critério: Média ponderada dos trabalhos e provas realizados durante a disciplina e assiduidade àss aulas e trabalhos.
Norma de recuperação: alunos com média final entre 3,0 e 4,9 terão a opção de realizar uma prova ou trabalho extra que será contabilizado em uma nova média final.

BIBLIOGRAFIA BÁSICA: 

  • A.V. Aho, B.W. Kernighan, and Peter J. Weinberger, The AWK Programming Language, Addison-Wesley, 1988.
  • Free Software Foundation, GNU Make Manual, http://www.gnu.org/software/make, 2006.
  • B. Neveln, LINUX assembly language programming, Prentice Hall, 2000.
  • B.W. Kernigham and R. Pike, The practice of programming, Addison-Wesley, 1999.
  • R. Lerner and R.M. Lerner, Core Perl, Prentice-Hall, 2002.
  • A. Martelli, Python in a Nutshell, 2nd edition. O'Reilly, 2006.
  • N. Nisan, S. Schocken, The Elements of Computing Systems: Building a Modern Computer from First Principles, MIT Press, 2005.
  • E. Roberts, The Art and Science of C, Addison-Wesley, 1995
  • R. Sedgewick, K. Wayne, Introduction to Programming in Java: An Interdisciplinary Approach Addison-Wesley, 2007.
  • R. Sedgewick, K. Wayne, R. Dondero, Introduction to Programming in Python: An Interdisciplinary Approach, Addison-Wesley, 2015.
  • W.R. Stevens, S.A. Rago, Advanced Programming in the UNIX Environment (3rd Edition), Addison-Wesley Professional, 2013.
  • D. Thomas, C. Fowler, A. Hunt, Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide (The Facets of Ruby), 4th Edition, Pragmatic Bookshelf, 2013.
  • Intel 64 and IA-32 Architectures Software Developers' Manual https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax.

OBSERVAÇÃO:  Disciplina obrigatória no currículo do BCC.

 

[Veja dados da disciplina no JúpiterWeb]