Tabla de contenido visto en clase y problemas propuestos para ADSW.
El código del repositorio se divide en dos paquetes principales:
es.upm.dit.adsw.g23.clases
, que incluye el código utilizado durante las clases. Posiblemente haya partes incompletas o que no funcionen correctamente.es.upm.dit.adsw.g23.ejercicios
, donde se incluye código incompleto.
- Introducción de la asignatura
- Contenido
- Evaluación
- Dinámica y organización de las clases
- Cuestionario de inicio de la asignatura
- Conceptos
- Algoritmo vs programa
- Problemas en clase
- Encontrar líneas duplicadas en un fichero
- Ejercicios en casa
- Instalar Java
- Instalar Eclipse
- Acceder a Hackerrank
- Conceptos: Repaso Java
- Orientación a objetos (en Java)
- Ejercicios
- Encontrar líneas duplicadas en un fichero
- Ejercicios en casa:
- Encontrar líneas duplicadas a partir de un fichero
- Arreglar la implementación de LineasRepetidasClase.
- Conceptos: Repaso Java
- Estructuras de datos básicas (arrays, listas, conjuntos, diccionarios)
- Pruebas unitarias (junit)
- Ejercicios
- Encontrar líneas duplicadas en un fichero (varias implementaciones)
- Pruebas básicas usando eclipse y junit
- Ejercicios en casa:
- Encontrar fallos y arreglar
LineasRepetidas.java
- Desarrollar un método que acepte una lista de números enteros y devuelva otra lista con los mismos números, pero ordenados de mayor a menor.
- Encontrar líneas duplicadas a partir de un fichero:
- Usando sólo una lista (List)
- Usando una lista y un conjunto (Set)
- Usando una lista y un diccionario (Map)
- Analizar los programas de clase y de ejercicios para líneas repetidas:
- Intentar evaluar informalmente su eficiencia. ¿Hay alguno (claramente) mejor?, ¿por qué?
- Opcional:
- Encontrar líneas duplicadas a partir de un fichero:
- Usando sólo un conjunto
- Usar una clase común para las implementaciones anteriores (encontrar usando lista, conjunto, diccionario...)
- Usar un interfaz común para las implementaciones anteriores (encontrar usando lista, conjunto, diccionario...)
- Contar cuántas veces se repite cada línea, y devolver la palabra que más se repite (si hay empate, cualquiera de ellas)
- Usando un diccionario
- Usando dos listas
- Usando una lista
- Devolver tanto la palabra como el número de veces que se repite
- Intentar encontrar optimizaciones en todos los algoritmos implementados. ¿Hay algo que se pueda hacer con menos operaciones?
- Encontrar líneas duplicadas a partir de un fichero:
- Encontrar fallos y arreglar
- Ejercicios
- Desarrollar un método que acepte una lista de números enteros y devuelva otra lista con los mismos números, pero ordenados de mayor a menor.
- Con una nueva lista (selección)
- Sin repetición
- Con repetición
- Reutilizando la lista (selección, inserción, burbuja)
- Con una nueva lista (selección)
- Desarrollar un método que acepte una lista de números enteros y devuelva otra lista con los mismos números, pero ordenados de mayor a menor.
- Ejercicios en casa:
- Implementar los algoritmos vistos en clase
- Desarrollar pruebas generales
- Probar las implementaciones con las pruebas
- Comparar el tiempo de ejecución de las implementaciones (benchmarking)
- Implementar los algoritmos vistos en clase
- Repasar transparencias:
- Estructuras de datos
- Depuración
- Conceptos
- Complejidad (I)
- Ejercicios
- Describir qué hacen los 4 algoritmos implementados en
CodigoClase.java
- Describir qué hacen los 4 algoritmos implementados en
- Ejercicios en casa:
- Intentar estimar la complejidad de los 4 algoritmos vistos
- Conceptos
- Complejidad (II)
- Orden de complejidad
- Ejercicios
- Ejercicios en casa:
- Completar los ejercicios de tema02.EjemplosCalculo.java