Professor Ted Markowitz
Buckman Hall
Tagliatela College of Engineering


Winter 2010 - CS441/CS655: Web-Database Application Development

Class Information

Here you'll find details on current assignments and your final term project, as well as recent lecture notes, instructions for obtaining course software, etc.




Class Description

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:
  1. 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
  2. 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.
  3. A live, in-class demonstration of your fully functioning and deployable web application
  4. 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.