views:

202

answers:

8

I am in the process of designing a Web Services course for students in an Information Technology program. Some students stop after getting a two-year associates degree, but other students in the program go on to a four-year bachelor's degree. This course would be for students going on to the four-year degree.

My initial thoughts for the course would be that it would cover:

  • Some simple database concepts, with enough command line practice to allow students to create simple relational database backends.
  • Enough PHP so students can create a web-interface that allows user to enter new data into the database backend, edit data in the database, and display fixed views of the database.
  • Basic security practices for PHP and web services in general.
  • Writing a barebones content management system using PHP and a database backend.
  • Learning about and using existing content management software such as Zope/Plone or Drupal.
  • Discuss feasibility of using existing content management software to provide ADA section 508 compliance for web pages. Contrast this with coming up with a simple framework to make ADA compliant pages using PHP.

Our semesters are 16 weeks long. Are there other topics that you cover instead of the ones listed? If you had a chance to design such a course, what would be the most pragmatic things to cover?

Edit: Based on the initial response, it is clear that the title of my question is misleading. It should be web programming instead of web services. The students taking this course will have already taken at least one programming course. The students would have all taken a course in Python. The Python course they take includes writing an XML parser that produces HTML with CSS. This course would also cover HTML, CSS, and JavaScript. XML would also be used (parsing XML using PHP, and possibly using converting XML into PHP code). Some of the students will also have taken an introductory course in Java, but that course will not cover JSP.

+3  A: 

You're probably going to need to talk about Xml. May want to even talk about XSDs... but that depends on what you want to get into in the course. I don't know about web services with PHP, but if it were .Net you would want to talk about serialization/deserialization.

Max Schmeling
Max,The students taking this course would have some experience with writing an XML parser. Would you go into things like RSS feeds? Vern
Vern Takebayashi
Well depending on what you want them to learn in the course... RSS feeds are a big thing these days, but it depends on the course. The experience writing an XML parser is probably enough if you ask me.
Max Schmeling
A: 

I would teach (even briefly) the layers model. If students don't fundamentally understand it, somewhere down the road it will come back to haunt them. And yes, I have met students who went through a 4 year CS degree without understanding the network layer model or the OS layer model.

Uri
+6  A: 

First of all, what do you understand by "web service"? As far as I know, the standard definition of a web service is that it's a "software system to support machine-to-machine interaction over a network". If it really is what you had in mind, well then (1) those parts about CMS doesn't apply and (2) there should definitely be some previous knowledge of web programming or something like that. Actually very little of the course description seems applicable for web services, from the description it reads like a generic web-development course.

Anyway, as that is probably not what you had in mind, the thing is, you cannot create "a web-interface" in PHP - you need HTML, CSS, JavaScript, etc. for that - will that be included in the course?

Regarding the last section about 508 - to be honest, it is a relatively minor part of everyday work in web development and it actually has nothing at all to do with PHP or programming, or server-side web development and more with what the client side code is like and how content is prepared.

Nouveau
Noveau,HTML,CSS, and JavaScript would be part of the course. I should have said that this is a web programming course (not web services). In terms of ADA 508, I may be obligated as our college is a government agency.Vern
Vern Takebayashi
A: 

Why exactly are you teaching PHP as a CS course? Especially considering the web services topic.

Once these students graduate, 98% of their webservice work is going to be either Java, or C#.

Or perhaps you mean something different than REST, XML-RPC or SOAP for webservices?

FlySwat
Jonathan,You are correct in your comment to me above. What I should have said is that this is a web programming course. Thanks for pointing this out.Vern
Vern Takebayashi
A: 

Talking about the Sun's standard is a nice idea and maybe the oldest way to use WS in Java, the Apache Axi. I believe that in the java session you could have a speech for jax-ws and jax-b. Talk about the WS-* directions and how REST is changing our vision about service consumers and providers.

paulosuzart
A: 

Some sort of programming language should be a pre-req to the course that way students can test what they are learning. It would be too much to have to teach a language. You, as the teacher, will be able to verify that they are in fact creating a service.

Maybe create some databases that the students can connect to and create services from.

Should probably get into REST vs nonREST, formats (xml, json, csv...)

Galen
A: 

I would say definitely devote a whole unit to security and common attacks. Security needs to be in the forefront of the programmer's mind, and not thrown in as an afterthought.

Tim Sally
A: 

Love it or hate it, SOAP is here to stay and extends beyond specific languages like java, php, etc... Web programming is no longer custom coded from the ground up. Teaching REST and SOAP is just like teaching people to use the standard template library in a C++ class. Reuse is paramount.

I would avoid writing a CMS - its usually the wrong choice for most web projects and if we have learned anything from twitter its that shoving a cms where it doesn't belong is bad juju. Plus its boring. Have them do a mashup competition instead. Foster creativity and entrepreneurship while also applying all the core concepts.

If there is time, delve into web tier architecture. I am always dismayed by the number of candidates I interview who don't understand how things fit together and how to scale. Understanding redundancy is impressive to any potential employer, especially if your students will move to corporate jobs.