Disciplinas

CI1018/INFO7062 - Tópicos em Inteligência Artificial


CSP-image

FlankerFF, CC BY-SA 3.0, via Wikimedia Commons.

Ementa

Tópicos em Inteligência Artificial com foco em Programação Lógica e Programação por Restrições.


Objetivos

  • Apresentar o conceito de lógica de predicados e o paradigma de Programação Lógica (Prolog).

  • Apresentar o paradigma de Programação por Restrições e a plataforma MiniZinc.

  • Apresentar métodos para a resolução de Problemas de Satisfação de Restrições (CSPs): algoritmos de busca (backtracking com estratégias look-ahead e look-back e busca local) e técnicas de processamento de restrições (consistências locais e propagação de restrições).

  • Apresentar estratégias de decomposição de problemas.

  • Apresentar técnicas de processamento de restrições numéricas.

  • Apresentar tópicos relacionados: satisfatibilidade booleana, metaheurísticas para a resolução de CSPs, outros algoritmos.


Informações

  • Carga horária: 60h.

  • Natureza: optativa.

  • Cursos: Ciência da Computação, Informática Biomédica e PPGINF (mestrado e doutorado).


Turmas

[2024-1] Turma A: Ciência da Computação, Informática Biomédica e PPGINF



Para uma visão geral (resumida em 3 minutos) sobre Programação por Restrições, veja este vídeo.

CI1164/CI164 - Introdução à Computação Científica


CI1164-image

Adam majewski, CC BY-SA 4.0, via Wikimedia Commons

Ementa

Estudo teórico-prático dos principais métodos de cálculo numérico utilizados em computação científica, com foco na implementação eficiente destes métodos em computadores seriais e abordando técnicas de otimização de código e resiliência a erros numéricos.


Objetivos

  • Entender e implementar métodos numéricos para os seguintes problemas matemáticos: resolução de equações não-lineares, resolução de sistemas lineares e não-lineares, resolução de equações diferenciais ordinárias e parciais, interpolação de funções, ajuste de curvas e integração numérica.

  • Otimizar as implementações dos métodos numéricos utilizando ferramentas de análise de desempenho, considerando características do processador e memória utilizados.

  • Identificar regiões críticas de cada método em termos de desempenho computacional, bem como avaliar implementações alternativas.


Informações

  • Carga horária: 60h.

  • Natureza: obrigatória.

  • Cursos: Ciência da Computação e Informática Biomédica.


Turmas

[2021-2] Turma A: Ciência da Computação e Informática Biomédica


CI1355/CI355 - Otimização Numérica


OTIMIZACAO-image

Johann Dréo (User:Nojhan), CC BY-SA 2.0 FR, via Wikimedia Commons.

Ementa

Problemas de Otimização Numérica restritos e irrestritos. Algoritmos clássicos para Otimização Convexa. Métodos intervalares para Otimização Global. Busca local e métodos heurísticos.


Objetivos

  • Compreender fundamentos teóricos da Otimização Numérica e conceitos tais como linearidade, convexidade, entre outros. Conhecer exemplos de aplicação, estratégias de solução e suas limitações.

  • Compreender características específicas de problemas convexos restritos e irretritos. Estudar algoritmos clássicos para Otimização Convexa, compreendendo seus fundamentos teóricos e sua implementação computacional.

  • Compreender a análise intervalar e sua aplicação no processamento de restrições numéricas. Estudar algoritmos intervalares e sua aplicação na Otimização Global. Compreender a implementação de algoritmos de Branch-and-Bound intervalar.

  • Conhecer técnicas alternativas de otimização, baseados em busca local e metaheurísticas.


Informações

  • Carga horária: 60h.

  • Natureza: optativa.

  • Cursos: PPGINF, Ciência da Computação e Informática Biomédica.


Turmas

[2021-2] Turma A: PPGINF, Ciência da Computação e Informática Biomédica.


CI202/CI181 - Métodos Numéricos


CI202-image

I, KSmrq, CC BY-SA 3.0, via Wikimedia Commons

Ementa

Representação computacional de números reais e estudo teórico-prático dos principais métodos de cálculo numérico.


Objetivos

  • Compreender a representação de números reais em computadores digitais e o conceito de erro.

  • Entender métodos numéricos para os seguintes problemas matemáticos: resolução de equações não-lineares, resolução de sistemas lineares, interpolação de funções, ajuste de curvas e integração numérica.

  • Compreender aspectos teóricos e práticos dos métodos numéricos estudados.


Informações

  • Carga horária: 60h.

  • Natureza: obrigatória.

  • Cursos: Eng. Elétrica, Eng. Bioprocessos e Biotecnologia, Estatística, Física, Eng. Cartográfica, Eng. Civil e Eng. Química.


Turmas

[2021-1] Turma B: Eng. Bioprocessos e Biotecnologia.


CI208 - Programação de Computadores


CI208-image


Ementa

Histórico. Elementos de uma linguagem de programação. Tipos de Dados. Estrutura de um programa. Comandos simples e estruturados. Procedimentos e funções. Tipos estruturados. Exemplos de algoritmos clássicos.


Objetivos

  • Entender o funcionamento básico de um computador.

  • Entender e implementar programas que obtêm valores numéricos do usuário, realizam algum cálculo aritmético com estes valores e exibem o resultado na tela do computador.

  • Entender e implementar programas em que determinados cálculos ou operações de leitura e escrita se repetem enquanto um conjunto de condições forem verdadeiras.

  • Entender e implementar programas pela combinação de subprogramas menores.

  • Entender e implementar programas em que seja necessário armazenar um conjunto de valores numéricos para então proceder a cálculos com o conjunto de valores lidos.


Informações

  • Carga horária: 60h.

  • Natureza: obrigatória.

  • Cursos: Eng. Elétrica, Eng. Bioprocessos e Biotecnologia, Estatística, Física, Eng. Cartográfica, Eng. Civil e Eng. Química.


Outras Disciplinas

Ementa

Noções de sistemas de computação. Formulação de algoritmos e sua representação. Noções sobre linguagem de programação e programas. Implementação prática de algoritmos em uma linguagem de programação. Descrição de algumas aplicações típicas. Métodos computacionais na área científica e tecnológica.


Objetivos

Analisar problemas e elaborar algoritmos para sua solução de forma clara e precisa usando programação estruturada e implementá-los em uma linguagem de programação.


Informações

  • Carga horária: 54h.

  • Natureza: obrigatória.

  • Cursos: Eng. Eletrônica, Eng. Civil, Eng. Sanitária e Ambiental, Eng. Elétrica, Eng. de Materiais, Eng. Mecânica, Eng. de Alimentos, Eng. Química e Química (INE/CTC/UFSC).

Ementa

Implementação de pequenos projetos com programação orientada a objetos. Sistemas de Tipos. Sistemas de Tratamento de Exceções.


Objetivos

Entender e desenvolver sistemas utilizando técnicas da programação orientada a objetos e arcabouços básicos de software. Aprender técnicas de reuso de software.


Informações

  • Carga horária: 108h.

  • Natureza: obrigatória.

  • Cursos: Sistemas de Informação (INE/CTC/UFSC).