With the goal of fostering programming skills, weekly sessions of programming challenges and problem solving skills were scheduled as part of our enrichment program.
Week 1
IFs: From the World to the Machine
Focusing on IF-ELSE conditionals, we introduced topics from requirements engineering, mapping problems from the real world down to pseudocodes, additionally reviewing Python data types and operators, and introducing the concept of decision tree classifiers.
Week 2
Loops: the basis for automation
We introduced the importance of loops in real world automation, additionally reviewing Python sequence and iterable data types, as well as introducing the concept of events. Furthermore, student's solutions were tested on a Raspberry Pi to nurture the notion of the real world.
Week 3
Compartmentalization: a key for scalability
We reviewed Python functions, modules and packages, with the purpose of encouraging better code organization, additionally integrating the use of Git and GitHub.
Week 4
R/W: Files and Databases
We reviewed the use of different types of files in Python, including .txt, .csv, .xlsx, .xml, .html, .json, .ndjson and .yaml, as well as image libraries. Additionally, we introduced SQL and NoSQL Python libraries.
Week 5
Break
Week 6
Objects
We introduced the topic of Object-Oriented Programming, including the concepts of objects, instances, classes, properties and behaviours, as well as the four pillars of OOP, comparing analogous code built with and without OOP.
Week 7
Memory
We traveled through the different layers of abstraction, from the electron to computer memory, touching concepts of: conventional current, digital electronics, transistors, logic gates, logic circuits, and basic types of memory, such as flip-flops and registers. We additionally reviewed the memory hierarchy of a computer, and introduced the concept of data structures.
Week 8
Algorithms
We delved deeper into the description of data structures and addressed algorithmic techniques such as prune and search and divide and conquer.