Learn How to Create Web Applications
stanford.edu
stanford.edu
The class has been split, and this is now just a Web Programming class. I helped design project 1 and project 7 (my screenshots are still being used :-)! Highly recommended for those who want a nice intro to modern web programming.
It seems to cover a lot of bases, too: a student's HTML must validate, she has to get her feet wet with at least a little bit of JS and Ruby, she'll have to open up Photoshop at least once--a pretty well-rounded picture of a project lifecycle.
It might be neat to add an additional project onto the end on deployment, so students would have to muck around on a command line a little bit, configure Apache, etc.
Hell, I even did it for ADO.NET. ADO.NET is not that hard to use, but a surprising number of developers get a lot of the details wrong, such as when to open and close a connection (i.e. NOT once for every query) and when to dispose objects (at least at some point in the object's lifetime, please!). So, I wrote an ADO.NET wrapper that handles all of that stuff, providing an incredibly thin, simplistic interface. It's been very useful to me, and hopefully other people can find it useful, http://sqlsiphon.codeplex.com
I will add however that as security gets baked into frameworks, students are not at least pickng up bad habbits.
Wow this is hard to write on an iPhone :-)
This course uses Rails, so I imagine you get a good overview of how you do stuff....but that's just how Rails says you should.
Does anyone have framework agnostic material that talks on a higher level about how we should be doing things?
http://philip.greenspun.com/seia/
I am working through this book right now, very slowly since I have a lot of other stuff going on right now. Links to my source code so far, as well as my running website-in-progress, are below.
http://github.com/ericlavigne/seia
http://lavigne-seia.heroku.com/
I'm still at the part of the book where it provides guidelines for selecting tools (I chose Sinatra, Sequel, and Heroku), and exercises to become more comfortable with those tools. The next chapter is about planning.
I want to complete a project using Common Lisp. And I'm using Hunchentoot as a webserver, Postgresql as a database and the Postmodern library to interact with it.
The biggest hurdle with Common Lisp is configuring the system correctly because there's no out of the box solution. Although there's a lot of library -- http://www.cliki.net is a great resource -- figuring out how to use asdf-install is a bit painful. I took me almost four days to figure out how to launch Hunchentoot as a daemon at startup under FreeBSD (http://github.com/l0stman/Hunchentoot-daemon). In my case, the lisp server itself lays behind nginx as a proxy. The latter serves the static pages too. Here's nginx's configuration:
server {
listen 80;
server_name localhost;
location / {
root /usr/local/www/nginx;
# Use absract URL for static pages
try_files $uri.html $uri/index.html $uri $uri.txt @fallback;
}
location @fallback {
return 404;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
# Tunnel all requests where the URI path begins with "/ht"
# to a Hunchentoot server listening on 127.0.0.1:8080
#
location /ht/ {
rewrite ^/ht/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /ht;
proxy_read_timeout 300;
}
}This is a problem that I have with the current state of "software developer" programs at most of today's universities, be they Computer Science or Software Engineering degrees. They give the student the impression that they actually know the subject by the time they graduate when they've really only taught the easiest, smallest part--the programming, and usually rather poorly.
Most graduating computer science students are going to go into a software development position, probably web development, so it is good that Stanford is at least introducing students to the, erhm, "unique" challenges that crop up in web dev. But they're missing some of the most important lessons, like what a project life cycle looks like, why the principles of security must be the 1st consideration, not the last (how many times do people make a thumbnail project with no auth or permission mgmt and then graft it in after?), how to design a non-trivial database, how to make pages that look somewhat decent (and no, it doesn't take an artist, you can easily do a site survey and just ape the current trends, something any copy-pasta programmer should be able to do), how to approach a project as more than just a seat-of-the-pants hacker. Some programs touch on all of this stuff, but they never inculcate them as essential elements, they are all presented as tertiary to programming.
I would also argue that being able to design workflows is very important. If your app is simple to use and well thought out it's going to be much more sticky...
The class already uses Agile Web Development with Rails, which is fantastic.
On another note, does stanford not record the lectures? I would really love to see the videos.