Informações da Disciplina

 Preparar para impressão 

Júpiter - Sistema de Gestão Acadêmica da Pró-Reitoria de Graduação


Instituto de Matemática e Estatística
 
Ciência da Computação
 
Disciplina: MAC0216 - Técnicas de Programação I
Programming Techniques I

Créditos Aula: 4
Créditos Trabalho: 2
Carga Horária Total: 120 h
Tipo: Semestral
Ativação: 01/01/2021 Desativação:

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.
 
 
 
Docente(s) Responsável(eis)
84710 - Alfredo Goldman Vel Lejbman
84724 - Fabio Kon
3150657 - Kelly Rosa Braghetto
2090749 - Marco Dimas Gubitoso
 
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. Controle de Versão. Linguagens procedimentais de alto nível. Linguagens dinâmicas de script. Introdução aos conceitos de orientação a objetos.
 
Computer architecture. Assembly language, linking object files. Interaction with the operating system and Shell scripting. Build automation. Code modularization. Static and dynamic libraries. Testing and debugging. Version control. High-level procedural languages. Dynamic scripting languages. Introduction to Object Orientation.
 
 
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. Técnicas e ferramentas de controle de versão. 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.
 
Basic concepts of computer architecture. Assembly language and assemblers, object file linking, interface with hardware and high-level languages. Interaction with the operating system at the Shell level: streams, standard input and output, redirection and pipes. Shell scripts. Build automation of programs and libraries with tools like "make". Code modularization. Linking, static and dynamic libraries. Construction of libraries. Debugging and testing techniques. Version control techniques and tools. Building a system in a procedural language (for example, C). Study of a dynamic scripting language (for example, Python or Ruby). Introduction to Object Orientation in the context of dynamic languages.
 
 
Avaliação
     
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 às 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
     
Bibliografia Básica
W.R. Stevens, S.A. Rago, Advanced Programming in the UNIX Environment (3rd Edition), Addison-Wesley Professional, 2013. 
B. Neveln, LINUX assembly language programming, Prentice Hall, 2000. 
B.W. Kernigham and R. Pike, The practice of programming, Addison-Wesley, 1999. 
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. 
A. Martelli, Python in a Nutshell, 2nd edition. O'Reilly, 2006. 
R. Sedgewick, K. Wayne, R. Dondero, Introduction to Programming in Python: An Interdisciplinary Approach, Addison-Wesley, 2015. 
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. 
R. Sedgewick, K. Wayne, Introduction to Programming in Java: An Interdisciplinary Approach Addison-Wesley, 2007.

Bibliografia Complementar
Intel 64 and IA-32 Architectures Software Developers' Manual, https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax. 
GNU Make Manual, http://www.gnu.org/software/make. 
Git Documentation, https://git-scm.com/doc.
 

Clique para consultar os requisitos para MAC0216

Clique para consultar o oferecimento para MAC0216

Créditos | Fale conosco
© 1999 - 2024 - Superintendência de Tecnologia da Informação/USP