Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Aspp Programa 2023 Traducción
Aspp Programa 2023 Traducción
INTRODUCCIÓN
Los científicos dedican cada vez más tiempo a escribir, mantener y depurar software. Si bien las
técnicas para hacer esto de manera eficiente han evolucionado, solo unos pocos científicos han
sido capacitados para usarlas. Como resultado, en lugar de investigar, pasan demasiado tiempo
escribiendo código deficiente y reinventando la rueda. En esta escuela, presentaremos una
selección de técnicas de programación avanzadas y mejores prácticas que son estándar en la
industria, pero especialmente adaptadas a las necesidades de un científico de programación. Las
conferencias están diseñadas para ser interactivas y dar a los estudiantes suficiente tiempo para
adquirir experiencia práctica directa con los materiales. Los estudiantes trabajarán en parejas en
toda la escuela y se unirán para practicar las habilidades recién aprendidas en un proyecto de
programación real: un entretenido juego de computadora.
Usamos el lenguaje de programación Python para todo el curso. Python funciona como un
lenguaje de programación simple para principiantes, pero lo que es más importante, también
funciona muy bien en simulaciones científicas y análisis de datos. Mostramos cómo el diseño de
lenguaje limpio, la facilidad de extensibilidad y la gran cantidad de bibliotecas de código abierto
para computación científica y visualización de datos están impulsando a Python a convertirse en
una herramienta estándar para el científico de la programación.
Esta escuela está dirigida a estudiantes de maestría, doctorado y posdoctorados de todas las áreas
de la ciencia. Se requiere absolutamente competencia en Python o en otro lenguaje como Java,
C/C++, MATLAB o R. Se supone un conocimiento básico de Python y de un sistema de control de
versiones como git, subversion, mercurial o bazaar. Los participantes sin experiencia previa con
Python y/o git deben trabajar con el material introductorio propuesto antes del curso.
Nos esforzamos mucho para conseguir un grupo de estudiantes que sea internacional y con
equilibrio de género: ¡vea lo lejos que llegamos en años anteriores!
ASSP – LATAM
FECHA Y UBICACIÓN
PROGRAMA
Control de versiones con git y cómo contribuir a proyectos de código abierto con GitHub.
Mejores prácticas en visualización de datos.
Prueba y depuración de código científico.
Número Avanzado.
Organizar, documentar y distribuir código científico.
Python científico avanzado: gestores y generadores de contexto.
Escribir aplicaciones paralelas en Python.
Perfilado y aceleración de código científico con Cython y numba.
Programación en equipos.
Cronograma (sitio web en inglés)
PATROCINADORES
Gracias al generoso apoyo de la SECTEI, podemos realizar la 1ra edición de la escuela de verano
ASPP-LatAm. Su contribución refleja su compromiso con la empresa social y su misión de promover
una cultura de cambio e innovación digital, con un enfoque particular en la integración, la
comunicación y el crecimiento económico y social.
Aplicar (sitio web en inglés, la edición 2023 por el momento se encuentra finalizada)
A partir del repositorio Git que funciona como recopilador de los elementos ocupados durante el
curso. A continuación, la traducción de los elementos que se alojan en la dirección:
https://github.com/aspp-latam/2023-mexico-git-and-github
UBICACIÓN
¡La participación en la escuela de verano es gratuita, es decir, no se cobra ninguna tasa ! Sin
embargo, los participantes deben hacerse cargo de los gastos de viaje, manutención y alojamiento
por sí mismos. Es posible que haya fondos limitados disponibles para apoyar el alojamiento de los
participantes, pero la participación de los solicitantes no debe estar condicionada a ello. Se
publicará más información en este sitio en el futuro.
Ciudad de México
Ciudad de México es la capital de México y es la ciudad más poblada de América del Norte con
aproximadamente una población de 9 millones de personas (21 millones de personas dentro del
área urbana total). Está ubicada en el Valle de México (“Valle de México”), un gran valle en las altas
mesetas del centro de México, a una altitud de 2,240 metros (7,350 pies) la ciudad es uno de los
centros culturales y financieros más importantes. centros en el mundo.
Visa
México permite que 69 países y jurisdicciones ingresen a México para estudios cortos (menos de 6
meses), los países enumerados aquí no requieren una visa de visitante mexicana para ingresar a
México por negocios, turismo, estudios cortos (menos de 6 meses) o tránsito. Por favor verifique si
necesita visa para ingresar a México, seleccionando una embajada mexicana en su país. En caso de
que lo haga, por favor notifíquenos durante la solicitud.
Viajar
Viajar a la Ciudad de México es sencillo en avión desde fuera del país y en autobús o avión desde el
interior de México. La ciudad tiene dos grandes aeropuertos (MEX y NLU). Dependiendo de la
aerolínea de tu preferencia podrás llegar en una u otra. El transporte desde el aeropuerto hasta el
lugar de alojamiento de las escuelas se puede realizar a través de autobuses públicos (Metrobus),
taxis o Uber.
Alojamiento
Se espera que los participantes se hagan cargo de su viaje seguro a la Ciudad de México y de su
llegada segura al lugar de alojamiento, así como del costo de su estadía. Los costos de participación
en la escuela de verano correrán a cargo de los organizadores de ASPP-LatAm.
Evento
Nuestras conferencias se llevarán a cabo en la “Unidad de Seminarios Dr. Ignacio Chávez”, el centro
de congresos de la UNAM ubicado en el campus principal dentro del jardín botánico y reserva
ecológica de la Ciudad Universitaria.
No, y la razón es muy simple: hay toneladas de buenos tutoriales en línea sobre Python.
Simplemente elija uno, trabaje en él durante un par de semanas y comience a escribir pequeños
scripts en Python. Nuestra escuela no te ayudará con esto. Definitivamente una semana no es
suficiente para aprender un lenguaje de programación, ni siquiera uno simple como Python. Por
eso requerimos conocimientos previos de Python. Si no conoce Python, pero domina otro lenguaje
de programación y tiene la intención de cambiar a Python y su perfil coincide con el descrito en la
primera pregunta frecuente , puede postularse. Si es aceptado, tendrás que hacer el esfuerzo de
aprender Python antes. Viniendo a la escuela. Participar en la escuela sin conocimientos previos de
Python seguramente será una gran decepción.
Ya conozco la mayoría de las cosas del programa, pero realmente me vendría bien hablar con
expertos en el campo. ¿Es esta la escuela adecuada para mí?
Según el Índice de Paz Global , México se ubica en el lugar 137, lo cual no es lo ideal. La Ciudad de
México es un destino turístico que recibe más de 16 millones de turistas al año. Incluso cuando la
tasa de criminalidad no es alta, la mayor parte se localiza en áreas no turísticas. Sin embargo,
recomendamos tener cuidado ya que los hurtos y los hurtos menores son comunes.
No. Hay muchas razones por las que elegimos el inglés como idioma oficial del colegio.
Seguro. Nos esforzamos por tener un grupo multidisciplinario de estudiantes, por lo que
fomentamos solicitudes de todas las áreas de la ciencia, incluso las más exóticas.
Entre las muchas cosas que enseñamos durante la escuela, la programación en pares es
definitivamente una de las que más impacta la calidad y eficiencia de las habilidades de
programación de los estudiantes. Si su compañero tiene menos habilidades que usted en un tema
determinado, aprenderá mucho ayudándolo a comprender. Si su compañero tiene más habilidades
que usted, aprenderá mucho escuchándolo y observándolo. Las parejas se cambian con
regularidad, lo que genera muchas interacciones sociales agradables y garantiza que no te quedes
atrapado con alguien con quien no puedes trabajar.
Porque si aún no lo sabes, una conferencia de un día no es suficiente para entenderlo y utilizarlo
eficientemente. La misma conferencia sería, por otro lado, terriblemente aburrida para aquellos
que ya conocen la programación orientada a objetos. Hay muchos paradigmas de programación
que valdría la pena enseñar: programación funcional, programación procedimental o imperativa,
programación alfabetizada, etc. Desafortunadamente sólo tenemos una semana y es mejor no
enseñar algo que enseñarlo descuidadamente. Además de todo eso, algunas personas piensan que
la programación orientada a objetos es dañina.
Hay varias razones. Primero, al usar las computadoras portátiles que proporcionamos, podemos
asegurarnos de que todos los estudiantes trabajen en un entorno consistente y no perdamos
tiempo depurando problemas de configuración o instalación local. Si desea obtener ayuda para
configurar dicho entorno en su propio sistema, habrá mucho tiempo y tutores dispuestos a ayudar,
pero fuera de las conferencias. En segundo lugar, la programación en pareja con portátiles privados
se vuelve muy difícil. Las personas tienden a ser muy tímidas al escribir en la computadora portátil
de otra persona, es posible que no estén familiarizadas con la distribución del teclado y los atajos
de teclado, pueden estar acostumbrados a un sistema operativo diferente y pueden tener miedo
de "romperlo”.
¿Por qué utilizas un videojuego como proyecto de programación y no algunos proyectos científicos
o proyectos personales de estudiantes?
Queremos que los estudiantes vivan una experiencia real de desarrollo de software colaborativo.
Esto implica que tienen que trabajar en grupos. Dada la procedencia tan diversa de nuestros
estudiantes, elegir un proyecto científico significa tener un proyecto trivial o tener un proyecto en
el que la mayoría de las personas no conocen algunos conceptos muy básicos que se necesitan
para aportar algo relevante. Utilizar un proyecto “neutral”, como es el caso de nuestro videojuego,
significa que no se requieren conocimientos previos de un dominio específico y todos los
estudiantes pueden colaborar en igualdad de condiciones. Después de todo, queremos que los
estudiantes se centren en las cuestiones de programación y no que diseñen una solución
inteligente a un problema científico inventado. Por último, pero no menos importante, el proyecto
de programación de juegos ha sido muy divertido para nuestros estudiantes y profesores
anteriores.
ESTADÍSTICAS
Solicitantes Participantes
Pool 135 30
Nacionalidades 14 4
Países de afiliación 13 2
Puesto:
Año de nacimiento Postdoctorado
/ Conteo 17 (12,6%) 3 (10,0%)
1968 1 Posición:
(3.3%) Otro 15 (11,1%) 2 (6,7%)
1977 1 Puesto:
(3.3%) Empleado 14 (10,4%) 3 (10,0%)
1979 1 Puesto:
(3.3%) Técnico 6 (4,4%) 3 (10,0%)
1983 1 (3.3%)
1984 5 (16.7%)
1985 1 (3.3%)
1986 3 (10.0%)
1987 3 (10.0%)
1988 2 (6.7%)
1989 1 (3.3%)
Usuario 17
(56,7%)
PROGRAMACIÓN Conteo
Competente/Competente 21 (70,0%)
PYTHON Conteo
Competente/Competente 17 (56,7%)
VCS Conteo
git 19 (63,3%)
- SCENARIOS
- README.md
- Auth.py
- Exercise.md
- Git-commands-visualizations.pdf
CONFIGURACIÓN
Siga las instrucciones para crear su propio par de claves SSH-key para usar durante la escuela:
https://latam.aspp.school/wiki/github-setup
Configuración de GitHub
1. Crear su SSH-Key-Pair
Abra una terminal e inicie la generación interactiva de un nuevo par de claves SSH.
Guarde la clave privada en la carpeta /tmp y asígnele el nombre con su nombre de pila
(sin espacios en blanco). Por ejemplo, si su nombre es Alice, guarde la clave privada
con la ruta /tmp/id_alice. Puede hacerlo así (cambiando el nombre del archivo clave
para que coincida con el suyo, por supuesto):
ssh-keygen -f /tmp/id_alice
El programa ssh-keygen le pedirá una frase de contraseña dos veces. Escriba una frase
de contraseña de su elección y recuérdela: tendrá que escribirla con bastante
frecuencia durante la escuela. IMPORTANTE: ¡No deje la frase de contraseña vacía! Si
la generación es exitosa, verá algo como esto:
ssh-keygen -f /tmp/id_alice
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /tmp/id_alice
Your public key has been saved in /tmp/id_alice.pub
The key fingerprint is:
SHA256:RJz6ek6B7z4QbUAYT0E1lbdVftsrA1khs/KUEUGxu5A student@aspp
The key’s randomart image is:
+---[RSA 3072]----+
| .==++ooX+. ..|
| .o..o.. O o. |
| .+.. * + o|
| ooo = = +|
| .+SE = ..|
| ..... o .|
| oo . o . |
| .oo o |
| ++. |
+----[SHA256]-----+
Tendrá dos archivos, uno para la clave privada /tmp/id_alice y otro para la clave
pública /tmp/id_alice.pub
Cuando haya terminado, presione el botón verde Add SSH Key que esta justo
debajo.
Ahora puede verificar que la clave haya sido agregada en la misma página:
https://github.com/settings/keys
ssh -T git@github.com
CALENTAMIENTO
Escenarios
import getpass
import json
import pathlib
import random
import string
import tempfile
# longitud de salt
SALT_LENGTH = 5
def get_credentials():
# obtener entrada desde la terminal
username = input('Enter your username: ')
# obtener la contraseña utilizando el módulo apropiado, de modo que los caracteres
#escritos no se repitan en el terminal
password = getpass.getpass('Enter your password: ')
return (username, password)
def read_pwdb(pwdb_path):
# intenta leer desde la base de datos
# si algo ocurre, reportarlo!
try:
with open(pwdb_path, 'rt') as pwdb_file:
pwdb = json.load(pwdb_file)
except json.decoder.JSONDecodeError as exc:
# esto sucede cuando los datos json no son válidos
raise Exception(f'Invalid database {pwdb_path}: {exc}')
except Exception as exc:
# esta es una condición general
raise Exception(f'Unkown error reading {pwdb_path}: {exc}')
return pwdb
def get_salt():
salt_chars = random.choices(CHARS, k=SALT_LENGTH)
return ''.join(salt_chars)
if __name__ == '__main__':
# preguntar por las credenciales
username, password = get_credentials()
# trate de autenticar
if authenticate(username, password, pwdb):
print('Successfully authenticated!')
elif username not in pwdb:
# si el usuario no es conocido, preguntar si se debe agregar un nuevo usuario
ans = input('Create new user [y/n]? ')
if ans == 'y':
salt = get_salt()
add_user(username, password, salt, pwdb, PWDB_DEFAULTPATH)
else:
# reporte contraseña incorrecta
print('Wrong password!')
Archivo exercise.md
Una alternativa a los irremediablemente aburridos ejemplos de “Hola mundo” para una
introducción a git.
USO ESPERADO:
- Ejecutar el script
- El script pide nombre de usuario y contraseña
- Si el usuario es conocido y la contraseña es correcta imprima “¡Autenticado
exitosamente!”
- Si el usuario es conocido y la contraseña es incorrecta imprima “¡Contraseña
incorrecta!”
- Si el usuario no es conocido solicite agregar el usuario a la base de datos de contraseñas
- Si se ha agregado un usuario almacenar la base de datos actualizada en el disco
API BASICA:
SUGERENCIAS:
- Una función pwhash que dada una contraseña y un salto devuelve un hash
- Una función get_salt que retorne un salto único
NOTAS: