Possible Duplicate:
How would you teach web development?
I'm a graduate student at a university who's interested in teaching an introductory course in web development for the computer science curriculum. I talk with students everyday who are frustrated about learning the mechanics of Nondeterministic Finite Automata while employers want them to know Hot Skill X, and the classical answer of "you're smart, figure it out" seems antiquated.
Nevertheless, I wonder how to arrange a curriculum and structure. There's just so much to know in the web development game, and there are constantly new technologies emerging/changing that it's very challenging for a student to keep up.
Starting with HTML/CSS/JavaScript/Server-Side language of choice (PHP/Perl/Python) seems to be the obvious choice, but I talked with a developer recently who said that these are like the assembly languages of the web, and I tend to agree. Modern CS curriculums start with a higher level abstraction before moving into assembly to focus on high-level problem solving instead of syntax minutiae...does that imply starting with a web framework would be better?
Also, what about stuff like Client/Server architecture? HTTP? TCP/IP? DNS? Web Server technology (Apache/IIS)? MIME Types?
Here's a list of topics. What's important to cover in an 8 week course?
- HTML (DOM)/JavaScript/CSS
- AJAX (should this focus around a JS framework like jQuery/script.aculo.us/Dojo, etc?)
- Web Services/SOA (REST/SOAP/JSON)
- Comet
- RIA (Flex/Silverlight/JavaFX)
- CMS (Joomla/Drupal/Django/WordPress)
- XML/XPath/XQuery/XSLT
- RSS/Web 2.0 gadgets
- Web Security (SQL injection/SSL/site permissions config/user quthentication)
- Web 3.0 -- Ontologies and Semantic Web
What's important in a list like this? Are there others that I've missed?
What makes web development different than distributed systems development? Stand alone application development? What are common tools/procedures/paradigms?