gpul-labs / roadmap

Programación y cómo colaborar en los GPUL Labs
30 stars 6 forks source link

Charla 1: Planificación e contidos #35

Closed franrua closed 8 years ago

franrua commented 8 years ago

Ola a todos/as,

Abro esta nova issue para acordar os contidos e a planificación dos mesmos na primeira charla, de python e de git. En principio o que teño pensado é o seguinte:

Python: -Breve historia, interacción co intérprete, tipos de datos, uso de listas e diccionarios, estructuras de control de fluxo, realización de dous programas sinxelos(un imperativo e outro orientado a obxectos).

Git: -Qué é e para que sirve un CVS, explicación de funcionamento interno de git, comandos básicos (add, commit, checkout,log). Se hai unha charla de git avanzado creo que se debería de dar ahí as ramas e conflictos de código.

Github: -Uso básico de GitHub(pull, push, clone, uso das diferentes funcionalidades da páxina). Aquí pode ser interesante explicar cómo funciona o github do GPUL, como facer preguntas a través dos foros etc., pero tería que explicalo alguen que sepa.

A cuestión é, de cada bloque, dar entre 20-30 min de explicación e outros 30 para que os participantes poideran ir probando as cousas.

Necesito saber a qué repositorio subo as transparencias e uns pequenos códigos de exemplo, para que clonen o repositorio e poidan velos. Tamén necesito consello acerca da licencia tanto para os programas como para as transparencias.

Espero que quede claro, se tedes calquera dúbida ou suxestión para poñer ou quitar contidos ou cambiar a planificación non tedes máis que comunicarmo.

ssaavedra commented 8 years ago

Está ben. Eu engadiría ao principio unha charla sobre "de que vai a ir todo", como overview xeral, antes de entrar en materia (igual uns 10~15 minutos), que serve tanto para motivar o resto da sesión como para entender porqué se empeza por aquí.

Ahora sobre cada un dos apartados fágoche un comentario :smiley:

Python

Non sei se neste punto nos da un pouco igual distinguir entre imperativo e OO. Ao final, hai cousas de Python que non podes escapar dos obxectos, e outras que simplemente non son obxectuais. Se o espírito é expoñer como reutilizar código, eu diría de pasar de ter o código no ficheiro (como un script) a telo en clases que chamen a funcións, ou algo así, en lugar de poñer os dous programas como cousas diferentes; non sei qué opinas (ou se a idea é facer algo moi moi sinxelo en pouco tempo e con iso construir algo un pelín máis complexo.., entón xa pode dar para expoñer os conceptos estes así).

Dentro de que sexan programas sinxelos, eu creo que pode ser interesante, alomenos ao final, ver como se poden importar uns ficheiros noutros, como módulos, xa que a directiva import é esencial unha vez se traballa con algo que non sexa stdin/stdout.

Git

Totalmente dacordo co dos conflitos. Sen embargo, incluso checkout pode ser considerado avanzado, non? (Que tiñas en mente, se non se explican ramas?)

Eu ensinaría os comandos add e rm; commit, log e revert aquí como moito.

GitHub

Xusto, introducir GItHub como "repositorio git ao que subir cousas" da pé perfectamente a facerlle push e pull ao repo; e explicar clone de cómo o faría dende alguén que aínda non teña o repo. Sobre pull requests eu non diría nada, e trataríaas na charla de git avanzado (así evitamos que xurdan conflitos co código antes de tempo :smile: )

Sobre o GitHub do GPUL.., non sei moi ben a qué te refires. Se te refires a que é unha conta de organización en vez de persoal, e que ten equipos de traballo con distintos permisos.., como queiras, non ten moito de interactivo contar iso. Sobre o donde facer preguntas, eso está pendente de solucionar #23 ou levar a cabo #36.

Operativa

Non sei qué prefires, se facer as cousas nun repo teu e despois clonalo aquí ou facelo directamente aquí con permisos de escritura.

Licencia

Se o software son exemplos pequenos (menos de 10 liñas: o tipo de cousas que poñerías nunhas transparencias) eu diría que o código se liberase baixo [CC0][CC0], porque en realidade é imposible verificar se existe unha infracción de copyright. A documentación, eu creo que Wikipedia xa tomou esa decisión dun xeito acertado hai tempo coa doble licencia:

Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported ("CC BY-SA"), y
Licencia de Documentación Libre de GNU ("GFDL") (sin versionar, sin secciones, textos de tapa o contratapa invariantes).

Nós podemos subir a CC-BY-SA á 4.0 International, xa que non temos texto antiguo que non poidamos portar.

No caso dos exemplos de código, non sei qué dicirche así como recomendación clarísima. Vou a poñer as miñas ideas en #37 e a ver se chegamos a un consenso.

franrua commented 8 years ago

Vaiamos por partes, a ver se contesto a todo...

Xa contaba coa presentación dos labs, xa que ó ser a primeira charla pareceme imprescindible, por eso queríamos un terceiro da organización.

En python pensara en facer eu un programa principal e propoñer distintos módulos. Así poderiamos dividir ós asistentes en grupos e que cada un implementara un módulo. Despois de explicar github xuntariamos todo nun repositorio para ver se o programa en conxunto funciona, e non teríamos conflictos á hora de subir as diferentes partes. Como Django e principalmente imperativo, suprimo a parte obxectual se queredes, para simplificar.

Nos códigos de exemplo, pondrei algunhas cousas que non vou dar na charla pero que poden mirar pola súa conta, como por exemplo entrada/saída a arquivos de texto plano de forma sinxela ou un exemplo de programación orientada a obxetos.

En canto a git, si, colouseme o checkout, xa que habitualmente traballo con ramas, foiseme a olla. Era a modo de exemplo. O que me interesa e que sepan usar o repositoio en local, redactar logs e navegar entre os commits.

Finalmente, de github referiame á estructura do repositorio do GPUL. Onde poden buscar información, onde poden facer as preguntas etc. De github simplemente mostrar como crear repositorios, clonalos e empregalo para as practicas das asignaturas de forma unipersonal, é decir, sin a parte colaborativa, para evitar o tema dos conflictos e ramas. Engadir orixes remotos, pull e push básicamente.

O da licencia mirareino en detalle e comentarei despois, xa que aínda non sei se empregarei material de terceiros (algún diagrama ou así) sempre que a súa licencia non sexa restrictiva.

Vou facer un repositorio na miña conta para ir traballando tanto nas transparencias como no exemplo, que pasarei por aquí, así cando sepades cómo organizar o tema xa o clonades ou facedes como vexades.

Finalmente, non me acordou de decilo antes, pero non sei se é posible saber o nivel de coñecementos dos asistentes de anteman (primeiro que se apunten e faciliten un mail e despois mandar unha encuesta ou algo). Por exemplo, se maioría non programou con anterioridade igual hai que facer unha breve introducción de 10 min á programacion.

castrinho8 commented 8 years ago

Presentación Pola presentación dos labs non vos preocupedes, en principio podome encargar eu e para temas de loxística e tal ;)

Transparencias e funcionamento Igual podo contar tamén como funcionamos, que no repo este temos as issues, as charlas que imos facer e tamén propoño subir aquí nós as traspas e os exemplos a medida que os poñentes as vaian mandando (igual podedes subilas nalgun momento e mandar unha Pull Reques e isto xa parece profesional de todo jeje), para que sexa un sitio centralizado onde telo todo.

Gustame a idea dos grupos/modulos, creo que pode quedar chulo facelo así en grupos, igual ata se somos varios podémoslles botar unha man a cada grupo!!

Coñecementos Sen problema, o sistema de xestión que imos usar para os rexistro (https://www.gpul.org/indico) permite mandar enquisas sen fallo me parece, pero non creo que teñamos moita xente que non sepa un nivel básico de programación ;)

franrua commented 8 years ago

Creei o repositorio da primeira charla, franrua/charla_1 que é onde imos traballar @BreixoCF e eu. De momento soamente puxen un guión co que temos pensado tratar na charla. Se queredes engadir ou quitar cousas, a partir de agora creade as issues nese repositoro, que penso que é o máis lóxico.