3 ms·
Ask HN: How to teach/learn advanced programming?
Hi HN,
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.
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.
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
PS: I'm not teaching this course, but I'm a TA
Thanks!
- itamarst 10y agoMost 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.
- wayn3 10y agoIf 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 10y agoIt'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.