OVERVIEW
Please feel free to explore this class website to make sure you
understand what we will be covering during the
semester and what's expected of you, if you are
considering taking this course. If you have any
questions, please ask me for clarification at any
time.
Web-Database Application Development
CS441 (graduate course CS655) is intended to
give students a hands-on introduction to the
technologies used to build modern Web-enabled, client-server
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. Relevant
Computer Science theory and software
engineering abstractions will be introduced during the
course; however, the class will emphasize the
practical aspects of constructing working Web applications
using a sophisticated IDE (NetBeans), a modern
RDBMS (MySQL) for server-side databases, Java as a
development language, and also
other tools such as XHTML, CSS, Javascript, Java
Servlets/Java Server Pages, Ajax, XML, Web security
mechanisms, and Web Services.
Note that 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 interesting nuance of every topic area in great
detail. However, enough material for each concept
will be covered in sufficient depth during the class and in exercises to give the
student a good foundation for developing
web-based applications in the future.
There are 13 weekly sessions in CS441 starting on
01/08/10 and ending on 04/02/10. Classes are held
once-per-week on Friday afternoons from 4:00pm to 7:05pm
in Buckman Hall Rm. 331.
PREREQUISITES
Minimum prerequisites for this course
IMPORTANT NOTE: Since this is an advanced architecture and
programming course for Seniors and graduate students,
there will be little or no time devoted to teaching basic
programming or computer usage skills. You
must already be well-versed in Java
coding before the class begins.
- CS 215 and CS 210 (or other proven prior experience in Java
programming)
- Good familiarity with SQL RDBMS concepts and SQL
syntax is assumed
- Ability to complete a relatively large and complex Java-based
project by the end of the term
- Ability to create a short presentation and deliver it to the
class describing your term project
- Access to a computer with an active
Internet connection will be needed for weekly
assignments. All the software needed during the
course should run equally well on Linux, Windows, or Mac OS X.
SESSION TOPICS
Topics We Aim to Cover During the Semester
As stated above there are 13 weekly sessions in CS441. Classes start on
01/08/10 and end on 04/02/10 with each student presenting
their final Term
Projects to the class. Sessions are held
on Friday afternoons from 4:00pm to 7:05pm
in Buckman Hall Rm. 331.
NOTE: The exact content and ordering
of the topics listed below may very well change as the class
progresses.
- The Internet & the WWW: History, Basic Concepts & Core Technologies
- Web Application Architecture / Software
Development Techniques for Web Applications
- HTTP and Web Server Basics
- Learning to Work with NetBeans and the Apache Tomcat JSP/Servlet Container
- Introduction to XML
- Web Page Markup: HTML & CSS
- Generating Dynamic Content: MVC, Java Servlets & Java Server Pages (JSP)
- Server-side Persistence: Using Back-end Databases in Web Applications
- Enhancing Client-side Interaction Using Javascript
- Dynamic HTML (DHTML): Advanced Javascripting & Ajax
- Introduction to Web Services
- Security for Web Applications
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 students will each give a 5-10
minute in-class presentation of their Term Project to
the assembled class. See the
Term
Project Details for more information on what's
expected as part of the Term Project.
TEXTBOOK
Class Textbook and Other Readings
The required 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. Written questions
from the text may also be given. Many of the concepts and examples
from the class lectures can be found in this text, so please make sure you
have a personal copy of your own at hand for reference.
WEEKLY ASSIGNMENTS
Homework Tasks
Homework of some type 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. All
of the course work
must be completed
and submitted on time (that is, by the beginning of
the next scheduled
class) in order to earn a grade (other
than W or F) in the course.
For homework and programs, it is important to follow
instructions explicitly and thoroughly
because they will guide you through learning the things you need to
know later on. However, please tell me if you think there is an error in the
instructions or are experiencing any difficulties in
understanding or completing an assignment as soon as
you realize it. I will post
corrections on the website and send an e-mail to notify
everyone of the changes or clarifications.
Good programming style (e.g., proper indentation and spacing,
consistent use of standard Javadoc conventions, liberal inclusion of
in-line comments, etc.), clarity, and good use of Java
concepts and syntax are needed for a grade better than
"acceptable" on a programming assignment.
This semester you will be using electronic submission of
your weekly assignments (both written work and any
programming-related files which may have been
assigned) using file uploading to the class FTP server,
'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
Examination Details
There will be two in-class exams given: a
midterm given on or around Session 7 and a
final exam administered during Session 12, which is the
next-to-last class of the semester. The final exam may
or may not also have a separate take-home component,
which would be handed out at the end of Session 11 and
would be due back at the beginning of Session 12.
TERM PROJECT
Details of the Term Project
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,
graduate students will be expected to choose a more
challenging project than undergraduates.
Students may decide to work in pairs on their Term
Projects with my prior approval. Please
understand however that all projects which are worked on
by two people MUST clearly demonstrate enough extra
quantity and quality of work to show the separate contribution of
two people's efforts. If the deliverables of the final
project do not show double the functional capabilities
and quality of what would normally be expected from a
single student, then the overall grade for
the Term Project will be lowered for
both members of the
team equally.
"VISION STATEMENT"
An interim deliverable for the Term Project
must be submitted by Session 6 consisting of a 2-page,
single-spaced Vision Statement (12pt type please) 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 architectural design
of how the system will work. Before you plunge into any
serious design and coding, I will first need
to sign off on your completed Vision Statement. Your
Vision Statement will be reviewed and any changes or
suggestions will be communicated to you by the next class.
END-OF-TERM DELIVERABLES
The final deliverables for the Term Project which are
due by the next-to-last session (Session #12) of the class include:
- A 2-page, single-spaced written narrative on the
system's basic architecture, how the project was
developed, and what you learned from doing it
- A complete NetBeans project directory
structure containing your application's well-documented source
files and all related files so that the application
can be run by me under NetBeans, if I
choose to. This submission should also include any other
important files such as your SQL database definitions,
data files, configuration settings, user information
and security-related files, etc. needed to demonstrate
your Term Project successfully.
- A live, in-class demonstration of your fully
functioning and deployable web application
- A 5-10 minute stand-up presentation to the entire
class outlining the application and your experience in
creating it
More details on the Term Project can be found
here.
CLASS PARTICIPATION
Your Attendance and Active Class Participation During the Term
Regular and on-time attendance for the lectures and your
active participation during the classes, both asking and
answering relevant questions, is extremely 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 who participates
actively is an excellent indicator of how serious a
student is about the course and is a very crucial factor
in determining your final grade. Students who work hard and
show special interest and initiative during the
semester will almost certainly be rewarded
with a higher final grade at the end of the course.
GRADING
Computing Your Final Grade in the Class
"Ignorantia legis neminem
excusat" — Latin for
"ignorance
of the law excuses no one" or in our case,
"Your final grade depends on understanding
exactly what's described on this website, so read it!" :-)
All grades will ultimately be assigned on a grading curve, which
will be guided by my past experience and the overall
performance of the class. The outcome for any particular
student however always depends on his or her own
personal effort, motivation, intellectual honesty, and
the responsibility he or she invests in learning. I am
very tolerant of those who are clearly trying hard
during the semester, even if they are having honest
difficulties with the material. However, if you don't
make any special efforts that I can discern during the
semester, then I will be much less understanding of any
shortcomings when the final grades are given.
The approximate weights that will be used to compute the final grades
are:
- 20%: Quantity and quality of class participation
and written homework; weekly homeworks will be graded
on a simple ("poor"/"fair"/"good"/"excellent") basis
and lateness in submitting them will incur
automatic downgrading of one grade for every day they
are past due
- 40%: Quality, design, interest, difficulty,
and style of your Term Project and the in-class
delivery of the Term Project presentation
- 40%: Exams (the final exam may be given somewhat more
weight (e.g., 60/40) of the 40% total than the midterm since it is usually longer
and thus more comprehensive)
IMPORTANT NOTE: Naturally, given their "elevated" status
and extra experience, graduate students will be expected
to produce work of higher quality and/or quantity than
undergrads to achieve the same final grade.
SOFTWARE TOOLS
Software and Programming Tools Used During the Class
All the programming exercises and Term Projects for this
course will be done in Java using the NetBeans IDE, the MySQL
database, and the Apache Tomcat Servlet Container for JSP and
Servlet support. All the software required for the course should run equally well on
Linux, Windows, or Mac OS X. 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 which includes
the javac compiler and not just the JRE (Java
Runtime Environment)
- NetBeans IDE v6.8
- Firefox (v2 or newer) web browser with web
development adds-on installed
- MySQL Community Server 5.1 and MySQL Connector/J
JDBC Driver
- A text editor (possibly including a
presentation-generating tool such as MS Powerpoint or
OpenOffice impress) of your choosing for writing
documentation, creating presentation slides, etc.
Details on exactly where to get the software and
specific installation instructions can be found
here. While students may
certainly use either Windows, Linux, or Mac OS X
computers for their work, I personally have both Windows
and Linux-based systems readily available and many years
of hands-on experience with them. However, since I have
little access to any Mac OS X systems, this dictates
that a lower level of Mac OS X-specific support may be
available during the class from me. Dr. Fischer, who
does use a Mac on a daily basis, has generously agreed
to lend a hand to Mac users as her busy time permits.
Note: While Microsoft's ASP and .NET are
surely popular frameworks for building successful Web
applications, we will not be working with them during
this course and will instead rely on Java-based
solutions (e.g., J2EE, Java Servlets, Java Server Pages,
etc.) and other vendor-neutral or open-source software
whenever possible.
POLICIES & PROCEDURES
Groundrules for this Class
Late Submission of Work
I can be somewhat 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 (in other words, no bogus-sounding
excuses). Believe me, I can tell the difference between
someone who is really working, but having honest
difficulties, from someone who is simply goofing off and
just trying to get by. Weekly homeworks will be graded on a
simple ("poor"/"fair"/"good"/"excellent") basis and
lateness in submitting them will incur an automatic
downgrading of one grade for every day they are past
due. In reality however, the biggest penalty for
lateness is that 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 and create problems (not to mention a lower final
grade) down the line.
Missed Exams
In general there will no make-ups for any missed exams,
unless you 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
closest family members becomes one of these sad statistics this
semester. ;-)
Academic Honesty
While you are encouraged to study together, your
homework assignments and Term Project-related work
(except for students who are part of a Term Project team
pair) are to be done alone; no sharing of work with
other students should take place and will be considered
cheating. 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 contend with the weekly work on your own. If you need
serious assistance, don't hesitate to ask me or the
class teaching assistant 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 sort of assistance, but that is very different
from essentially doing their work for them. That kind of
"help" won't be tolerated for either party.
Plagiarism (i.e., directly copying someone else's work
without crediting them—whether that be another student
or from some other source, such as off the web) is a
serious offense in industry and also at UNH. Employees
are severely reprimanded or even fired for
doing it. Any willful plagiarism or any other sort of
cheating which is discovered in this class will make the
student liable for immediate failure in the course and
potential dismissal from the university. Please keep in
mind that plagiarism is easier to detect than most folks
think. Moreover, copying another's work shows a lack of
respect for yourself, for the teacher, for the
university, and also for the other person whose work you
are stealing. 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 lying about in a
computer lab, and do not leave copies of your important files in any
publicly-accessible system directories.
CLASS COMMUNICATION
Contacting the Professor, Keeping Up-To-Date with Class
Assignments, etc.
All homework assignments, error corrections,
announcements, lecture notes, examples, or
other useful course information will be posted on this class
website, so please check the 'Updates & Notices' area
and the other sections on the website regularly; this means
at least twice each week between classes. The update notices will
be accessible by clicking on the
Updates
& Notices section on the CS441 website sidebar
menu. I will also often send informational messages from
the main class e-mail account (cs441@unh-ececs.net)
to each student's preferred e-mail address, so please
pay attention to those messages as well and make sure
this class address is whitelisted in your anti-spam
filters so it doesn't accidentally get mistaken for
spam.
With regards to normal communications outside of class, please try to
contact me first via e-mail at the course account
cs441@unh-ececs.net.
Make sure to attach all source code or any other
relevant files to your e-mail for my review. I will
answer these questions as soon as I can, but I can't
promise a specific turnaround time for answers. As a
fallback measure I can also be reached via telephone at
203-655-2400. If I'm not available when you call, please
leave a message explaining your situation and provide a
return phone # where I can reach you. I will also try to be
available just prior to class on Fridays in Buckman Hall in
the Computer Science departmential offices, if you'd like to
chat in person. In general however, for one-on-one meetings, it
is probably best to contact me beforehand via e-mail
or phone to set up a
specific time to meet face-to-face.
And most importantly, communications-wise...
PLEASE LET ME KNOW AS SOON AS
POSSIBLE WHEN YOU ARE EXPERIENCING SERIOUS
DIFFICULTY IN THE CLASS!
Simply put, if I don't know that something is
wrong, then I can do nothing to help fix it and may
wind up assuming that you are not up to the level
of the course or are
just not trying hard enough. Without a lot of
on-going interaction and early intervention, I'm
afraid I'll have to assume the latter and your grade
will certainly suffer.