Programación Avanzada

Te damos la bienvenida al curso de Programación Avanzada del Instituto Balseiro. En este sitio encontrarás el material del curso (a veces en castellano, a veces en inglés). El único requisito es estar familiarizado previamente con algún lenguaje de programación.

El curso apunta a exponer al estudiante a un lenguaje de programación funcional. En esta versión del curso, se utiliza F#. Sin embargo, no se trata exclusivamente de un curso para aprender un lenguaje, sino que también visitaremos otros aspectos de la programación que son relevantes y pueden practicarse con cualquier lenguaje. Tocaremos algunos temas de diseño de software y de técnicas de programación. Por otra parte, repasaremos fundamentos formales de la programación funcional, para poner en contexto este paradigma.

Aspectos prácticos

La documentación del curso está acá https://tinyurl.com/ibadv.

Para empezar, podemos programar en F# en Fable Repl.

Git

Para participar activamente del curso, es necesario tener una cuenta en GitHub. Tanto la entrega de ejercicios como el feedback sobre los mismos se realizará en esa plataforma, utilizando la aplicación git. Si bien el cursado de la materia requerirá sólo los comandos básicos, puede resultar útil tener más conocimiento del tema. Acá se puede encontrar una guía completa sobre git.

Una vez que se cree el usuario en GitHub, envíe esa información a flavio.colavecchia@ib.edu.ar así se le incluye en el curso.

Si no le gusta usar la terminal, puede descargarse GitHub Desktop. Veremos su uso en clase.

Editor

Para cualquier lenguaje moderno es necesario contar con un editor potente que permita manejar las distintas capacidades de edición actuales. Tanto Visual Studio Code como JetBrains Rider son los editores recomendados. Mientras que el primero ofrece una versión web que no requiere de instalación, el segundo es un editor pago, pero que puede usarse gratis para educación.

Textos

Eventualmente se pedirá la entrega de algún ejercicio escrito que no sea un programa. Para ello utilizamos Markdown que posee una sintaxis simple, aunque permite agregar ecuaciones \(f(g(x)) = g(x)+1\) en LaTeX.

Instalando el toolchain

Si bien en las primeras clases utilizaremos alguno de los entornos web para iniciarnos en la programación en F#, es conveniente ir acercándose al juego completo de herramientas. Para poder utilizar F# en Jupyter notebooks, seguir estas instrucciones para instalar Polyglot Notebooks.

Ubuntu 22.04

Para instalar el toolchain en ubuntu 22.04, es necesario seguir algunos pasos detalladamente.

# Get Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

# Install Microsoft signing key and repository
sudo dpkg -i packages-microsoft-prod.deb

# Clean up
rm packages-microsoft-prod.deb

# Update packages
sudo apt update

La salida de todas estas instrucciones debiera parecerse a esto: Instalación de .NET 7.0 en Ubuntu 22.04

  • Luego instalar el SDK con
sudo apt install dotnet-sdk-7.0
  • Finalmente, abrir VSCode e instalar la extensión Polyglot Notebooks. La misma extensión instalará una versión compatible de .NET interactive, que provee los kernels de .NET para Jupyter.

Cronograma

  1. Intro a la programación funcional
    • Nociones básicas de F#, inmutabilidad, tipos básicos.
    • Ejemplos de funciones
    • Composición
    • Aplicación parcial
  2. Tipos
    • Instalación de herramientas.
    • Tipos algebraicos
    • Tipo Suma, Discriminated Unions
    • Tipo Producto, Records

results matching ""

    No results matching ""