# Progra - Temas Nati ### Algunas Herramientas Útiles: - Intérpretes en línea de Python (para que no tengas que instalar nada) - [Programiz: Online Python Interpreter](https://www.programiz.com/python-programming/online-compiler/) - [Online Python](https://www.online-python.com/) - [Jupyter Notebooks](https://jupyter.org/try-jupyter/lab/) - Son como cuadernos con bloques de código, útiles para aprender y tener como notas/código. Se usan mucho en research y en la U. - [Stack Overflow](https://stackoverflow.com/): En general googleá cualquier pregunta o cosas que necesités en programación. Usualmente te dirige a Stack Overflow donde está la respuesta de casi todo. ## Básicos de Programación - Lenguaje recomendado: Python - Python es usado en muchísimas muchas áreas, la mayoría de software libre trabaja en Python y es un lenguaje fácil de aprender y hay muchos recursos para aprender. Desde Data Sciente, Machine Learning o Research, Python es muy utilizado. - Videito con el mismo bias mío: https://www.youtube.com/watch?v=Y8Tko2YC5hA&ab_channel=ProgrammingwithMosh - Qué aprender? - Variables - Condicionales: If/Else - Lazos (while/for) - Encapsulación. - Operadores Booleanos: AND, OR, XOR, NOT. - Operadores matemáticos. - Funciones - Mi recomendación: [Harvard - CS50's Introduction to Computer Science](https://discover.edx.org/course/introduction-computer-science-harvardx-cs50x?g_acctid=724-505-4034&g_campaign=b2c_gdn_us_CS50_performance-max&g_campaignid=15252531060&g_adgroupid=&g_adid=&g_keyword=&g_keywordid=&g_network=x&utm_source=google&utm_campaign=b2c_gdn_us_CS50_performance-max&utm_medium=cpc&utm_term=&hsa_acc=7245054034&hsa_cam=15252531060&hsa_grp=&hsa_ad=&hsa_src=x&hsa_tgt=&hsa_kw=&hsa_mt=&hsa_net=adwords&hsa_ver=3&gclid=CjwKCAjws--ZBhAXEiwAv-RNL4MGZUz-NoS7oPzyBkqyaJ7DypDEZOVjB-gjiq1S2pZheoLDTPs7ehoCZswQAvD_BwE#!) - Este es un muy buen curso para empezar con programación, puede ser un poco abrumador/fast paced pero es genial. Yo basé mi curso de intro a la programación un poco en este. - Creo que también va más allá de los básicos de programación, pero te daría una buena perspectiva de qué hay en esas áreas. - Otros cursos: - [CS50 Introduction to Programming with Python](https://www.edx.org/course/cs50s-introduction-to-programming-with-python?index=product_value_experiment_a&queryID=1d854142d42b71613b73d47bc16c2bc8&position=1): Este no lo he visto, pero creo que va por la misma línea enfocandose en Python. Tal vez empezar acá no sea mala idea. - [Programming for everybody with Python](https://www.edx.org/course/programming-for-everybody-getting-started-with-pyt?index=product_value_experiment_a&queryID=f6645b132af7411ea14c238d21778158&position=3): Este suena un poco más light, está empezando. ## Progra más avanzada: - Qué aprender? - Dictionaries, Arrays, Tuples. - Recursion - Clases: Programación Orientada a Objetos (Object Oriented Programing) - Inheritance/Polymorphism. - Design Patterns. - Terminal, IDEs. - Abrir/leer/escribir archivos. - Con esto podrías entender y trabajar con programas más complejos. - Para esto tal vez no haya un sólo curso, pero tal vez podás buscar cada uno de esos casos en internet y encontrar un pequeño tutorial. - Tal vez podría darte pequeñas tareas para que aprendás cada una de estas cosas. ## Algoritmos y Estructuras - Se trata de aprender cómo organizan y procesan información las computadoras. Se ve un poco de algoritmos un poco más especializados. - La idea no es que te sepás de memoria todo esto, pero un poco más tipo: podés entender cómo estos algoritmos (binary searchs, sorting algorithms) funcionan? Por qué se son mejores que otros? Cuales son los trade offs? - [Grokking Algorithms: An ilustrated guide for programmers and other curious people](https://edu.anarcho-copy.org/Algorithm/grokking-algorithms-illustrated-programmers-curious.pdf) - [Introduction to Data Structures](https://www.edx.org/course/introduction-to-data-structures?index=product_value_experiment_a&queryID=2a1374b5e7fc6858052a518b917d5c5c&position=6&linked_from=autocomplete) ## Otras Areas: ### Artificial Intelligence (AI) - [CS50 Introduction to Artificial Intelligence with Python](https://www.edx.org/course/cs50s-introduction-to-artificial-intelligence-with-python?index=product_value_experiment_a&queryID=1d854142d42b71613b73d47bc16c2bc8&position=3) - Acá creo que lo útil sería que aprendás a usar algunos modelos de machine learning, ojalá en Computer Vision. Lo podríamos ver luego. ### Data Science - [EDX - Using Python for Research](https://www.edx.org/course/using-python-for-research) - Acá tal vez aprender un poco de librerías como: - Numpy - Scipy - Scikit-learn