---
# System prepended metadata

title: Progra - Temas Nati

---


# 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