Class Report: Web Development (CS 290)


sheet Part of the note sheet that I used for the final.

This fall I took two courses: Web Development and Databases. This post summarizes my experiences with the former, and offers some advice for people taking the course in the future.

Instructor

Luyao Zhang

Topics

  • HTML
  • CSS
  • JavaScript
  • TCP/IP
  • DOM
  • Ajax
  • Node.js
  • Express
  • Handlebars
  • MySQL

Programming Environment

In comparison to my introductory courses (CS 161 and 162), data structures (CS 261), and assembly (CS 271), this course did not involve a lot of coding. As such, I spent most of my time coding in Sublime Text 3.

It was easy enough to run my Node apps on Oregon State’s FLIP server, so I never ran them locally, although I did install Node so that I could run simple JavaScript apps from my command-line.

Here are some commands I found to be helpful when setting up and running Node servers on FLIP.

Install forever to run Node servers continuously:

npm install forever

Start a forever process to run a Node server continuously:

./node_modules/forever/bin/forever start [file.js] [port]

Show currently running Node servers (must run from whichever folder contains your node_modules folder):

./node_modules/forever/bin/forever list

Assignments

None of the assignments, save for the last, were particularly difficult. Here are a few examples of tasks we had to complete for assignments:

  • Create and style an webpage with HTML and CSS
  • Complete challenges laid out in the book Eloquent JavaScript
  • Create comparison operators for custom objects
  • Handle events and manipulate the DOM
  • Send GET and POST requests
  • Interact with a MySQL database (the most challenging of the bunch)

The final project for the course was easy (though it was open-ended so could be made more difficult depending on what the person decided to do). It didn’t require much JavaScript (only enough for a slideshow) and didn’t require database interaction at all. I got really NASA’s Mars Photos API and so for my project I built an Instagram-like site based on it. You can see it here.

rovergram website A screen-capture of my final project.

Exam

There was no midterm and no quizzes, just a final. The final was difficult but I had earned perfect scores on all of my assignments so I wasn’t too worried about doing well. We were allowed a hand-written sheet of notes, which was very useful. I wrote down lots of code snippets, especially for JavaScript and Express.

Another thing that helped on the exam was creating a few flashcards for each week of the course and reviewing them every day. It only takes a few minutes but goes a long way in helping me remember things. I use an app called Anki.

Extra Resources

A couple weeks before the course started I began an Udemy course by Colt Steele called the Web Developer Bootcamp. Colt is a natural instructor and so I highly recommend taking his course if you want to get a leg up on the material. Just don’t pay full-price for the course, it goes on sale all the time so you should be able to find it for $15 or less.

One note about Colt’s course: The instruction is so good that it often made Oregon State’s web development course very, very boring. If you want to get a head start, great, but just know that it’s not necessary.

At the beginning of the term I checked out a bunch of JavaScript books from the library. JavaScript is known for being strange in parts, but aside from closures, the course doesn’t cover anything too complicated. If I were going to dig further into JavaScript I’m sure I’d find books like JavaScript: The Good Parts helpful, but they were unnecessary for this course.

Difficulty and Time Commitment

This course was straightforward and not particularly difficult. I spent 87 hours on the course over the entire semester, including the Udemy course I took at the beginning of the term. That works out to a little under nine hours per week. If I had decided against doing the Udemy course and had done the bare minimum for my final project, I probably could’ve gotten this down to about 65 hours or so.

Enjoyment

This course was fine. Web development is not my number one interest in the world of programming, but I feel like the course designer, Justin Wolford, did a good job of covering an extraordinarily broad subject in a short period of time. If I decided to make a web app tomorrow, I think I’d have a reasonably good idea where to start. The only thing we never really touched on was how to handle users: accounts, passwords, etc.

Another thing to credit to Justin Wolford and Luyao Zhang is that the course was well-organized. Course content, expectations, and deadlines were very clear.

Final Grade: A