
Ask HN: How to teach/learn advanced programming? - aaossa
Hi HN,<p>How did you learn advanced programming? What&#x27;s the way to teach programming? You can assume an Introduction to Programming course is required to enroll in this course.<p>This semester we used: a large homework every 2-3 weeks and a short assignment in class every week (in random groups of 2). At the end of the semester we&#x27;ll have a written exam.<p>Language: Python
Contents: OOP (and modeling), basic Data Structures, Functional programming (map, reduce, filter, lambdas, generators), meta programming, exceptions, testing, threading, PyQt, I&#x2F;O, Networking, Webservices and Regex<p>PS: I&#x27;m not teaching this course, but I&#x27;m a TA<p>Thanks!
======
wayn3
If you want to teach all these things in a single semester, you teach a whole
lot of nothing.

How deep can you even go per topic beyond mentioning that it exists?

The "topics" you listed are all 1-2 semester courses individually.

I'd like to see your 2 weeks on networking. What are you going to teach there?
"Hey guys the web exists there are webservers and an http protocol, btw you
can boot up a webserver by writing python -m SimpleHttpServer ok thats it see
ya next week for our lecture on regex"?

Please don't pretend you're ever going to mention sockets. That's just not
enough time.

~~~
Jtsummers
It's not that bad, but it is too much.

Regexes aren't a semester topic, nor are the functional elements of Python.

It's appropriate for a survey level course around 3 semesters into a CS
undergrad program, if they choose a focus on the user interface side (PyQT
_or_ Web, not both).

Structure the material as a series of projects (some building on prior ones,
faculty generated source for students that muck up an old project too badly to
easily refactor it or where it barely worked).

After the course, these students should have a greater breadth of coverage
that can inform their choice on later (specialised) courses and help them pull
all of it together for a later senior project or similar course.

------
itamarst
Most programming classes suffer from teaching everything in the abstract:
isolated code. In contrast in real world programming there's usually an
existing code base you're working on.

Never tried this, but what if teaching was more like real world? Given an
existing code base the students would have more context for _why_ the code
does what it does, and get a more holistic view of coding techniques.

