R or B?

Metadata: Estos notebooks están (más que) inspirados en el excelente trabajo de Jake van der Plass y su Whirlwind Tour Of Python. Ver A Whirlwind Tour of Python by Jake VanderPlas (O’Reilly). Copyright 2016 O’Reilly Media, Inc., 978-1-491-96465-1.". Estos notebooks están protegidos con la misma licencia de los originales, Creative Commons 0. Todas las notas están disponibles en PrograUDD1.

Objetivos de hoy

  1. Hablar de admin (bleargh!)
  2. Correr el primer código en Python... "hello, world!" FTW (Historia de HW?)

Admin

Staff

  • Dr. Leo Ferres (@leoferres, lferres@udd.cl, pueden llamarme "Leo" nomás)
  • Rodrigo Trigo ()

Horarios de clase y salas

  • Sección 1 y 2: 308, de 14:30 a 15:50
  • Sección 3 y 4: 110, de 17:25 a 18:45

Herramientas de comunicación (hablemos!)

Objetivo

Este es el curso obligatorio de Tecnologías de Información II, perteneciente al ciclo de Bachillerato y correspondiente al segundo curso de la línea de Tecnologías de la Información. El curso está diseñado para ayudar al estudiante a adquirir habilidades que le permitan aplicar el enfoque computacional a la resolución de problemas.

El curso está dirigido a estudiantes con poca o nada experiencia en programación y con el interés de entender y usar computadores como herramientas para el procesamiento de información en sus propias disciplinas.

Evaluaciones

Bueh, supongo que este es el punto más algido de la discusión. No hay mucho que analizar aqui. Es bastante standard a niveles universitarios.

  • 20% Certamen 1
  • 20% Certamen 2
  • 20% Proyecto
  • 30% Examen
  • 10% Presentación carpeta de problemas resueltos y controles

Recursos

Introducción

Dejenme hacerles algunas preguntas antes de empezar con nuestros temas específicos:

  1. Alguien de aqui sabe programar?
  2. Quienes odian la programación (pero han intentado programar!)?
  3. Quien le tiene miedo a los computadores?

En este curso yo quiero hacerlos pasar de esto:

o esto:

a esto

y esto

(aunque probablemente los deje asi:

)

Por qué Python?

Hasta el año pasado, enseñábamos C(++?) como lenguaje de programación. Si bien estos lenguajes son algunos de los mas usados (C puro en particular), en este curso estamos más interesados en resolución de problemas que en las particularidades de un lenguaje. Si vamos a imprimir algo, preferimos que sea simple


In [15]:
print("hola")


hola

y no complejo:

#include<stdio.h>
int main(int argn, char** argv) {
   printf("hola");
   return 0;
}

Python se inventó a finales de los 80s como un lenguaje de instrucción y scripting (explicar, "glue language"). Pero desde entonces se ha vuelto el lenguaje de facto de la ciencia, y hasta aplicaciones a gran escala (YouTube corre Python en buena parte de sus servicios). De hecho, Python está en el top 5 de los lenguajes de programación! Ver el Tiobe Index, MATLAB, como ejemplo, está #17.

Nuestras herramientas

Anaconda y Python 3

Para este curso vamos a usar Python 3 (asegurarse que es versión 3!), y la instalación de Anaconda. Viene para Windows, Mac y Linux, asi que a no desesperarse con aprender algún otro OS.

En particular, vamos a usar los notebooks como este. Per no es la única manera de ejecutar código Python. Ahora vemos las opciones.

El zen de Python


In [14]:
import this
print(''.join([this.d.get(i, i) for i in this.s]))


The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!