Skip to content

Intro to algorithms and programming course at Escuela Colombiana de Ingeniería. Includes Python exercises, theory, and a modular final project simulating vote counting with file I/O, stats, and menu-driven data exploration.

Notifications You must be signed in to change notification settings

AnderssonProgramming/AYPR

Repository files navigation

🧠 AYPR: Introduction to Algorithms & Programming

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.


📚 Topics Covered

🤔 Programming Foundations

  • 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.

🛠️ Fundamentals of Python

  • 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.

🖥️ Course Materials

  • Slides, PDFs, and notes providing theoretical context for each module.
  • Sample scripts demonstrating fundamental Python concepts.
  • Exercises focusing on problem-solving and algorithmic thinking.

📁 What’s Inside?

  • 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.

🎯 Final Project: Voting Count System

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.

Project Details

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.

🧰 Tech Stack

  • 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.

🖼️ Visuals

A very short representation that uses a menu as the project describes to evidence all the points. image image


📬 Contact

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.

About

Intro to algorithms and programming course at Escuela Colombiana de Ingeniería. Includes Python exercises, theory, and a modular final project simulating vote counting with file I/O, stats, and menu-driven data exploration.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages