CS436/636 Syllabus, Spring 2021

Class meets MW 4:00-5:15 by Zoom (see your umb email for link)
Professor: Betty O’Neil (elizabeth.oneil at umb.edu)
Office Hours: MWThF 2:00-3:00 and by appointment

Prerequisites: CS310, CS430/630 (these are important), and officially, CS615 (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 Java well, including use of Collection classes like HashMap.

Textbook: Java Servlets and JSP, third edition, by Joel Murach and Michael Urban, Murach & Assoc, 2014, ISBN 978-1-890774-78-3, available for example at Amazon or the bookstore. This book covers basic web technology (HTTP, HTML), servlets, JSP, using the MySQL database, JDBC and tomcat.

On line material

NOTE: Get a Linux account for cs436/636 by running apply for cs636, even if you already have a Linux account here. This should be done as soon as possible to list your username for Oracle and mysql accounts. Then see the class web page at http://www.cs.umb.edu/cs636 and follow the link to the development setup instructions for UNIX/Linux and your home system. Also read Access to cs.umb.edu systems from offsite. These files are available now at the Piazza site.

Topics

  1. Introduction. Network and web programming basics: client-server, server-side vs. client-side programming. The browser as the universal client. On the server side, usually a single database, i.e., distributed databases are not to be covered. The idea of the "impedance mismatch" between programming objects and database tabular data. Goal of separating work between user-interface (presentation) experts and "business logic" programmers.
  2. Non-web client-server programming. Here we will use only the simplest client user interfaces, ones using line-oriented text input. The client connects to the server and its database (possibly across the Internet) using JDBC. Even in this simple setup, we can use many important tools and techniques: JDBC, DAO (data access objects), JUnit for unit testing, and transactions. Also basic maven configuration, deployment on Windows and UNIX, and use of Eclipse for Java programming and access to databases via its Data Tools Platform. The homework will also cover basic HTML, including forms, and basic XML. We will use Oracle and MySQL full feature databases, as well as the H2 embedded database.First we will implement without using Spring Boot, to see the architecture from basics, then slightly rewrite the projects to use Spring Boot.  Although Spring Boot is now popular for Java web apps, it also can help with non-web Java apps.
  3. Using object-relational mapping, specifically with the JPA2 standard annotations, to handle the DAO layer and transactions. JPA takes care of all the JDBC annoyances, and fosters proper database design for object persistence. We'll look at examples first in the client-server configuration (with Spring Boot), then later with the web UI. 
  4. Web UI with JSP and servlets. Users can fill in HTML forms and navigate links between pages and this information is available to our Java classes, and these classes can use databases the same ways we saw in pre-web programming. Here we introduce Tomcat, the standard application server that can serve JSP and servlets as well as static HTML.It is now easy to set up tomcat as an embedded service (rather than a separate process, the old way), a great help to the developer. While the client code we were writing in client-server programming was naturally single-threaded, the server code we write here is serving concurrent requests, and thus we must be much more careful about shared state, object lifetimes and caching.
  5. Web UI using Spring Boot 2. As soon as applications use multiple pages with dynamic content, the direct use of JSP/servlets can cause confusion and disorganization ("spaghetti"), something like trying to program with only gotos for control. One well-known solution is to use a framework that organizes the needed work and does some of the common work for us. The Spring framework has been very successful in this direction. We will use Spring Boot, which simplifies the configuration of Spring. Here we are still using Tomcat and Eclipse.
  6. Scaling up. Large sites now use cooperating apps and multiple databases. We can two databases at the same time for our web project, splitting the data management work, as a step in this direction. We will discuss new trends such as microservice architecture and GraphQL. These technologies depend on web services, so we will cover that topic too.
  7. What about .NET? There are many parallels between the J2EE web infrastructure that we are studying and Microsoft's .NET platform. The parallel system to JPA2 and its implementation is the Entity Data Model and Entity Framework.

Grading: simple point system. Midterm exam: 100 points, Final exam: 150 points, Assignments: various, about 150 points total. The exams are open-books, open posted material, but no person-person communication.

Honesty

You must do your own work in this course. You are encouraged to discuss problems/projects with classmates, or to ask for help with debugging. When you do share ideas or get help you must acknowledge that help in writing. However IT IS NOT ALLOWED TO USE ANOTHER STUDENTS CODE IN ANY WAY WHILE DOING YOUR HOMEWORK, even if you acknowledge that. Old class solutions are similarly off-limits.

The collaboration policy for cs210 is equally relevant to cs436/636. Please read it. It was written by Swami Iyer based on earlier versions of Ethan Bolker and Carl Offner. In addition to what's listed there, it is against the rules to post answers or partial answers in any place accessible to other students, for example as "backup". Make sure your backup area is private.

For cheaters (including sources of copying), I have a second-strike policy.

Attendance Policy: Class attendance is strongly encouraged, and students are expected to participate actively in class by asking and answering questions. In case of missed class, students are responsible to catch up with course materials and announcements available at the class web page www.cs.umb.edu/cs636. Until this is available, see the Piazza site at https://piazza.com/umb/spring2021/cs636/resources.

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