Course Overview

Course Documentation

Assignments / Term Project

 

Background

CS441 (graduate course CS655) is primarily intended to give students a hands-on introduction to the technologies used to build modern Web-enabled applications. While most conventional application development techniques and tools can also be applied to constructing Web apps, there are some differences in how systems are architected and programmed that need to be understood and accounted for. While relevant background, theory, and abstractions will be introduced during the course, the class will try to emphasize the practical aspects of using an IDE (NetBeans) and an RDBMS (MySQL) for building Web apps using a range of tools like Java, (X)HTML, CSS, Javascript, Java Servlets/Java Server Pages, Ajax, XML, security mechanisms, and Web Services. With such a large breadth of material to cover and a relatively short amount of time to absorb it all, it will be impossible to examine every nuance of every topic in great detail. However, enough material for each concept should be covered to give the student a good foundation for the future.

Session Topics

There are 13 weekly sessions in CS441 starting on 9/8/08 and ending on 12/8/08. Classes are held on Monday nights from 6:00pm to 9:05pm in Kaplan Hall Rm. 204. Please note that there will be no session on 10/13/08 due to the Columbus Day holiday.
  1. "The Internet & the WWW: History, Concepts & Core Technologies" (9/8/08)
  2. "Web App Architecture / Development Techniques / HTTP Basics / Working with NetBeans" (9/15/08)
  3. "Web Page Markup: HTML & CSS" (9/22/08)
  4. "Generating Dynamic Content: MVC, Java Servlets & Java Server Pages (JSP) / Working with Tomcat" (9/29/08)
  5. "MVC, Java Servlets & Java Server Pages (JSP) (continued)"(10/6/08)
  6. "Enhancing Browser Interaction: Javascript & Ajax" / Term Project Vision Statement due (10/20/08)
  7. Midterm Exam / Vision Statement Reviews (10/27/08)
  8. "Javascript & Ajax Concepts" (11/03/08)
  9. "Server-side Persistence: Using Back-end Databases" (11/10/08)
  10. "Security Overview for Web Applications" (11/17/08)
  11. "XML Concepts / Web Services Overview" (11/24/08)
  12. Final Exam / Term Project Setup Assistance (12/1/08)
  13. Term Project Presentations (12/8/08)
(NOTE: timing and content may well change as the class progresses) The sessions will include a lecture component and possibly some hands-on exercises requiring the use of a computer and a live Internet connection.

During the last session (#13) students will each give a 5-10 minute in-class presentation of their Term Project to the assembled class. See the Term Project section for more information on what's expected as part of the Term Project.

Prerequisites

  • A good working knowledge of Java
  • Familiarity with SQL concepts and SQL syntax
  • Ability to complete a relatively large and complex project

Unfortunately time will not be available to teach basic programming skills. Access to a computer with an active Internet connection will be needed for weekly assignments. All software needed during the course should run equally well on Linux, Windows, or Mac OS X.

Readings

The primary textbook for the course is "Dynamic Web Application Development using XML and Java" by David Parsons. Readings from this text and other sources—primarily on-line—will be assigned on a weekly basis.

Assignments

Homework will be assigned most weeks. Besides some required readings, it will usually include questions that ask for written answers and/or brief programming problems. Following instructions carefully is important, as is keeping up with the work. All of the assigned work will help you master the subject matter; none of it is optional. Most of the course work must be completed in order to earn a grade (other than W or F) in the course.

For homework and programs, it is important to follow instructions because they will guide you through learning the things you need to know. However, let me know if you think there is an error in the instructions or are experiencing difficulties. I will post corrections on the website and send an email to notify everyone.

Good programming style (e.g., proper indentation and spacing, consistent use of standard Javadoc conventions, liberal inclusion of other in-line comments, etc.), clarity, and good use of Java are needed for a grade better than 90% on a programming assignment.

This semester we will be experimenting with electronic submission of weekly assignments (both written narratives and any programs or Web-related files) via FTP uploading using the host, 'ftp.unh-ececs.net'. Students will be assigned an FTP account expressly for that purpose at the beginning of the course and are expected to upload their work prior to the beginning of the next class. Late submissions will be graded appropriately (see Grading below for further details). The list of all weekly assignments can be found here.

Exams

There will be two half-session in-class exams: a mid-term given during Session 7 and a final exam during Session 12. The final exam may also have a separate take-home component, which would be handed out at the end of Session 11 and due back at the beginning of Session 12.

Term Project

Probably the most important part of the course is the Term Project which must be completed by the end of the semester. Each student will select, define, design, implement, document, and present a completely functioning and fully deployable Web application of his/her choosing. While it need not be overly complex (though more complexity usually means a higher grade), the Term Project must demonstrate the student's grasp of the course material by integrating most or all of the Web technologies and techniques we cover into a working application that can be successfully demonstrated at the end of the course. Naturally, a graduate student will be expected to choose a more challenging project than an undergraduate.

Vision Statement

An interim deliverable for the Term Project submitted by Session 6 will be a 1 page Vision Statement which describes the goals you are trying to achieve with the application, what tools and techniques you expect to be using, and a preliminary high-level design of how the system will work. Before you plunge into serious coding however, I will first need to sign off on your Vision Statement. I plan on discussing your statement with each of you after the Mid-term exam.

Deliverables

The final deliverables for the Term Project include:

  1. A live in-class demonstration of a fully functioning and deployable web application
  2. A 5-10 minute stand-up presentation outlining the application and the experience of creating it
  3. A 2 page written narrative on the project

More details on the Term Project can be found here.

Attendance

Regular attendance for lectures is very important. Not everything discussed in class may be covered in the weekly assignments or readings, however you will still be responsible for the material come exam time. Of course, there may well be times when you cannot be in class for completely understandable and legitimate reasons and I'll do what I can to accomodate these cases, but you should let me know as soon as possible when you're missing and why. I need to monitor weekly attendance using sign-in sheets for purely bureaucratic reasons, but keeping track of who attends class and participates actively is also a good indicator of how serious a student is about the course and a definite factor in determining a final grade.

Grading

All grades will be assigned on a curve, which will be guided by past experience and the best performance in the class. The outcome for any student always depends on the effort, motivation, intellectual honesty, and responibility he or she invests in learning. The approximate weights used to compute final grades are:
  • 30% Quantity and quality of class participation and written homework
  • 30% Quality, design, interest, difficulty, and style of your Term Project
  • 40% Exams and Term Project presentation

Naturally, given their "elevated" status graduate students will be expected to produce work of higher quality and/or quantity than undergrads.

Systems & Software

All the software required for the course should run equally well on Linux, Windows, or Mac OS X (Leopard). The following is a list of what needs to be available on the machine you decide to do your assignments on:
  • Full Java SE JDK (v1.5.0_14 or newer) with v1.6 preferred; Note: we need the full JDK with the javac compiler and not just the JRE (Java Runtime Environment)
  • NetBeans IDE v6.1
  • Firefox (v2 or newer) web browser with web development adds-on installed
  • MySQL Community Server 5.0 and MySQL Connector/J JDBC Driver
  • EditiX Lite free XML Editor
  • A text editor of your choosing for simple coding, writing documentation, creating presentation slides, etc.

Details on where to get the software and installation instructions can be found here. While students may certainly use either Windows, Linux, or Mac OS X for their work, current reality—the teacher has both Windows and Linux-based systems readily available and many years of hands-on experience with them, but has less familiarity with and access to Mac OS X systems—dictates that a lower level of Mac OS X-specific support may be available in class. However, Dr. Fischer, who does use a Mac on a daily basis, has generously agreed to lend a hand as her time permits.

Note: While Microsoft's ASP and .NET are popular frameworks for building successful Web applications, we will not be working with them during this course and will instead rely only on Java-based solutions (e.g., J2EE, JSP, etc.) and other vendor-neutral or open-source software whenever possible.

Policies & Procedures

Communication

All homework assignments, error corrections, announcements, suggestions, and other useful information will be posted on the course website. Please check for new postings at least twice each week. These updates will be accessible by clicking on the Updates & Notices choice in the 'Course Documentation' section of the site menu. Any especially time-critical information will also be sent via e-mail to the class distribution list.

With regards to course questions and other normal communications please try to contact me first via e-mail using the address: cs441@unh-ececs.net. Attach all source code files to your e-mail, if your question is about a program. I will answer them as soon as I can, but I can't promise a specific turnaround time for answers. As a fallback I can usually be reached via telephone at 203-655-2400. Please leave a message explaining your situation and provide a phone # where I can find you.

I also plan to be available prior to class on Mondays in Buckman Hall in the CS Dept. offices from 5:00-5:30pm, if you'd like to chat in person. Other one-on-one meeting times can be arranged on an as-needed basis.

And most importantly, communications-wise...

PLEASE LET ME KNOW ASAP WHEN YOU ARE EXPERIENCING SERIOUS DIFFICULTY!

Simply put, if I don't know that something is broken, then I can do nothing to help fix it and may wind up assuming you are not up to the course or just not trying hard enough. Without on-going interaction and early intervention, I'm afraid I'll have to assume the latter.

Late Work

I can be flexible about deadlines (assuming the privilege is not abused, of course), but only if I know you are trying hard and have shown yourself to be responsible. Believe me, I can tell the difference between someone who is really working, but having honest difficulty, from someone who is simply goofing off and just trying to get by. Just as in the "real" world, deadlines in this course may be somewhat flexible, but reality is not. The biggest penalty for lateness is that late work will be graded when I get around to it and you may not have it back in time for the next class or the next exam. Also, since each assignment builds on prior assignments, one late program, some missed exercises, or a few skipped readings may cause everything after that to be late too. Work which is consistently turned in late will be graded—lower, that is—accordingly.

Late Exams

If you want the privilege of a make-up for a missed exam, you must contact me as soon as you know there's an issue prior to the scheduled exam time with a reasonable explanation of the problem. Of course "reasonable explanation" is a subjective term defined by yours truly, but some empirical research does exist on the increased danger to a student's close family members right around exam time. Let's just hope that none of our loved one becomes one of these sad statistics this semester. ;-)

Academic Honesty Policy

Your homework assignments and lab assignments are to be done alone; no sharing and little discussion with other students should take place. You are expected to read, understand, and follow the UNH policy on academic honesty.

It is unacceptable to work so closely with another student that your work output is essentially the same. This kind of "help" will certainly not help you to master the material. The only way to pass the exams is to struggle with the weekly work yourself. If you need serious assistance, don't hesitate to ask me for it. Of course, it's fine for one student to aid another one who doesn't understand some particular abstract concept and asks for that level of assistance, but that is very different from essentially doing their work for them.

Plagiarism (i.e., copying someone else's work) is a serious offense in industry and also in our department. Employees are sometimes fired for it. Any willful plagiarism or any other sort of cheating which is discovered will make the student liable for immediate failure in the course and potential dismissal. Please keep in mind that plagiarism is easier to detect than most folks think. Copying another's work shows a lack of respect for yourself, for the teacher, for the university, and also for the student whose work you copy. Also, copying work is simply very foolish; there is no way to pass the exams without doing the work yourself. Note: In our classes, the "knowing" giver and the borrower are considered equally guilty.

To avoid accidental participation in someone else's offense, do not loan your work to another student at any time for any reason. Do not leave it in the lab, and do not leave copies of your files in publicly-accessible directories.

This file last modified Tuesday December 29, 2009 at 10:46AM