PYU IT Club Mini Programming Competition

R Batzinger

2025-10-29

Goal of this programming competition

This is a wholistic undergraduate computer programming competition to support the principles of good design, implementation, testing, documentation and presentation.

The competition encourages participation with students of other departments by awarding a 5% bonus for each non-IT member on the team.

A limited, programming language is used in the spirit of the idiom. (Only a bad workman blames his tools)

Workflow of the Programming Competition

  1. Participants work in groups of 3

  2. Programming Language for the competition is the online version of Scratch at https//scratch.mit.edu

  3. There are 5 challenges. To earn points team must complete a challenge and submit the documentation and the slides for a 5 min presentation that explains how program was developed and why their entry works.

  4. Once they are convinced their program works, they will need to give the organizers the id number of the program to recieve the step 1 prize.

  5. After 60 mins, the teams will present their presentation for the entries they have submitted.

  6. The others in the room will vote on the presentations and scores will be added.

  7. The winning team will be awarded a prize.

Rationale behind the scoring Rubric

The idea is to attempt to solve as many challenges as possible in the time allotted

The scoring aims to reward both the functionality and the software engineering quality of the solution.

Points will awarded in these areas:

  • [25] Program Design: Algorithm & Structure: Conceptual clarity, efficiency, and modularity.
  • [30] Implementation: Programming style that exhibits functional accuracy and code quality
  • [10] Testing: Evidence of thorough verification and validation of the code
  • [10] Documentation: A clear and complete description of the program code and the use of program.
  • [25] Presentation: Clear and concise 5-min overview the key points of the software developed.

Scoring Rubric

I. Design: Programs will be judged on how well the problem has been decomposed in a way that lead to a maintainable and elegant solution. High marks given for optimal, well-justified algorithm, organized into logical, decoupled modules/classes. Sketches that illustrate the concepts, objects and algorithms implemented in this program are to be submitted with the entry.

  1. Implementation: The code is expected to be readable, idiomatic, well-formatted, clean, and easy to read with descriptive naming. The code should conform to the design. The judges need to be given access to the program so that they can access the quality of the code

  2. Testing: Comprehensive set of unit and integration tests that cover normal, edge, and error conditions. A log of the test cases used must be submitted with the program. Judges will ask to see the running of some of the tests.

  3. Documentation: The software documentation should allow a a fellow developer understand the design and logic without reading the entire codebase. The external documentation and metadata (e.g., design sketches, user guide/instructions and concise in-code comments explain why and how the complex parts work.

  4. Presentation: The presentation will clearly cover the program design, the individual roles of team members in the implementation, and the approach used to test of the software. The presentation should be cover the material in a concise and efficient manner, taking 5 mins or less. (Points are deducted the presentation goes over 5 mins. The presentation will be stopped at 6 min.

Challenges for this competition

  1. An icon must navigate a race track without leaving the road and display the time needed to complete the trip.

  2. An icon will ask how many sides are required and promptly draw a polygon with that many sides.

  3. An icon will ask for the monetary value of the bill and the size of the bill given then display a minimal set of 1, 5 and 10 baht coins and 20 and 50 baht bills equivalent to the value of the change to be returned. The change should be shown graphically.

  4. Display 3 frogs sitting on lily pods. Every 2 seconds cause one of them to jump. The frogs are chosen in random order (that does not allow a frog to jump twice in a row or repeat a pattern).

  5. Display a basketball that rolls (not slides) continously across the screen. When it hits to the opposite side or the cat, it rolls back in reverse direction. If a button is pressed, the cat will jump in an attempt not to get hit by the ball.