[Edu-sig] What to teach: sorting algorithms vs OOP?

Wes Turner wes.turner at gmail.com
Tue Aug 14 17:55:12 EDT 2018


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.pralgauskis at 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20180814/26d5423b/attachment.html>


More information about the Edu-sig mailing list