Having interviewed people fresh out of college for both web-startups and established companies, from my view the most important thing you'd need to know if you want to work in a web start-up are:<p>1. how to get around a UNIX system (be comfortable with emacs and/or vi, know your shell, be able to install Apache/your favourite web frame <i>yourself</i> on a machine<p>2. know basics of TCP/IP networking (know how HTTP works, be able to debug it using telnet/netcat and tcpdump/pass through proxies)<p>3. know databases (not just "SELECT Ajax FROM Php", but know about indices, joins and normalization/de-normalizations)<p>4. or more dynamic languages (Python, Perl, Ruby, Php etc...) as well statically typed as object oriented languages (Java is common for enterprise web development)<p>These are really just the basics (give or take). Most of these (except for databases and dynamic languages) are a standard part of any CS curriculum. Databases course should be readily available as an in-major elective. Dynamic languages -- if not available as an elective -- should be easy to pick up as you go along.<p>These are also <i>very nice</i> to have and would make you not look like a "PHP script kiddie":<p>* Understand how your OS works, at the least be comfortable using strace and gdb and digging around /proc and tuning sysctl/proc/kernel parameters<p>* Understand more about networks: more about DNS, know how a load balancer works (NAT)<p>* Know C/C++: that's what the extensions for your dynamic programming language are written in, that's what your web server/web proxy and database are (usually) written in.<p>* Know algorithms, data structures. Be able to do bitwise manipulation (e.g. how would you track on which day of a month a user visited a site?). Understand the advantage a message queue would provide, understand non-blocking I/O and threading/forking models.<p>* Know more about OO, meta-programming/reflection, functional languages -- be able to hack up your own ORM layer/ad-hoc MVC.<p>There are jobs in web development that don't even heavily touch HTML/CSS/Javascript and tend to be heavier towards algorithms, databases and UNIX hacking. These are called "back-end jobs". The other end is "front-end", which requires more familiarity with UX principles/Javascript/ActionScript/Flex and basic graphics design/layout in addition to HTML/CSS. The specific hot things (current frameworks, etc...) change but the general of computing is an invariant. The latter is what you learn in computer science classes.<p>Lastly, you should absolutely do programming/web-development for <i>fun</i> -- first, it's the way to learn things you won't learn in class (or at your first job). Secondly, many start-ups operate under the maxim of "don't hire anyone who doesn't code for fun", thirdly -- chances are, working for a web start-up won't make you a millionaire: if you don't find programming to be fun and worth your time (making long hours non-monetarily rewarding), enter a field that you <i>would</i> (you're lucky to be amongst the few who has the chance to choose).