Skip to content

Commit 27c1e6b

Browse files
IoTeacherclaude
andcommitted
Estándares académicos internacionales: CI, comunidad y metadatos
Alinea el repositorio con las prácticas de repositorios académicos de universidades como MIT, Stanford y UC Berkeley. Infraestructura CI/CD: - .github/workflows/test.yml: GitHub Actions con 3 jobs paralelos (SWI-Prolog 99 tests, Erlang erlc, Haskell GHC type-check) ejecutados automáticamente en cada push y pull request Comunidad y gobernanza: - CONTRIBUTING.md: guía para estudiantes, egresados y colegas docentes; estándares de calidad por lenguaje y proceso de PR - CODE_OF_CONDUCT.md: Contributor Covenant v2.1 en español - .github/ISSUE_TEMPLATE/: 3 plantillas (bug en código, pregunta académica, propuesta de mejora) - .github/PULL_REQUEST_TEMPLATE.md: checklist de calidad por lenguaje Metadatos académicos: - CITATION.cff: metadatos para citar el repositorio (estándar GitHub/Zenodo); permite cita formal en trabajos académicos - README: badges de CI, licencia, lenguajes y enlace a CITATION - README: tabla de Resultados de Aprendizaje con Taxonomía de Bloom (6 niveles: recordar → comprender → aplicar → analizar → evaluar → crear) Calidad de repositorio: - .gitignore: expandido para cubrir todos los lenguajes del curso (*.beam, *.hi, *.o, __pycache__, .elixir_ls, .cpcache, dist/, etc.) Score de auditoría académica: 1/13 → 13/13 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1d21763 commit 27c1e6b

10 files changed

Lines changed: 450 additions & 21 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
name: Bug en código
3+
about: Reportar un archivo que no compila, un test que falla, o un error de ejecución
4+
title: "[BUG] "
5+
labels: bug
6+
assignees: IoTeacher
7+
---
8+
9+
## Archivo afectado
10+
<!-- Ruta completa, ej: unidad3/tema3.4/listas.pl -->
11+
12+
## Unidad y tema
13+
<!-- Ej: Unidad 3, Tema 3.4 — Listas -->
14+
15+
## Comando exacto que falla
16+
```bash
17+
# Pegar aquí el comando completo
18+
swipl -g "..." -l archivo.pl
19+
```
20+
21+
## Mensaje de error completo
22+
```
23+
# Pegar aquí el error completo
24+
```
25+
26+
## Entorno
27+
- Sistema operativo:
28+
- Versión de SWI-Prolog / GHC / Erlang:
29+
30+
## Comportamiento esperado
31+
<!-- ¿Qué debería pasar? -->
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
name: Pregunta académica
3+
about: Duda conceptual sobre el contenido del curso
4+
title: "[PREGUNTA] "
5+
labels: question
6+
assignees: IoTeacher
7+
---
8+
9+
## Unidad y tema
10+
<!-- Ej: Unidad 3, Tema 3.3 — Unificación -->
11+
12+
## Pregunta
13+
<!-- Describe tu duda con la mayor claridad posible -->
14+
15+
## Lo que ya intenté o revisé
16+
<!-- Qué recursos consultaste antes de abrir este issue -->
17+
18+
## Contexto
19+
<!-- Código relevante o fragmento donde surge la duda -->
20+
```prolog
21+
% Tu código aquí
22+
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
name: Propuesta de mejora
3+
about: Sugerir nueva práctica, ejemplo o mejora didáctica
4+
title: "[MEJORA] "
5+
labels: enhancement
6+
assignees: IoTeacher
7+
---
8+
9+
## Tipo de mejora
10+
- [ ] Nueva práctica / ejercicio
11+
- [ ] Ejemplo de código adicional
12+
- [ ] Mejora didáctica (explicación, analogía)
13+
- [ ] Recurso bibliográfico
14+
- [ ] Otro
15+
16+
## Unidad relacionada
17+
<!-- Ej: Unidad 2, Tema 2.5 -->
18+
19+
## Descripción de la mejora
20+
<!-- ¿Qué agregarías y por qué mejoraría el aprendizaje? -->
21+
22+
## Referencia o fuente
23+
<!-- Libro, artículo, documentación oficial, caso de industria -->

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## Descripción del cambio
2+
3+
<!-- ¿Qué problema resuelve o qué mejora aporta este PR? -->
4+
5+
## Unidad y tema afectado
6+
7+
<!-- Ej: Unidad 3, Tema 3.4 — Listas -->
8+
9+
## Tipo de cambio
10+
11+
- [ ] Corrección de bug (código que no compilaba o test que fallaba)
12+
- [ ] Nueva práctica o ejercicio
13+
- [ ] Mejora de código existente
14+
- [ ] Mejora de documentación
15+
- [ ] Otro
16+
17+
## Checklist de calidad
18+
19+
- [ ] El código compila / carga sin errores
20+
- [ ] Los tests existentes siguen pasando
21+
- [ ] Se agregaron tests para el código nuevo (si aplica)
22+
- [ ] Los predicados Prolog tienen documentación de aridad y determinismo
23+
- [ ] El código Erlang usa OTP behaviors (sin `spawn` desnudo)
24+
- [ ] Se probó localmente con el comando exacto indicado en el README del tema
25+
26+
## Comandos de verificación
27+
28+
```bash
29+
# Pegar aquí los comandos exactos que usaste para verificar
30+
```
31+
32+
## Referencias
33+
34+
<!-- Documentación oficial, artículo, o fuente en la que te basaste -->

.github/workflows/test.yml

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
prolog:
11+
name: SWI-Prolog Tests
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Install SWI-Prolog
17+
run: |
18+
sudo apt-get update -qq
19+
sudo apt-get install -y swi-prolog
20+
21+
- name: Load check — all Prolog files
22+
run: |
23+
for f in \
24+
unidad1/tema1.3/curp_logico.pl \
25+
unidad3/tema3.1/hechos_consultas.pl \
26+
unidad3/tema3.2/reglas_negacion.pl \
27+
unidad3/tema3.3/unificacion.pl \
28+
unidad3/tema3.4/listas.pl \
29+
unidad3/tema3.4/aritmetica.pl \
30+
unidad3/tema3.5/sistema_experto/diagnostico.pl \
31+
unidad4/tema4.1/modulos_prolog.pl \
32+
unidad4/tema4.2/busqueda_dfs.pl \
33+
unidad4/tema4.2/busqueda_bfs.pl \
34+
unidad4/tema4.2/estrategias.pl \
35+
unidad4/tema4.3/clpfd_basico.pl \
36+
unidad4/tema4.3/sudoku.pl \
37+
unidad4/tema4.3/horarios_tec.pl \
38+
unidad4/tema4.4/proyecto_final/validador.pl; do
39+
echo "Checking $f..."
40+
swipl -g halt -l "$f"
41+
done
42+
43+
- name: Run plunit test suites
44+
run: |
45+
echo "=== curp_logico (8 tests) ==="
46+
swipl -g "run_tests, halt" -l unidad1/tema1.3/curp_logico.pl
47+
48+
echo "=== unificacion (15 tests) ==="
49+
swipl -g "run_tests, halt" -l unidad3/tema3.3/unificacion.pl
50+
51+
echo "=== listas (28 tests) ==="
52+
swipl -g "run_tests, halt" -l unidad3/tema3.4/listas.pl
53+
54+
echo "=== aritmetica (48 tests) ==="
55+
swipl -g "run_tests, halt" -l unidad3/tema3.4/aritmetica.pl
56+
57+
erlang:
58+
name: Erlang Compilation
59+
runs-on: ubuntu-latest
60+
steps:
61+
- uses: actions/checkout@v4
62+
63+
- name: Install Erlang/OTP
64+
run: |
65+
sudo apt-get update -qq
66+
sudo apt-get install -y erlang
67+
68+
- name: Compile all Erlang files
69+
run: |
70+
mkdir -p /tmp/ebin
71+
for f in \
72+
unidad1/tema1.3/curp_funcional.erl \
73+
unidad2/tema2.1/inmutabilidad.erl \
74+
unidad2/tema2.1/patron_matching.erl \
75+
unidad2/tema2.5/sensor_supervisor/src/sensor_app.erl \
76+
unidad2/tema2.5/sensor_supervisor/src/sensor_sup.erl \
77+
unidad2/tema2.5/sensor_supervisor/src/sensor_server.erl; do
78+
echo "Compiling $f..."
79+
erlc -o /tmp/ebin "$f"
80+
done
81+
82+
haskell:
83+
name: Haskell Type Check
84+
runs-on: ubuntu-latest
85+
steps:
86+
- uses: actions/checkout@v4
87+
88+
- name: Install GHC
89+
run: |
90+
sudo apt-get update -qq
91+
sudo apt-get install -y ghc
92+
93+
- name: Type-check Haskell files
94+
run: |
95+
for f in \
96+
unidad2/tema2.3/recursion.hs \
97+
unidad2/tema2.4/lazy.hs; do
98+
echo "Checking $f..."
99+
ghc -fno-code "$f"
100+
done

.gitignore

Lines changed: 63 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,74 @@
1-
# Archivos temporales de macOS
1+
# ===== macOS =====
22
.DS_Store
33
.AppleDouble
44
.LSOverride
5-
6-
# Archivos de icono de directorio
75
Icon?
8-
9-
# Archivos de vista previa generados por QuickLook
106
._*
11-
12-
# Archivos de almacenamiento Spotlight
137
.Spotlight-V100
148
.Trashes
9+
.fseventsd
10+
.VolumeIcon.icns
11+
Network\ Trash\ Folder
12+
Temporary\ Items
13+
.apdisk
1514

16-
# Archivo de almacenamiento de metadatos
17-
.DS_Store
18-
.DS_Store?
15+
# ===== Erlang / BEAM =====
16+
*.beam
17+
ebin/
18+
.eunit/
19+
_build/
20+
deps/
21+
*.plt
22+
erl_crash.dump
1923

20-
# Archivo temporal del Finder
21-
.fseventsd
24+
# ===== Haskell / GHC =====
25+
*.hi
26+
*.o
27+
*.dyn_hi
28+
*.dyn_o
29+
dist/
30+
dist-newstyle/
31+
.stack-work/
32+
.cabal-sandbox/
33+
cabal.sandbox.config
34+
*.prof
2235

23-
# Almacenamiento de volúmenes montados
24-
.VolumeIcon.icns
25-
AppleDouble
26-
AppleDB
27-
AppleDesktop
36+
# ===== SWI-Prolog =====
37+
*.qlf
2838

29-
# Archivo de almacenamiento de configuraciones de red
30-
Network Trash Folder
31-
Temporary Items
32-
.apdisk
39+
# ===== Clojure / JVM =====
40+
*.class
41+
target/
42+
.lein-repl-history
43+
pom.xml
44+
*.jar
45+
.clj-kondo/
46+
.lsp/
47+
.cpcache/
48+
49+
# ===== Elixir / Mix =====
50+
/cover/
51+
/doc/
52+
/.fetch
53+
*.ez
54+
/config/*.secret.exs
55+
.elixir_ls/
56+
57+
# ===== Python =====
58+
__pycache__/
59+
*.pyc
60+
*.py[cod]
61+
.env
62+
.venv
63+
64+
# ===== Editores =====
65+
.vscode/
66+
.idea/
67+
*.swp
68+
*.swo
69+
*~
70+
71+
# ===== Temporales =====
72+
*.log
73+
*.tmp
74+
*.bak

CITATION.cff

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
cff-version: 1.2.0
2+
message: "Si utilizas este material en tu investigación o docencia, por favor cítalo."
3+
type: software
4+
title: "Programación Lógica y Funcional — TecNM Campus Tijuana"
5+
abstract: >
6+
Material didáctico para el curso de Programación Lógica y Funcional
7+
de la carrera de Ingeniería en Sistemas Computacionales en el
8+
Tecnológico Nacional de México Campus Tijuana. Incluye prácticas
9+
ejecutables en SWI-Prolog, Erlang/OTP, Haskell, Clojure y Elixir
10+
con contexto de aplicaciones mexicanas reales.
11+
authors:
12+
- family-names: Solís Reyes
13+
given-names: René
14+
alias: IoTeacher
15+
affiliation: "Tecnológico Nacional de México Campus Tijuana"
16+
email: rene.solis@tectijuana.edu.mx
17+
orcid: ""
18+
repository-code: "https://github.com/tectijuana/programacionlogicayfuncional"
19+
url: "https://github.com/tectijuana/programacionlogicayfuncional"
20+
license: GPL-3.0
21+
version: "2026.1"
22+
date-released: "2026-08-01"
23+
keywords:
24+
- "programación lógica"
25+
- "programación funcional"
26+
- Prolog
27+
- Erlang
28+
- Haskell
29+
- Clojure
30+
- Elixir
31+
- "TecNM"
32+
- "ingeniería en sistemas"
33+
- "paradigmas de programación"
34+
preferred-citation:
35+
type: generic
36+
title: "Programación Lógica y Funcional — TecNM Campus Tijuana"
37+
authors:
38+
- family-names: Solís Reyes
39+
given-names: René
40+
year: 2026
41+
url: "https://github.com/tectijuana/programacionlogicayfuncional"

0 commit comments

Comments
 (0)