-
Árvores de Decisão em Ciência da Computação usadas em inteligência artificial
Uma Árvore de Decisão é: •um nó folha (ou nó resposta) que contém o nome de uma classe ou o símbolo nulo (nulo indica que não é possível atribuir nenhuma
-
Métodos Ensemble em Ciência da Computação usadas em inteligência artificial
Estes métodos são a combinação de diferentes modelos para se obter um único resultado. Eles são construídos de maneira similar aos algoritmos mais simples, como regressão linear ou árvore de
-
Árvores em Ciência da Computação usadas em inteligência artificial
Árvores de decisão ou árvores de classificação são definidas informalmente como modelos de aprendizado supervisionado que representam regras de decisão baseadas nos valores dos atributos. São muito usadas em inteligência
-
Epigramas interessantes do primeiro laureado com o prêmio Turing da ACM!
Oi caro(a) leitor(a), começo com a definição de epigrama. Depois com os comentários do Alan J. Perlis sobre os fenômenos que cercam os computadores e produzem uma base surpreendentemente rica
-
Cinco enxadristas famosos que aparecem em várias listas de melhores de todos os tempos!
A lista dos cinco enxadristas está ordenada pela data de nascimento, seguida por uma curta biografia do gênio enxadrista Começo com um desafio! No menu jogos deste site, tem um
-
Bibliotecas Python para Desenvolvimento de jogos — Parte 5 da série de posts do Guia Herez
Desenvolvimento de Jogos em Python — Guia Herez (Parte 5) Desenvolvimento de Jogos em Python — Parte 5 da série Herez
Visão geral: esta é a quinta publicação da série Herez sobre bibliotecas Python. Aqui detalhamos as ferramentas mais usadas para criar jogos em Python: PyGame, Pyglet, PyOpenGL, Arcade e Panda3D. Cada seção traz descrição, motivos para usar, instalação, exemplos de uso e um jogo simples completo que foi aplicado em projetos reais da Herez. Os projetos e exemplos completos estão disponíveis nos repositórios GitHub e GitLab da Herez.
Publicado por Herez em
Como usar este post
Use este guia para escolher a biblioteca certa, copiar trechos de código e rodar jogos simples localmente. Todos os exemplos foram testados em projetos reais da Herez; os repositórios contêm código-fonte, assets e instruções de execução.
Resumo rápido
Biblioteca Foco Quando usar PyGame 2D clássico Jogos 2D, protótipos e ensino Pyglet 2D/3D leve Aplicações multimídia e OpenGL direto PyOpenGL OpenGL puro Gráficos 3D customizados e engines Arcade 2D moderno Jogos 2D com API simples e performance Panda3D 3D completo Jogos 3D, simulações e aplicações interativas Bibliotecas detalhadas com jogos simples completos
PyGame
O que é: biblioteca clássica para desenvolvimento de jogos 2D em Python, com suporte a gráficos, som, entrada e temporização.
# Instalação pip install pygameJogo simples completo: “Catch the Ball” (PyGame)import pygame, random, sys pygame.init() W, H = 640, 480 screen = pygame.display.set_mode((W,H)) clock = pygame.time.Clock() player = pygame.Rect(W//2-25, H-60, 50, 50) balls = [] score = 0 FONT = pygame.font.SysFont(None, 36) while True: for e in pygame.event.get(): if e.type == pygame.QUIT: pygame.quit(); sys.exit() keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: player.x -= 5 if keys[pygame.K_RIGHT]: player.x += 5 if random.random() < 0.02: balls.append(pygame.Rect(random.randint(0,W-20), -20, 20, 20)) for b in balls[:]: b.y += 5 if b.colliderect(player): score += 1; balls.remove(b) elif b.y > H: balls.remove(b) screen.fill((30,30,40)) pygame.draw.rect(screen, (200,50,50), player) for b in balls: pygame.draw.ellipse(screen, (50,200,50), b) screen.blit(FONT.render(f'Score: {score}', True, (255,255,255)), (10,10)) pygame.display.flip() clock.tick(60)Contexto Herez: versão usada em workshops internos para ensinar game loop, colisões e input; projeto completo com assets e testes está nos repositórios Herez.
Pyglet
O que é: biblioteca leve para multimídia e jogos, com integração direta a OpenGL e suporte a áudio, janelas e eventos.
# Instalação pip install pygletJogo simples completo: “Asteroid Lite” (Pyglet)import pyglet, random window = pyglet.window.Window(640,480) batch = pyglet.graphics.Batch() player = pyglet.shapes.Rectangle(300,20,40,40,color=(50,150,255),batch=batch) asteroids = [] label = pyglet.text.Label('Score: 0', x=10, y=450) score = 0 @window.event def on_draw(): window.clear() batch.draw() label.draw() def update(dt): global score if random.random() < 0.02: asteroids.append(pyglet.shapes.Circle(random.randint(0,640),480,10,color=(200,50,50),batch=batch)) for a in asteroids[:]: a.y -= 200*dt if a.y < 0: asteroids.remove(a) a.delete() if a.x > player.x and a.x < player.x+40 and a.y < 60: score += 1 asteroids.remove(a) a.delete() label.text = f'Score: {score}' pyglet.clock.schedule_interval(update, 1/60.0) pyglet.app.run()Contexto Herez: usado em protótipos que exigiam integração OpenGL simples; código e variações estão nos repositórios Herez.
PyOpenGL
O que é: bindings Python para OpenGL, permitindo controle direto do pipeline gráfico para criar gráficos 3D customizados.
# Instalação pip install PyOpenGL PyOpenGL_accelerateJogo simples completo: "Rotating Triangle" (PyOpenGL)from OpenGL.GL import * from OpenGL.GLUT import * angle = 0.0 def display(): global angle glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) glLoadIdentity() glRotatef(angle, 0, 0, 1) glBegin(GL_TRIANGLES) glColor3f(1,0,0); glVertex2f(0,0.6) glColor3f(0,1,0); glVertex2f(-0.6,-0.6) glColor3f(0,0,1); glVertex2f(0.6,-0.6) glEnd() glutSwapBuffers() angle += 0.5 glutInit() glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA) glutInitWindowSize(600,600) glutCreateWindow(b'Rotating Triangle') glutDisplayFunc(display) glutIdleFunc(display) glutMainLoop()Contexto Herez: usado para prototipar shaders e efeitos gráficos; exemplos de integração com engines estão nos repositórios Herez.
Arcade
O que é: biblioteca moderna para jogos 2D com API simples, boa performance e integração com OpenGL via pyglet.
# Instalação pip install arcadeJogo simples completo: "Space Shooter" (Arcade)import arcade SCREEN_W, SCREEN_H = 800, 600 class MyGame(arcade.Window): def __init__(self): super().__init__(SCREEN_W, SCREEN_H, "Space Shooter") self.player = arcade.SpriteSolidColor(50,30,arcade.color.BLUE) self.player.center_x = SCREEN_W//2; self.player.center_y = 50 self.bullets = arcade.SpriteList() def on_draw(self): arcade.start_render() self.player.draw() self.bullets.draw() def on_update(self, dt): self.bullets.update() for b in self.bullets: b.center_y += 5 if b.center_y > SCREEN_H: b.kill() def on_key_press(self, key, modifiers): if key == arcade.key.SPACE: bullet = arcade.SpriteSolidColor(5,10,arcade.color.YELLOW) bullet.center_x = self.player.center_x; bullet.center_y = self.player.center_y+20 self.bullets.append(bullet) if __name__ == '__main__': game = MyGame() arcade.run()Contexto Herez: usado para protótipos educacionais e jogos 2D com física simples; projetos completos com assets estão nos repositórios Herez.
Panda3D
O que é: engine 3D completa com renderização, física básica, sistema de cenas e ferramentas para jogos e simulações interativas.
# Instalação pip install panda3dJogo simples completo: "3D Spinner" (Panda3D)from direct.showbase.ShowBase import ShowBase from panda3d.core import AmbientLight, DirectionalLight class MyApp(ShowBase): def __init__(self): super().__init__() self.scene = self.loader.loadModel('models/box') self.scene.reparentTo(self.render) self.scene.setPos(0, 10, 0) self.taskMgr.add(self.spin, 'spinTask') def spin(self, task): self.scene.setH(task.time * 60 % 360) return task.cont app = MyApp() app.run()Contexto Herez: usado em protótipos 3D e simulações interativas; cenas, modelos e scripts de build estão nos repositórios Herez.
Comparação prática
Critério PyGame Arcade Pyglet / PyOpenGL Panda3D Foco 2D clássico 2D moderno Multimídia / OpenGL 3D engine completa Curva de aprendizado Baixa Baixa Média Média a alta Ideal para Educação e protótipos Jogos 2D com performance Gráficos customizados Jogos 3D e simulações Escalabilidade Média Média Alta (com OpenGL) Alta Boas práticas Herez para desenvolvimento de jogos em Python
- Comece simples: valide mecânicas com um protótipo 2D antes de investir em 3D.
- Organize assets: mantenha sprites, sons e níveis em pastas versionadas; use formatos otimizados para deploy.
- Ambientes e dependências: use ambientes virtuais e registre versões em
requirements.txtpara reprodutibilidade. - Performance: profile o jogo; mova lógica crítica para C/C++ ou use bibliotecas aceleradas quando necessário.
- Testes e CI: automatize testes de integração e builds; inclua smoke tests que executem o loop principal por alguns frames.
- Repositórios Herez: jogos completos, assets e instruções de execução usados em projetos reais da Herez estão disponíveis nos repositórios GitHub e GitLab da Herez.
Dica Herez: para aprender rápido, implemente o jogo "Catch the Ball" em PyGame e depois reimplemente em Arcade para comparar APIs e performance.Próximo post da série
No próximo artigo cobriremos bibliotecas Python para Web Scraping, com exemplos práticos, estratégias éticas e pipelines para transformar dados brutos em insights.

-
Bibliotecas Python para Desenvolvimento Web — Parte 4 da série de posts do Guia Herez
Desenvolvimento Web em Python — Guia Herez Parte 4 Desenvolvimento Web em Python — Parte 4 da série Herez
Visão geral: esta é a quarta publicação da série Herez sobre bibliotecas Python. Aqui detalhamos frameworks e microframeworks para desenvolvimento web: Django, Flask, Bottle, CherryPy, Pyramid, Web2py, TurboGears, CubicWeb, Dash e Falcon. Cada seção traz descrição, motivos para usar, instalação e exemplos práticos aplicados em projetos reais da Herez. Exemplos completos estão disponíveis nos repositórios GitHub e GitLab da Herez.
Publicado por Herez em
Como usar este post
Use este guia para comparar frameworks, escolher a ferramenta certa para seu projeto e copiar trechos de código que aceleram a prototipagem. Todos os exemplos foram aplicados em projetos reais da Herez e os repositórios contêm aplicações completas, scripts de deploy e testes.
Resumo rápido
Framework Tipo Quando usar Django Full stack Aplicações completas com admin e ORM Flask Microframework APIs e serviços leves Bottle Microframework APIs pequenas e protótipos CherryPy Microframework Serviços embutidos e servidores simples Pyramid Flexível Projetos que crescem em complexidade Web2py Full stack Aplicações com foco em produtividade TurboGears Full stack Aplicações modulares e escaláveis CubicWeb Framework semântico Aplicações baseadas em dados e ontologias Dash Visualização Dashboards interativos e data apps Falcon Microframework APIs de alta performance Frameworks detalhados com exemplos reais
Django
O que é: framework full stack com ORM, sistema de templates, painel administrativo e convenções que aceleram desenvolvimento de aplicações completas.
Por que usar: produtividade alta, segurança integrada e ecossistema maduro para autenticação, internacionalização e deploy.
# Instalação pip install djangoExemplo prático# views.py from django.shortcuts import render from .models import Article def index(request): articles = Article.objects.order_by('-published')[:10] return render(request, 'blog/index.html', {'articles': articles})Contexto Herez: usado em portal de conteúdo com CMS customizado; o admin do Django foi estendido para workflows editoriais. Código e scripts de deploy estão nos repositórios Herez.
Flask
O que é: microframework minimalista que fornece roteamento, templates e extensões para adicionar funcionalidades conforme necessário.
# Instalação pip install flaskExemplo práticofrom flask import Flask, jsonify, request app = Flask(__name__) @app.route('/api/predict', methods=['POST']) def predict(): data = request.json result = model.predict(data['features']) return jsonify({'prediction': result.tolist()})Contexto Herez: microserviço de inferência para modelos de ML; containerizado e integrado ao gateway de API da Herez.
Bottle
O que é: microframework de um único arquivo, ideal para protótipos, demos e APIs muito pequenas.
# Instalação pip install bottleExemplo práticofrom bottle import route, run, request, response @route('/hello') def hello(): return "Hello from Bottle" run(host='0.0.0.0', port=8080)Contexto Herez: usado em protótipos rápidos e ferramentas internas; exemplos de scripts estão nos repositórios Herez.
CherryPy
O que é: framework minimalista que inclui servidor HTTP embutido, ideal para serviços autônomos e aplicações que precisam de controle fino do servidor.
# Instalação pip install cherrypyExemplo práticoimport cherrypy class Hello: @cherrypy.expose def index(self): return "Hello CherryPy" cherrypy.quickstart(Hello())Contexto Herez: serviço interno de processamento de arquivos com servidor embutido; configuração de threads e logging ajustada para produção.
Pyramid
O que é: framework flexível que permite começar pequeno e crescer; suporta diferentes estilos de roteamento e autenticação.
# Instalação pip install pyramidExemplo práticofrom pyramid.config import Configurator from pyramid.response import Response def hello_world(request): return Response('Hello Pyramid') if __name__ == '__main__': with Configurator() as config: config.add_route('hello', '/') config.add_view(hello_world, route_name='hello') app = config.make_wsgi_app()Contexto Herez: usado em projetos que exigem migração incremental de monólitos para serviços modulares; exemplos de configuração e testes estão nos repositórios Herez.
Web2py
O que é: framework full stack com foco em produtividade e segurança, inclui IDE web e ferramentas integradas.
# Instalação pip install web2pyExemplo prático# controller default.py def index(): rows = db(db.article).select(orderby=~db.article.created_on) return dict(rows=rows)Contexto Herez: protótipos de aplicações internas e ferramentas administrativas; exemplos de modelos e controllers estão nos repositórios Herez.
TurboGears
O que é: framework full stack modular que combina componentes para criar aplicações escaláveis e organizadas.
# Instalação pip install TurboGears2Exemplo prático# controller example from tg import expose, TGController class RootController(TGController): @expose('json') def index(self): return {'status': 'ok'}Contexto Herez: aplicações modulares com camadas separadas de serviço e apresentação; padrões de projeto e testes disponíveis nos repositórios Herez.
CubicWeb
O que é: framework orientado a dados e semântico, ideal para aplicações que modelam domínios complexos e ontologias.
# Instalação pip install cubicwebExemplo prático# esquema e views são definidos por componentes; exemplo simplificado # define entidades e relações, depois gere views automaticamenteContexto Herez: usado em projetos de catalogação de dados e repositórios semânticos; modelos e scripts de ingestão estão nos repositórios Herez.
Dash
O que é: framework para construir dashboards interativos e aplicações de visualização de dados com componentes reativos.
# Instalação pip install dashExemplo práticoimport dash from dash import html, dcc import plotly.express as px app = dash.Dash(__name__) df = px.data.iris() fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species') app.layout = html.Div([ dcc.Graph(figure=fig) ]) if __name__ == '__main__': app.run_server(debug=True)Contexto Herez: dashboards de monitoramento de modelos e painéis de métricas; aplicações com autenticação e deploy em containers estão nos repositórios Herez.
Falcon
O que é: microframework focado em performance para construir APIs REST de alta velocidade.
# Instalação pip install falconExemplo práticoimport falcon import json class Resource: def on_get(self, req, resp): resp.media = {'status': 'ok'} app = falcon.App() app.add_route('/health', Resource())Contexto Herez: APIs de baixa latência para serviços de autenticação e ingestão; exemplos de integração com gateways e testes de carga estão nos repositórios Herez.
Comparação prática
Critério Django Flask Pyramid Dash Foco Full stack Microframework Flexível Dashboards Curva de aprendizado Média Baixa Média Baixa Ideal para Portais e aplicações completas APIs e microserviços Projetos que crescem Visualização e data apps Escalabilidade Alta Alta com arquitetura adequada Alta Média Boas práticas Herez para desenvolvimento web
- Escolha pelo escopo: use Django para aplicações completas; Flask ou Falcon para APIs; Dash para dashboards interativos.
- Arquitetura: separe apresentação, lógica e persistência; prefira microserviços quando precisar escalar independentemente.
- Segurança: valide entradas, use HTTPS, proteja endpoints e gerencie segredos com cofre de segredos.
- CI/CD: automatize testes, linting e deploy; inclua testes de integração e smoke tests para cada release.
- Repositórios Herez: exemplos completos, templates de projeto e pipelines de CI usados em projetos reais da Herez estão disponíveis nos repositórios GitHub e GitLab da Herez.
Dica Herez: comece com um protótipo mínimo em Flask para validar requisitos; se o projeto crescer, avalie migrar para Django ou compor microserviços com Falcon para endpoints críticos de performance.Próximo post da série
No próximo artigo cobriremos bibliotecas Python para Web Scraping com exemplos práticos, estratégias de coleta ética e pipelines para transformar dados brutos em insights.

-
Bibliotecas Python para Processamento de imagem — Parte 3 da série de posts do Guia Herez
Processamento de Imagens em Python — Guia Herez (Parte 3) Processamento de Imagens em Python — Parte 3 da série Herez
Visão geral: esta é a terceira publicação da série Herez sobre bibliotecas Python. Aqui detalhamos OpenCV, Mahotas, scikit-image, pgmagick e SimpleITK, com exemplos práticos usados em projetos reais por Herez. Esses exemplos e outros projetos estão disponíveis nos repositórios GitHub e GitLab da Herez.
Publicado por Herez em
Como usar este post
Cada seção traz: descrição, por que usar, instalação, exemplo prático e contexto de projeto. Os trechos de código são reproduzíveis e foram aplicados em projetos reais da Herez; os repositórios contêm notebooks e pipelines completos.
Resumo rápido
Biblioteca Função principal Quando usar OpenCV Visão computacional e processamento em tempo real Detecção, tracking, transformações e pipelines de CV Mahotas Operações de imagem rápidas em C++ Filtragem, morfologia e extração de features scikit-image Algoritmos de processamento e análise de imagem Segmentação, filtros e transformadas científicas pgmagick Bindings para GraphicsMagick Manipulação avançada e conversão de imagens SimpleITK Processamento de imagens médicas Registro, segmentação e análise volumétrica Bibliotecas detalhadas com exemplos reais
OpenCV
O que é: biblioteca abrangente para visão computacional e processamento de imagens, otimizada para desempenho e uso em tempo real.
Por que usar: algoritmos prontos para detecção de objetos, reconhecimento facial, transformações geométricas, calibração de câmeras e tracking; integração direta com C++/Python para produção.
# Instalação pip install opencv-pythonExemplo prático (detecção de bordas e contornos)import cv2 img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE) blur = cv2.GaussianBlur(img, (5,5), 0) edges = cv2.Canny(blur, 50, 150) contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(img, contours, -1, (255,0,0), 2) cv2.imwrite('contours.jpg', img)Contexto Herez: usado em projeto de inspeção visual para detectar defeitos em peças industriais; pipeline em produção disponível nos repositórios Herez.
Mahotas
O que é: biblioteca de processamento de imagens com implementações em C++ para desempenho, oferecendo filtros, morfologia e extração de features.
# Instalação pip install mahotasExemplo prático (extração de features Haralick)import mahotas as mh import numpy as np img = mh.imread('input.png', as_grey=True) textures = mh.features.haralick(img).mean(axis=0) print('Haralick features:', textures)Contexto Herez: extração de descritores para classificação de texturas em imagens de satélite; versão otimizada em C++ integrada ao pipeline de análise.
scikit-image
O que é: coleção de algoritmos de processamento e análise de imagem em Python, com foco em clareza e integração com NumPy/SciPy.
# Instalação pip install scikit-imageExemplo prático (segmentação por Otsu e remoção de ruído)from skimage import io, filters, morphology img = io.imread('input.jpg', as_gray=True) denoised = filters.gaussian(img, sigma=1) th = filters.threshold_otsu(denoised) mask = denoised > th clean = morphology.remove_small_objects(mask, min_size=500) io.imsave('segmented.png', clean.astype('uint8')*255)Contexto Herez: usado em projetos de análise de imagens biológicas para segmentar células; notebooks com experimentos estão nos repositórios Herez.
pgmagick
O que é: bindings Python para GraphicsMagick, permitindo manipulação avançada de imagens, conversão de formatos e operações de alta qualidade.
# Instalação (pode requerer dependências do sistema) pip install pgmagickExemplo prático (redimensionamento e otimização para web)from pgmagick import Image img = Image('input.tif') img.resize('800x600') img.quality(85) img.write('output.jpg')Contexto Herez: pipeline de geração de thumbnails e otimização de imagens para portais de conteúdo; scripts de conversão em lote disponíveis nos repositórios Herez.
SimpleITK
O que é: toolkit focado em imagens médicas, com suporte a DICOM, registro, segmentação e análise volumétrica; projetado para pesquisa e aplicações clínicas.
# Instalação pip install SimpleITKExemplo prático (registro rígido entre duas imagens médicas)import SimpleITK as sitk fixed = sitk.ReadImage('fixed.nii') moving = sitk.ReadImage('moving.nii') initial_transform = sitk.CenteredTransformInitializer(fixed, moving, sitk.Euler3DTransform()) registration = sitk.ImageRegistrationMethod() registration.SetMetricAsMeanSquares() registration.SetOptimizerAsRegularStepGradientDescent(learningRate=1.0, minStep=1e-6, numberOfIterations=200) registration.SetInitialTransform(initial_transform, inPlace=False) final_transform = registration.Execute(fixed, moving) resampled = sitk.Resample(moving, fixed, final_transform, sitk.sitkLinear, 0.0, moving.GetPixelID()) sitk.WriteImage(resampled, 'registered.nii')Contexto Herez: aplicado em projeto de análise de imagens médicas para alinhar séries temporais; pipelines e exemplos clínicos estão documentados nos repositórios Herez.
Comparação prática e recomendações Herez
Critério OpenCV scikit-image Mahotas pgmagick SimpleITK Foco Visão computacional Pesquisa e algoritmos Desempenho C++ Manipulação/GraphicsMagick Imagens médicas Desempenho Alto Médio Alto Médio Alto (volumétrico) Curva de aprendizado Média Baixa a média Média Média Média Ideal para Tempo real e produção Prototipagem científica Operações intensivas em CPU Conversão e qualidade Pesquisa clínica e diagnóstico Boas práticas Herez
- Combine ferramentas: use OpenCV para etapas em tempo real e scikit-image/Mahotas para análise científica e extração de features.
- Ambientes isolados: crie ambientes virtuais (
venvouconda) e registre versões emrequirements.txtpara reprodutibilidade. - Documente dependências nativas: automatize instalação de bibliotecas do sistema para pgmagick e SimpleITK no CI.
- Valide com métricas: use IoU, Dice, PSNR e SSIM para avaliar qualidade antes de produção.
- Repositórios Herez: exemplos completos, notebooks e pipelines usados em projetos reais por Herez estão disponíveis nos repositórios GitHub e GitLab da Herez.
Dica Herez: comece prototipando com scikit-image e OpenCV; quando a performance for crítica, migre partes para Mahotas ou implementações C++ e mantenha testes automatizados para garantir qualidade.Próximo post da série
No próximo artigo cobriremos bibliotecas Python para Web Scraping, com exemplos práticos, estratégias de coleta ética e pipelines para transformar dados brutos em insights.

Biografia do autor: Doutor Herez possui Bacharelado em Análise de Sistemas, Mestrado em Engenharia de Computação/Software, Doutorado em Ciência da Computação e seu primeiro diploma acadêmico em Processamento de Dados em 1996. Início profissional na carreira em T.I. em 1993 com o primeiro certificado de programação de computadores em 1986 e início da participação em curso de programação em 1985. Microsoft Certified Professional desde 2000, entre outros títulos oficiais de diversos grandes fabricantes internacionais de software, também criou cursos e provas oficiais voltados à programação de computadores. Tem experiência na área de Ciência da Computação, com ênfase em Engenharia de Software, atuando principalmente nos seguintes temas: análise e desenvolvimento de sistemas, engenharia de software, métodos de pesquisa e métodos ágeis.
