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.
IDE: WebStorm from JetBrains
(free Academic license available).
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:
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.
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...
create and modify pages by editing HTML code directly, without relying on a
WYSIWIG editor (Dreamweaver, BlueGriffon) or template system (Google Pages, WordPress).
validate your code and fix any issues
use semantic elements when appropriate such as main, header, nav, and aside
create forms with client-side validation of data
know the meanings of terms such as tag, element, attribute, entity, ID, class,
document, ...
Expected CSS skills and knowledge
You should be able to style a page using CSS Level 3, knowing how to ...
style selected elements in the DOM using selectors, including pseudo-classes and
pseudo-elements,
descendants and siblings, and specificity
apply colors and borders, format text, block model (margin vs padding), and positioning
create a fluid design with relative units and responsive layouts with @media
apply animated transitions to elements
Expected programming skills and knowledge
You should have some prior experience programming and know about...
expressions, assignment, variables
flow control (if, for)
functions: declaring, parameters, calling a function, returning a value, scope.
Node, and Express make extensive use of
anonymous functions, functions as data values, callbacks, promises, and closures. You
may
not
have seen these techniques yet (some are covered in CSC 301), and to be honest, they can
make your head
spin a bit.
If you're pretty sure you've got all the other skills I list here, reading up on
promises
and
closures
could be helpful.
JavaScript-specific:
Object essentials (object = bundle of named properties; how to access properties)
jQuery basics
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.
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.
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.
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.
You Don't Know JS: Up
& Going
is free in its published e-Book form, too. You can also get it from Amazon, but be aware that Kindle
devices (specifically my cheap Fire tablets) do not seem to support the bold and italic fixed-width
fonts
used in some places.