De acuerdo a la carta al estudiante:
Los estudiantes también pueden aportar ejercicios de programación y recibirán crédito por ello. Un ejercicio inventado se debe ubicar en una de las secciones temáticas. Cada sección tiene su propio peso en la nota. Un ejercicio inventado tendrá crédito por el peso de la sección donde se ubique. Los estudiantes crearán ejercicios por al menos un 2% de la nota. Más de este porcentaje, serán puntos extra que el estudiante podrá acumular en la nota del curso. Cada ejercicio inventado debe tener el mismo formato usado en los ejercicios resueltos. El profesor proveerá recursos para facilitar la elaboración de los mismos.
La creación de ejercicios correlaciona con una mayor comprensión de los conceptos de programación, de acuerdo a la literatura científica. Para crearlos, el estudiante debe prestar atención a los conceptos de programación involucrados en el tema, y puede tomar como ejemplo los ejercicios propuestos por el profesor y asistentes en la plataforma HackerRank. Los ejercicios inventados deben ser únicos entre estudiantes. Es decir, si dos o más estudiantes proponen el mismo ejercicio, se dará crédito sólo al primero en someterlo. El profesor servirá como el ente centralizador de los ejercicios inventados por estudiantes, y podrá ayudarles en el proceso de creación de los mismos durante las horas de consulta.
Para presentar los ejercicios inventados, descargue el archivo comprimido anterior. Luego siga estas instrucciones:
problem.es.md
para escribir el enunciado de su ejercicio en notación Markdown. Ubique el problema en un contexto: una situación hipotética pero realista que haga al ejercicio aplicado y más interesante. El enunciado del problema debe incluir un ejemplo de entrada que recibirán los programas que intenten resolverlo, y su correspondiente salida esperada.problem.es.md
) en dos archivos: input000.txt
para la entrada y ouput000.txt
para la salida correspondiente.Solution.java
. Finalmente codifique su algoritmo al lenguaje de programación.px
(acrónimo de Programming eXercise) provisto. Use una terminal o línea de comandos, vaya a la carpeta donde se encuentra el ejercicio y escriba (./px
). Haga correcciones hasta obtener cero errores y advertencias (warnings).java Solution < input000.txt | diff output000.txt -
para comprar la salida esperada contra la salida de su programa. Si el comando anterior no genera salida, su solución pasó el caso de prueba. Para probar todos los casos de prueba puede emitir el comando ./px test
.tests/
del repositorio, ubique la sección a la que pertenece el ejercicio. Mueva o copie los archivos del ejercicio a una carpeta dentro de la sección a la que pertenece. Por ejemplo, si el problema a resolver es un validador de jugadas de ajedrez en el tema de matrices (1.5), podría crear su ejercicio en una carpeta cuyo nombre podría ser "tests/1.5_pointer_arrays/validador_ajedrez-NombreApellido/
, donde NombreApellido
corresponde a su nombre y primer apellido.git commit
). Luego envíe los cambios al repositorio remoto (git push
). Debe asegurarse de actualizar su respositorio local antes de enviar cambios (git pull
). Esté pendiente de observaciones que el profesor realice en el repositorio de control de versiones. Una vez que las haya incorporado en sus ejercicios, puede incluir el número de issue en el mensaje del commit correspondiente para cerrarlos.Los ejercicios del curso están agrupados en secciones temáticas, y se listan a continuación.
Paradigma | Num | Tema | Puntaje |
---|---|---|---|
Programación imperativa | 1.1 | Entrada y salida | 0.1 |
1.2 | Expresiones y condicionales | 0.2 | |
1.3 | Ciclos | 0.3 | |
1.4 | Subrutinas | 0.4 | |
1.5 | Indirección, arreglos y matrices | 0.5 | |
1.6 | Cadenas de caracteres | 0.5 | |
1.7 | Registros (estructuras) | 0.8 | |
1.8 | Recursión | 1.0 | |
Programación orientada a objetos | 2.1 | Clases, objetos, atributos, métodos | 1.0 |
2.2. | Sobrecarga de operadores | 1.0 | |
Programación genérica | 3.1 | Arreglo dinámico | 1.0 |
3.2 | Lista enlazada | 1.0 | |
3.3 | Árbol binario | 1.0 | |
Programación orientada a objetos | 4.1 | Herencia y polimorfismo | 2.0 |