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.
- "The Internet & the WWW: History, Concepts & Core Technologies" (9/8/08)
- "Web App Architecture / Development Techniques / HTTP Basics / Working with NetBeans" (9/15/08)
- "Web Page Markup: HTML & CSS" (9/22/08)
- "Generating Dynamic Content: MVC, Java Servlets & Java Server Pages (JSP) / Working
with Tomcat" (9/29/08)
- "MVC, Java Servlets & Java Server Pages (JSP) (continued)"(10/6/08)
- "Enhancing Browser Interaction: Javascript & Ajax" / Term Project Vision Statement due
(10/20/08)
- Midterm Exam / Vision Statement Reviews (10/27/08)
- "Javascript & Ajax Concepts" (11/03/08)
- "Server-side Persistence: Using Back-end Databases" (11/10/08)
- "Security Overview for Web Applications" (11/17/08)
- "XML Concepts / Web Services Overview" (11/24/08)
- Final Exam / Term Project Setup Assistance (12/1/08)
- 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:
- A live in-class demonstration of a fully functioning and deployable web application
- A 5-10 minute stand-up presentation outlining the application and the experience of creating it
- 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
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.