Giter Site home page Giter Site logo

mc202's Introduction

Disciplina MC202 - Estruturas de Dados

Prof. Iago A. Carvalho

Horário da disciplina

  • Aula teórica: Terças-feiras, 21h às 23h, sala CB05
  • Aula teórica: Quintas-feiras, 19h às 21h, sala CB04
  • Aula prática: Sextas-feiras, 21h às 23h, salas SI03, SI05, SI08, IM10

Histórico e planejamento de aulas

  • 02/07 - Síntese (aula 25)
  • 30/06 - Árvores B (aula 24)
  • 25/06 - Grafos (aula 23)
  • 23/06 - Grafos (aula 22)
  • 18/06 - Grafos (aula 21)
  • 11/06 - Hash (aula 21)
  • 04/06 - Mergesort e Quicksort (aula 19)
  • 02/06 - Heapsort (aula 18)
  • 28/05 - Fila de prioridades (aula 17)
  • 26/05 - Árvores balanceadas (aula 16)
  • 21/05 - Árvores de busca (aula 15)
  • 19/05 - Árvores binárias (aula 14)
  • 12/05 - Pilhas (aplicações) (aula 13)
  • 07/05 - Pilhas e filas (aula 12)
  • 05/05 - Variações de listas (aula 11)
  • 30/04 - Listas (aula 10)
  • 28/04 - Análise de complexidade e eficiência de algoritmos (aula 9)
  • 23/04 - Backtraking (aula 8)
  • 21/04 - Recursão (aula 7)
  • 14/04 - Introdução a linguagem C (aula 6)
  • 09/04 - Introdução a linguagem C (aula 5)
  • 07/04 - Introdução a linguagem C (aula 4)
  • 02/04 - Introdução a linguagem C (aula 3)
  • 31/03 - Introdução a linguagem C (aula 2)
  • 12/03 - Introdução a linguagem C (aula 1)
  • 10/03 - Introdução a disciplina MC202 (aula 0)

Devido ao recente surto do novo Coronavirus (COVID-19), excepcionalmente, esta disciplina será lecionada no formato EaD. Desta forma, os slides de TODAS as aulas já se encontram disponíveis aqui.
Além disto, um conjunto de video-aulas (sobre cada um dos slides) está disponível aqui. Notem que existem algumas aulas faltando: elas serão gravadas e liberadas o mais cedo o possível.

Exercícios de laboratório

  1. Exercícios básicos de C (entrega para 26/04)
  2. Nó, apontador, variável apontadora, alocação dinâmica de memória (entrega para 03/05)
  3. Listas ligadas (apontadores) e listas por vetores (entrega para 13/05)
  4. Pilhas e filas (entrega para 20/05)
  5. Merge de listas e mergesort (entrega para 03/06)
  6. Listas circulares, duplamente ligadas, com cabeça, lista livre
  7. Algoritmos de ordenação (entrega para 08/06)
  8. Árvores binárias (entrega para 19/06)
  9. Árvores de busca
  10. Hash: conceitos e implementação com apontadores (entrega para 10/07)
  11. Grafos: conceito, representação por matrizes e listas ligadas
  12. Algoritmos de busca em grafos: busca em largura e busca em profundidade (entrega para 17/07)

Todos os exercícios de laboratório deverão ser realizados na linguagem C. Eles deverão ser submetidos através do SuSy, em um link a ser divulgado posteriormente.
O Susy compila os códigos utilizando o gcc 4.8.5. Mais especificamente, ele utiliza o seguinte comando para compilação:
gcc -std=c99 -pedantic -Wall -lm -o labX *.c

Para os alunos com dificuldades na linguagem de programação utilizada, recomenda-se o tutorial Indo de Python para C, desenvolvido pelo professor Lehilton L. C. Pedrosa, do Instituto de Computação - UNICAMP.

Outros links úteis para o desenvolvimento dos exercícios de laboratório são listados abaixo.

Auxiliares didáticos e auxílio presencial/online online

Seis auxiliares didáticos auxiliarão os alunos durante o curso desta disciplina. São quatro PEDs e dois PADs. Segue uma lista dos nomes de cada auxiliar didático junto de seu horário de atendimento. Todos os atendimentos serão realizados no Google Meet a partir do dia 30/03/2020.

Este repositório no GitHub também servirá como fórum de dúvidas da disciplina. Cada dúvida deverá ser postada como um Issue nesta página. Desta forma, todos os envolvidos na disciplina (o professor, auxiliares didáticos e os outros alunos) poderão ver suas dúvidas e respondelas assim que possível.


Sobre o material

Neste repositrio se encontram os slides, laboratórios e materiais utilizados durante a disciplina MC202 - Estruturas de Dados, originalmente desenvolvida para diversos cursos de graduação da UNICAMP.

Os slides da disciplina foram gentilmente cedidos pelo professor Rafael C. S. Schouery, do Instituto de Computação - UNICAMP. Grande parte dos slides serão utilizados as is, mas algumas pequenas correções poderão ser feitas durante o semestre.

Todos os materiais aqui são disponíveis sob a licença GNU General Public License v3.0. Desta forma, sintam-se livres para utilizar, distribuir e/ou modificar este material da forma que quiserem. Entretanto, lembrem-se de citar a fonte original :)

Montando o ambiente

De forma a tornar menos turbulenta essa transição entre python e C, dentro da pasta Ambiente foram criados passo a passo de como ter acesso ao Linux e como compilar seus programas testando com os arquivos do Susy de forma simples e rápida. Leiam todos os README.md, lá está tudo bem explicado de como essa configuração funciona. Em caso de dúvida bastar acionar o contato no final dos README.md(s).

Os passos estão numerados, a ordem de execução importa no caso!


Informações para citação

Se você utilizar o material desta disciplina de qualquer maneira, por favor, cite o material fonte:

Iago A. Carvalho (2020), MC202. Online: https://github.com/iagoac/mc202 Version 1.00; GNU General Public License v3.0.

@Misc{Carvalho2020MC202,
title={MC202},
author={Iago A. Carvalho},
howPublished={\url{https://github.com/iagoac/mc202}},
year={2020},
note={Version 1.00; GNU General Public License v3.0}
}

Iago A. Carvalho
[email protected]
http://iagoac.github.io/

mc202's People

Contributors

enoque avatar iagoac avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mc202's Issues

Saídas do Lab 3

Estou tendo problemas com as entradas e saídas do lab 3. O meu programa funciona corretamente de acordo com os exemplos do enunciado, mas não é aceito no susy e as saids são distintas em todos os testes
Captura de tela_2020-05-04_21-16-06

Nota do Susy

@iagoac como funciona a nota do susy? A cada submissão feita diminui a nota, ou a nota é baseada só na ultima submissão e dessa forma se tem testes errados isso que tiraria a nota

Dúvida sobre o Lab1

Boa noite professor, tudo bem?
Com relação ao Lab1, a matriz precisa ser alocada dinamicamente ou posso estabelecer um máximo para o tamanho? Outro questionamento, existe algum método específico que devo utilizar para separar os valores dados no input para uma linha da matriz (ex: "10 20 30") ou posso utilizar qualquer alternativa como as possíveis na biblioteca string.h?

Dúvida para utilização da função Realloc [Lab 2]

Boa noite,

Estou com dificuldades em utilizar de forma correta a função realloc() para aumentar o tamanho do vetor que contêm as informações de idade e contágio.

Minha ideia para resolver o lab é usar um vetor casos[]; cada posição se refere a idade, e os valores ao contágio, ou seja, casos[15] = 20 são 20 casos em indivíduos com 15 anos.
Estou usando o realloc sempre que a idade excede uma idade pré definida. E sempre que eu uso essa função defino o valor "0" como sendo o conteúdo dos novos endereços.

int ult_num = 5;
if (ult_num < y) {
            casos = realloc(casos, (y * sizeof(int)) + 1);
        
            //Limpa as novas posições
            for (int i = ult_num + 1; i < y; i++){
                casos[i] = 0;
            }
            //Guarda um novo valor da maior idade
            ult_num = y;

        }

O problema que eu to enfrentando é que tem vezes que o conteúdo do endereço não é "limpo", e é imprimido coisas como:
casos[85] = 18885022

Há outra maneira de realocar memória e ao mesmo tempo limpá-la?

Link Susy MC202 turma D

Por favor, alguëm pode me passar o link do Susy para a turma D de MC202. Só encontrei das turma A B C e acredito ser bem diferente dos labs dessa turma.

condicional do lab2: X < Y

Bom dia,
É uma dúvida bem simples, mas que nao ficou claro no enunciado. Se X !< Y, é pra fazer o que?
Ignorar os valores mas contar uma iteracao, iterar de novo... ?

Exemplo da aula 10

Testando o código do primeiro exemplo da aula 10

#include <stdlib.h>
#include <stdio.h>

typedef struct No {
    int dado;
    struct No *prox;
} No;

typedef struct No * p_no;

p_no criar_lista(){
    return NULL;
}

void destruir_lista(p_no lista){
    if (lista != NULL){
        destruir_lista(lista -> prox);
        free (lista);
    }
}

p_no adicionar_elemento(p_no lista, int x){
    p_no novo;
    novo = malloc(sizeof(No));
    novo -> dado = x;
    novo -> prox = lista;
    return novo;
}

void imprime(p_no lista){
    p_no atual;
    for(atual = lista; atual != NULL; atual = atual -> dado)
        printf("%d \n", atual -> dado);
}

int main() {
    int num;
    p_no lista;
    lista = criar_lista();
    do {
        scanf("%d", &num);
        if (num > 0)
        lista = adicionar_elemento(lista,num);
    } while (num > 0);
    imprime(lista);
    return 0;
}

Apareceu a mensagem:

main.c: In function 'imprime':
main.c:32:45: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     for(atual = lista; atual != NULL; atual = atual -> dado)
                                             ^

O que fazer para corrigir esse problema?

Problema no susy

Boa noite, fui submeter o lab e o susy retornou a tela em anexo qnd cliquei em "Turmas registradas"

image

Lab 1

Professor, no resultado pedido pelo susy nos teste, creio que tenha algo errado. No teste 1, por exemplo:
5
95 21 93 86 96
29 67 33 4 76
47 34 77 45 82
38 67 3 19 48
9 48 1 96 70

só a ultima linha tem soma par, mas o resultado do susy diz que há 3 linhas com soma par.
você poderia verificar, por favor?

Entregas com atraso no Susy

Boa noite! Após horas tentando resolver diversos erros no meu código do LAB2, fiquei com uma dúvida referente a entrega dos LABs pelo sistema Susy. Como funciona o desconto de nota para laboratórios entregues com atraso? Ainda há como entregar? O desconto é total, automático?

Agradecido!

Entrega de Labs

Professor, como vai ficar a entrega dos laboratórios? Vão ter data?

Certo no primeiro teste, errado nos outros.

O meu programa está dando certo para o primeiro teste mas para os outros não. Ele só está retornando a mensagem "[Program exited with exit code -11]". Posso colocar o me código aqui para alguém pelo menos me dar uma dica de qual seria o erro?

Senha do Susy

Professor, faz muito tempo que não logava no susy. Não lembro minha senha, felizmente ela esta salva, mas não da para ver qual é, ela só acessa. No caso de o cookie ser limpo, qual o procedimento que devo tomar para recuperar essa senha???

Dúvidas sobre struct

Nas aulas, foi mostrada a seguinte struct:

typedef struct No {
int dado;
struct No *prox;
} No;

typedef struct No * p_no;

Näo entendi completamente do porquê é necessário escrever outro typedef de struct No.
Qual seria a diferenca caso näo tivesse o 1° typedef?

Liberar memória alocada

Eu já submeti o código ao Susy e todos os testes deram corretos, porém eu esqueci de liberar o espaćo de memória alocado usando o comando free() ao final do programa.
Devo submeter novamente com essa modificação ou é desnecessário?

Dúvidas gerais e sobre o lab1

Eu tenho algumas dúvidas:

  1. Eu deveria usar um Issue por dúvida?
  2. Eu vi em outra resposta que a matriz de dimensão NxN já é satisfeita por um N=100, mas no caso se fosse necessário alocar de forma "dinamica" o array, eu poderia usar VLAs? (já que estamos usando c99 (apesar das questões da memória e de algumas pessoas não gostarem do uso de VLAs, e de não ser exatamente "standard")), ou eu deveria usar apenas o malloc?
    3)Vocês irão olhar os códigos, ou eles serão apenas avaliados pelo Suzy?
    4)No caso de vocês olharem ele, eu preciso comentá-lo?
    5)Novamente caso vocês olhem, tem problema cometer "barbaridades" como utilizar variáveis globais?
    6)O algoritmo deve esperar apenas input "bom", ou ele deve saber lidar com qualquer tipo de input?

MakeFile

Professor, qual a diferença de compilar usando o make, e compilar apenas o arquivo main?

Script test.sh

Aqui no repositório existe um arquivo contendo os testes abertos do Susy para serem usados com o script test.sh?
Tentei copiar do Susy e salvar o arquivo com a extensão .in e .res mas esta dando o erro:

root@eduardo-VirtualBox:/home/eduardo/Documentos/MC202/lab1# ./test.sh lab1 tests

--- begin of tests ---

--- in tests/arq01.in --- INCORRECT
<<<< diff result: >>>>
1c1
< ./test.sh, linha 58: 19967 Falha de segmentação (imagem do núcleo gravada) $cmd./"$program" >< $test_case

328 253 3 4
\ Nenhum caractere de nova linha no final do arquivo

--- end of tests ---

correct results (0):

incorrect results (1):
arq01.in

Quando eu digito uma matriz no arquivo funciona normalmente. Alguém sabe o que ocorre e pode me ajudar?
Ou tem os arquivos aqui no repositório para baixar e colocar na pasta <lab1/tests> dentro do diretório do projeto?

Sobre a disciplina

Bom dia,

teve alguma atualização em como vai se dar prosseguimento na disciplina depois das resoluções liberadas pela reitoria?

Dúvida com função Realloc.

Olá, estou inicializando meu vetor que guardará as informações como:

int *lista = NULL

depois alocando a memoria inicial de tamanho 5 assim (current_size é igual a 5):

lista = calloc(current_size, sizeof(int));

e logo na segunda linha do primeiro teste ("0 194 9") onde eu preciso dobrar o tamanho do array, eu faço da seguinte forma:

while (Y > current_size) { current_size = 2 * current_size; lista = realloc(lista, (current_size * sizeof(int))); }

no entanto olhando no gdb, ao executar a linha

lista = realloc(lista, (current_size * sizeof(int)));

eu recebo o seguinte erro:

image

não sei dizer em que parte do código eu errei, alguém pode me ajudar?

Erro de Processamento

Boa noite professor!

Fiz o LAB02 e rodei no terminal do meu computador como os testes do susy e passei em todos os eles. No entanto, quando fui submeter o código no susy, apareceu uma mensagem de erro logo abaixo de cada teste:
Exemplo:

"Teste 05: erro de processamento
provavelmente memória corrompida (código 134)"

Poderia, por favor, me ajudar a solucionar esse problema?
Atenciosamente,
Igor

[lab2] Alocação duplica capacidade de memória anterior

Bom dia, uma dúvida quanto ao enunciado do lab 2.

Nas restrições, fala que a memória realocada deve duplicar a capacidade de memória anterior, mas não podemos só realocar a quantidade necessária de memória, de acordo com a idade da operação?

Problema Lab2

Olá,
Meu código apresenta dois problemas que não sei como solucionar.

  1. O primeiro é o problema de memória que ocorre para os últimos casos do Susy, que acredito estar sendo causado pela minha alocação de memória, pois antes este problema de pilha aparecia para todos os testes do Susy, e após algumas mudanças aparece apenas para os casos mais longos. Estou fazendo a alocação de uma matriz, na qual guardo os dados de número de casos e idade, inicialmente para um tamanho de 5 linhas, e então, quando necessário aloco o dobro de memória e conforme o número de linhas da minha matriz aumente vai alocando sempre o dobro. Ficou dessa forma:
    Alocação inicial:
	for (k=0;k<5; k++)
		armazena[k] = malloc(2* sizeof(int));

Alocação extra:

                if( cont_linha +1 > cont) {  
		cont = 2*cont;  
		armazena = malloc(cont*sizeof(int *));	  /*aloca o dobro de memoria caso precise*/
		for (m=0; m<cont; m++)
			armazena[m] = malloc(2* sizeof(int));
                    }

em que cont_linha é o contador de número de linhas da minha matriz iniciado em 0 e cont inicia em 5.
O erro que apresenta nos 3 últimos testes do Susy é: Tamanho máximo da pilha ou da memória dinâmica excedido, ou talvez apontador inválido (código 139).

  1. O segundo é referente aos valores incorretos de saída. Alguns são corretos porém outros são nulos e outros errados. O que estou fazendo é varrer a matriz de casos e idade e guardar em uma variável o número de casos no range de idade da função consulta e imprimir esse valor e zerá-lo para a nova interação. Porém coloquei para imprimir a matriz armazenada a cada interação e descobri que ela preenche corretamente as linhas da função adicionar porém coloca zeros nas linhas correspondentes a função consultar, e não sei o porque, já que atribuo o valor na matriz apenas para a função adicionar, desta forma, dentro do laço principal:

    if(operacao==0){ /* Operacao Adiciona*/

     	for(l=0;l<cont_linha;l++){                             /* confere se a idade é repetida */
     		if(y==armazena[l][1])
     			armazena[l][0]=armazena[l][0] + x;
     	}		
     	armazena[i][0] = x; /*casos de corona */
     	armazena[i][1] = y; /* idade */
     	
    
     }
    
     else if (operacao==1){    /* Operacao Consulta */
     	/*printf("entrou\n");*/
     	x_c = x;  /* inicio do intervalo de idade */
     	y_c = y;  /* fim do intervalo de idade  x<y */
    
     	for(j=0;j<cont_linha;j++){
     		if( armazena[j][1] >= x_c && armazena[j][1] <= y_c ) {
     			/*printf("%d\n", soma);*/
     			soma = soma + armazena[j][0];	
     		}
     	}  
     	
     	printf("%d\n", soma);
     	soma = 0;
     	
     		
     }
    

Não estou vendo o que está de errado. Qualquer ajuda será bem vinda.

Dúvida sobre o erro "Realloc () invalid next size"

Boa noite! Estou com uma dúvida em relação à função realloc em meu código (linha 24
abaixo) na qual ele aloca o dobro da memória anterior, caso seja necessário. Meu código está funcionando corretamente até um limite máximo de 14 linhas de dados de entrada (portanto 42 elementos no vetor). Caso o usuário digite mais uma linha, o programa para durante o scanf e retorna o erro "Realloc () invalid next size".
Alguém poderia me auxiliar, por favor?
Obs: Caso eu defina o realloc para o triplo de memória anterior, não ocorre mais esse problema, mesmo com os últimos testes do susy.
Obrigado!
Captura de tela de 2020-05-02 17-48-41
Obs 2: i inicia com valor 0 e j inicia com valor 4.

conceitual - chamando funcöes

Vamos supor a seguinte expressäo:
"

  1. p_no criar_lista () {
  2.  return NULL;
    
  3. }
  4. p_no lista;
  5. lista = criar_lista ();
    "
    Por que a linha 4 näo implica a linha 5? Qual é a razäo de se colocar um nome antes de uma funcäo (linha 1)?

Funções do lab 2

Bom dia! No lab 2 as funções adicionar e consultar precisam possuir exatamente dois parâmetros, X e Y, ou podem possuir mais?

duvida e monitoria

oi estou com duvida no lab2 e preciso de ajuda, gostaria de saber se tem alguma monitoria. eu ja foi em uma mas a pessoa em questão não apareceu no dia.

Entendimento do enunciado

Boa noite,
"Quantas linhas possuem uma soma com valor par", ficou vago essa explicação para mim, não consegue entender muito bem. É para contabilizar a quantidade de linhas que a soma de todos os elementos da linha tem que dar par? Precisa ter pelo menos uma soma par na linha dos elementos? Tem que ter apenas uma soma? Queria entender melhor que ficou um pouco vago para mim essa explicação

Respostas Susy lab1

Fiz o lab1 e fui realizar os testes do Susy, aparetemente os arquivos de resposta estão como saída: (soma da diagonal principal) (soma da diagonal secundária) (número de colunas pares) (número de linhas ímpares). Alguém poderia conferir, por favor?

erro nos teste 3,4,5,6,7

Está dando este erro no teste 3 quando rodo no meu computador mais quando tentei no susy está correto:
free(): double free detected in tcache 2 Aborted make: *** [Makefile:30: testar_programa] Error 134
No meu código tem a função free() depois de todo o procedimento, tenho que coloca-la durante o procedimento ou pode ser apenas no final mesmo?
Nos testes 4,6,7 apenas alguns valores estão dando errado no susy,
No teste 5 quando rodei no susy está dando erro de processamento
provavelmente memória corrompida (código 134).
Alguma ideia do problema no meu código?
Estou usando a função Realloc, tem algum problema?

Aulas para atividade

dentre os slides passados, até qual usamos como apoio para fazer essa primeira atividade?

Login e senha Susy

Não lembro meu login e senha do Susy, última vez que usei foi em 2017, como posso recuperar esses dados?

bug Makefile

tanto pelo makefile quanto pelo metodo manual de se gerar um arquivo "cliente", depois de já ter "bla.o", obtive o seguinte erro:
"
gcc cliente.o complexo.o -lm -o cliente
cliente.o: In function main': cliente.c:(.text+0x8a): undefined reference to complexo_imprime'
cliente.c:(.text+0xa1): undefined reference to `complexo_absoluto'
collect2: error: ld returned 1 exit status
Makefile:4: recipe for target 'cliente' failed
make: *** [cliente] Error 1
"
creio que o arquivo näo está reconhecendo a pasta "complexo.h", visto que as funcoes que dao problemas sao desssa pasta.
O que posso fazer?

Atte,

(Lab03) Lista orfã

No meu algorítimo, fiz a implementação de tal forma que inicialmente eu tenho uma variável apontando para lista (semelhante aos slides), mas mais para frente no código, eu abandono essa variável (deixo de usá-la, e dou o valor de NULL a ela), e passo a usar duas outras variáveis para rodar a lista.
Há algum problema com esse método, ou eu devo implementar que nem um tipo padrão, onde o ponto de acesso é um endereço constante (tipo um array)?

Erro make preparar_ambiente

Nos últimos dois labs (03 e 04), o comando make preparar_ambiente está baixando o pdf do lab 01 e não do lab correspondente.

Dúvida Lab 02

Bom dia, tudo bem?
Com relação ao Lab 02, diz que X deve ser menor que Y, mas não é explicito o que deve acontecer caso Y seja maior que X. O que devo fazer nesse caso?

Tetes do laboratório 1

Há algo de errado com os valores de saída (itens 3 e 4) do laboratório 1 no susy. Por exemplo, teste 1 aberto:
5
95 21 93 86 96
29 67 33 4 76
47 34 77 45 82
38 67 3 19 48
9 48 1 96 70

item 3:
95 + 21 + 93 + 86 + 96 = 391
29 + 67 + 33 + 4 + 76 = 209
47 + 34 + 77 + 45 + 82 = 285
38 + 67 + 3 + 19 + 48 = 175
9 + 48 + 1 + 96 + 70 = 224
Portanto, têm apenas 1 linha com soma par e não 3.

item 4:
95+29+47+38+9 = 218
21+67+34+67+48 = 237
93+33+77+3+1 = 207
86+4+45+19+96 = 250
96+76+82+48+70 = 372
Portanto, têm apenas 3 linhas com soma impar e não 4.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.