The Montoya Herald — ChristianMontoya.com
I'm getting this out of the way tonight because I've been swamped lately with my own schoolwork which is bound to take up my entire weekend.
Teaching PHP lately hasn't been quite as fun as I had hoped. I have too many students in my section who are completely new to programming and I can't seem to get them to really put in the time and effort outside of class to prepare themselves for the things I cover in section. It's really too fast for them anyway… we raced through if-else constructs and loops today and I was ready to pull out my hair with the pressure of covering all the material I had and actually making sure nobody was left behind. I don't think it went very well.
I've been thinking that it might be better if for this course they made the introductory computer science course (CS 100) a requirement. There just isn't enough time to give people a good introduction to XHTML and CSS and Design and PHP and also teach them basic programming skills too. If people can pick up PHP rather easily with a few months of experience in a language like Java, then I say make them learn some Java first. Unfortunately, I don't know how convenient this would be for many of the students who come to INFO/CS 130 looking for an introduction to web design because their major or job recommends it. As far as they are concerned, learning how to make random number generators and GUI based apps in Java just isn't all that useful (and failing the course because they have to compete with cutthroat engineers isn't helpful either). In the end, an ideal solution would be to have two introductory web programming courses, one for advanced engineering/information science students who can handle advanced topics in XHTML, CSS, and PHP, and another for the rest of the crowd who need a lot of in-depth introduction and hand-holding with basic programming concepts. This would effectively results in an INFO/CS 130 with more strict prerequisites and an INFO 099 for total beginners. Or, they could restructure the first 2 levels of web programming, and make INFO/CS 130 even less programming intensive, and make INFO/CS 230 a course that assume students already know the programming they do in CS 100 (which any student should have taken before INFO/CS 230).
These decisions are hard to make though; there are no perfect solutions and Cornell is restructuring the courses every year to try and make things work for students. Besides, Cornell is a theory-based school; a practical program in web design really doesn't fit here. I would love to teach web design courses myself someday, and really develop my own curriculum for XHTML/CSS/PHP (and onward into MySQL and more advanced programming topics), but that's just me going back to my dreams of being a professor. There's a long road for me between here and there… for now I have to worry about making sure that a couple handfuls of students learn PHP very well.
what has PHP to do with webdesign? It would be better to teach linux, apache and PHP as a seperate module.
HTML, CSS and Javascript are a much better fit.
Johan: I'm sorry, I should have made it more clear. The full title of the course is CS/INFO 130: Intro to Web Design and Programming. As for Javascript, it's just about useless to the students taking this course so we try to avoid it.
I totally agree that some an introduction to programming course should be taken before trying to tackle HTML, CSS, and PHP all at once. I got my intro Java course freshman year of high school (required for everyone), and picked up PHP in about 2 weeks after that. It's a lot easier to focus on learning web design when you aren't struggling with for loops or if statements.
Now, MySQL is another adventure entirely
I think My colleague (webmaster) learned Java also first. I guess programming techniques are a prequisite for your students. You should tell your assistant colleagues
cheers
Johan
Yeah, their latest project is a slot machine in PHP. Maybe I should have mentioned random numbers in section… oh well. I hope they survive!!!
Web Design combined with PHP is asking too much. (You've got to crawl before you can walk).
As a fellow TA for the class, I totally agree that it moves too fast for many students. CS130 should be just about design & introductory web concepts—more of a survey course than it is.
It should definitely cover HTML+CSS then move into design, usability and IA. Right now, none of these topics are given enough time in the course. Problem is that just covering these wouldn't be enough—I'm not sure what else should be covered though.
PHP would be moved to CS230, which has a CS100 prereq. if I'm not mistaken. Especially after doing a C-like language like Java, PHP is not that hard to pick up. Actually, I would say that 230 should drop a lot of the database material they talk about (normalization & ER diagrams) while including more PHP & other web technologies (XML, AJAX, JS, etc).
CS230 is the last in the 'Web Design' series of classes, so I think it would be suited for these 'advanced' technologies. Most of the PHP in 230 is covered in 130 and most of the database material is covered with more depth in CS330 ("Web Applications"). The only interesting parts of 230 are the tiny pieces of JS, XML & AJAX that are covered, which right now are given at most a lecture each.
@dean: actually, the only prereq for 230 is "130 or equivalent knowledge".
We're definitely starting to get into a lot of the 230 material right now and a lot of people are being left in the dust. I think you're both right that the course should cover a bit less PHP, etc. It was originally intended to be an introduction to Information Science, but was transformed to an intro to web design somewhere over the years. Making it more of a survey would probably be the best route to go at this point.