Visiting the Ivory Tower
Just before 2011 hit its expiration date, Derick Winkworth published Being Good at IT Stuff where among a gazillion things I totally agree with he also wrote “Even in IT, an IT degree is useless.”
I know exactly why he wrote that; I’d attended plenty of seemingly useless lectures (although it turns out sometimes it pays to understand those topics), and some people still think teaching History of Computer Engineering or obscure programming languages makes perfect sense.
I’ve also seen way too many disasters caused by people who had no clue about the proper use of their tools (just like architectural designs with total neglect for structural analysis), with the mission-impossible kludges designed by networking vendors serving as flying buttresses.
However, instead of ranting, this time I’ll actually try to do something about it – I’ll be teaching a class on scalable web-based application design, development and deployment at the University of Ljubljana during the summer semester, and as I said in a recently-recorded podcast, “if at least one student walks out of that room and develops a good scale-out application instead of a typical enterprise craplication, I did my job.”
The Details
Here’s the description of the course:
Would you like to launch the next Twitter or Facebook? You’ll have to find a brilliant business idea; here you’ll get some of the background knowledge you need to design, develop and deploy a web-based application that will scale to millions of users.
We’ll start with web page optimization (slow-loading application will never be a success), look at typical security problems (you don’t want your security problems to become front-page Slashdot news, do you?) and APIs (if they made Twitter popular, they can’t hurt you, can they?).
Continuing on our road to scalable applications, we’ll consider the challenges of server virtualization and cloud computing (don’t forget: Netflix runs on Amazon EC2) and look at various mechanisms we can use to make our application scalable (Twitter, Facebook and Google run thousands of servers behind single IP address). You’ll also learn a lot about the database architectures you could use (together with a dive into intricacies of NoSQL), and high-availability concerns.
Prerequisite knowledge and skills: basics of TCP/IP, web application development (awareness of HTML, CSS and JavaScript) and database programming ... and the ability and willingness to read (technical documentation as well as in-depth articles) and explore.
... and here’s a short list of topics:
- Technology choices;
- Basics of TCP and HTTP (including: latency is your enemy and bandwidth fairy is just a myth);
- Web site optimization techniques (including progressive enhancement, graceful degradation and asynchronous AJAX calls);
- Caching, from browser-side caching and HTTP caching to memcached and SQL denormalization;
- Security, focusing on application-layer threats (SQL injection, XSS, CSRF, Cookie hijacking);
- The API acronym soup and mashups;
- Virtualization and cloud computing;
- Scalability and load balancing;
- Databases (from CAP theorem to non-SQL alternatives);
- Resilience and high-availability.
I was also extremely lucky to get a totally awesome teaching assistant (his bio in case you'd like to offer him a job), who grasped my ideas immediately, and vastly improved them by adding topics like version control, unit tests, and very creative team building to the hands-on part of the course. In his own words:
Students will build a simple social network platform going through all the components the big platforms have, to learn through blood and sweat how those components work and why they are needed.
Interested?
I’ll publish the materials as I develop them. Unfortunately, I won’t be able to make recordings (and I’ll be talking in Slovenian anyway). However, if you think a shorter version of the course would be a perfect fit for your summer camp, get in touch; it just might work out ... and if you’re studying at University of Ljubljana, just join the course and come to the lectures (they're always public) ... but you'll have to work like everyone else.
I was not commenting on the properties of the language; I loved programming in Pascal (that was about the last "proper"/non-sloppy programming language I've seen).
Also, weirdly enough, Modula-2 was the 3rd language I learned after BASIC and Pascal, and before x86 assembly. I still hope that series is relatively well known...
You should open Ivan's Borderless University so Brad and I can attend. :)
Imagine having Petr, Brad as classmates and you as a professor. Couldn't ask for more.
;) ;)
Derick also doesn't acknowledge that a degree in CS is wildly different to a degree in networks and each is relevant to it's own sector. As for his comments on the content being out of date, he needs to look at some recent courses and reassess that.
I live near Slovenia (Austria), but i don't speak/read any slovenian, so it would be nice, if you could offer such a course/webstcast/etc
Cause I'm always looking for modular design approaches