|
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Av. João Naves de Ávila, 2121, Bloco 3N - Bairro Santa Mônica, Uberlândia-MG, CEP 38400-902 |
|
Plano de Ensino
IDENTIFICAÇÃO
Componente Curricular: |
|||||||||
Unidade Ofertante: |
|||||||||
Código: |
Período/Série: |
Turma: |
|||||||
Carga Horária: |
Natureza: |
||||||||
Teórica: |
Prática: |
Total: |
Obrigatória: |
Optativa: |
|||||
Professor(A): |
Ano/Semestre: |
||||||||
Observações: |
EMENTA
Desenvolvimento de aplicações práticas em linguagens C, com abordagem algorítmica e conceitos de: avaliação de valores e de expressões; constantes, variáveis, ponteiros, strings, arrays; controle de fluxo de execução de código (sequência, instruções condicionais, laços, funções); estruturas e encapsulamento; alocação dinâmica de memória; manipulação de arquivos; base de arquitetura e organização de computadores. Noções de estrutura de dados, compiladores, análise de algoritmos, computabilidade e complexidade. Uso de computação nas nuvens. Noções de empreendedorismo e de inovação.
JUSTIFICATIVA
O curso tem como objetivo capacitar os alunos para o desenvolvimento de algoritmos de acordo com o paradigma de programação procedimental a partir de práticas de programação em linguagem C.
OBJETIVO
Objetivo Geral: |
Desenvolver as habilidades dos discentes em programação na linguagem C explorando as estruturas básicas que compõem a arquitetura de um computador. |
Objetivos Específicos: |
1. Demonstrar a importância da linguagem C no desenvolvimento de aplicações em hardware heterogêneo; 2. Desenvolver habilidades dos discentes em produzir códigos de qualidade através da adoção de boas práticas de programação e de Test-Driven Development (TDD); 3. Desenvolver as habilidades dos discentes em trabalhar em grupo, gerenciar e documentar projetos; 4. Desenvolver a consciência, a autonomia e a responsabilidade dos discentes. |
PROGRAMA
1. Introdução
1.1. Arquitetura de Von Neumann: CPU, memória, dispositivos E/S
1.2. Compilador, makefile, debug
1.3. Repositórios (Github)
1.4. Plataformas de desenvolvimento (sistemas embarcados, computadores pessoais, IoT – internet of things, servidores e computação nas nuvens)
1.5. Soluções em hardware e em software
2. Linguagem C
2.1. Primitivas e tipos de dados
2.1.1. Bases numéricas, conversão entre bases binária, decimal, octal, hexadecimal
2.1.2. Primitivas ou tipos básicos:ASCII, Unicode, complemento de 2, IEEE 754-1985/2008
2.1.3. Operações binárias (BITWISE)
2.2. Armazenamento em memória
2.3. Controles de fluxo de execução: sequência de instruções, condicionais, laços
2.4. Ponteiros, vetores e strings
2.4.1. Aritmética de ponteiros
2.4.2. Acesso aleatório de dados
2.5. Funções e recursão
2.5.1. Passagem de parâmetros por valor e por referência
2.6. Estruturas de dados e encapsulamento
2.7. Alocação dinâmica de memória
2.8. Matrizes e operações
2.9. Implementação e análise de algoritmos, estudo de complexidade
2.10. Manipulação de arquivos
2.11. Compilador SWIG e ligação de código C com outras linguagens
3. Aplicação em sistemas embarcados
3.1. Comunicação serial para sistemas embarcados (ex. Arduino)
3.2. Desenvolvimento de aplicações em sistemas embarcados (ex. Arduino)
3.3. Desenvolvimento de aplicações em nuvem
4. Cursos online abertos e massivos
4.1. https://www.youtube.com/watch?v=FH7YrE0RjWE&list=PLesCEcYj003SwVdufCQM5FIbrOd0GG1M4 (canal brasileiro eXcript)
4.2. https://www.coursera.org/learn/arduino-platform
4.3. http://mooc.fi/courses/2016/aalto-c/en/
METODOLOGIA
Distribuição das atividades:
- A disciplina é dividida em aulas teóricas e atividades práticas.
Carga-horária de atividades assíncronas (vídeo-aulas): 12h
Carga-horária de atividades síncronas: 18h
Carga-horária das demais atividades (listas de exercícios, trabalhos práticos): 30h
Moodle:
- Todas as informações relativas à disciplina como materiais, trabalhos, entrega de trabalhos, vídeo-aulas, entre outros, serão informadas no Moodle.
- Página da disciplina: https://www.moodle.ufu.br/course/view.php?id=5856
- Senha Moodle: FEELT31201
Atividades assíncronas:
- As vídeo-aulas (assíncronas) serão gravadas e disponibilizadas no início de cada semana através de links no Moodle para o YouTube ou RNP, conforme o cronograma apresentado na tabela a seguir.
Semana |
Conteúdo |
1 |
Introdução; Variáveis; Entrada e Saída; Operações condicionais |
2 |
Estruturas de repetição, Vetores; Matrizes |
3 |
Strings; Busca sequencial |
4 |
Funções; Escopo de variáveis; Macros |
5 |
Registros; Structs; Ponteiros; Alocação dinâmica |
6 |
Listas ligadas; Variações de listas |
7 |
Tipo abstrato de dados (TAD); Pilhas; Filas |
8 |
Busca binária; Ordenação; Custo computacional |
9 |
Arquivos |
Atividades síncronas:
- Os encontros síncronos serão realizados todas às quartas-feiras, das 14:40 às 16:40, por meio de ferramentas como o Google Meet, Microsoft Teams, Zoom, ou MConf/RNP.
- Os links serão divulgados no início de cada semana no Moodle.
Dia |
Horário |
Quarta-feira |
14:40 - 16:40 |
Atendimento aos alunos:
- O atendimento aos alunos será realizado de forma remota durante as aulas na modalidade síncrona, ou através do Fórum de Dúvidas no Moodle.
Sobre a presença:
- A presença no curso será contabilizada semanalmente através da submissão dos trabalhos. Caso o aluno não resolva o trabalho, ele deve enviar um arquivo em branco (apenas com o seu nome) para que a sua presença na semana seja registrada.
AVALIAÇÃO
Sistema de Avaliação
- Serão realizados 10 trabalhos práticos individuais (em linguagem C) e um trabalho extra (substitutivo), conforme apresentado na tabela a seguir.
Trabalhos |
Data de entrega |
1 |
14/08 |
2 |
21/08 |
3 |
28/08 |
4 |
04/09 |
5 |
04/09 |
6 |
11/09 |
7 |
18/09 |
8 |
25/09 |
9 |
02/10 |
10 |
02/10 |
extra |
09/10 |
** A nota do trabalho extra poderá substituir a menor nota de qualquer trabalho anterior, caso seja maior.
* O enunciado de cada trabalho será disponibilizado na segunda-feira às 08h00, e prazo para a entrega será na sexta-feira até às 18h00.
Sobre os trabalhos:
- Cada trabalho abordará um tema referente ao conteúdo apresentado em aula durante a semana correspondente.
- Todos os trabalhos seguirão o modelo de programação para competições (ex: ICPC, OBI, maratona de programação da SBC) e serão avaliados por um sistema de correção automática e posteriormente verificados pelo professor.
- Caso haja a detecção de plágio em um trabalho, todos os envolvidos receberão nota zero.
- O link para cada trabalho será divulgado no início da semana via Moodle.
Distribuição da Pontuação da disciplina:
- A nota final será a média aritmética dos 10 trabalhos.
BIBLIOGRAFIA
Básica
1. André Backes, 2013, Linguagem C: completa e descomplicada, Rio de Janeiro : Elsevier, 371 p.
2. Paulo Feofiloff, 2009, Algoritmos em linguagem C, Rio de Janeiro : Campus, 208 p.
3. Michael McRoberts; Rafael Zanolli (tradução), 2011, Arduino básico, São Paulo : Novatec, 453 p.
Complementar
1. Brian W. Kernighan; Dennis Ritchie, 1988, C Programming Language, Prentice Hall, 2ed, 272 p.
2. Delores M. Etter, 2013, Engineering problem solving with C, Boston : Pearson, 460 p.
3. Pieter Hartel; Henk Muller, 1997, Functional C, Addison-Wesley; 1 edition, 456 p.
4. Robert Sedgewick, 2007, Algorithms in C, Addison-Wesley, 16a impressão, 657 p.
5. Herbert Schildt; Marcos Ricardo Alcantara Morais (tradução), 1991, C completo e total, Makron Books : McGraw-Hill, 889p.
APROVAÇÃO
Aprovado em reunião do Colegiado realizada em: ____/____/______
Coordenação do Curso de Graduação: _________________________
| Documento assinado eletronicamente por Felipe Alves da Louza, Professor(a) do Magistério Superior, em 17/08/2020, às 07:54, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015. |
| A autenticidade deste documento pode ser conferida no site https://www.sei.ufu.br/sei/controlador_externo.php?acao=documento_conferir&id_orgao_acesso_externo=0, informando o código verificador 2199351 e o código CRC 65AF6BBE. |
Referência: Processo nº 23117.039929/2020-79 | SEI nº 2199351 |