UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ

PRÓ-REITORIA DE GRADUAÇÃO

 

 

 

PLANO DE ENSINO – PERÍODO LETIVO/ANO - 2009

ANO DO CURSO - 3º

 

 

Curso: Informática                            Modalidade: Bacharelado               Turno: Integral

 

Centro: CCET

 

Campus: Cascavel

 

Disciplina

 

Código

Nome

Carga Horária

AT 1

AT 2

APS 3

Total

1663

Programação de Sistemas de Computação

34

102

 

136

(1)Aula Teórica; (2) Aula Prática; (3) Atividade Prática Supervisionada.

 

Docente: Marcio Seiji Oyamada

 

Ementa

Estudo de linguagens de programação para implementação de programas destinados ao desenvolvimento de sistemas básicos.

 

Objetivos

·Estudar a arquitetura de um processador específico, a fim de permitir o desenvolvimento de programas em sua linguagem de montagem;

·Estudar a implementação de abstrações de controle em linguagem de montagem;

·Estudar uma linguagem alternativa à linguagem de montagem que permita a programação de sistemas básicos;

·Estudar o interfaceamento entre linguagens de programação.

 

Conteúdo Programático

 

 

Parte I –  Java – OO

Uma Introdução à Linguagem Java

O Ambiente de Programação Java

Estruturas Fundamentais de Programação em Java

Objetos e Classes

Herança

Interfaces e Classes Internas

Programação Gráfica

Manipulação de Eventos

Exceções e Assertivas

Fluxos de Dados e Arquivos

Múltiplas Linhas de Execução

Coleções

Conectividade a Banco de Dados: JDBC

Objetos Remotos

 

Parte II – Linguagem Assembly

 

Arquitetura dos microprocessadores x86:

-Registradores

-Flags

-Segmentação da memória

-Modos de endereçamento

Conjunto de instruções:

-Instruções para movimentação de dados

-Instruções para conversão

-Instruções aritméticas

-Instruções lógicas, rotação e deslocamento de bits

-Instruções para E/S

-Instruções para manipulação de strings

-Instruções para controle do fluxo de execução

Procedimentos e funções

-Passagem de parâmetros

-Retorno de resultados

Macros

Funções do BIOS e do SO

Diretivas do montador (assembler)

Arquitetura dos Microprocessadores x86 de 32 bits

Conjunto de instruções MIPS

Conjunto de instruções JAVA (bytecodes)

Instruções MMX e SSE

Ligação com linguagens de alto nível

 

 

 

 

 

 

 

 

Atividades Práticas – grupos de 10 alunos

Parte I –  Java – OO

 

·O Ambiente de Programação Java

oApresentação do ambiente Eclipse/Netbeans

·Estruturas Fundamentais de Programação em Java

oDesenvolvimento de pequenos programas envolvendo os tipos básicos de dados e a API  java.lang.

·Objetos, Classes, interfaces e Classes Internas

oDesenvolvimento de um conjunto de classes para fixar o conteúdo

·Programação Gráfica

oConstrução de programa que utilize recursos da API Swing e manipulação de Eventos

·Exceções e Assertivas

oExemplos de utilização

·Coleções

·Fluxos de Dados e Arquivos

oDesenvolvimento de aplicativo utilizando serialização e arquivos XML

·Múltiplas Linhas de Execução

oPrática a ser desenvolvida utilizando princípios de multiprogramação

·Conectividade a Banco de Dados: JDBC

·Construção de aplicativo utilizando o modelo MVC 2

·Mapeamento Objeto Relacional utilizando o Hibernate

·Utilização de banco de dados Orientado a Objetos

·Objetos Remotos

oConstrução de exemplos

 

 

 

Parte II– Linguagem Assembly

·Visualização de registradores, flags, áreas de memória e montagem de instruções em ambiente de depuração.

·Estudo prático do conjunto de instruções:

·Uso das instruções:

·para movimentação de dados;

·aritméticas;

·de conversão;

·lógicas, rotação e deslocamento de bits;

·para E/S;

·de manipulação de strings;

·para controle do fluxo de execução.

·Utilização do montador e desenvolvimento de programas/rotinas em Assembly:

·Uso da diretivas dos montador em aplicação exemplo;

·Desenvolvimento de macros.

·Estruturas de controle em Assembly:

·Desenvolvimento de aplicações exemplo utilizando as estruturas de controle if-then-else/case/while.

Uso de desvio indireto.

Engenharia reversa em código compilado pelo compilador gcc com estas estruturas.

·Estruturas de dados em Assembly:

·Declaração de dados;

·Exemplo com uso de vetores n-dimensionais.

·Arquitetura dos Microprocessadores x86 de 32 bits:

·Desenvolvimento de aplicações em Assembler

·Procedimentos e funções:

·Desenvolvimento de rotinas utilizando diversas técnicas de passagem de parâmetros e retorno de resultados;

·Desenvolvimento de funções recursivas;

·Engenharia reversa em código compilado pelo compilador gcc com chamadas de funções e passagem de parâmetros.

·Funções do SO.

·Desenvolvimento de aplicações utilizando as chamadas de sistema disponibilizadas pelo SO Linux.

·Ligação com linguagens de alto nível:

·Desenvolvimento de aplicações em linguagem C que utilizam rotinas em Assembly.

·Desenvolvimento de aplicações Assembly que utilizam rotinas da biblioteca padrão C.

·Desenvolvimento de aplicações no processador MIPS

·Comparação do Assembler x86, MIPS e Java bytecodes

·Instruções para SIMD (single-instruction, multiple data): MMX e SSE.

·Análise de desempenho em códigos assembler

 

Metodologia

Aulas teóricas expositivas.

Aulas práticas no Laboratório Geral de Aula do curso de bacharelado em Informática com interação prática do aluno.

 

 

Avaliação

A nota final será a média aritmética simples das 4 avaliações bimestrais. Cada avaliação bimestral será composta de prova e/ou trabalho de implementação com relatório.

O Exame Final constituir-se-á de uma prova escrita, abrangendo todo o conteúdo ministrado.

 

 

Bibliografia Básica

BARTLETT, Jonathan. Programing from the ground-up. 2004. http://savannah.nongnu.org/projects/pgubook

HYDE, Randall. The Art of Assembly Language Programming. 1996. ftp.cs.ucr.edu

MANZANO, José Augusto N. G. Fundamentos em Programação Assembly. Editora Érica, 2004.

MENDONÇA, Alexandre et all. PC e Periféricos: Um Guia Completo de Programação. Editora Ciência Moderna, 1996.

SANTOS, Jeremias P. & JUNIOR, Edison R. Programando em Assembler 8086/8088. McGraw-Hill, 1989.

SWAN, Tom. Mastering Turbo Assembler. Second Edition. Sams Publishing, 1995.

TISCHER, Michael. PC INTERN – The Encyclopedia of System Programming..Sixth Edition. Abacus, 1996.

 

HORSTMANN, Cay S.; CORNELL, Gary. Core java 2: fundamentos.  v. 1. São Paulo: Makron Books, 2001. 654 páginas.

HORSTMANN, Cay S.; CORNELL, Gary. Core java 2: recursos avançados.  v. 2. São Paulo: Makron Books, 2001. 823 páginas.

FURGERI, Sérgio. Java 2: ensino didático. São Paulo: Érica, 2002. 372 páginas.

DEITEL, H.M.; DEITEL, P.J.. Java: como programar. Porto Alegre: Bookman, 2003. 1386 páginas.

 

Bibliografia Complementar

 

 

 

Data: ........../........../..........                                            ______________________________

                                                                                            Assinatura do docente proponente

 

Colegiado de Curso (aprovação)

 

Ata nº .........,de........../........../..........

 

Coordenador de curso:                                                   ______________________

                                                                                                        assinatura

 

Conselho de Centro (homologação)

 

Ata nº .........,de........../........./..........

 

Diretor de Centro:                                                           ______________________

                                                                                                        assinatura

 

Encaminhada cópia à Secretaria Acadêmica em:    ........../........../..........

 

_____________________________

                                                                                                            nome/assinatura