Slashdot Mirror


Teaching Programming to Non-Developers

Eric asks: "I'm teaching a web application development class at a local public university. The students are seniors in the business program; the course is intended to expose them to development practice (we're using PHP and MySQL) but is not intended to turn them into developers. So what would the Slashdot community recommend within the curriculum? How would you teach web development to the managers of the future, and why?"

4 of 74 comments (clear)

  1. Don't teach them programming. by bensyverson · · Score: 5, Informative

    You don't have time. Plus, if they wind up being managers, they don't need to know about PHP and MySQL's specifics. You're only going to have about enough time to teach them how to make a completely watered-down application, which will be totally useless to them, and won't help them understand what real developers are doing.

    Instead, show them what the LAMP model is all about. Bring up issues like:

    • LAMP vs. Oracle
    • Open vs. Proprietary
    • MySQL vs. PostgreSQL
    • read-heavy applications vs. transaction-heavy applications
    • Dealing with high demand (/. effect). You might want to mention:
      • Smart caching with Squid/mod_proxy
      • Database optimization
      • Making non-dynamic pages static
      • Using a smaller http server to serve static content (such as thttpd or a barebones Apache)
      • Moving from PHP to mod_perl for high-traffic applications
    • One big server vs. two or three (or more) very cheap servers
    • Time vs. Money:
      • In-house vs. Outside development
      • Creating a new system vs. Adapting existing system (which may cost)
      • etc
    Try to get some opinions and discussions happening -- these high-level topics are more useful to them than how to set up an over-simplified database-driven website that won't scale.

    -ben

  2. infosecurity basics by ubiquitin · · Score: 4, Informative

    I taught a one-semester PHP and MySQL basics course a while back and you may find the materials there helpful. If I had to distill the most important parts down for non-coders, I'd emphasize confidentiality, integrity, and availability as the most important properties of an information system.

    --
    http://tinyurl.com/4ny52
  3. Uhhhh.... by Anonymous Coward · · Score: 2, Informative

    If they're attending a "local public university" and their "professor" is asking Slashdot to develop his curriculum, then these students are clearly not the "mangers of the future."

  4. Original poster response by pdxluddite · · Score: 3, Informative

    I won't be able to do justice to all the insightful and interesting comments above, but let me at least thank everyone for participating.

    What was particularly interesting were the posts with the perspective (reflecting my experience) that while you can't really teach the full coding aspect (most students coming in weren't even familiar with HTML) there is certainly value to be had in understanding programming methodology. But there's also value to be had in teaching the managerial perspective.

    So what to do with only a limited amount of class time?

    I actually did have the class do a large-scale simulated project last term. While the project itself didn't wrap at the end, the students have already said that they have a much greater appreciation for requirements documentation, testing processes, active management of lines of communication, and other less obvious aspects of development.

    But many did express a desire to learn more code, which is problematic given that you can't easily go from HTML 101 to PHP/MySQL in a few weeks. And I chose PHP/MySQL in part because that's what I'm most familiar with, but also because the school is an MS shop and they haven't had any experience with open source. Given those parameters, we never even touched on some of the excellent suggestions made by others re: availability, failover, scalability, 'real' OOP, anything more than basic security...

    I really liked the idea of hooking up the students with a CS class. I also am gravitating towards the less-code approach, though the students have already said that they wanted more code and less replication of what they had experienced in other business-oriented courses.

    And as a personal note to those questioning the course itself: I'm adjunct, defined as "s/he who gets paid a token sum without benefits to teach a predefined course in an established program." It hath been determined that the business students will learn web application programming, therefore they shalt learn web application programming, and that's the gig.

    Anyway, so here's where I'm leaning. Structure the course so that 30 managers (the students) are managing one developer (me). Each lecture is wrapped around understanding a specific aspect of the development process. Their assignments are built around learning enough tech to understand what is going on, being able to demonstrate an understanding of the complexities of the process, and the how code and business practices impact one another.

    Again, thanks everyone for participating. Any more thoughts?