EDICIóN GENERAL
199 meneos
8135 clics
Los 40 mejores cursos online gratuitos de programación para empezar en abril

Los 40 mejores cursos online gratuitos de programación para empezar en abril

Los mejores cursos online para comenzar este mes de abril, ordenados según un ranking de puntuaciones de los usuarios que ya los han cursado y clasificados en 3 niveles de dificultad: principiante, intermedio y avanzado.

| etiquetas: curso , mooc , aprender , gratis , programación
No entiendo porque los cursos más populares son de Python.

El nivel intermedio es bastante denso ya en muchos cursos, así que si os apuntáis, tened en cuenta que hay que meterle horas, no solo es ver los vídeos.
#1 Creo que Python ha cogido fama de fácil y con muchas salidas profesionales. Personalmente no estoy de acuerdo y creo que si alguien se quiere dedicar en serio a la programación, debería escoger otro lenguaje. Python lo veo más para desarrollos pequeños.
#2 El lenguaje no es tan importante a la hora de gestionar un proyecto grande, ahi lo importante es la arquitectura, que es agnóstica al lenguaje.
El problema es que una cosa es saber un lenguaje y otra saber plantear la arquitectura de un sistema para que sea escalable, mantenible, testeable y que cumpla los requisitos funcionales... Son temas diferentes, por lo que es probable que veamos muchas aplicaciones escritas de forma procedural o código espagueti.
#3 El problema es explicarle esto a recursos humanos.
#4 Es relativamente fácil. Hay que hablarles en términos de costes, no en términos técnicos. El tema pasta lo entienden perfectamente ;)
#5 En las empresas que conozco solo entienden el dinero y el dinero ya. Cambian de factoría de software solo teniendo en cuenta la pasta y así está el software. Por mi genial, mientras siga así tengo trabajo asegurado ad eternum.
#37 Las consultoras prestan nula atención a la calidad, les priman los tiempos para ganar más, al menos en proyectos cerrados. Si encima luego les pagan por corregir sus propias mierdas, así está el mercado.
#5 Pues no llevan muy bien eso de que les pidas dos perfiles de arquitecto en vez de dos juniors.
#43 En ese caso lo mejor es justificar tu petición por escrito, explicar porqué tienen que ser dos arquitectos en ves de dos novatos.
Luego si te dicen que no y el proyecto acaba de aquella manera, tu culo estará a salvo :-D
#3 donde esté la lasaña...
#7 Es otra posibilidad. Se llama así cuando se mezcla el código entre las diferentes capas del proyecto.

wiki.c2.com/?LasagnaCode
#10 lo conozco y lo empleo. Por eso lo he dicho.
#3 El kernel de Linux está escrito de forma procedural (o el BSD kernel, el servidor web nginx...). Qué problema tiene la programación procedural?
#8 Esa es una decisión que afecta al rendimiento, por eso es procedural, para hacerlo más rápido.
Pero en situaciones donde la rapidez no es critica, la programación OO te aporta modularidad, reutilización de código y mantenibilidad, por poner sólo tres aspectos.
#13 O quizás el abuso de la programación OO sea una de las razones del código espagueti:
- "Object-oriented programming is an exceptionally bad idea which could only have originated in California" Dijkstra
- "I invented the term object-oriented, and I can tell you I did not have C++ in mind." "Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to happen to computing since MS-DOS." Alan Kay
- "Object-oriented programming offers a sustainable way to write spaghetti code" Paul Graham
#16 En absoluto. Es el desconocimiento de las buenas practicas de OO lo que lo provoca. Si sigues los principios SOLID es imposible tener código espagueti ;)

es.wikipedia.org/wiki/SOLID
#20 Cualquier garrulo con ADSL puede poner las chorradas que le apetezcan en la web. Una perreta la tiene cualquiera. El primer argumento ya lo deja claro, no le gustan las siglas:

"S
The "S" refers to the Single Responsibility Principle, which, according to Clean Code by Robert Martin, means that "a class should have only one reason to change."

This statement sounds extremely vague to me, but the book explains it, stating that objects must be problem-centered and…   » ver todo el comentario
#20 Una pregunta, ya que te veo versado y tengo una duda desde hace tiempo...por lo que tengo entendido -no soy programador, ni informático, sólo programo por vicio- en C++ las clases son tratadas por el compilador como un struct, por lo tanto ¿En cuánto se diferencia un programa en C/C++ con struct que ese mismo programa hecho en C++ con clases?
#27 Struct y class es lo mismo, la diferencia es que struct es público por defecto y class es privado. Has oído hablar de rust?
#31 Conocía esa diferencia, auque nunca había oído hablar de rust, pero a lo que voy es a eso...¿es criticable el uso de clases y en consecuencia, de POO, si le das el uso equivalente de struct?¿En qué haría mejor cambiar eso y usar Struct o incluso cambiarlo por C?
#36 yo crítico OO, solid, tdd, onion architecture, Dtos, inyección de dependencias y toda la amalgama de arquitectura, capas,frameworks que se usa hoy en día porque se acaba haciendo overengineering... Te pongo un ejemplo :
hello world en java "enterprise edition"
gist.github.com/lolzballs/2152bc0f31ee0286b722
#38 Vigen del cordero divino....a ver, yo aprendí a programar en Pascal...hace muuchos años ya...y aprendí en la facultad Java, C, C++, R...todo acercamiento a la POO me pareció siempre un exceso de complicaciones. Hace no mucho vi esta charla y me gustó bastante: www.youtube.com/watch?v=6SLSyK3_1qA Aunque había cosas que no entendía, pillaba la mayoría...ahora estoy liado en un programa C++ con POO -4k líneas llevo ya- donde evito todo lo complejo por una mezcla de desconocimiento e…   » ver todo el comentario
#45 Pues para mi la herencia y Polimorfismo una vez se entienden bien son de las mejores idea de la programación.

Saber que tus clases tienen una base común con la que puedes trabajar independientemente de que añadas nuevos tipos que te hagan cambiar el código.

El típico ejemplo si tu tienes una clase Animal que tiene el método comer() Luego puedes crear una clase Perro que hereda de la clase Animal y añadir el método ladrar(). SI en el futuro además de perros también tienes la clase Gato que…   » ver todo el comentario
#50 La herencia simple sí la uso, pero más allá empiezo a liarlo todo....y con Poliformismo me pasa algo similiar... se me antoja una buena idea sobre el papel que puede irse de madre en cuanto te descuidas. Pero como decía, soy prácticamente autodidacta, así que para defenderme me acojo a tu frase "una vez se entienden bien" :-D
#38 Ese ejemplo es una gilipollez, pero si cuando dices POO quieres decir Java, puedo llegar a estar de acuerdo. Pero una cosa son las ideas y otra la realidad, y la realidad es que Java es el lenguaje mas implantado en grandes proyectos. Y no es solo por su sencillez, es por los patrones que lleva asociados su "enterprise edition". Veamos en unos años que lenguaje aguanta kilos de juniors rotando y managers vende humos picando código en horas extras. C? Python? Javascript? Go? Jajaja, me da la risa.
#16 de los demás no digo nada, pero del petardo de Dijsktra que dijo que el que programó en BASIC ya no puede programar en nada, vamos hombre, ni caso.

Lo que sí me llama la atención es que un curso de introducción a la programación se haga con matlab o_o
#32 "You probably know that arrogance, in computer science, is measured in nanodijkstras" Alan Kay :-)
#33 Not until now, but I love it xD

Recuerdo ver una clase de él en video... qué coñazo y qué ideas erróneas. Pero como el profe era fan, todos calladitos xD
#16 Pues el abuso de la procedural no te digo yo lo que produciría...
#3 python para generar código spagueti es una maravilla.
#35 No se trata del lenguaje, sino de los programadores.
#2 Yo no quiero entrar en flames, pero laboralmente he cambiado a python recientemente y creo que hay mucha ignorancia en eso de que 'es mejor lenguaje' que otros. En muchos aspectos me parece claramente inferior y como bien dices para cualquier proyecto medianamente grande no lo usaria ni borracho.
#6 Una de las razones es el tipado dinámico?
#9 Una de ellas. El tipado dinamico de Python me parece bastante malo en comparacion con el tipado dinamico de Perl. Para un proyecto que no sea de juguete es mejor que el programa compile.
Otro problema es la gestion de modulos y dependencias con pip, que es lanzarte al vacio esperando tener suerte.
Otro problema es la falta de threads reales y el GIL.
Otro problema es la indentacion como parte del lenguaje (soy mas de llavecitas).
Otro problema es la comunidad y la documentacion: es tirando a mala.

Tiene bastante cosas buenas pero las carencias son bastante grandes.
#14 ¿Qué lenguaje le recomendarías a alguien aficionado a la informática sin motivaciones para la programación más allá de algún programilla propio que haga la vida más cómoda?

Hace como mil años que estudié C durante tres meses y practicamente no me acuerdo de nada y tampoco me apetece meterme en profundidad en el tema, en principio.
#59 Al final depende mucho de tu entorno y de que quieres hacer... aprender a programar es algo 'global'. Aprender un lenguaje de programacion es algo mas concreto.

En mis tiempos para aprender a programar se usaba ada95 (antes usaban modula2) y haskell. Aprendes dos 'paradigmas', tienes punteros y tipado fuerte en ada. Me parecen buenas elecciones y aunque son poco usadas laboralmente hablando dan para una buena base.

Para algo mas de 'un programilla propio para hacer la vida mas comoda'…   » ver todo el comentario
#63 Comprendo. Muchas gracias :-)
#59 yo empecé con NeoBook que es un programa que en principio facilita mucho la cosa, ahí no hay tipos de variables ni nada, y con los plugins se pueden hacer muchísimas más cosas. De hecho, en mi afán de crear mis propios plugins di el salto a programar en Delphi (lenguaje Pascal). Pero como te han dicho, tampoco estaría mal empezar con Python jeje
#2 Python es muy bueno para aprender y coger buenas costumbres, además de poder ir escalando conocimientos fácilmente. Igual es más fácil TurboPascal, pero "te lo acabas", mientras que Python es un lenguaje más "completo".
#2 ¿Qué entiendes por desarrollo pequeño?

www.tryton.org/
www.odoo.com/
#2 Si, yo he programado poco con él pero aunque puedes hacer cosas grandes lo suyo es para pequeñas aplicaciones, se hacen enseguida y es bastante divertido de programar.
#2 Dile lo de desarrollos pequeños a Youtube, Reddit, Instagram, Pinterest, Dropbox, parte de Google (de hecho tienen un compilador de Python a Go), Facebook (Tornado, la otra parte es php), Yahoo, etc
#49 Cierto, pero me refiero al mercado español. No veo muchas ofertas de Python para clientes o proyectos grandes. Si alguien quiere aprender a programar buscando una salida profesional en España, no recomiendo Python.
#51 Llevo 5 años programando python en españa y te aseguro que hay muchas ofertas de python, incluso de lenguajes como ruby y además hay menos gente que sabe python que gente que sepa php o java así que tienes menos competencia.

Aparte python te sirve para muchas ramas no sólo desarrollo web... pero bueno, que cada uno aprenda lo que quiera.
#53 Bueno, si tú estás metido en el mundo Python, sabrás mejor que yo cómo está el mercado y las salidas que tiene. Al césar lo que es del césar y a dios muy buenas.
#49 la gente entiende por "desarrollo pequeño" un "lo hago out-of-the-box"....o un "con 10.000 clientes me vale" no se dan cuenta que el C, Java, Python, ShellScript, y demás, siguen ahí dando guerra en cuanto algo requiere rendimiento de verdad...
#1 Python es la base de los mejores sistemas de Machine Learning actuales. Hay mucha demanda en el mercado y un repunte de salarios importante.
#21 para prototipos, cuando quieras algo con necesidades reales de rendimiento y quieres algo mantenible, scala y java. En stratio no trabajamos con python más allá de que alguien haga un prototipo y porque conoce el lenguaje. Si llega a producción es porque hay que reescribirlo a java o scala.
#66 En stratio como accedeis a la GPU desde scala o java para correr modelos de deep learning?
#69 hum, me pillas ahí, tendría que preguntar, yo curro como arquitecto software/data engineer/developer java y scala. Me imagino que los compañeros que gestionan sistemas se encargarán de configurar los clusters para que usen las gpus. Cuando programamos, asumimos que el hardware está optimizado cuando llega a producción.

En principio nosotros desarrollamos el software y otras empresas se encargan de ponerlo en producción en sus clusters. Algunos clientes tienen sus propios clusters, otros…   » ver todo el comentario
#72 Mi pregunta va en el sentido que desde librerias de ML como Tensorflow el utilizar las GPU o CPU segun tarea es trivial (una linea de código) y plataformas tipo H2O o Google Cloud tiran hacia python para correr modelos ML.

Ni idea de como enviarte un privado :-)

Pero es bueno oir que existen empresas como Stratio, en lo que conozco de Barna el panorama esta más vacio.
Precisamente estoy por volverme de la gestión / capa funcional al desarrollo, pero si lo hago intentaré que sea hacia java/scala + ml.
#1 Por lo popular que es python, ni más ni menos.

@Elperrodeloscinco Python es de lo mejor que hay... y te recuerdo que es extensible, así que lo de pequeño y grande.... creo que no es el punto clave, si no el "para qué" y "cómo" ...

stackoverflow.com/questions/366980/what-are-the-differences-between-pe
#1 porque tiene muy buen soporte para Machine Learning, y ML es "el hype" de turno, además de ser un buen lenguaje para aprender a programar.
#65 Bueno es el 'hype' y lo va a ser más,
el objetivo de la informatica es reducir costes
y la ML ya esta demostrando como se carga trabajo semi cualificado (scoring de La Caixa, reclamaciones de Morgan Stanley).

Esto acaba de empezar...
ya tenemos por ahí varios sistemas de Scaffolding +ML (comandos de voz a código, borradores de frontend a código, ...).
Quizas el ML incluso matará al programmer star?
Para alguien ducho en hardware que simplemente quiera adquirir unos principios basicos (basicamente para ver si le pica el gusanillo al enano y poder enseñarle algo) ¿recomendariais alguno?
#11 Visual Basic.
www.youtube.com/watch?v=gBbXOQjZpaM
No, es broma.
Se que se me van a echar encima pero yo considero útil el Java para aprender. Y cuando más o menos tengas claro lo de los objetos, métodos y clases te pasas al android para hacer cosas con el móvil.
#15 Mejor aprender Kotlin antes que Java :-)
#18 #11 Una vez aprendido lo básico, variables, funciones, bucles, condicionales, arrays, además del tema de clases, métodos y objetos. Ya para meterte en otro lenguaje es coser y cantar. Se podría decir otro, pero de Java hay muchísimos tutoriales y facilidades para empezar desde casa y como hobby.
#18 Razones para aprender kotlin?
#71 Google está apostando fuerte por él para Android y es también un gran lenguaje para backend.
developer.android.com/kotlin/index.html
#15 uff a día de hoy yo usaría antes Kotlin que Java si es para Android
#24 Lo puse para aprender lo básico. Ya después uno tira por donde quiera.
#26 Ya, pero es que yo aprendería lo básico directamente con Kotlin si tu objetivo es luego hacer cosas con Android xD
#11 No sé exactamente hasta donde llega lo de "ducho en hardware" pero si lo que significa es que sabes como funciona un ordenador internamente creo que lo que más vas a disfrutar es el de "Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)"
#22 basicamente estudie un grado superior en teleco y me he pasado los ultimos 20 años reparando ordenadores (ya sea de cambiapiezas o soldador en mano haciendo reparaciones en placas).
#11

1.- si quieres enseñarle lógica de programación, LO PRIMERO, enséñale algoritmos de ordenación. (www.youtube.com/watch?v=EQMGabLO_M0 por ejemplo).

2.- De ahí, en cuanto lo hubiera comprendido, le llevaría a un lenguage tipo "BASIC" (ojo, no visual basic) o tipo "PASCAL" para que entendiera la nomenclatura de un lenguaje, el concepto de las llaves, los paréntesis etc.

3.- A partir de ahí, y cuando sepa hacer las cosas básicas, podrás empezar a contarle mucho más sobre cómo funciona la programación..
#58 bien, esto ya lo veo mas estructurado. Ahora me tocara empaparme del tema y buscar algun libro que me oriente despues a como "endulzarlo" para la mente de un niño. Luego poco a poco ir escalando. Gracias!
Los 40 mejores cursos online gratuitos de programación

> CS50’s Introduction to Computer Science
> Introduction to CSS3
> Networking: Introduction to Computer Networking
> Cryptography I
> Bitcoin and Cryptocurrency Technologies

Ajam. Errónea.
Hay cursos con 5 opiniones. No me parece una masa crítica suficiente para meterlos en una lista de los mejor valorados.

Si os fijáis todos los cursos avanzados tienen pocas opiniones. Seguro que son familiares y amigos :troll:
#34 Hice unos cuantos de esos y me parecieron bastante buenos.

Introduction to Artificial Intelligence from Stanford University ★★★★☆(24)
Neural Networks for Machine Learning from University of Toronto ★★★★☆(22)
Probabilistic Graphical Models 1: Representation from Stanford University★★★★☆(17)
#41 Yo también he hecho el primer curso y el de Machine Learning de Andrew Ng.

Ambos muy chulos, pero no son de programación.
Miro uno que me interesa: 7 dias de prueba. "Gratuitos".
Yo he hecho el de Machine learning de la Universidad de Stanford, y es gratuito sin el certificado, si lo quieres pagas un precio módico por él, después acabé haciendo los cursos especializados de deeplearning.ai, entre ellos Neural Networks and Deep Learning que aparece como avanzado, y hay que pagar mensualmente por la subscripción alrededor de 40 pavos.

En mi opinión la relación calidad/precio es estupenda, pero no son "gratuitos".
Gratuito al 100% y en español: platzi.com/programacion

menéame