CS437/637 Syllabus, Fall 2020

Class meets MW 4:00-5:15 online
Professor: Betty O'Neil (elizabeth.oneil at umb.edu)
Office Hours: TBA

Prerequisites: CS310, CS430/630 (these are important), and officially, CS451/651 for CS637 only (less important, can be replaced by programming experience) Note that CS310 is an implicit requirement for all (applied) CS graduate courses. It means you need to know data structures, preferably implemented in Java (Python and C++ are also OK). However, if you are solid on intermediate Java (cs210), or C and Python, that should be sufficient for this class.

Note that this document is linked to the class web page at http://www.cs.umb.edu/cs637.

Textbooks:

  1. Murach's PHP and MySQL second or third edition, by Joel Murach and Ray Harris, Murach & Assoc, 2014, (ISBN older edition 978-1-890774-79-0, newer edition 978-1-943872-38-1) available for example at Amazon (older edition (less expensive), newer edition) or the bookstore. Either edition is fine, since they are almost identical. This book covers basic web technology (HTTP), running XAMPP for your own PHP web server, using the MySQL database. Follow the book link for free code.
  2. HTML and CSS: Design and Build Websites by Jon Duckett, under $15 at Amazon. Used for first two topics below.
  3. Learning Web App Development, by Semmy Purewal (print copy is $15-$27 at amazon.com). Used for topics 10-12.

NOTE: Get a UNIX account for cs437/637 by running apply for cs637, even if you already have a UNIX account here. This should be done by Monday, Sept. 11. For information on how to access our systems at cs.umb.edu, and other class resources, including this document, see the class web page at http://www.cs.umb.edu/cs637.

Topics

  1. Introduction. M&H Chap. 1. Network and web programming basics: server-side vs. client-side programming, HTTP request-response cycles. The browser as the universal client. On the server side, usually a single database, i.e., distributed databases are not to be covered. Static and dynamic web pages. PHP vs. Javascript. PHP vs. other server-side scripting languages. 
  2. HTML5 and CSS3: Duckett, plus online resources, including HTML5 at www.w3schools.com. Composing web pages in NetBeans. Installing XAMPP on your development system (M&H Appendixes)
  3. Intro to PHP apps M&H Chap. 1-2. One and two-page web apps. Although PHP can be run locally, without a web server, it is not commonly done, so we will usually use XAMPP's web server, or the Apache server on topcat.cs.umb.edu.
  4. Review of SQL, using MySQL with PHP M&H Chap. 3-4, 17-19. PHP can be used with other databases, but is most commonly used with MySQL, so we will concentrate on that.
  5. MVC (model-view-controller) web UI Designing and implementing a small website, with only one level of subdirectories. M&H Chap. 5-6. As soon as applications use multiple pages with dynamic content, they need better organization. We will use the MVC pattern to separate presentation (HTML) from programmatic control. Project 1 utilizes this small-website design.
  6. HTTP in more detail (slides from Murach's JSP book)
  7. Forms and PHP M&H Chap. 7, plus coverage on validation and resubmission of forms.
  8. PHP Objects, M&H Chap. 14. These are very much like Java objects. So far, we've used associative arrays as data objects, but with real objects, we can use methods too. Some discussion of PHP frameworks, Laravel, Symfony, etc: these all use objects. Use of composer to add packages to PHP: we'll use Slim and Guzzle.
  9. Intro to Javascript for Web Apps: Purewal Chap 4. Purewal's code uses JQuery, an important Javascript library. But we will be using JS without JQuery, since modern frameworks such as Angular, React, and Vue disallow JQuery.
  10. Javascript Objects: Purewal Chap. 5. Objects are crucial to serious Javascript. They are not encapsulated like Java and PHP objects.
  11. JSON and Web requests (Ajax, etc.). Purewal Chap. 5. JSON is used for storing Javacript data in text, and sending it across the Internet.
  12. Using and serving REST web services Purewal Chap 6 (in part) plus online resources. We will use Slim, a PHP Composer package, for creating REST web services implemented in PHP (using JSON data on the wire). We will also look at using node.js for web services implemented in Javascript, also using JSON, of course. The client side can be implemented in Java, PHP, or Javascript, or whatever. In the PHP client case, we'll use Guzzle, another Composer package.
  13. Securing the website M&H Chap. 21, 24.  SSL for (https:), authentication (logging in as a known user), securing PHP files, using Apache .htaccess.
  14. Regular Expressions (Regex) and Validation M&H Chap. 15. Find out the power of regex, used not just in PHP, if time permits.
Grading: simple point system

Midterm: 100 points, Final: 150 points, Assignments: various, about 150 points total. The exams are open-print-books, closed electronic devices. Anyone without a print copy of M&H will be required to sit at the front of the class during exams, to be able to share the teacher's copy when needed. Exams will not depend on details from Duckett, that is, the HTML/CSS questions will be self-contained, so that those with prior knowledge of HTML and CSS may get along without having Duckett.

Classes and Zoom

Zoom classes (as Zoom meetings) will follow the normal class schedule, MW 4:00-5:15. The slides for these classes will be available on the class website. Find the meeting id and passcode from your UMB email. Please join the class with audio off on your device and use the raise-hand feature to ask questions if your video is also off, or (preferably) turn it on at least temporarily for better communication. When recognized, turn on the audio and ask the question. To raise your hand in Zoom: click on the icon labeled "Participants" at the bottom center of your PC or Mac screen, then click the button labeled "Raise Hand." Click on it again to lower your hand.

You need video capability with Zoom for exams and office hours, but not classes, except for the first two classes, where I would like to see you when you answer the roll call. If this is a problem for you, please email me about it. Note that the video from these classes and exams will not be made public, and is protected during the period by the passcode.

Here is the guidance from the Administration on exams: Exams and assessment measures in this course will be proctored using an online method or service. Proctoring will require students to be video recorded and may require them to show their student ID at the start of the exam. Students should address any concerns they have regarding proctoring with their instructor prior to the add/drop deadline.

ACCOMMODATIONS: The University of Massachusetts Boston is committed to providing reasonable academic accommodations for all students with disabilities.  This syllabus is available in alternate format upon request. Students with disabilities who need accommodations in this course must contact the instructor to discuss needed accommodations. Accommodations will be provided after the student has met with the instructor to request accommodations. Students must be registered with the Ross Center for Disability Services, UL 211, www.ross.center@umb.edu , 617.287.7430 before requesting accommodations from the instructor.

ACADEMIC CONDUCT: It is the expressed policy of the University that every aspect of academic life—not only formal coursework situations, but all relationships and interactions connected to the educational process—shall be conducted in an absolutely and uncompromisingly honest manner. The University presupposes that any submission of work for academic credit indicates that the work is the student’s own and is in compliance with University policies. In cases where academic dishonesty is discovered after completion of a course or degree program, sanctions may be imposed retroactively, up to and including revocation of the degree. Students are required to adhere to the Code of Student Conduct, including requirements for academic honesty, delineated in the University of Massachusetts Boston Bulletin, found at: http://www.umb.edu/life_on_campus/policies/community/code