Resources for getting started with web development? [closed] - language-agnostic

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Let's say I woke up today and wanted to create a clone of StackOverflow.com, and reap the financial windfall of millions $0.02 ad clicks. Where do I start?
My understanding of web technologies are:
HTML is what is ultimately displayed
CSS is a mechanism for making HTML look pleasing
ASP.NET lets you add functionality using .NET(?)
JavaScript does stuff
AJAX does asyncronous stuff
... and the list goes on!
To write a good website to I just need to buy seven books and read them all? Are Web 2.0 sites really the synergy of all these technologies?
Where does someone go to get started down the path to creating professional-looking web sites, and what steps are there along the way.

While I have built my knowledge largely based on using the internet to search out what I want to know (w3schools.com helped a lot, as did A List Apart), a few good books have helped me along the way, though they have been platform/language-specific, so I'll avoid mentioning them unless someone is curious. For me, at least, having a book open so that I don't have to resize windows or switch between them is very valuable.
The first part of your list is ok, but the last few items need tweaking. ASP.NET adds server-side functionality (for the most part) to your application. This lives outside of the browser and is thus quite powerful and easily shared with a variety of end-users.
The problem (some say) with server-side processing is that your application must make a new HTTP request when you ask for an action to be performed. So if you click on a link to a page that yields a new set of data, you don't get instant results. The page reloads, or loads a separate page.
Javascript solves this to a degree--it allows you to respond to user input instantaneously. Do you want to display the sum of two numbers when the user clicks a button? You can do it with Javascript.
The problem with Javascript is that it can't talk directly to databases, or explore your server's file system, or other stuff like that. It lives in the browser--period.
AJAX bridges the gap between your user's browser and your server. With AJAX, Javascript makes the HTTP request without refreshing your page or loading a new one. Javascript talks to a server-side script (not necessarily ASP, either--works with PHP, Rails, Coldfusion, etc.) and sends and receives information. And because Javascript isn't dependent on page loads, a quick, snappy AJAX script can almost give the feeling of a common desktop application, in which you don't have to wait for HTTP requests when performing simple actions on your application's data.

I think that this series of Opera Articles will give you a good idea of web standards and basic concepts of web development.
2014 update: the Opera docs were relocated in 2012 to this section of webplatform.org:
http://docs.webplatform.org/wiki/Main_Page

Ian's answer has a lot of weight. You could buy all those books and read them all and know nothing about web development. What you really need to do is start with something that is not nearly as big as Stack Overflow. Start with your personal site. Read some web dev/css articles on a list apart. Learn about doctypes and why to use them. Add some css and change the colors around. Go over to quirksmode and peruse the site. Add some js. Follow some links on Crockfords site. You will probably stumble across his awesome video lectures, which you should watch. Then after that go back to all the js that you wrote and rewrite it. Then pick a server side language that you want to learn. Python is pretty easy, but it really doesn't matter what you pick. Then come back and integrate all those together in your site. At this point you will at least be getting started with web development and will have worked with several different technologies.
EDIT: I forgot to mention. READ BOOKS.
Many developers that I have worked with in the past have gotten through their career without really advancing after a certain point. I could be totally wrong, but I attribute it to not reading enough books and relying on using their same bad code over and over.

You could go out and buy a bunch of books and start reading them and quickly get overwhelmed in the seemingly massive learning curve it takes to go from nowhere, which is where it appears you are, to a rich internet entrepreneur, which is where you want to be.
Alternatively, and what I would suggest is, you could define a problem you want to solve, and then go about finding the solution to that problem. Start with something small. "I have a problem: I don't have a web site about myself.". Define what you need to do to solve that problem, learn the basics, and do it. Then, define a new problem, which probably relies on the solution to the first problem, find what you need to do, and do it.
This is how all technology professionals evolve. My first website was a personal site with nothing but text. Then I added some jokes and some movie quotes. Then I got tired of man-handling all the updates to I learned how to put them into a database and retrieve them from the database for display. It goes on and on.
Call me when you've got more money from your financial windfall than you know what to do with.

If you really just want to jump in with both feet, I would suggest looking at ColdFusion from Adobe. The developer edition is free and runs on windows, os x and linux. The documentation is authoritative and extensive, there is a very active developer community and only a few books you might want to dig into. The definitive guide is a series of books that can be found on Amazon
The nice thing about ColdFusion is that you can use it as a stepping stone to other languages and remain productive along the way. You can even mix it together with Java since it is itself written in java. There are also lots of goodies built in that you would have to scour the web for or pay more for in other languages. Things like full text indexing, graphing, server monitoring, ajax based controls, flash/flex integration, asynch os calls, etc.
You even have the choice of building object oriented code or procedural code, although some people would not count that as a benefit. Those people rarely agree on which style should win, though.
Cheers!

I think sitepoint is the best resource for learning best practices in web development. They have great articles, good references, and probably one of the best forums. However the people there can be a bit grumpy. ;)
If you are a real nerd, reading the specs for HTML 5 and CSS is also a good way to learn.

I'm with Ian on this one. Reading books is all well and good, but nothing beats getting stuck in. I actually started with a Dummies Guide to ASP (that'd be "classic" ASP), back in 1999.
If I was going to start from scratch today I'd be looking at something that covered a full stack solution, whether Apache/PHP/MySQL, RoR or whatever.
ATM I have no experience of Rails, but it might be a pretty good place to start as it includes a lot of stuff that you'd have to figure out early on otherwise (integration with a Scriptaculous, a JS framework) - you can always learn what going on under the hood at a later date.
.NET is always an option, and if you're comfortable with Visual Studio it may be the way to go, but it's not the easiest thing to pick up otherwise.
If you know a bit of HTML but are basically new to server-side programming you might look at ColdFusion. It's actually extremely powerful and like Rails includes lots of "out of the box" benefits. There's a Swiss company called Railo who are currently in the process of releasing an Open Source ColdFusion engine that is affiliated with JBoss.
Last and not least - don't forget databases! Sooner or later you'll need to get to grips with some pretty serious SQL...

CFML (aka "ColdFusion" even though that's really an Adobe product, not the language) is definitely easy to learn, and if you want FOSS for CFML, in addition to Railo you can use Open BlueDragon which is a GPL CFML engine.

Designing with Web Standards is a great first read!
http://www.zeldman.com/dwws/

I would recommend this book:
http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-528/dp/0735623341/ref=sr_1_1?ie=UTF8&s=books&qid=1218830714&sr=8-1
I have just read it to take the exam, and although I knew the web theory part, I found it to be of great value.
This of course is a ASP.NET specific book, but that is what I would recommend learning anyways.
After you learn all the ASP.NET stuff, I would suggest reading up on JQuery.
Happy coding :)

Related

How to choose the right web application framework?

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Since we are ambitiously aiming to be big, scalability is important, and so are globalization features. Since we are starting out without funding, price/performance and cost of licences/hardware is important. We definitely want to bring AJAX well present in the web interface. But apart from these, there's no further criteria I can come up with.
I'm most experienced with C#/ASP.net, PHP and Java, in that order, but don't turn down other languages (Ruby, Python, Scala, etc.).
How can we determine from the jungle of frameworks the one that suits best our goal?
What other questions should we be asking ourselves?
Reference material: articles, book recommendations, websites, etc.?
For me, the most important things to consider were:
Fantastic lead developers who I trust to keep working on the project.
Googling a question brings a lot of good answers.
Most importantly, I have to like the way the code flows.
Edit: Also they have to be anal about coding standards. If there is inconsistency, I get very annoyed.
Those 3 points brought me to Symfony. It is always using the latest cutting edge features of the latest PHP version. Symfony 2.0 is using namespaces before any other framework.
Two of your points were:
i18n - there is great support for it (helps that the company behind it is French, so i18n is a first class citizen).
Scales - Yahoo Answers and Vimeo use Symfony and contribute back code. If those guys can scale Symfony to 100 million users, you can too :)
It all depends on the type of project you will be developing.
Are you building a web application or a heavy content website or something else?
You also mix up programming languages with frameworks. The frameworks for PHP that I know are: CakePHP, CodeIgnitor, Zend and Symfony. For an out-of-the-box heavy content website I would suggest Drupal or Expression Engine.
It seems you won't be developing yourself. In that case I would determine the cost and availability of programmers and how widely the framework is supported and by who it is backed. The Zend framework is backed by the guys behind PHP, while CodeIgnitor is backed by the guys behind Expression Engine. Drupal has professional support packages,...
IMHO, for something that will have a lot of users, go for a compiled language.
If you don't try it, you will not know. So, I'd say do a small project in each of the frameworks you are seriously thinking about. I would prepare myself to do a lot of testing if it's something I'll be maintaining for some years. It's better to start off on the right foor than to get half way through a project only to realize you took the wrong path. There may be some requirements that end your search. For example, your servers' OS, a framework feature, or scalability. If you lay out your software plans and requirements, you probably will have very little left to choose from - unless your project really is quite generic or simple.

Tips to get started with webdevelopment

I am very curious about what you think is the best approach for people that want to start webdevelopment. I'm now talking about people that finished their education and so want to start from scratch.
I still have questions like:
Where do you start?
What software gets involved in webdevelopment?
What tools / setup would you recommend?
Offcourse i'm interested to hear alot more then only the answers to those three questions.
I am not writing this to get a load of people react on my post, i am trully interested in knowing how much work and money it will cost a webdeveloper when starting from scratch.
I hope to get a clear view on how to approach and to maybe hear some best practices.
Well one thing's for sure, education isn't finished! There's a whole lot to learn, and the more we learn the more we seem to need to learn.
If you're really starting from having no programming background whatsoever then I think you'd be advised to take a staged approach. For example:
1). A web page with a few different text formats and pictures and colours. Here you're just learning HTML. For that any browser and a notepad editor would do, but probably a tool such as Eclipse that gives some HTML editing capability would help.
2). More adaptive HTML - stylesheets that let you change appearance without changing all the html. So that's CSS.
3). Using the above, improve your designs. There are loads of formatting tricks good web sites use and you'll need to learn those.
Note that by now we've done a lot of study and we have not actually written any programs!
4). Dynamic web pages. Now we move to the programming side, rather than just writing some HTML files write a program that delivers the HTML and in some way changes the content. Starting with something really simple such as including "today's date is ..." on the page. For that You would need to pick a server development technology such as Ruby/Rails or PHP or Java/JSP ... You'll get a lot of different advise about "best" for this.
5). Now you can start to work on accepting input from the user and doing something with it so that useful work gets done. Things such as databases start to become important.
There's a whole load more after that, JavaScript and so on. An experienced programmer can pick up this kind of stuff quite quickly, if you've never done any programming at all then you will need to be prepared to take a while before you can get to the level you probably target. I think the key is to acknowledge that a great commercial web site reflects a lot of collective wisdom and skill picked up over many years, and probably is the result of a multi-disciplinary team working together. For one person to match that is a big ask. For one person to produce something nice and useful is more practical, but still does need a lot of different skills. It's quite reasonable to specilaise in a subset of the skills. For example, good visual designers write little or no code but are highly valuable.
you need:
a browser, eg. FireFox, Internet Explorer. A webdeveloper toolbar might also be useful.
a webserver, eg. Apache, Tomcat, IIS
a programming environment, eg. Php or ASP.NET
a development tool, eg. Notepad, Notepad++, Visual Studio .NET, Eclipse
most of the times a database, eg. SQL Server, mySQL
I'd say it depends what you want them to master: the technologies only (up to which skill level ?) or the whole software engineering behind a web project
A sample and fast technologies learning tree could be:
1) HTML
2) CSS
3) HTTP
4) Server side programming (PHP ?): programming concepts, interacting with HTML/CSS, then PHP API
5) Databases (start simply with MySQL for instance) + SQL (CRUD with Joins, Subselect, Indexes, Views and Transactions)
6) Client side programming (JavaScript first then Ajax)
7) A web framework (ZEND ? cake ?) and a good IDE (lots of...)
Full-time learning those technologies requires at least 1.5 year , based on the experience I have with my students and people must be trained mainly on concrete projects.
Then people should learn software engineering (cf link text) covering at least
- software requirements
- software design
- software construction
- software testing
I think people can have useful experience in this software engineering tree in 1 year and can (should) combine learning technologies with learning software engineering.
For training someone from scratch (technologies + software engineering) I'd say a least 2 years if working on at least three 6-month projects
This answer is Microsoft specific.
For starters you'll need an editor, a (optional) database and a few starting points.
Microsoft supplies most of these for free: you can download the Visual Studio Webdeveloper 2008 Express Edition for free, this includes most of the stuff you'll need.
If you plan on developing database driven websites, and who isn't, you might want to use the free SQL Server 2008 Express Edition
When you have the tools setup it's time to download some samples and see see how they work. Again Microsoft supplies some for free. You can check out tutorials and samples at their Asp.Net site.
When you are ready for some more advanced stuff, check out ASP.NET MVC, again at Microsoft.
With these tools and examples you should be able to get started.
I just want to add that you will most likely also need Photoshop or other tool to create the graphics for your web sites.
In spite of java/.net/php,the HTML,CSS,JavaScript are the basic web development toolkit.
Get a job as a junior developer that will put you on a project that is developing a web application. I personally think it should involve one of the two most established platforms, Java or .Net. I know some will disagree, but these are good foundations to branch into other tech platforms later.
Make sure you open an IDE (e.g. Visual Studio or Eclipse) everyday and code something. If not, find a new job immediately.
Read religiously at night. Start with "Code Complete", then move on to other books.
Learn the fundamental technologies of the World Wide Web:
HTTP
HTML
CSS
JavaScript
DNS, URL's
Good luck and happy travels!!
you need:
a google chrome . This provide you some advantage like inspect option. A webdeveloper toolbar might also be useful.
2. Html, Css, JavaScript are the basic language that you should be know
a programming environment, eg. Php or ASP.NET is needed for storing data and making login type page
a Visual Code Studio is needed for coding. This provide you emmet facilities that suggest you while you are coding

Becoming a Web Designer: CMS, or by hand [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I'm biting the bullet and becoming a Web Designer, there are just too many good opportunities out there. I'm a professional SW engineer, so I want approach this correctly. So far I'm fairly good at HTML/CSS/Javascript all completely by hand. I'm also good with jQuery and Django with mySql. I've made some cool sites but it takes TOO LONG if I want to do this for many sites.
Here is my question: Do I learn a CMS really well and use it (and be stuck with it) or do I spend that time developing some reusable HTML/CSS templates and do everything by hand?
So far my CMS experience is that there is overhead setting it up, and it you want a lot of customization you're doing CSS anyway.
If I go the CMS route -- which one?
What is the "best method" for Web Dev? I intend on creating a very diverse array of sites as well...
Thanks!!!
The future of web publishing is clearly in Content Management Systems for everything larger than a small personal site. People are not buying sites anymore for which they have to pay a professional every time a paragraph needs changing.
Make sure you know your HTML, CSS, and Javascript, but get familiar with one or more CMS's on the market, preferably one of the big ones that get you a big community, and the advantage of a widely known standard that it is easy to find people for. Learn how to customize it, how to build templates for it quickly and effectively.
One of the biggest flagships in enterprise-level CMS'es is certainly Drupal. From personal experience, I also know Joomla, but I'm not sure whether I'd recommend it to get started with - it tends to be a bit dirty on the code side sometimes. WordPress is successfully used as a CMS by many.
Look around on SO what systems people are happy with; if you want to get to know the concept of a certain CMS check out openSourceCMS who provide live demos of many CMS'es. There are also very robust commercial products out there that are better maintained than the open source projects.
There isn't a single correct answer for this IMHO. Basically, it comes down to:
Use the best tool for the job.
The best thing you can do for yourself is learn about what tools are available, and what they are capable of. Try to match each one to a scenario you think might be particularly suitable for a given solution.
You will find that if you invest a lot of time in learning something like Python / Django you will be able to create just about any site you can imagine, but then you might find that if all your client requires is a simple, mostly static company info site that something like Drupal might be more appropriate.
The baseline technologies like (X)HTML, JavaScript, CSS and SQL are used across all of them, so knowing these tools well in a generic context is also extremely valuable.
A truly well-equipped toolbelt is invaluable.
If you need a little number of pages, without any dynamics, render your site with your favorite language and numerous templates to html files and don't deal with anything but www-server.
Once you need a rather big site - use a tool which you already know well. (I using django and happy with it).
When a site is really huge - make your own CMS. But at first have a practice with tool like django. Until you know how it works - try not to deal with big projects at all.
I can advice to use statically typed language for anything, but i'm sure that you know benefits and caveats.
Python and Django is suitable almost for anything.
I am a Web Designer and recently I began using Wordpress. I've found it great so far, once I have my site ready in xHTML and CSS it only takes me a couple of hours to make the content editable.
I have also created about 3-5 themes my self, I've found creating Child Themes and using Themes like Twenty Ten as a parent, so I can use their functions etc.
I would highly suggest that you look into wordpress, especially if you want to speed up the process for creating websites.
Those two choices aren't mutually exclusive.
You should build reusable code regardless of which option you choose. With a CMS, there will already have some design decisions made for you of course, but I find myself building APIs and interfaces using Drupal all the time. In fact it's a measurement of quality.
There are also some frameworks that you might like too that will let you custom build and increase productivity. See The Zend PHP framework, Ruby on Rails, Kohana, Nanoc and the 960 CSS/HTML grid. You could say they are the best of both worlds!
If you are going to implement web sites for the general public, I'll go with Joomla. I managed to implement 9 websites in one year with this CMS. In my opinion, it is important to know PHP, HTML, CSS and Javascript pretty well before using Joomla (which you seem to know), or any other open source CMS for that matter. This way, you will be able to customize all aspects of the website (both frontend and backend) with ease. For example, when I don't find a plugin which does what I need, I just create the plugin myself.
However, if your aim is more on Web Applications rather than web sites, I'd go with ASP.NET and ExtJS, which seems to be today's trend for web applications since you will be combining the power of ASP.NET with the power of AJAX (ExtJs).
IMO, Python is more targeted for very large and complex projects (look at Google or Amazon).

How would you teach web development?

I am the lead instructor of web & internet related courses on a private post high-school institution. My current classes include introductions to HTTP, TCP/IP, (X)HTML/CSS/JavaScript and generic SQL. Next year we will deal mostly with PHP / Java. What, in your opinion, are the most important aspects of web development in contrast and relation to traditional development and what should be the main focus of my lectures?
Of course there is a curriculum I will follow but I would really like to enhance it with everything there is time for, from hypes and semantics to oldschool hardcore scripting.
Keep in mind that I am fortunate enough to deal with highly talented and moderately motivated individuals.
Most important aspects of web development:
Where is this code running? (Client vs Server programming - as many have said)
Who is going to use this? (Know your audience - why are they on your site/app)
How to play nice (copyright, standards, borrowing ideas vs stealing stuff)
How to be resourceful (code libraries, google search and stackoverflow)
Main Focus of lectures
I am a strong believer in contextual learning. Let them choose a project with boundaries and guidelines that will employ the concepts you want to get across. One can spend all day learning syntax and concepts, but real learning is done when you are trying to solve a problem. They will also have more fun.
Summary
Lecture on the How (XHTML,CSS, JS, etc) but only in the context of Who, What and Why.
In my opinion, the most important thing is to teach the difference between server and client programming, and when you would use one over the other. I am so surprised at the number of new graduates that don't understand the difference.
IMHO, the most difficult concept in Web development is that of state and how to maintain it.
If I were designing a Web programming course I think I would get the students to design a simple application framework that attempted to address transparent state maintenance. Dividing them into groups, you could have them take different approaches (server-side, client-side, database supported etc.) approaches to this. And at the end of it I believe that they would have learned a lot more about Web architectures than if you had focussed on producing an actual application.
For front-end web development ((X)HTML/CSS/JavaScript), try the Opera Web Standards Curriculum which:
takes students from complete beginner
to having a solid grounding in
standards-based Web design, including
HTML, CSS, and JavaScript development.
I believe a lot in inspiration. As a new web developer I found it really difficult to make my websites usable, appealing, and well coded. I found inspiration in outside resources such as Nettuts and Smashing Magazine. These websites really opened my mind to all of the features I really could learn and use in my designs/coding.
Well if you are asking for opinion....
Please teach them:
self documenting code.
the difference between client and server
data checking
security
If they have a good understanding of the programming language (which it sounds like they will get with your curriculum) the things that I have listed will be a great improvement.
I also believe that web development can only be taught after first learning a little bit about software engineering. I think agile processes is the best route for teaching students software engineering. It's lightweight and not quite as document driven.
After that I would teach them the basics of client server programming, the http protocol and some basic web programming (PHP and javascript would be sufficient). If there is enough time I would show them the basics of Java EE programming and the differences between that and PHP.
Also cover some of the more advanced materials such as MVC for the web (using JSF) and javascript libraries (JQuery). I would also teach them data access objects and persistent objects.
For my senior research this year I came up with some materials for an upper level college course that requires web programming, web design, and software engineering background. You may look at the basic materials here to get a basic idea of what I thought of a course for an advanced web application development course. I know this may be out of your scope, but it might be a start.
Keep in mind that web programming is a mess and it is your job to provide not just light at the end of the tunnel, but the tunnel itself. I would expand on AaronS's answer:
The difference between client and server.
Web applications run over a network, with all that implies.
There is more than one way to do it. Squared.
In the end you will have to choose what not to teach to actually get somewhere.
If you have a group of motivated people then I will suggest to focus on creating a full web application from scratch, I mean, from requirements elicitation itself.
You could start with a brainstorming session where you get some of your students to take the role of the clients from different perspectives (you will need to came up with the base problem itself) and then another group of students who try to get the "clients" group to express their needs and propose solutions to those problems using via a web application. This will help them to learn one of the biggest problems of development in general which is the interaction with clients and how to get the most information out of them overcoming the usual communication problems. Actually if you can get other non-technical people to act as the clients it will be even better.
Then you can introduce then to a methodology like extreme programming or any other you like. I would suggest an agile one because it will provide faster results and won't get boring that fast, besides, the market appears to be shifting in favor of them.
Now, regarding web development itself, it is really important to get people to understand the need for web standards and how wrong things can go when they are not followed (IE6)
After all this is clear, it will be time for them to realize that in web development most of the time you just have to deal with the differences in platforms in which their applications will be displayed and teach them actual techniques to do so like unobtrusive javascript and progressive enhancement.
Regarding the server side of the equation, I believe it is important to enforce the use of patterns (MVC is a must), code re-use, and all the usual development practices. And be sure they understand that HTTP itself is a stateless protocol and how it is important to handle cookies and sessions in a responsible fashion, here it is important to make sure they understand the differences between the server and the client side.
Also, covering the OWASP top 10 (at least) is a must, the last version is available at: http://www.owasp.org/index.php/Top_10_2007
Some links:
http://www.quirksmode.org/blog/archives/2005/06/three_javascrip_1.html
http://dowebsitesneedtolookexactlythesameineverybrowser.com/
http://forabeautifulweb.com/blog
http://www.alistapart.com/
http://www.owasp.org/index.php/Top_10_2007
Teaching web development (like GUI builder in the old age) has the risk of focusing too much on the front-end and not enough on the back-end. It is too easy to fall into the trap of getting the students to think too much about superficial visual issues (e.g., how to align these two things) rather than core things (how to we effectively compute, calculate, store, etc.).
In addition, many web-development languages are not hallmarks of good programming practices since they tend to be on the dirtier scripting side.
These two factors together, to me, are why languages like PHP often get a bad rep.
If you were teaching people who were actually going to be practicing developers, I would focus separately on the model and on the view, and show how to tie them. But in a high school environment, it's possible that the parents just want their kids to demonstrate some publicly visible stuff for their college applications.
If they are truly talented and motivated, teach them real programming with some web manifestations (e.g., use Java servlets), and leave all the scripting for them to learn in their spare time. A good teacher is invaluable for building good engineering skills, so use your time where it matters.
I honestly do not believe you can do well with web development without having a good background with general software development. If one doesn't pay attention to that he/she will end as a mundane scripter or something.
Would be a good idea if you told us what kind of people with what background you get.
If you got some financial academy graduates, it is not clear what kind of motivation will they have towards any kind of development. If these are engineers or some creative field like design, decorations etc. it will be a different story.
Try to gather a little bit of best-practices from various aspects of development. A little from testing and quality control, a bit from project management, a few things about dealing with customers, security for publicly-exposed software, legal aspects. Not too much, just to paint a big picture.
I would start with introduction to web standards carriculum by Opera.
I think it would give a good understanding of some of the basic concepts in web development
For the programming portion, I would suggest you start with the lowest level / most basic concept you can come up with. The first thing that jumps to my mind is HTML. You could make sure the students understand HTML (and markup in general) and its basic syntax. I think that starting with hand-coded HTML will also give them a greater appreciation for some of the great tools out there that help you generate HTML or other code.
After that, you can get into some tools and technologies surrounding HTML like CSS, JavaScript, and AJAX.
Once the client-side is covered and those concepts are concrete in their minds, you can move onto server side scripting / programming. Most of the languages on the server side simply emit HTML, CSS, JavaScript, etc. to the browser, so understanding those things first is essential.
Finally, start talking about using their new found knowledge to create apps that talk to other systems (databases, web services, etc.). Once all of those basics are in place, you'll probably be done with the class, but then they'll be ready for the 200 level, right?
I like the answer about the difference between client side and server side programming. Since you teach talented/motivated students, I think that some theoretical discussion of the MVC (Model View Controller) architecture might be in order. How it was originally devised for desktop applications, and in that case it was necessary to implement a system that listened for events, so as to be able to keep all facets of the view synchronized with the state of the model as it was modified. But that, under the web paradigm, the listener code is given to you for free in the form of the web server, and the request is the event. And therefore MVC for the web, at least as regards interaction between client and server, should be less complex, with the controller merely mediating between the client and server.
That is, of course, until the advent of Ajax. When now it is appropriate to implement listener code on the client side with Javascript, so as to be able to keep widgets in synch.
I am an MVC junkie so take whats useful from this. Your mileage may vary, but I do think material on MVC is certainly warranted.
Good luck
Since you're getting into the server-side stuff, I would highly recommend going over some basic application security. From keeping applications (Wordpress, PHPBB, etc) up to date and patched, to actual attacks like SQL Injection and Cross-site scripting.
Since it sounds like you're teaching them from the ground up, you have a great opportunity to impress upon them the importance of input filtering and output escaping, legitimate user authentication, and other best practices.
This is very front-end focused as well... but I thought it was a great post.
http://veerle.duoh.com/blog/comments/teach_the_web_right/
[Edit]
She mentions the Opera Web Standards Curriculum as has been mentioned in previous posts, but she also mentions WaSP InterAct Curriculum. That seems like it's still very much in progress, but already has some great resources and links.
Focusing on "Next year we will deal mostly with PHP / Java". I'll focus on Java, since I don't know much about PHP.
Get the model right. Design a model, use the ORM, get this to work sensibly. This is highly reusable stuff. It's the backbone of the application. If this isn't right, the rest will rapidly become a mess.
Get the template presentation right. JSP's shouldn't do too much (they can, but shouldn't). This should have any fancy processing -- that's either a model problem or an action class problem.
Knit these together with Struts action classes and Java Beans that make sense in the domain you're building a solution for.
Add CSS/JavaScript and what-not after it all -- essentially -- works. No amount of JavaScript can fix a fundamentally flawed model.
Core Technology issues (XML, HTML, SQL, etc.) are important, but not central. It's hard to skip around, but you have to skip around.
SQL, ORM, Java first.
HTML, JSP, more Java next.
Struts, Action Classes, etc. and more Java next.
I think that much of the core skills issues need to be covered in a Just-in-Time manner. If you spend too much time on fundamentals of HTML, CSS and SQL, no one's building anything useful.

Which editor would you give your mom to let her edit her own website?

I mean this quite literally. A close relative wants to create her own website for her business and asked me for help. I've offered her to set up the website, take care of domain registration and all, but I don't have the time to design the website for her. So, I want to give her a software in which she can edit the page and publish it on her own.
My feature-wish-list. The software should
of course, be easy-to-use, as she's not a pro at the computer
be able to publish the website, once the ftp-connection has been entered
have some predefined themes, but also the possibilites to define a custom theme
offer a german UI, since she doesn't understand english
I so far looked at Nvu (too complicated), zeta Producer (crashed even before I could start editing the first page), CityDesk (very promising, but still too complicated and not in german). I'm quite happy with Namu6, but unfortunately, it is english only.
I'd be happy for any suggestion.
[edit]
Some were asking for a platform: She is only using windows, so Mac or Linux is not an option.
My mom uses vi for this
Consider setting up a CMS for her and let her edit the pages in the browser.
I was happy with citydesk for imachines.com, but lately I've moved towards just suggesting a blogging tool and doing it that way (e.g. wordpress, blogger, etc...). Websites are complicated because they are a 'web'. I'm not sure my mom could ever do it.
Google has a webpage service, besides Blogger, I think it' called Pages. Or if she has a Mac iLife has a decent tool set for the average non technical user
You don't mention which platform. If Mac is a possibility, take a look at iWeb, part of the iLife suite.
Depends on what she needs the site for and what you are capable of setting up for her. Google sites are free and easy to set up/use, but they're damn ugly.
Set up a free Blogger or WordPress account or run a hosted WordPress installation.
Engines like Joomla tend to be a bit technical on the admin back-end, but are also easy to edit from a front end editor's point of view - their WYSIWYG editor allows you to edit content from the front end, which I've found useful for non-technical types.
Wordpress is actually a nice and capable basic CMS system that just happens to have a blogging engine built into it.
Chances are, non-technical people will struggle with any editor. I mean, how do you expect her to do layout?? How do you expect her to edit the templates? How do you expect her to publish the site from her local machine to the server that's hosting the website?
Come on man, I know these things seem common sense to us, but really, every non-techy person around me that I can think of wouldn't have the least clue about where to begin with any of this, even my sister who knows how to use photoshop wouldn't have a clue about running a website. (I'd have to spend a lot of time tutoring her, and even then I'm not sure she'd get it).
Just give her a CMS or a blogging application like wordpress or the like (I assume you'll have to set it up for her).
EDIT
Even if you do find a good-easy-friendly editor, what about deploying her changes to the server? The problem is not only editing HTML, but running a website, managing content on it.
If your mother's business is a legitimate business that she gets her living from, wouldn't she want a professional to do it? A non-professional website, like hers is BOUND to look, is only going to make her business seem unprofessional.
If it is not a "real" business, but more like a hobby business, perhaps she would get what she needs from www.blogspot.com [or Wordpress], which is very simple to use.
I've tried this a few times with non-technical folks. For those that can handle desktop software, I use RapidWeaver (OS X only). (I don't set up non-technical folks with Windows PCs.)
But more often, I've found that something like WordPress works better. They can easily edit the site online and it's limited functionality keeps them from getting confused.
if she isn't a geek, maybe a simple cms is sufficient for her. editing html, and layout stuff can be pretty painful, as well as managing files on a server for the average user. i'd go for wordpress, which has simple admin ui, and since it's php, can be run on almost every hosting service you find. Also, using a widget-based sidebar and page layout makes her able to do almost anything she could do with an html editor (of which, imo dreamweaver is by far the best) - and even more! just think about already done plugins available through a simple plugin manager! i think there is a german translation available, too. (i found a hungarian one, there must be a german as well)
WordPress could be a good option and it has some options to install in German and other languages. See WordPress in Your Language for more information.
What about an online web site creator, something like GoDaddy's Website Tonight? It provides templates and lots of support for a simple web site. There is a monthly fee, but it's quite reasonable, and could be a good solution for someone who doesn't want to delve into the complexities.
I don't know if they offer a German UI, but it might be worth checking out.
Have you tried http://goodbarry.com ?
It’s an easy to use CMS focused to business owners.
As hasen j said: “The problem is not only editing HTML, but running a website, managing content on it.”
However I’m not sure if there is a German translation.
Movable Type is another option for a simple CMS.
My mother is using TextMate. I set her up with Subversion, so to publish her site she just commits and a hook on the Subversion server will update the site. The big benefit here is that when something goes wrong I have a record of every change she made which makes it much easier to sort out. There's some simple PHP (that was what was easily supported on her MacBook for testing and on the webhost she uses) to minimize the boilerplate stuff on each page.
CushyCMS is the only thing I would let a totally non-tech person near. It's very easy to setup an manage, and there's very little chance she can actually break stuff.
Dot Net Nuke, just copy, install and a way she goes.....