[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