Welcome to the repository for AYPR (Algoritmos y Programación) at the Escuela Colombiana de Ingeniería Julio Garavito.
This course marks the first approach to thinking algorithmically and solving problems with structured logic. You’ll find theoretical materials, exercises in Python, and a final project focusing on real-world data processing.
- Logical Reasoning: Step-by-step thinking for solving problems.
- Basic Syntax & Concepts: Variables, data types, operators.
- Control Structures: Conditionals, loops, modularity (functions/subprograms).
- Structured & Procedural Programming: Code organization and readability best practices.
- Input/Output: Reading and writing data.
- Functions: Encapsulation, parameters, and return values.
- Error Handling: Approaches for debugging and ensuring robust code.
- Code Optimization & Cleanliness: Short, clear expressions, meaningful names, and documentation.
- Slides, PDFs, and notes providing theoretical context for each module.
- Sample scripts demonstrating fundamental Python concepts.
- Exercises focusing on problem-solving and algorithmic thinking.
- Theory Folder:
Collection of PDFs, notes, and presentations (e.g., conditionals, modular programming, best practices, etc.). - Python Exercises:
Scripts covering various aspects of programming logic, from simple I/O to more advanced data manipulation. - Final Project:
A comprehensive program that processes real-like data files to simulate counting votes in regional elections.
As the capstone for AYPR, students develop a Python-based system that reads and processes votes from a text file. This system outputs various statistics to inform the public about voting results by region, city, and country.
Input Format: A text file where each line represents a single vote.
Candidato,partido,ciudad,sitio,mesa,genero
Output & Requirements:
- Show total votes in the entire country.
- Break down votes by city, region, candidate, party, and more.
- Identify winners in different contexts (city-level, overall).
- Determine if a second voting round is required in Bogotá based on specific percentages.
- Provide a menu-driven interface for easy data exploration.
Key Points:
- 7 Cities: Bogotá, Barranquilla, Cali, Medellín, Bucaramanga, Pasto, Cartagena.
- 3 Regions (Caribe, Centro, Sur) mapped to corresponding cities.
- 3 Political Parties.
- 4 Candidates per city.
- 3 Voting Sites per city; 4 tables per site.
- Second Round Criteria: A candidate wins in the first round with ≥ 40% of votes plus a 10-point lead over the runner-up.
Implementation:
- Must be modular and follow best practices seen in class (e.g., well-named functions, code clarity).
- Outputs user-friendly messages and validated error handling.
- Python as the primary language for all exercises and the final project.
- Markdown for documentation (e.g., this README).
- Basic File I/O handling for reading the voting data.
A very short representation that uses a menu as the project describes to evidence all the points.
For any questions or deeper insights into the project requirements or theoretical materials, feel free to reach out:
Email: andersson.sanchez-m@mail.escuelaing.edu.co
“The art of programming is the art of organizing complexity.” – Edsger Dijkstra
Embrace the fundamentals—logical thinking, clarity, and robust structure—to shape solid solutions in code.