Hi HN,<p>How did you learn advanced programming? What'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'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/O, Networking, Webservices and Regex<p>PS: I'm not teaching this course, but I'm a TA<p>Thanks!
If you want to teach all these things in a single semester, you teach a whole lot of nothing.<p>How deep can you even go per topic beyond mentioning that it exists?<p>The "topics" you listed are all 1-2 semester courses individually.<p>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"?<p>Please don't pretend you're ever going to mention sockets. That's just not enough time.
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.<p>Never tried this, but what if teaching was more like real world? Given an existing code base the students would have more context for <i>why</i> the code does what it does, and get a more holistic view of coding techniques.