Os 11 melhores cursos de Ciência da Computação do Brasil
A Ciência da Computação é o conjunto de técnicas e conhecimentos que possibilitam a criação de programas de informática. O bacharel deste curso analisa as necessidades dos usuários, desenvolve programas e aplicativos, gerencia equipes de criação e instala sistemas de computação.

Cabe ao profissional elaborar softwares, desde programas básicos de controle de estoque até os mais complexos sistemas de processamento de informações, como os utilizados nas pesquisas espaciais e na medicina genética. É ele, também, quem mantém redes de computadores em funcionamento e assegura as conexões com a internet.
As oportunidades de emprego para o cientista da computação estão muito boas. O Sudeste concentra a maior parte das empresas de Tecnologia da Informação e, por consequência, as melhores oportunidades de trabalho. O bacharel é contratado para atuar no desenvolvimento de aplicativos para a web, softwares e jogos. Pode, também, se dedicar à análise de problemas e soluções como gerenciamento de dados por meio de um banco, à informatização de folhas de pagamento.
Para ser apto a exercer esse tipo de trabalho, o estudante de Ciência da Computação tem aulas de matemática, física, eletricidade, eletrônica, fundamentos da computação e linguagens formais. Entre as matérias optativas estão princípios de interação homem-computador e informação, comunicação e a sociedade do conhecimento. O curso ainda prepara o estudante a gerenciar o próprio negócio, ministrando disciplinas de administração e empreendedorismo.
Gostou do curso? Ficou interessado em fazer? Confira quais são as melhores universidades.
* lista organizada por estado e ordem alfabética
*Dados do GUIA DO ESTUDANTE Profissões Vestibular 2012.
fonte: http://guiadoestudante.abril.com.br/blogs/melhores-faculdades/category/ciencia-da-computacao/
| Nome da faculdade | Estrelas |
| Universidade Federal do Ceará (UFC) | ★★★★★ |
| Universidade Federal de Minas Gerais (UFMG) | ★★★★★ |
| Universidade Federal de Campina Grande (UFCG) | ★★★★★ |
| Universidade Federal de Pernambuco (UFPE) | ★★★★★ |
| Universidade Federal do Rio de Janeiro (UFRJ) | ★★★★★ |
| Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS) | ★★★★★ |
| Universidade Federal do Rio Grande do Sul (UFRGS) | ★★★★★ |
| Universidade Federal de Santa Catarina (UFSC) | ★★★★★ |
| Universidade Estadual de Campinas (Unicamp) | ★★★★★ |
| Universidade de São Paulo (USP), campus de São Carlos | ★★★★★ |
| Universidade de São Paulo (USP), campus da Cidade Universitária | ★★★★★ |
TileTroop 2: Utilizando Algoritmos Genéticos e outros refinamentos.
Os algoritmos genéticos utilizam conceitos provenientes do princípio de seleção natural para abordar uma série ampla de problemas, em especial de otimização. Robustos, genéricos e facilmente adaptáveis, consistem de uma técnica amplamente estudada e utilizada em diversas áreas.
1) Funcionamento
Basicamente, o que um algoritmo genético faz é criar uma população de possíveis respostas para o problema a ser tratado (inicialização) para depois submetê-la ao processo de evolução, constituído pelas seguintes etapas:
avaliação: avalia-se a aptidão das soluções (indivíduos da população) — é feita uma análise para que se estabeleça quão bem elas respondem ao problema proposto.
seleção: indivíduos são selecionados para a reprodução. A probabilidade de uma dada solução i ser selecionada é proporcional à sua aptidão.
cruzamento: características das soluções escolhidas são recombinadas, gerando novos indivíduos;
mutação: características dos indivíduos resultantes do processo de reprodução são alteradas, acrescentando assim variedade à população.
atualização: os indivíduos criados nesta geração são inseridos na população.
finalização: verifica se as condições de encerramento da evolução foram atingidas, retornando para a etapa de avaliação em caso negativo e encerrando a execução em caso positivo.
2) Representação
Os indivíduos são a unidade fundamental de um algoritmo genético: eles codificam possíveis soluções para o problema a ser tratado, e é através de sua manipulação (pelo processo de evolução) que respostas são encontradas.
A escolha de representação para os indivíduos é a etapa mais importante do desenvolvimento de um AG, visto que ela será a principal responsável pelo desempenho do programa. É de uso comum na área de Algoritmos Genéticos utilizar os termos genoma e mesmo cromossoma como um sinônimo para indivíduo. Tal definição nos sugere que um indivíduo se resume ao conjunto de genes que possui (seu genótipo), e apresenta um problema: o de que apesar de toda representação por parte do algoritmo ser baseada única e exclusivamente em seu genótipo, toda avaliação é baseada em seu fenótipo (conjunto de características observáveis no objeto resultante do processo de decodificação dos genes).
Para o jogo TileTroop 2, realizamos uma numeração padrão para cada terreno e seus vizinhos.
Cada terreno é representado por uma variável e o valor das tropas que podem ser movidas é o resultado da equação. Por exemplo:
X1 + X2 + X3 + X4 + X5 + X6 + X7 = 5
Essa equação foi representada da seguinte maneira: 00000011111 (ou 0000005).
De todas as permutações geradas, excluímos aquelas que não são possíveis quando analisamos o total de tropas dos vizinhos (a soma das tropas não pode ser maior que oito).
3) Avaliação
FAB = (n1 * type1 + n2 * type2 + n3 * type3 + … + nk * typek) / ( número de 0’s a partir do segundo caractere + 1 ).
W_TILE_OPPONENT_CASTLE = 600;
W_TILE_OPPONENT = 400;
W_TILE_GREEN = 200;
W_TILE_ME = 20;
W_TILE_MY_CASTLE = 20;
4) Seleção
ROULETTE_WHEEL : o método de seleção por giro de roleta funciona da seguinte forma calcula-se o somatório da adequação da população (total) sorteia-se um valor i tal que pertence ao intervalo [0; total] seleciona-se o indivíduo x tal que a ele corresponda à faixa do somatório onde i se localiza.
TOURNAMENT : Grupos de soluções são escolhidos sucessivamente e as mais adaptadas dentro de cada um destes são selecionadas.
RANDOM SALVATIONIST: seleciona-se o melhor indivíduo e os demais são escolhidos aleatoriamente.
5) Cruzamento
RANDOM_CHOICE & CROSSING ONE POINT: os pares de indivíduos que devem se reproduzir são escolhidos ao acaso. Dados dois genomas x e y de comprimento lg, sorteia-se um número p qualquer tal que 0 < p < lg, o primeiro filho f0 receberá todos os genes x de 1 até p e todos os genes y de p + 1 até ly, e o segundo filho o inverso.
LINE_BREEDING: um indivíduo de alto desempenho é cruzado com uma subpopulação de indivíduos e os seus filhos são selecionados como pais.
RANDOM_CHOICE & UNIFORM_CROSSOVER: os pares de indivíduos que devem se reproduzir são escolhidos ao acaso. Para cada gene a ser preenchido nos cromossomos filhos, o operador de cruzamento uniforme sorteia de qual dos pais este deve ser gerado. A máscara de cruzamento de tal operador é uma sequência qualquer de zeros e uns.
6) Mutação
SWAP_MUTATION: os elementos do gene trocam de valor entre si.
Utilizando o algoritmo Minimax, corte Alpha-Beta e outros refinamentos…
O algoritmo minimax se baseia na construção de uma árvore de decisões (árvore contendo todos os possíveis estados do jogo e de qual estado se pode chegar a qual ), pontua cada um dos nós segundo as chances de vitória ou derrota dos jogadores e retorna como melhor solução sempre aquela que busca minimizar as chances de perda e maximizar as chances de vitória.
Desta forma, nós pontuados positivamente (melhores chances para a vitória) serão buscados como solução, enquanto que nós pontuados negativamente (nós onde há a possibilidade de derrota) serão evitados.
Tomemos como exemplo um jogo da velha onde queremos maximizar as chances do computador vencer (tentando, assim, trazer algum desafio ao jogador humano).
Facilmente o computador consegue criar e manter em memória uma árvore contendo todas as possíveis jogadas para o jogo da velha (o mesmo não pode ser dito para o caso de jogos de xadrez, devido às dimensões da árvore de decisões deste). Construamos então uma árvore de decisões na qual é o jogador humano quem começa o jogo.
A construção da árvore é feita de forma bem simples: há raiz conterá o estado inicial do jogo, com o tabuleiro completamente em branco. Os filhos deste nó devem ser as possíveis jogadas adotadas pelo jogador humano (inicialmente nove, então teremos aqui nove nós-filhos).
Para cada nó, crie seus nós filhos segundo as possibilidades de jogo, lembrando de armazenar em cada nó qual seria o estado atual do jogo se aquele fosse o estado corrente.
Após a construção de toda a árvore, começamos pontuando cada nó da seguinte forma:
1. Se este nó não é um nó-folha:
- Se, para este nó, o próximo a jogar é o humano e um dos nós-filhos representa um estado em que ele vence, então este é um nó ruim, pois aumentará as chances do computador perder – pontuaremos ele com valor -1;
- Caso contrário, pontuamos este nó com o somatório dos valores de seus filhos;
2. Se este é um nó-folha e representa:
- A vitória do computador, pontuamos com valor 1;
- A derrota do computador, pontuamos com valor -1;
- O empate, pontuamos com valor 0.
Uma vez pontuada a árvore, inicia-se o jogo e, a cada jogada dos participantes, deve-se ir percorrendo a árvore, sendo que o computador para efetuar sua jogada irá checar qual dos nós-filhos do nó atual possui maior pontuação: esta deverá ser a sua jogada.
O corte alpha-beta
Como se pode perceber, o algoritmo minimax consegue encontrar a melhor solução. Entretanto ele precisa percorrer toda a árvore. Ela pode ser facilmente mantida para um jogo-da-velha, onde temos “somente” 400 mil nós, mas para um jogo de xadrez, onde podemos ter 10 elevado a 70 nós, construir, avaliar e percorrer toda a árvore torna-se algo inviável.
Sendo assim, é perceptível que precisamos ter algum meio para “podar”, cortar os galhos que jamais serão solução para nós. Tomemos como exemplo um jogo-da-velha onde o computador será o jogador MAX e o jogador humano, o jogador MIN.
Em um dado nó onde o jogador MAX deverá tomar uma decisão, teremos vários nós filhos, cada qual com seus próprios valores. O jogador MAX sempre quer maximizar, então é óbvio que ele escolherá sempre o nó que possuir maior valor, descartando sempre os demais, então, para que manter os outros nós?
Podemos então podar esse “galho” de nossa árvore! O algoritmo de corte alpha-beta, aplicado juntamente com o minimax, possui justamente essa função. A poda pode ser feita após a completa criação da árvore, bem como pode ser feita durante a construção da mesma, após a pontuação completa dos filhos ou por meio de alguma função heurística a fim de avaliar o valor de cada filho.
Um jogo com MiniMax e poda Alpha-Beta : TileTroop
Objetivo do jogo : invadir o castelo do oponente.
Regras de Movimentação:
1) Cada terreno hexagonal do jogo só pode conter, no máximo, 8 tropas de um jogador;
2) Cada terreno hexagonal contém dois números que informam, respectivamente, o número de tropas que podem se mover na jogada em questão e o número de tropas total (MoveTroops/TotalTroops) ;
3) As movimentações são possíveis apenas para os vizinhos do terreno hexagonal escolhido;
4) A cada rodada, o número de tropas em cada terreno é incrementado em 1 para o jogador da vez;
5) Para conquistar um terreno verde, o jogador deve movimentar, pelo menos, 1 tropa para ele;
6) Para conquistar um terreno inimigo, o jogador deve movimentar um número de tropas maior que o total de tropas do inimigo. Por exemplo, caso o jogador 1 tenha um terreno (6/6) e um terreno vizinho do inimigo com (3/3), o jogador 1 poderá conquistar o terreno inimigo, caso movimente, pelo menos, 3 tropas suas para o terreno do adversário;
7) O jogador vencedor será o que primeiro conquistar o castelo do adversário.
Refinamentos
1) Realizamos uma numeração padrão para cada terreno e seus vizinhos.
Dessa maneira, poderemos utilizar a seguinte estratégia para gerar as possíveis movimentações do jogador (também chamadas de sequências de configuração):
1.1) Cada terreno é representado por uma variável e o valor das tropas que podem ser movidas é o resultado da equação. Por exemplo, para a figura acima e 8 como o valor do número de tropas que podem ser movidas, teríamos:
X1 + X2 + X3 + X4 + X5 + X6 + X7 = 8
1.2) Essa equação foi representada da seguinte maneira: 00000011111111 (ou 0000008). Os números de 1’s entre os 0’s representa quantas tropas devem ser enviadas para o terreno vizinho. Por exemplo, para a seguinte permutação do número acima mencionado, 01011011001101 (ou 0122021), teríamos a movimentação de 0 tropas para o terreno 1, 1 tropa para o terreno 2, 2 tropas para o terreno 3, 2 tropas para o terreno 4, 0 tropas para o terreno 5, 2 tropa para o terreno 6 e 1 tropa para o terreno 7. Todas as permutações de 0’s e 1’s são possíveis movimentações para cada terreno hexagonal, se desconsiderarmos o número de tropas que já existem nos vizinhos do terreno em questão. O número de permutações pode ser facilmente encontrado aplicando a fórmula do número de permutações com repetição.
1.3) De todas as permutações geradas, excluímos aquelas que não são possíveis quando analisamos o total de tropas dos vizinhos (a soma das tropas não pode ser maior que oito).
1.4) Para sabermos qual são as melhores movimentações para um terreno específico, aplicamos a seguinte heurística, chamada de Heurística Básica.
Basic Heuristic = ( n1 * type1 + n2 * type2 + n3 * type3 + … + nk * typek ) / ( número de 0’s a partir do segundo caractere + 1 ).
Dessa forma, atribuímos heurísticas melhores às configurações nas quais existam maiores movimentações para os vizinhos (conquista de novos territórios), principalmente se estes territórios pertencerem ao oponente ( áreas do oponente ou o castelo do oponente) ou forem áreas sem dono (chamadas de green tiles). Os pesos para cada tipo encontram-se abaixo:
public static final int W_TILE_OPPONENT_CASTLE = 25;
public static final int W_TILE_OPPONENT = 10;
public static final int W_TILE_GREEN = 6;
public static final int W_TILE_ME = 2;
public static final int W_TILE_MY_CASTLE = 2;
2) Neste jogo, é permitido realizar mais de uma ação por jogador. Portanto, cada “nó” utilizado pelo algoritmo Minimax será um conjunto dessas sequências de configurações.
3) Os nós são construídos através da escolha de sequências de configurações para cada terreno pertencente ao jogador da vez. Ou seja, essas sequências de configurações são “encapsuladas” em um nó e são consideradas uma “jogada” completa.
4) O número de nós formados pela combinação de todas as possíveis sequências de configuração seria muito grande. Portanto selecionamos os 10 melhores nós e enviamos ao algoritmo MiniMax.
5) A heurística para o nó é a soma das heurísticas básicas das suas sequências de configuração.
Download do código: http://www.4shared.com/file/WwiB9RZW/hexBattle.html
Ciência sem Fronteiras
O Programa Ciência sem Fronteiras, lançado no dia 26 de julho de 2011, é um programa do Governo Federal que busca promover a consolidação, expansão e internacionalização da ciência e tecnologia, da inovação e da competitividade brasileira por meio do intercâmbio de alunos de graduação e pós-graduação e da mobilidade internacional. O projeto prevê a concessão de até 75 mil bolsas em quatro anos. A iniciativa é fruto de esforço conjunto dos Ministérios da Ciência e Tecnologia (MCT) e do Ministério da Educação (MEC), por meio de suas respectivas instituições de fomento – CNPq e Capes –, e Secretarias de Ensino Superior e de Ensino Tecnológico do MEC.
Objetivo
Promover, de maneira acelerada, o desenvolvimento tecnológico e estimular os processos de inovação no Brasil por meio da mobilidade internacional docente, discente de graduação e pós-graduação, de pós-doutorandos e pesquisadores brasileiros, estimulando a inserção das pesquisas feitas nas instituições brasileiras às melhores experiências internacionais.
Temas e áreas de interesse
- Engenharias e demais áreas tecnológicas;
- Ciências Exatas e da Terra: Física, Química, Biologia e Geociências
- Ciências Biomédicas e da Saúde
- Computação e tecnologias da informação;
- Tecnologia Aeroespacial;
- Fármacos;
- Produção Agrícola Sustentável;
- Petróleo, Gás e Carvão Mineral;
- Energias Renováveis;
- Tecnologia Mineral;
- Biotecnologia;
- Nanotecnologia e Novos materiais;
- Tecnologias de Prevenção e Mitigação de Desastres Naturais;
- Biodiversidade e Bioprospecção;
- Ciências do Mar;
- Indústria criativa;
- Novas Tecnologias de Engenharia Construtiva
- Formação de Tecnólogos.
Cronograma de implementação das bolsas na Capes
| Ano | Doutorado sanduíche no exterior | Doutorado pleno no exterior | Pós- doutorado no exterior | Graduação sanduíche no exterior | Estágio Sênior no exterior | Jovem Cientista de grande talento (no Brasil) | Pesquisador Visitante especial (no Brasil) | Total |
|---|---|---|---|---|---|---|---|---|
| 2011 | 2.000 | 250 | 400 | 500 | 100 | 100 | 50 | 3.400 |
| 2012 | 3.500 | 2.000 | 1.000 | 3.000 | 500 | 120 | 80 | 10.200 |
| 2013 | 4.100 | 2.400 | 1.200 | 3.700 | 600 | 120 | 80 | 12.200 |
| 2014 | 4.300 | 3.200 | 1.300 | 4.400 | 800 | 120 | 80 | 14.200 |
| Total | 13.900 | 7.850 | 3.900 | 11.600 | 2.000 | 460 | 290 | 40.000 |
Cronograma Global de implementação anual de novas bolsas
| CNPq | Capes | |||||
|---|---|---|---|---|---|---|
| Ano | Novas bolsas por ano | Remanescentes do Ano anterior | Bolsistas ativos no ano | Novas bolsas por ano | Remanescentes do Ano anterior | Bolsistas ativos no ano |
| 2010 | - | - | 500 | - | - | 5.000 |
| 2011 | 3.890 | - | 3.890 | 3.400 | 3.237 | 6.637 |
| 2012 | 6.140 | 250 | 6.390 | 10.200 | 3.400 | 13.600 |
| 2013 | 10.230 | 670 | 10.900 | 12.200 | 2.600 | 14.800 |
| 2014 | 14.740 | 1.300 | 16.040 | 14.200 | 5.200 | 19.400 |
| - | 35.000 | - | - | 40.000 | - | - |
Relação de Universidades mais bem Classificadas nos Rankings Internacionais
Os estudantes e pós-doutores do Ciência sem Fronteiras terão o seu treinamento nas melhores instituições disponíveis, prioritariamente entre as 30 mais bem classificadas nos rankings internacionais para cada grande área do conhecimento. Tais instituições serão caracterizadas pela excelência na produção científica e na formação de recursos humanos para o mercado de trabalho, podendo ser e universidades, institutos de pesquisa e centros de tecnologia.
fonte : http://www.capes.gov.br/bolsas/bolsas-no-exterior/ciencia-sem-fronteiras








