/computer-science-full-graduation

Aqui você encontra os materiais de um curso COMPLETO de Graduação em Ciência da Computação de uma das melhores universidades do Brasil.

Primary LanguageC

Curso de Graduação em Ciência da Computação

Aqui você encontra o curso completo de Graduação em Ciência da Computação pela Universidade Federal do Rio Grande do Sul.

Para mais informações sobre o curso você pode acessar o website do Instituto de Informática da UFRGS aqui [link]. No link você poderá consultar mais informações sobre as disciplinas disponíveis, sobre o Instituto e o corpo docente (professores).

Também estão disponíveis algumas informações sobre o curso de Graduação em Ciência da Computação no website oficial da Universidade Federal do Rio Grande do Sul, que você pode acessar esse [link].

Algumas das disciplinas do curso são ministradas pelo Instituto de Matemática e Estatística, que você pode conhecer mais clicando no [link].

Estrutura do curso

O curso é composto de 9 semestres, sendo os 8 primeiros com disciplinas e o último ficado no TCC. Esse é o motivo pelo qual o 9° semestre não consta na listagem, pois cabe a cada aluno fazer o seu Trabalho de Conclusão de Curso.

As disciplinas estão distribuídas em semestres conforme o currículo obrigatório da universidade na época, que pode ser observado abaixo.

[]

As disciplinas que não constam na grade de disciplinas obrigatórias são as chamadas disciplinas eletivas, necessárias para cumprir os créditos mínimos para formatura.

Resumo da estrutura

Confira abaixo quais as disciplinas que você vai encontrar em cada semestre:

  • Semestre 01
    • INF01107 - Introdução à Arquitetura de Computadores
    • INF01202 - Algoritmos e Programação
    • INF05008 - Fundamentos de Algoritmos
    • MAT01353 - Cálculo e Geometria Analítica I-A
    • MAT01375 - Matemática Discreta
  • Semestre 02
    • INF01108 - Arquitetura de Computadores I
    • INF01203 - Estrutura de Dados
    • INF05508 - Lógica para a Computação
    • INF05512 - Teoria de Grafos e Análise Combinatória
    • MAT01354 - Cálculo 2
    • MAT01355 - Álgebra Linear I
  • Semestre 03
    • INF01032 - Cálculo Numérico A
    • INF01112 - Arquitetura de Computadores II
    • INF01118 - Técnicas Digitais para Computação
    • INF01124 - Classificação e Pesquisa de Dados
    • INF05005 - Linguagens Formais e Autômatos
    • INF05501 - Teoria da Computação N
    • MAT02219 - Probabilidade e Estatística
  • Semestre 04
    • INF01046 - Fundamentos de Processamento de Imagens
    • INF01113 - Organização de Computadores B
    • INF01120 - Técnicas de Construção de Programas
    • INF01145 - Fundamentos de Banco de Dados
    • INF05515 - Complexidade de Algoritmos B
  • Semestre 05
    • INF01047 - Fundamentos de Computação Gráfica
    • INF01048 - Inteligência Artificial
    • INF01121 - Modelos de Linguagem de Programação
    • INF01127 - Engenharia de Software N
    • INF01142 - Sistemas Operacionais I N
    • INF05010 - Otimização Combinatória
    • INF05516 - Semântica Formal N
  • Semestre 06
    • INF01032 - Empreendimentos em Informática
    • INF01043 - Interação Homem-Computador
    • INF01147 - Compiladores B
    • INF01151 - Sistemas Operacionais II N
    • INF01154 - Laboratório de Redes
    • INF01154 - Redes de Computadores N
    • INF01209 - Fundamentos de Tolerância a Falhas
  • Semestre 07
    • INF01003 - Engenharia de Software II
    • INF01037 - Computação Evolutiva
    • INF01039 - História da Computação
    • INF01056 - Desafios de Programação
    • INF01060 - História da Computação - Tópicos Especiais em Computação XVIII
    • INF01062 - Computação e Música - Tópicos Especiais em Computação XVI
  • Semestre 08
    • ECO02254 - Economia A
    • INF01006 - Projeto de Banco de Dados (Cirano)
    • INF01008 - Programação Distribuída e Paralela
    • INF01021 - Projeto de Hiperdocumentos
    • INF01050 - Fotografia Computacional
    • INF01140 - Computador e Sociedade
    • Tópicos II - Parallel Programming
  • Semestre 09
    • TCC

Sobre os materiais

Os materiais foram coletados por mim ao longo dos anos de 2009 a 2014, período no qual eu cursei as disciplinas.

Dentro de cada pasta estão os materiais específicos daquele disciplinas. Os materiais que você encontra em cada pasta são:

  • Slides de aula: Apresentações com os conteúdos ministrados pelos professores das disciplinas.
  • Exercícios: Exercícios de programação realizados pelo aluno em aula de laboratório ou em casa. É uma boa fonte de aprendizado.
  • Provas: Em algumas pastas há uma seleção de provas antigas que servem de aprendizado para colocar em prática os conhecimentos obtidos na disciplina.
  • Trabalhos: Trabalhos que realizei nas disciplinas, sozinho ou em grupo, e também trabalhos de outros colegas.
  • Programas: Algumas disciplinas possuem programas, seja para colocar em prática algum conceito da disciplina, elaborar um exercício ou trabalho.
  • Material Adicional: Algumas disciplinas possuem materiais adicionais que completam o conteúdo apresentado nos slides das aulas. Recomenda-se a leitura.

Disciplinas Imperdíveis

Listo aqui algumas das disciplinas que acredito terem aberto minha cabeça para o mundo da informática e consolidado a base conceitual no que diz respeito a diferentes áreas da computação e à compreensão de algoritmos e programação.

  • INF01202 - Algoritmos e Programação : Fundamental para criar a mentalidade de lógica de programação.
  • INF01203 - Estrutura de Dados : Entendimento sobre estruturas de dados utilizadas em qualquer projeto, como Listas, Filas, Pilhas, Árvores e Grafos.
  • INF01107 - Introdução à Arquitetura de Computadores : Visão de como é o funcionamento interno do computador, como as instruções são armazenadas e executadas, como é realizado o acesso à memória e como os dados são processados.
  • INF01108 - Arquitetura de Computadores I : Assim como a disciplina de 'Introdução à Arquitetura de Computadores' explora mais a fundo o funcionamento de um computador, adicionando complexidade ao hardware e poder de computação à máquina. Novas instruções com mais poder de computação.
  • INF01124 - Classificação e Pesquisa de Dados : Como trabalhar com dados, ordenação, criação de estruturas, varredura de caminho em árvores e grafos.
  • INF05005 - Linguagens Formais e Autômatos : Apresenta a forma como a linguagem (texto) pode ser compreendida por máquinas a partir de gramáticas.
  • INF01046 - Fundamentos de Processamento de Imagens : Introduz diversos problemas sobre imagens, como solucioná-los.
  • INF01120 - Técnicas de Construção de Programas : Introduz a ideia de escrita de código com padrões e eficiência.
  • INF01145 - Fundamentos de Banco de Dados : Eventualmente iremos trabalhar com dados e teremos que armazená-los, portanto entender o funcionamento dos bancos de dados e como realizar a seleção de informações é essencial.
  • INF05515 - Complexidade de Algoritmos B : Introduz a noção de custo computacional de um programa e como calcular esse custo.
  • INF01142 - Sistemas Operacionais I N : Apresenta diversos elementos de software que compõem um computador e seu funcionamento, como o gerenciamento de memória, paginação, sistemas de arquivos, organização de espaço em disco, jornalização, etc.
  • INF05010 - Otimização Combinatória : Mostra formas de analisar custos e procurar soluções para reduzí-los.
  • INF01147 - Compiladores B : Mostra a forma como um código de programa é analisado e depois vira um código executável (código binário). Apresenta as etapas de tokenização, análise léxica, análise semântica, introdução de gramática para análise do código, etc
  • INF01154 - Redes de Computadores N : Como as informações trafegam pela Internet, protocolos de rede, camadas da arquitetura OSI, codificação de sinais, controle de fluxo, algoritmos de roteamento, IP e TCP, DNS e HTTP.
  • INF01056 - Desafios de Programação : Uma das disciplinas mais interessantes do curso. Embora eletiva, acredito que deveria ser obrigatória, pois consolida praticamente todo o conhecimento do curso. O aluno precisa ter conhecimento de padrões de programação, estruturas de dados, algoritmos de classificação e pesquisa, complexidade de algoritmos, banco de dados, etc. O foco aqui é solucionar problemas de programação de modo eficiente, com estruturas de dados e lógicas de programação que ocupem pouco espaço de armazenamento e executem rapidamente.

Nota de atenção

Ressalto que os materiais são do período de 2009 a 2014, então alguma coisa pode estar desatualizada. Entretanto, a maioria do conteúdo refere-se a conceitos de computação e informática, os quais estarão sempre atualizados.