A multi-level approach would be best, and likely suit the normal tiered structure of the current university system. This assumes that students would be encouraged to select an area of focus (e.g. front-end development, back-end development, interaction design, interface design, Flash development, etc.).
Introductory-level courses for all, focusing on the core areas that all web “people” should be familiar with, before getting into more localized specialty courses. These courses (ideally taking up at least one semester, if not two) should cover basics of interface design, proper semantic (X)HTML (and CSS), interaction design, usability, accessibility, as well as basic principals of design (color, typography, white space, etc.) and a strong grounding in the English language (and others, if applicable) and the importance of language in design. The idea being that, after a student’s first semester or two, no matter what their eventual area of focus, they will have a broad base of knowledge that spans all related areas within the industry (areas that, when left to self-education, are normally ignored because of a lack of perceived relevance to a chosen path).
These basic principals should then be built upon for subsequent, more specific areas of study, so as students become more focused on their core interests, they do not lose sight of the impact their decisions make on other aspects of the web. The emphasis should be on gaining an understanding of the whole, and how important it is to acknowledge those other areas. This can include education on interacting with larger teams (and how to respect the expertise and input of others in the process), as well as a constant reminder that even freelancers have to be aware of the “whole” to which they are contributing. These more focused course paths should get fairly specific quickly (e.g. no more than a semester after the introductory courses should be spent in transitional mode - for instance, 3 semesters: Introductory Courses → Introduction to Object Model Programming → Python and Django Development (I’m not a programmer, so “Object Model” might not fit here, but you probably get the idea).
The “why”: Too many times, front-end designers know nothing of HTML and CSS (or semantics), and focus purely on the visuals. The same goes for database developers who don’t understand proper markup (but are responsible for generating it). Interaction designers who never learn the value of good visuals, front end developers who have never learned the importance of accessibility and the concept of progressive enhancement, or managers who are responsible for all these areas but don’t really understand how they fit together.
Right now, basic courses at most colleges include language, geography, math, and a host of other entry-level introductions. In a web-focused program, this same structure is important, but perhaps focusing on the basics of all aspects of the web (there is perhaps even some worth in teaching history of the internet and the web, and how it all works on a technical level - I’m always stunned when people who work in the web don’t have the faintest idea of how a web server works, or how email is communicated, and on and on…).
I’ve already started down this path above - a strong, shared foundation in all areas should be taught during the first 1-2 semesters, getting more specific as students progress through the program. There seems to be a constant battle within the industry between folks who think generalists have the advantage and those who think being an expert in one thing is the way to go. I maintain that being a generalist to a degree is important, because it makes you better at your chosen area of expertise. An expert who understands how the big picture works is much more valuable than one who works in a vacuum.
There will always be people who excel at all things they attempt, but this shouldn’t be used as the model or goal for everyone. I think from an educational perspective, the target should be to produce “jacks of all trades, masters of one” to manipulate the old saying to my purposes.
If you could create your dream curriculum for web design and development, what courses and information would you include? Why? What courses and information now in such programs would you eliminate? Why?
I’m not familiar enough with current programs to give a useful opinion (though I was speaking with Steve Smith this week about one class that’s given at Notre Dame, on “XHTML 1.0 Transitional and Java Applets”, which is definitely an example of something that should never be approved as a combined course).
My dream curriculum is outlined above, and the catch is this: to really provide a useful education, these courses must be kept up to date (easier for the introductory semesters, but much more difficult for the higher-level classes). When teaching programming languages (Python, Ruby, etc.), and development frameworks (Django, Rails, etc.) where the capabilities are constantly changing, the course information may have to change every semester in order to stay current. Producing students that graduate with “old knowledge” is of no use to the student or the industry.
On the design side of the higher-level classes, I think a mixture of interface-specific design and traditional design should be taught. Not to the extreme of a classical “art school” curriculum (the idea isn’t to replace such courses), but so that people who have entered the program without any prior training in the basics of art and design can still receive that education. Such courses would perhaps be optional for students coming into the program after already receiving a degree from a classical art/design school. On the UI side, this should go beyond “how to use Photoshop” and instead focus on how to design for pixels and the screen, how to design for interaction, multiple devices, and how to optimize for bandwidth concerns (which, though diminishing as bandwidth increases, will still be important for a good many years to come, if only from a financial point of view on the content-provider side).
In all cases, The thought process involved is the most important thing for me. I like to see that each problem is approached in a unique way that’s appropriate to the given problem. I don’t really care how it’s approached, just that a degree of thought has been applied.(so perhaps showing the process or explaining it somehow would also be useful in a portfolio - however, I tend to lean towards leaving this to interviews).
the challenge is more on the development side of things, and I think the only answer is for institutions to require that their professors stay up to date. The best way to do this is to hire people who are active in the industry on a professional level (e.g. as adjuncts, etc.) for the higher-level courses (anything that’s likely to require changes or updates each semester). This is a tall order, but even non-professionals would be able to keep up with these changes if it is required for their course, especially if the institutions provide for continued education (budgets for conferences, books, workshops, etc. are of primary importance here). Perhaps a series of courses and workshops tailored specifically for educators would be one good solution?