COM 372 / CSC 372: Dynamic Web Design and Programming

The official course description from the catalog

LEC: (4 crs.) Leading edge Web-based information technology for communication in all disciplines. Technology will vary by semester, covering Microsoft or Open Source server-side programming technologies and databases, and relevant design and security issues. (Lec. 2, Lab. 4) Pre: COM 271 and junior standing in a degree-granting college or permission of instructor.

What is covered in the course?

I think of this as the “server side” course with 271 being the “client side.” Here, the primary focus of our effort is in designing and developing the software that runs on a web server, where in 271, we focused on the web browser (client).

Notice the word “Dynamic” in the course title. The web pages we write in 271 pretty much always have the same content and behavior; they are static, unchanging,the same every time you load that page. The programs on a server can create dynamic, changing content, uniquely responding to each request.

Key technologies and topics

Classroom style

The class time will be dominated by lab-style work, with instruction from me interjected as needed. To make it easier to keep working after class/lab ends, I encourage you to use your own notebook computer which you should bring every class period. If you would like to borrow a notebook computer, loaner equipment is available.

Textbooks

You'll see at the URI bookstore site that I have “recommended” two books to assist you in this course. These are “real” books as much or more than they are textbooks, with the advantage that each is under $25 new on Amazon! If you are able, I hope you can purchase both, but especially:

Learning Node.js

Strongly recommended: Wandschneider, Marc. Learning Node.js: A Hands-On Guide to Building Web Applications in JavaScript® (Second Edition). Copyright © 2017 Pearson Education, Inc. ISBN-13: 978-0-134-66370-8

In the first several weeks of this course, we'll be following the presentation of Node from this book. I like it because it does a good job covering some important fundamentals, including asynchronous programming, and writing/using Node modules. I believe that this more careful, step-by-step introduction of the underlying technologies and concepts behind Node and Express will help you master this complicated subject matter more easily. However, its presentation of many important functions of a dynamic web site seems to assume you've created such sites before and mostly just points you to the appropriate Express modules without explaining much about why.

A sample (Chapter 3: Asynchronous Programming) is available from the publisher: http://ptgmedia.pearsoncmg.com/images/9780134663708/samplepages/9780134663708.pdf

Web development with Node.js & and Express

Recommended: Brown, Ethan. Web Development with Node & Express: Leveraging the JavaScript Stack. Copyright © 2014; Published by O'Reilly Media Inc. ISBN-13: 978-1-491-94930-6

This book starts quickly leaving some of the fundamentals for you to discover (or not) along the way. It goes beyond just showing how to do something in Express to also explain why and so does a better job as a first book for learning dynamic web developemnt.

The first edition -- a second edition is planned to fix some of this but is not yet released (Jan 2018) -- includes valuable and appropriate sections on using source code management (git), automating testing. However, their presentation as their own chapters seemed to get in the way and interrupted the flow of the course. There are also useful chapters on debugging, deployment (“Going Live”), and maintenance that you will need to know at some point, but they didn't fit within a semester.

How do I get permission to take the course?

I will be happy to grant permission to students who have acquired web design and programming skills apart from classwork or in classes other than COM 271 / CSC 271. Please email me, david_h_brown@uri.edu, specifying whether you wish to enroll in COM or CSC372 and also include a brief description of your prior experience in any or all of the following areas:

Expected HTML skills and knowledge

You should be able to encode a document's structure and textual content in HTML 5, including...

Expected CSS skills and knowledge

You should be able to style a page using CSS Level 3, knowing how to ...

Expected programming skills and knowledge

You should have some prior experience programming and know about...

If you are missing some of this background, I will probably still give you a permission number if you ask, but only on the condition that you promise do additional work to help get yourself ready. Choose from options in the next section or others you might find online.

Most students I've talked to sound like they ought to spend between 30 and 80 hours filling in gaps. It can be a substantial amount of work and needs to be taken almost as seriously as if you were enrolled in a class. You are welcome to email me questions to get help along the way.

I do not have any sort of placement exam to assess your preparedness for this course. Giving you a permission number is not a promise that you will succeed. I hope you will, but it's up to you to keep track of how you're doing, both while doing any prep/review and especially in the first few weeks while you might still switch to another course.

How can I get ready?

If you have not yet acquired one of these skills or if you just want a refresher, there is a huge amount of of free online training available. Here are a few:

Khan Academy is a not-for-profit. While their lessons can sometimes be aimed at a middle-to-high-school learner, don't let that fool you. The content is top notch.

Codecademy is more clearly taking a professional approach, as you can tell from the price tags associated with some of their offerings. You can ignore those and stick with the free lessons, but they've been putting more and more of their content behind the “paywall.”

Coursera offers much greater depth, with college-level courses on many topics, including web development. Not all are free, and not all content is available on-demand, so keep an eye out for when courses start.

w3schools.com covers all these topics, too, with substantial amounts of material available free-of-charge.

Here are some specific suggestions to get you started. It should cover enough of the basics, but I encourage you to seek out more.

HTML and CSS

Khan Academy

w3schools

Codecademy

Programming in JavaScript

Codecademy

Codecademy's JS courses are bit more relevant to this course than Khan Academy's. Their introduction includes brief mentions of some of the differences in JavaScript versions, the module system, and even Ajax.

Kahn Academy

This JavaScript introduction is a better choice if you have never programmed before. They use a JavaScript library called Processing that lets you play with some graphics and make simple games.

You Don't Know JS (book series)

With extensive help from an extensive open-source community, Kyle Simpson has written and released a free series of short books on modern JavaScript. You can purchase physical or eBook copies (which benefit from additional editing and production, or you can just read them on github.

w3schools