You can probably do sorting, inheritance, and interfaces at the same time? An ISortable object must have a .sort() method. e.g. DoublyLinkedList(LinkedList).
"15 Sorting Algorithms in 6 Minutes" https://youtu.be/kPRA0W1kECg - # of comparisons - # of array accesses ... Big-O Cheat Sheet http://bigocheatsheet.com - "Array Sorting Algorithms" - Time Complexity: Best, Average, Worst - Space Complexity: Worst I don't have K12 students. It's important to learn OOP. There really is a push back from OOP-over-abstraction to functional with interfaces by convention with e.g. Go,. As a multi-paradigm language built on C (not C++ (OOP which predates Java)), programs can be written in many styles with Python. There is - some might argue negligible - overhead to each function call. Is there a good way to do compile-time interface checking with Python? Why not? zope.interface is probably the most popular way to do 'actual' interfaces in Python. https://zopeinterface.readthedocs.io/en/latest/ Pyramid framework has zope.interface interfaces. https://github.com/Pylons/pyramid/blob/master/pyramid/interfaces.py - IResponse - IRequest (a 'marker' interface) An OOP exercise: # Namespacing def area_of_a_rectangle() def perimeter_of_a_rectangle() def shape__rectangle__area() def shape__square__area() # Inheritance, Interfaces, Parameters class Shape() def __init__(*args, **kwargs): # * def area() def perimeter() def height/width/[depth]() # physical units # class Number(float): # def __init__(value, unit=) class Square() class Rectangle() class Triangle() Sorting, [multiple] database indexes (import sqlite), and tree-balancing may be appropriate to teach or mention together or in an optimal sequence. - https://github.com/jwasham/coding-interview-university/blob/master/README.md#sorting - https://github.com/jwasham/coding-interview-university/blob/master/README.md#object-oriented-programming - https://github.com/jwasham/coding-interview-university/blob/master/README.md#design-patterns - https://en.wikipedia.org/wiki/Software_design_pattern - OOP sorted() is implemented with/as a Timsort (and expects an interface (is it __cmp__, __gt__, __lt__, AND __eq__?)). https://wiki.python.org/moin/TimeComplexity On Tuesday, August 14, 2018, Jurgis Pralgauskis < jurgis.pralgaus...@gmail.com> wrote: > Hi, > > The dillema I have when teaching: > our k12 curricullum of programming is more based on algorithms (math > ideas), > but when working as programmer, I see the bigger need of SW architecture > knowledge.. > > OOP is one big topic, which could replace sorting alg stuff (that I never > applied (directly) in this century...). The topics could be integrated in > making mini game engine :) > > I'd still leave classics of sum, min search, and search in sorted vs non > array to get the idea of algorithms. > > What are your approaches, if you have programming classes in K12? > -- > Jurgis Pralgauskis > tel: 8-616 77613 >
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig