Programming Design Principles
Programming Design Principles
QQI Level 5 | Dublin College Dundrum | 2023–24
Python programming with an emphasis on structured thinking, modular design, and collaborative problem-solving.
Group Work Reflection Questions
Used throughout the course to encourage metacognitive reflection after pair and group sessions:
- What did I struggle with and ask for help about? Where did I give help?
- What did I learn from my colleague? What changes did I make?
- What was easy / difficult / unexpected about our communication? (e.g. found we had to use variable names a lot, indices, function names)
- Any other reflections, areas you would like to improve, or areas that went well?
Skills Demos
The course used two skills demos as its primary assessment. These were practical programming assessments rather than exams.
Skills Demo 2 was hosted on Colab: students worked through programming challenges demonstrating competency across the learning outcomes.
Khan Academy (Optional but Recommended)
Students were invited to join a class on Khan Academy for additional Python practice. Optional but used by a number of students as a supplement.
Group code experiments from the class:
Game Map Project
An informal, ungraded project used midway through the course to give students a chance to apply what they'd learned to a problem they found interesting.
Soft Due Date: End of October (class time)
Assignment Description
Students create the logic behind a text-based game map: defining coordinates, measuring distances, setting dimensions, and adding points of interest. The goal is to break a big problem into smaller chunks and apply what they've learned so far.
The assignment is deliberately not graded — it's designed to give students a chance to experiment and get feedback before the graded assessments.
Steps
1. Define the Coordinate System
Create a function to establish a coordinate system. Think about what data structure best represents coordinates (lists, tuples).
2. Measure Distances
Write a function to calculate distance between two points. Euclidean or Manhattan distance, depending on the map design.
3. Set Dimensions and Scale
Functions to set map size and scale. Could be as simple as a few variables, or a function that allows dynamic resizing.
4. Add Points of Interest
Create a function to add named locations to the map. Consider: how will you represent position? Names? Other features? Lists or dictionaries will be useful here.
Comments throughout: Nearly every line should be commented — both to explain the code to others and to remind yourself of your own intentions.
Optional Extensions
- Add flavour text for different areas of the map
- Implement a function to give directions from one point to another
- Enable user interaction — moving to different locations, examining areas
Practice Problems
A set of Python practice problems distributed throughout the semester. Solutions were provided progressively, and students were encouraged to flag errors.
For the broader approach to Python programming used across courses, see How to Learn Programming and Learning Python.