CS321 Web Centric Programming and Web Technolgies Syllabus Spring 2024

Details of dates are on the Schedule
Please see the Table of Contents for the course itself.

Instructor: Margaret Menzin                       menzin@simmons.edu        

                      Office:   tel: x2704                     physical office: B304
                      Home    tel: 781-862-5107 (not after 10 p.m. unless it is an emergency)
                      Office Hours:  Mon., and Fri. 7:15 — 9:00;
                                            - Also Mon., Wed. and Fri. 12 — 2 but please tell me when you are coming.
                     There is no class on Wed. April 24, 2024 but this will be made up.
                     The Mathematics, Statistics and Computer Science faculty eat at the Fens every week
                                              and we hope you will join us!

Texts – all the books we will be using are available electronically thru the ACM Learning site.
You will need to find the books by searching for the author or the title (it varies.)

You are required to have a student (or full) membership in the ACM .
Before the first day of class please email me proof that you can log into your ACM page.


Accommodations for Accessibility Services, Academic Integrity and Other Important Policies
are found at https://internal.simmons.edu/students/academics/syllabus-policies


Expectations:
This is an advanced level course which introduces you to important cutting-edge technologies that make the web so useful across many different kinds of computers and systems. Wherever possible we will use the current standard tools in the IT industry.  Because this is very new material we will use books aimed at IT professionals rather than text books.  This, in itself, is a valuable experience for you.  This is all very cutting-edge and it should This is all very cutting-edge and it should be a lot of fun! I hope that, by reading professional documentation, books, and newsletters, you will also learn how to learn about new technologies as they develop.

The course should be both a lot of fun and a goodly amount of work.   There is a lot of material, but much of it is not intrinsically overwhelmingly difficult.  Also, there is ample opportunity for you to be creative.  As explained in the Organization section below, this is a "flipped " course. This means that you will read and watch more at home, that I will lecture very little, and that you will get to work on intersting problems in class (usually in pairs or teams).
This also means that you MUST keep up with the HW reading.
There will be frequent prep—checks to help you stay motivated about keeping up. I expect you to be present and prepared for all classes and laboratories.  The labs are a very important part of the course, and, by now, you are experienced enough in computing to know that there is no substitute for hands on experience with the material.
Attendance is required for all meetings; if you have more than 2 unexcused absences the instructor reserves the right to deduct up to 10 points from your grade.
Likewise, projects and HW are to be handed in on the due date, unless an extension has been granted well in advance of the due date.

Most of the HW problems are very straightforward. (The more interesting problems will be done in class and lab.) The HW problems often require you to learn small amounts of boring but necessary syntax.
Again, I feel free to give you prep—checks on this syntax, which count towards your grade

Almost all of the material in the course is on the course web site (with the rest in Moodle), but I send frequent emails with breaking news, etc.
I expect you to check your email daily.

In general, it is easy to get a hold of me, and I am happy to help you with debugging (if your work is properly commented.)  Indeed, I recommend that after you stare at a bug for 15 or 20 minutes, you seek help.  There are lots of times when someone else can see your error (and you would see theirs) faster than you can.  I also encourage you to work together unless you are specifically told that a project is to be individual.  Not only is it more fun to work in groups, but everyone learns more.

Finally, knowledge of this material, because it is very current, will be useful in looking for internships and jobs.

Let's go!


Organization: General Comments
I have tried to pre-load the work (heavier at the start of the semester, lighter at the end), but since this is an evolving course, the schedule is a little less firm than it might otherwise be.
In addition, I have very successfully "flipped the course." This means that you will read and watch more at home, do very routine exercises as HW; then when we meet I will lecture very little, and you will get to work on interesting problems in class and lab (usually in pairs or teams).
This also means that you MUST keep up with the HW reading.

In general, almost all of the material is on the website for the course, with a small amount of supplementary material in Moodle.
The course website provides the essential structure for the course. You should book mark its Table of Contents

The course is divided into Units (as described below) and each Unit is divided into Chapters. The Units are numbered (starting with Unit 0) and the Chapters are numbered (also starting with 0, but not restarting at new Units). We will move through the chapters sequentially, except for those marked optional.

There are separate web pages (and Moodle folders) for each Unit and Chapter. At the webpage for each Chapter you will find a document with the assignments for that Chapter and other files you will need for those assignments. The assigments are also numbered sequentially, and, unless specified otherwise, there is a new assigment for each class meeting. For example, if you completed the last assignment in Chapter 4 for a Monday, then you will do the initial assigment in Chapter 5 for Wednesday.
In other words, the guiding organization for this course is the website for the course. The Moodle site provides only some additional references or articles which I could not make publicly available. The Web Centric Resources page is an annotated bibliography of other public resources which I have found useful. Part of my goal for this course is to help you transition from student mode to professional mode, so I expect you to use the available information (Moodle, the Web Centric Resources, and the ACM book site) as you need.


Outline of the course contents
Unit 0 has the major course documents — syllabus, schedule, etc.
Unit 1 is about the mechanics of HTML5 and CSS
Unit 2 adds JavaScript and also focuses on issues of site and page design, accessibility and usability.
Units 3 and 4 are optional.
Unit 5 is about Advanced JavaScript Programming, jQuery, and Ajax
Unit 6 is optional
Unit 7 is on Responsive Web Design mdash; that is designing for many screen sizes
Unit 8 is about ES6/ESNext and Node.js This unit is concerned with server—side programming and full—stack development.



More detailed description of the course contents
See also the Schedule in Detail(spreadsheet)CS 321 Schedule of classes and labs

Units 1 and 2  HTML5, JavaScript, and Client-Side Programming.
In the first part of the course we will focus on technologies that allow people on various computer systems to all call upon the same computer to do things for them.  Of course, as you have all used browsers like Chrome and Firefox, you are all familiar with how easy it is and how you can access your favorite site whether you are on a PC, a Mac, or on a workstation. 
The underlying technology here uses an agreed upon method for encoding information(Unicode), HTML (the mark-up language for web pages), and JavaScript (a very straight-forward programming language).  The presentation (appearance) of the page is specified using Cascading Style Sheets.

Unit 1 is about the mechanics of HTML5 and CSS
Unit 2 adds JavaScript and also focuses on issues of site and page design, of accessibility and usability. As you already know how to program in one language (Python) it
will take us only 3-4 weeks to breeze through this material.  Our emphasis here will be mastering the syntax, on good design,and on forms and basic events and event handlers, including material on cascading style sheets (CSS), and the DOM.
In addition to smaller assignments, and prep—checks, there will be team projects.


Units 3 and 4 Server Side Programming for Web Pages and XML
This year I am moving the material on server side programming (previously taught in Unit 3) to Unit 8. So we are skipping Unit 3. The material in Unit 4 is optional, although those students in the 3+1 MSLIS program may wish to delve into XML more deeply. Unit 4 focuses on XML , a web standards way to structure data semantically . 
This unit also gives you the tools you might need to go further in exploring the XML technologies. JSON is an alternative way to organize data for transmittal, and has in the last few years become more popular than XML in many settings.


Unit 5   jQuery, Ajax, and Advanced Web Programming
Drawing on our strong grounding in basic HTML5, CSS, and JavaScript, we now delve into the advanced uses of JavaScript, learn about prototypes, and functions as first class objects, events and event handling and the wonderful jQuery library of functions, and AJAX, which is the technology of changing part of a web page without reloading.
The syntax in jQuery makes use of all the technologies you have learned earlier in the course.
In jQuery we lean heavily on the CSS syntax for selectors, the use of callback functions you met when we examined AJAX, and also introduce chaining (functions), which is important both for jQuery and for Node.js (in Unit 8). Of course, there is a large group project.


Unit 6   Web Services, RSS, etc. independently if you wish This unit is optional for you to study on your own
It turns to the problem of computers interacting with each other without human intervention.
(The lingo for this (and there is lots of lingo out there) is "interoperate".)  It begins by examining the components and technologies (and what stage of development
they are in) which go into making this possible.  In this relatively short
unit you will learn how to toss around lots of acronyms, such as SOAP, WSDL, UDDI and XML, XST, etc.  You will understand how these technologies work together, who keeps everything universal, etc. Web services have not lived up to their promise of universality, but they are used to build a "Service Oriented Architecture" or SOA and to interact with the Cloud.


Unit 7   Responsive Web Design and Going Mobile We turn to the problem of how to design a site which works well on many different devices, from
smart phones to desktops. Luke Wroblewski argues for mobile — first design, i.e. that we should design first for mobile devices, and then enhance that design for larger viewports. Responsive design uses the key techniques of fluid design (in CSS3), fluid grids, media queries, and adaptive images (in HTML5) to solve these problems. As time allows we will also learn jQuery Mobile.


Unit 8 ES6/ESNext and Server Side Programming with Node.js
In the first two units of the course you will have constructed sites where a page (or pages)
is requested by the user but then the page/program runs on the user's machine. 
This is called client-side programming.  Sometimes, however, the user needs to have the
machine which hosts the site do some work and return some information.
For example, imagine that you order something from an on-line store such as Amazon.  Amazon's computers need
 to check availability of the books you want, calculate shipping costs, ask for your credit card number, etc.   Then Amazon's computers need to return information to you (Is a book out-of-print?  When will your order be shipped? etc.)  The programs which do this work and communicate with you, the user, are called server-side programs.
We will begin this unit with an examination of ES6 (or ESNext) and also the module structure which is the underpinning of Node.js This will also introduce the use of "arrow functions" and give us a chance to compare them to classic JavaScript functions. We will learn how to make your web page post information to the server, and use node.js to have a program on the server retrieve this information and respond to the client. We will also learn about some of the important facets of Node.
There is a major group Project to cement your understanding of multi-step interactions between a user and a server involving several web pages.
My plan is that we will integrate our use of node with that of MongoDB and Express, possibly even Angular.


Grading: 
Each major assignment or project or test counts equally towards the grade.  Smaller assignments and prep—checks will add up to the equivalent of a major project;
In team projects grades are assigned based on both how the team as a whole does with the problem and how your team-mates assess your own contribution.

Of course, I expect adherence to standards of academic integrity and the Simmons Honor Code.
You should assume that you may NOT use ChatGPT etc. unless specified that you may do so.