Preface

Last modified: 12-23-2014

I’ll start my balderdash, you can skip the this section if you’re impatient, but please take a look at the notes at the end of this section

Why develop this course?

When I was a sophomore, I started doing web development, and I basically taught myself everything — developing a website, technically speaking, is not difficult at all. There’re so many tutorials and official documents available on the internet, open and free to anyone. It’s not difficult to setup a demo project using any web framework and any language. It’s not difficult to set up a database and query data from it as you wish. It’s not difficult at all to develop a pretty web page, with any fancy animation and interaction you can image if you choose some handy libraries. But still, even if one go through all of these tutorials, how confident will he be when he says: I know how to develop a website now ?

Probably none. There’re two reasons:

  1. These tutorials may tell you, some tool has functionalities A, B, C… but they don’t show you how to actually use the tool to solve a real problem. It’s like describing the shape, color, materials, components of a hammer, but never tell you how to knock a nail with it. So you’ll never learn a tool by simply watching tutorials. You’ll need to practise

  2. Let’s stick to that hammer example. Suppose you know how to use hammer, how to use saw to cut wood, you know how to use pencil to draw and how to use measuring tape to measure stuffs; but, will you be able to desgin and build a wood desk totally by yourself then? Apparently no. To build a desk you need to combine these skills, and how they might affect each other. What’s more, you’ll probably find yourself more skillful with these tools once you’re able to combine them together

So, that’s one of the most important differences between this course and existed tutorials online: besides telling you how to do, we provide you with well-desgined practise assignments as well as capstone project, with which you can practise different tools mentioned in the course materials, and try to combine them so as to create a complete product.

Besides, I believe having a goal can stimulate one’s learning potential to the maximum. It’s like running on a straight narrow road, which is the only way to the target that you can directly see at the end of the road. You know there’s no other ways, and there’s no other targets, so you’re going do the best you can to overcome any possible obstacles lying between you and your target.

This might sounds like strangling creativity. I’ll say: absolutely no. You can be creative about what you want to do, and you can also be creative about how to get something done when given any specific task. The first one is not what we concern here, because the goal of this course is teach the ability to develop a web system. For the second one, we will give you the problem and some guidance and assistance, but we encourage you to solve the problem as creatively as possible. And when you’re able to develop a real project, you can use your creativity to think of your own project, and develop it.

Some notes before you start

  1. The configuration of environment, all bash scripts are based on *nix system (I’m using mac). If you’re using windows, you can search for solutions online or install a VM
  2. In this course I’m teaching my own practical experience when I was doing web development projects. Some approaches may not be appropriate or neat enough in real professionals’ eyes, and some contents/techniques may not be as hot as before. I’m open to any kinds of feedback.