Recentemente completei a escrita e defesa do meu Trabalho de Conclusão de Curso – TCC. Neste post vou contar minha experiência durante o processo.
Sou aluno do Bacharelado Interdisciplinar em Ciência e Tecnologia – BICT (https://bict.ufma.br/?page_id=23), da Universidade Federal do Maranhão – UFMA (https://portalpadrao.ufma.br/site). Embora já tenha defendido o TCC, ainda não terminei o BICT. Faltam algumas disciplinas. Trabalhar e estudar é algo realmente difícil. E, mesmo que difícil hoje, me parece mais fácil que 17 anos atrás, quando comecei a cursar Ciência da Computação (http://www.deinf.ufma.br/cocom/site/paginas/docs), também na UFMA; curso que não cheguei a concluir, mas direcionou minha carreira enquanto engenheiro de software (sou engenheiro de software? Talvez isso seja assunto para um outro post).
Um pouco monte de história
Meu TCC fala de inteligência artificial – IA. Mais especificamente, dentro do contexto do jogo e xadrez. Acho muito interessante observar as coisas de um ponto de vista de trajetória. Me parece um grande quebra-cabeça com um início bem complicado, mas com pecinhas sendo encontradas e se encaixando com muita facilidade no final. Construir algo novo, muitas vezes, é uma reunião de aprendizados e experiências ao longo de uma vida.
Aprendi a jogar xadrez apenas no ensino médio. O jogo me cativou muito na época. Durante aquela época tive a oportunidade de jogar bastante com os amigos do antigo Centro Federal de Educação Tecnológica do Maranhão – CEFET MA (hoje é o Instituto Federal de Educação, Ciência e Tecnologia do Maranhão – IFMA). Alguns desses colegas eram realmente muito bons e participavam de torneios na cidade de São Luís, onde morávamos, e até Brasil afora.
O ponto alto disso tudo foi no terceiro ano, em 2006, quando consegui uma vaga para a equipe que participou dos jogos anuais disputados entre os CEFETs das regiões Norte e Nordeste. Assim, vários times do CEFET MA partiram para Recife/PE para disputar os jogos. Entre eles, três homens e duas mulheres no grupo de xadrez.
Não muito tempo depois disso eu concluí o ensino médio e passei para o Curso de Ciência da Computação na UFMA. Estive por lá entre os anos de 2007 e 2013. Como disse, não cheguei a me graduar. Mas relativo ao xadrez continuei jogando com alguma frequência nos meses que se seguiram. Muito mais pela internet. As plataformas online para jogar existiam, mas não como hoje.
Em algum momento do segundo ou terceiro ano do curso de computação eu cheguei a mandar email para um professor perguntando se era possível criar um programa de computador que jogasse xadrez realizando movimentos a partir do conhecimento obtido após a análise de uma base de jogos de bons jogadores humanos. Essa ideia surgiu após algumas aulas da disciplina de processos estocásticos, onde conheci conceitos das cadeias de Markov e aprendizado por reforço. Se não me engano, ele sinalizou que era possível, mas não tinha certeza se as quase 4 milhões de partidas contidas nessa base seriam suficientes, ou se a estratégia com Markov seria a mais apropriada. Infelizmente, esse email se perdeu no tempo.
Contudo, aos poucos, o xadrez foi perdendo espaço até um momento que eu deixei de jogar. Nem mesmo online. Muito ramente entre 2010 e 2017.
Por volta de 2018 retornei a jogar em aplicativos de xadrez para celular com uma certa frequência, colocando o jogo como um bom passatempo. Também comecei a buscar conteúdos sobre o tema, pois eu era derrotado mesmo nos níveis mais fáceis dos aplicativos. Coincidentemente, um canal no YouTube estava em rápido crescimento. É o Canal Xadrez Brasil (https://www.youtube.com/@xadrezbrasil, https://vejasp.abril.com.br/cultura-lazer/youtuber-xadrex-de-entretenimento). Os vídeos com análises de partidas famosas tornavam-se fascinantes na apresentação de Rafael Leite, criador do canal. Com algumas centenas de inscritos ali por volta de 2018, hoje já conta com mais de 300 mil. É um número muito expressivo para esse nicho aqui no Brasil. Percebi que a cena enxadrística era muito mais frenética que 13 antes, quando conheci o jogo. Passei a acomapnhar o Xadrez Brasil e fiquei muito mais apaixonado pelo jogo. Com as tecnologias de internet, muita coisa evolui para usar o xadrez como ferramenta de entreternimento. Foi um choque. Mas algo perfeitamente esperado para um jogo tão forte como xadrez e com potencial evidente para o mundo online.
Fiquei tão interessado que coloquei na cabeça que ia criar uma programa de computador para jogar xadrez. Então, em algum momento de 2018 comecei a pesquisar. Inicialmente foi um assunto muito obscuro para eu entender. Fiz uma pesquisa primariamente baseada em blogs, vídeos no YouTube, análise de código fontes de outros programas e o Chess Programming Wiki (https://www.chessprogramming.org/Main_Page). Meus primeiros códigos devem ter sido escrito entre 2018 e 2019. O registro mais antigo que tenho é de maio de 2019 em um repositório (https://github.com/welyab/anjabachen) no GitHub que guardei as primeiras implementações. Tenho uma lembrança que por alguma razão eu apaguei uma primeira versão desse repositório e criei outro, perdendo algum histórico anterior a essa data.
Essa primeiríssima versão foi escrita em linguagem Java biscamente por ser a linguagem que eu trabalhava na época. Além disso, eu estava mais interessado em entender os conceitos que permitiam um computador jogar xadrez. No entanto, essa versão não foi totalmente concluída.
Por volta de 2019 eu mudei de emprego. No meu novo local de trabalho eu conheci a linguagem Kotlin. Eu nunca tinha trabalhado com ela antes. Por força desse novo trabalho, tive que aprender e acabei gostando muito da sintaxe. O uso que faço de Kotlin até hoje totalmente dentro da JVM (a mesma que roda programas escritos em linguagem Java), mas Kotlin também é multiplataforma.
Assim, para acelerar meu aprendizado em Kotlin, eu decidi rescrever meu programa de xadrez usando essa linguagem (https://github.com/welyab/ankobachen). Foi uma boa ideia. Consegui pegar muitos conceitos da sintaxe e de outros recursos da linguagem. Essa versão do programa evoluiu mais que a versão em Java, mas ainda ficou muito distante de me vencer em uma partida. A última versão desse programa é de julho de 2021. Em abril de 2021 eu estava iniciando no BICT.
Abaixo um exemplo de uma partida que eu joguei contra o programa que escrevi em Kotlin. Para análise da posição, essa o programa verifica se a dama está apoiada por um bispo, se a torre está numa coluna semi aberta ou aberta, se o bispo está bloqueado por peões da mesma cor, se o jogador possui o par de bispos, se existem peões isolados ou passados, o valor absoluto das peças e o valor das peças baseado nas posições que elas ocupam. Não implementei nenhum mecanismo heurístico que pudesse ajudar o computador a dar xeque mate em posições mais específicas. Do jeito que está, ele só conseguiria fazer isso com uma busca muito, muito profunda, o que custaria muito tempo do ponto de vista computacional sem a otimização necessária. No entanto, na partida abaixo, especificamente na jogada 29, eu jogando com as peças brancas, ameaço um bispo do computador e ele não o defende. Num primeiro momento, fiquei decepcionado pelo computador entregar o bispo de bandeija para um peão, mas em seguida percebi que levaria xeque em 2 jogadas se capturasse. Vale dizer que o computador só conseguiu calcular essa combinação de xeque mate porque ela era muito óbvio e estava somente a dois lances de distância. Se não me engano, o computador sempre calculava 4 lances à frente usando os critérios de avaliação que citei. Esses critérios que não chegam a ser sequer razoáveis se o objetivo for fazer o computador vencer, carecem de qualidade e também de quantidade (muitas outras características que definem se uma posição é boa precisariam ser implementadas). Um programa top de linha considera centenas, até milhares de características para avaliar uma posição. Por exemplo, em um final de rei e peões, ou de torre contra rei, e dezenas de outros, o computador não saberia o que fazer simplesmente porque ele não foi programado para analisar esses tipos de posições. Apesar da pouca capacidade de análise, isso serviu como prova de conceitos para as técnicas que eu estava aprendendo. O computador não conseguiria ganhar, mas várias vezes ele faz jogadas que num primeiro olhar parecem muito razoáveis.
Voltando ao tema de observar as coisas sob um ponto de vista de trajetória, fica muito claro pra mim que a escolha desse tema para o TCC foi uma boa opção. No CEFET eu aprendi a jogar xadrez. Ganhei um computador no terceiro ano e esse equipamento foi um dos grandes motivos que me fizeram seguir para o curso de ciência da computação. Deixei de jogar xadrez. Voltei a jogar de forma recreativa alguns anos depois. No final de 2018 comecei a fazer um programa de computador para jogar xadrez. Decidi em 2020 que iria voltar à faculdade. Em 2021 estava entrando no BICT. Agora, no final de 2023, concluí um TCC sobre como computadores jogam xadrez. Como Steve Jobs fala em seu discurso aos formandos da Universidade de Stanford (https://www.youtube.com/watch?v=45xrq0wpqv4), os pontos só podem ser ligados quando olharmos para trás.
A escolha do tema
Outro interesse que venho desenvolvendo é a IA, especialmente sobre o campo das redes neurais artificiais. Desde o início da minha jornada profissional eu sempre trabalhei com desenvolvimento de sistemas computacionais, primariamente para cadastro e controle, e os mais diversos temas relacionados à engenharia de software, desde banco de dados, frameworks, escalabilidade, disponbilidade, segurança, equipes e relações interpessoais. Mas há alguns anos eu venho cozinhando em banho maria um interesse pela área de inteligência artificial. Atualmente vivemos uma explosão disso, com as inteligências permeando o cotidiano das pessoas. Algo curioso é que hoje os usuários finais estão cada mais conscientes que estão usando algo conhecido como inteligência articial. Sitemas como ChatGPT, carros autônomos e filtros em redes sociais são alguns exemplos. É sem precedentes.
Não muito tempo atrás, uma empresa do Google, a Deep Mind resolveu um dos problemas abertos na IA, que era a construção de um mecanismo computacional para jogar Go. Também é um jogo de turnos, de estratégio para conquista de território. Do ponto de vista computacional, esse jogo era muito mais difícil de resolver que o xadrez. A Deep Mind conseguiu usando redes neurais. A estatégia era treinar essas redes com partidas jogadas por humanos e depois usar outras técnicas de treinamento baseadas em aprendizado por reforço e um algoritmo chamado Busca em Árvore Monte Carlo. Deu super certo e o programa batizado de AlphaGo venceu o melhor jogador mundo em uma batalha histórica.
Mais tarde, a DeepMind melhorou ainda mais o sistema e agora ele era capaz de aprender a jogar Go exclusivamente por aprendizado por reforço. Instâncias das redes neurais ficavam jogando uma contra a outra e o peso de suas decições eram bonificadas ou punidas caso o software vencesse ou perdesse. Assim, numa próxima tentativa, o programa tomaria melhores decisões. Isso era repetido alguns milhões de vezes. No final do processo, a rede estava tão bem treinada que conseguiria vencer um ser humano. Esse mecanismo ficou conhecido como AlphaGo Zero.
Não parou por aí. Um terceiro trabalho da DeepMind, dessa vez, generalizou o mescanismo usado no jogo Go também para aprender a jogar xadrez e shogi (uma versão japonesa do xadrez). Da mesma forma, as redes neurais começavam a aprender a jogar sem qualquer conhecimento estrégico ou pocional do jogo de xadrez. Esse mecanismo foi batizado e AlphaZero. Para validar seu poder jogo, usaram o programa Stockfish (https://github.com/official-stockfish/Stockfish), um dos melhores até hoje (os humanos já foram derrotadas pelos computadores desde 1997, quando Deep Bleu venceu Kasparov). Em vários torneios, AlphaZero chegou a vencer Stockfish com larga vantagem. Isso gerou um frenesi no mundo do xadrez computacional. Algo assim não acontecia desde vitória do Deep Blue.
A DeepMind divulgou um total de 3 artigos e alguns materiais suplementares sobre os trabalhos para resolver o jogo Go, xadrez e shogi de maneira totalmente autônoma. A comunidade enxadristística, então, comeceu um projeto para repreplicar o que foi feito pela Deep Mind, que não chegou a a divulgar as implementações de redes neurais abertamente. Esse projeto ficou conhecido como Lee Chess Zero – Lc0 (https://lczero.org/). Rapidamente o Lc0 ganhou força treinando sua rede neural apenas jogando contra si própria. O poder computacional necessário para isso é doado pela própria comunidade entusiasta do xadrez espalhada pelo mundo.
A partir de 2018, Lc0 começou a ganhar todas as divisões de acesso do Top Chess Engine Champinshiop – TCEC, obtendo o segundo lugar da última divsão de acesso à super final e ganhando em 2019 e 2020. Os modelos de programa de xadrez que faziam uso de redes neurais para avaliar uma posição chacoalharam a cena do xadrez computacional.
Uma dos melhores programas do mundo em xadrez, o Stockfish, se viu forçado a migrar para esse mecanismo e também passou a usar redes neurais como função de avaliação. Na verdade, hoje, os programas de xadrez mais fortes já ausam algum mecanismo de análise de posição baseado em redes neurais, tudo fruto dos trabalhos da DeepMind realizados entre 2016 e 2018.
Anteriormente eu citei como o programa que fiz usa algumas caracteristicas para avaliar uma posição. De maneira resumida, devemos pegar conhecimento humano e converter isso para números dentro do computador. Por exemplo, se o jogador tiver peões dobrados, ele vai ganhar uma penalidade em sua pontuação geral. Se ele tiver um peão passado, ele ganha alguns pontos extras por isso. Se tem o par de bispos, pontos a mais. O rei perdeu os dois lados do roque, pontos a menos. A dificuldade é definir quantas são essas características. Como disse, é tudo fruto do conhecimento humano. Uma vez com a característica implementada, é necessário saber o impacto dela no jogo, isto é, é preciso entender o quanto a pontuação para uma determinada característica vai acrescentar ou dimunir da pontuação geral da posição de um jogador. Isso também é um um problema razoavelmente difícil de resolver. A soluções, geralmente, ver ao se testar diferentes versões do programa milhões de vezes. Por exemplo, uma versão que dá 3 pontos para um peão passando pode vencer 75% de partidas contra uma versão que dá apenas 2 pontos. Isso é um indicativo de que 3 pontos para o peão é mais razoável. Baster ter esse mesmo raciocínio para as dezenas, ou cetenas de caracteristicas.
Mas com as redes neurais, nada disso é um problema. No caso do xadrez, elas não precisam seque do conhecimento humano prévio. Redes diferentes ficam jogando contra si por vários milhões de vezes, sempre atualizando seus mecanismos internos. Se uma rede neural avaliou que havia uma probabilidade de 85% de vencer a partida e, no final, ela acabou perdendo, significa que essa avaliação de 85% estava equivocada. Existemas mecanismos matemáticos para realizar um ajuste nesse valor, que pode passar essa avaliação de 85% para 83% um próximo teste da rede. E assim, após milhões e milhões de partidas e ajustes, a rede estará muito bem treinada e sem que qualquer humano tivesse que implementar o que é um peão dobrado, um torre na sétima, etc.
LeelaChess Zero começa a ganhar as notícias do xadrez ali entre 2019 e 2020 como um fenômeno. Um programa que consegue aprender xadrez a partir do nada. A função de avaliação do programa que eu fiz não pderia mais ser uma simples combinação entre caracteristicas e pesos. Eu vi que precisava entrar de vez no mundo da inteligência artificial com redes neurais e conhecer a fundo como alguns desses elementos funcionam, como as redes neurais são capazes de aprender. O tema da minha pesquisa para o TCC estava praticamente definido. Era algo que serviria ao TCC do BICT, e também algo que eu estaria interessado em pesquisar.
Posso afirmar que essa decisão sobre o tema teve um papel fundamental no bom desenvolvimento do TCC. Não estou querendo dizer que o bom desenvolvimento do trabalho significa que ele ganhou nota 10. Meu ponto aqui é que esse tema permitiu criar conexão com o que eu precisava fazer. Essa conexão foi muito além de um mero “requisito necessário para a obtenção do grau de Bacharel Interdisciplinar em Ciência e Tecnologia“. Eu me diverti, me empolguei e, principalmente, estudei um assunto como jamais havia estudado. Em alguns momentos me cansei. Mas me recuperei. E assim fui indo.
A busca pelo orientador
Com o tema definido, fui procurar um professor para me orientar. A primeira opção para orientador foi o professor Cláudio Aroucha. Ele também fez Ciência da Computação na mesma época que eu, entrou no curso 1 semestre antes de mim. No entanto, ele estava dedicado ao doutorado e não pode assumir o papel de me orientar.
Mas o prof. Cláudio sugeriu o prof Bruno Feres. Que prontamente aceitou me orientar. Felizmente, uma escolha que se mostrou muito acertada. Mas não foi realizada no escuro. O prof Claudio deu ótimas referências. O prof. também nutria um interesse em integência artificial. No final, tive bastatnte abertura para escrever a pesquisa como eu estava imaginando. O prof. Bruno no início sugeriu que eu cortasse alguns assuntos. O trabalho ficaria extremamente grande. A visão do orientador é muito boa nesse sentido.
A pesquisa
Ao todo, conferi cerca de 90 arquivos PDF de livros ou artigos que encontrei na internet durante a pesquisa para este trabalho. Isso sem contar alguns livros impressos que possuo e outras dezenas de páginas de blogs na internet que visitei para referenciar o que eu queria escrever sobre xadrez, xadrez computacional e redes neurais. Muitos outros artigos ficaram pelo caminho pois, num primeiro olhar, não pareciam promissores para o que eu estava procurando.
Como curiosidade, em dado momento, um dos autores que eu usei comparou o torneio de xadrez Tata Steel ao torneio de Wimbledon, o mais antigo e um dos mais prestigiados torneios do esporte tênis. O Tata Steel possui esse status no mundo do xadrez. Embora eu não acompanhe o tênis, achei essa comparação muito interessante. Quando falam de Wimbledon, eu sei que estão falando de tênis. Isso tem muita força e queria usar essa analogia no trabalho. O autor, no entanto, não cita o que Wimbledon representa, ou que ele seja, seque cita o jogo de tênis. Ele confia, de maneira acertada, que o leitor saberá do que se trata. No meu trabalho, eu achei necessário trazer essa informação. Como forma de exercício, não podia por mim mesmo, sem a autoridade necessária, simplesmente dizer que Wimbledon é mais antigo e prestigiado torneio de tênis. Essa informação pode ser facilmente obtida na Wikipedia, mas felizmente eu encontrei um artigo com essa informação: SERVE EFFICIENCY DEVELOPMENT AT WIMBLEDON BETWEEN 2002 AND 2015: A LONGITUDINAL APPROACH TO IMPACT TOMORROW’S TENNIS PRACTICE, escrito por RALPH GRAMBOW, CRAIG O’SHANNESSY, PHILIPP BORN, DOMINIK MEFFERT, TOBIAS VOGT. Talvez um artigo distante do xadrez e da computação ou inteligência artificial, mas sem dúvida uma conexão muito interessante.
Tentei, assim, realizar uma pesquisa minunciosa sobre cada elemento que apresentei no TCC. Isso foi bastante cansativo, mas divertido. Acho que é um pouco de como a ciência é feita e demonstra que não temos que rescrever as rodas da história. Pessoas no passado já desvendaram grandes enígmas e as gerações atuais precisam usar esse conhecimento para evoluir a ciência e a humanidade.
No início da pesquisa do capítulo que comenta sobre os aspectos computacionais do xadrez, encontrei fontes que teriam me poupado muito tempo entre 2018 e 2021, quando comecei a escrever um programa para jogar. O livro Artificial Intelligence: a Modern Approach, 4a edição, de Peter Norvig and Stuart J. Russell, possui tópicos focados no estudo da resolução de jogos por computadores. Cada página lida desse livro era um achado. Eu complementei com várias ouras fontes, mas sem dúvida esse livro é a “bíblia” da inteligência artificial. De forma ampla, eles apresentam os conceitos de agentes ingeligentes e os mecanismos de busca que permitem o computador encontrar a melhor jogada a se realizar em uma determinada posição. Sem dúvida eu recomendo esse livro para quem está começando os estudos em IA.
ChatGPT
Quanto do meu TCC foi feito pelo ChatGPT? Nem uma única frase do TCC é fruto do ChatGPT. Mas sim, eu usei ele de o utras formas.
Vale dizer, que para fins estritamente cintíficos, eu testei as capacidade do ChatGPT para escrever um TCC, ou pelo partes dele. Por mais que eu fornecesse comandos cada vez mais específicos e com mais detalhes, ou que eu pedisse para ele entregar um parágrafo menor, mais focado, etc, ele nunca trouxe um texto que, na minha visão, tivesse uma qualidade adequada. Mesmo quando a leitura do texto prouzido era razoável, era muito difícil conseguir que ele trouxesse referência bem condizentes com o que estava sendo produzido. E, mesmo que o texto poroduzido tivesse alguma qualidade, no meu momento como estudante, eu não teria o sentimento necessário para entregar algo sem que eu revisasse cada uma das eventuais referências.
Assim, colocar sob responsabilidade do ChatGPT a construção do meu TCC foi uma prova de conceito que logo caiu por terra. O TCC foi completamente escrito po mim. Em todo texto, praticamente cada frase possui a referência com a informação de página de onde aquela informação foi tirada.
Mas a ferramenta ainda foi extreamente util durante toda a escrita do TCC. Vou listar alguns dos usos que fiz:
- Pesquisa de artigos e livros – para buscar artigos e livros, eu utilizei bastate o portal de períodicos da CAPES e o Google Acadêmico, mas o ChatGPT também se mostrou uma ferramenta muito interessante. Eu descrevia um assunto pra ele e pedia mais explicações e detalhes, solicitando que trouxesse referências de artígos acadêmicos publicamente disponível na internet. Consegui achar alguns artigos dessa forma. O legal é que o ChatGPT ia direto a ponto. Com isso, eu buscava os documentos originais dos artigos e tinha a chance de ler e referenciar no meu TCC se fosse o caso
- Para elementos de artigos que não eram muito detalhados, ou que eu estava com dificuldade de entender, eu pedia ajuda ao ChatGPT. Como redes neurais é um assunto novo para mim, muitas vezes, até pesquisar no Google acaba sendo uma tarefa difícil, pois não conheço os termos, as palavras chaves para pesquisar um assunto. Eu podia pegar um contexto prévio com o ChatGPT que possibilitava eu fazer uma busca mais assertiva no Google
- Eu conheço pouqúissimo de LaTeX. O ChatGPT formatou algumas fórmulas de equações com a linguagem do LaTeX. Eu passava algo mo x^2 ele mandava o código do x² bem bontinho
- Encontrei alguns bons livros na Internet. Pude fazer o upload desses livros para o ChatGPT e pedia para ele encontrar determinado assunto dentro do livro, dizer quais eram as páginas, etc. Com certeza isso me poupou muito tempo. Mais uma vez, com a informação oferecida pelo chat eu poderia ir diretamente onde tinha interesse realizar a referênfcia no meu TCC
- Depois que meu trabalho já estava quase concluído, submeti o PDF do TCC para o ChatGPT analisar se o texo estava bom, se tinha conexão, etc. Também fiz alguns ajustes a partir de indicações do ChatGPT principalmente sobre ortografia. Infelizmente, ele não é tão bom nessa tarefa. Embora ele encontrasse alguns erros, muitos outros permaneciam.
A.s.s.o.c.i.a.ç.ã.o B.r.a.s.i.l.e.r.a d.e N.o.r.m.a.s T.é.c.n.i.c.a.s – A.B.N.T
Utilizar uma ferramenta para construir um trabalho como um TCC é essencial. Existem várias delas disponíveis na internet. Até uma linguagem de marcação chamada LaTeX. Trabalhos desse tipo geralmente possuem referências para outros trabalhos, possuem listas de imagens, quadros, figuras, equações, etc. Tudo isso deve ser numerado, o trabalho também deve ter um sumário, deve ter um resumo, e por aí vai. Cada parte com sua própria regra de formatação. Uma ferramenta que automatize a formatação se torna um pré requisito. Imagine que ao listar imagens manualmente, digamos, Imagem 1, Imagem 2, Imagem 3, …, Imagem 70, e depois seja necessário adicionar uma imagem depois da imagem 10, vai precisar organizar novamente todas as imagens, com a 11 virando a 12, a 12 virando a 13 e assim sucessivamente. É algo que, sem auxílio, é complicado de ser realizado. Felizmente, os computadores estão aí para isso.
Já ouvi falar de LaTeX e algumas poucas vezes já cheguei a testar algo relativo a isso. Sei que ela é um padrão no mundo acadêmico para publicação de artigos, etc. No geral, conheço pouquíssimo. Perguntei a alguns colegas quais ferramentas eles usam, indicaram uma chamada Overleaf, que usa LaTeX como a base de escrita e formatação dos textos. LaTeX no início da escrita do TCC era algo que eu não tinha interesse em aprender. Por essas e por outras, eu não pesquisei muito sobre o assunto. A versão paga do Overleaf, por exemplo, custa 199 dólares por ano. Eu também não testei se a versão gratuita me atenderia.
Minha segunda opção foi o Microsoft Word. Ainda cheguei a escrever algumas páginas nele. Adicionei um pacote que permitia formatar referências segundo as regras das ABNT. Também configurei algumas outras regras para atender várias normas. No geral, acho que seria muito razoável concluir o trabalho no MS Word. Honestamente, não lembro exatamente por não segui com ele. Acho que tive alguns problemas de formatação, ou coisa do tipo. Foi algo que eu comecei e parei logo nas primeiras duas ou três semanas de escrita do TCC.
Por último, pesquisei algumas outras ferramentas e achei uma chamada Mettzer. É uma plataforma online onde escrevemos o TCC já no formato da ABNT. Ela possui alguns recursos bem legais. A versão gratuita me atenderia, mas acabei pagando cerca de 130 reais por 1 ano da versão com alguns recursos extras. Ela é muito simples de utilizar e cobriu todas as minhas necessidades. A escrita de equações, por exemplo, usa o formato LaTeX. O ChatGPT me ajudou muito nessa parte.
A defesa
Embora eu tenha dedicado um capítulo inteiro para falar exlusivamente de xadrez, suas regras, história, conceitos, etc, na defesa do TCC eu comentei isso apenas por alto em 4 ou 5 frases no início e mais algumas menções durante a apresentações das técnicas computacionais.
Foi uma apresentação super objetiva e levou cerca de 25 minutos mais uns 10 minutos respondendo alguns perguntas da banca.
Problemas
A banca avaliadora foi unânime ao dizer que eu exagerei no tamanho do TCC. Eu entrei em temas que não eram necessários. Por exemplo, eu fiz uma ampla apresentação do xadrez como jogo, sem qualquer vínculo com o núcleo do TCC, que é mostrar as técnicas computacionais que terminem o computador jogar.
Meu objetivo princial era apresentar as técnicas disponiveis para permitir o computador jogar xadrez. Os professores enterem isso e perceberam que talvez não estivesse tão claro os tópicos que trouxe. Um leitor de primeira viagem poderia ter alguma dificuldade para relacioanr diversos temas.
O resudo do trabalho e a conclusão também teve alguns problemas. A conclusão não levantava quais os objetivos alcançados e o que pode ser aprendido sobre inteligência artificial e xadrez, dentre outros problemas.
Compreendi e concordo com a banca em quase todos os pontos que foram levantados como melhoria. Fiquei extreamemte feliz com as sugestões que recebi e mais feliz ainda por eles demonstrarem que leram o trabalho. No entanto, meu objetivo pessoal era realmente fazer um trabalho bastante amplo. Mas eu também concordo que eu deveria ter me adequado à forma como um TCC deve ser, tanto do ponto de vista de foco quanto do ponto de vista de volume. Meu trabalho teve cerca de 190 páginas, sendo umas 150 apenas de conteúdo. Enquanto aluno, eu estou sujeiro à esse tipo de regra.
Conclusão (do post)
Este trabalho foi o TCC do BICT. É um curso superior como outro qualquer. Mas ele também é a porta de entrada para outros cursos dentro da UFMA. São os chamados cursos de segundo ciclo: egenharias de computação, transporte, aeroespacial, ambiental, civil e mecânica. Uma vez graduado no BICT, o aluno pode escolher uma dessas engenharias e seguir para outra gradução com mais uns 3 anos de estudo. É uma formação muito boa. Bastante generalista no BICT e depois focada em uma engenharia. Minha opção óbvia é seguir com a egenharia de computação. A entrada no segundo cliclo é realizada por seletivo interno para os graduados no BICT, sem necessidade de realizar um novo ENEM.
Assim, seguir para o curso de engenharia da computação é um ótimo caminho para continuar os estudos em inteligência artificial. Durante a própria defesa do TCC, a banca avaliadora indicou que os trabalhos futuros relacionados a esse tema, e que eu demonstrei ter interesse em seguir, deveriam ser mais focados. Algo que com certeza vou acatar!
Por mais simples ou complicada que uma realização seja, mesmo quando pensamos começar do zero, me parece que tudo é fruto de uma sequência de aprendizados.
O trabalho recebeu nota 9.2.
Se você se interrou em ler o TCC, ou pelo menos dar uma olhada, o PDF pode ser baixado nesse link: https://drive.google.com/drive/folders/1qEbMWW41e_bQBBb1m7FCvv5nK-X6-gNp?usp=sharing
É isso! Espero que esse texto mais emocional que racional possa de alguma forma te ajudar na escrita do seu TCC. Não é fácil, mesmo que algumas pessoas consigam fazer com facilidade. Mas totalmente possível.
Se quiser trocar uma ideia, manda mensagem lá no instagram: https://www.instagram.com/welyab/