605.681.81 - Principles of Enterprise Web Development

Computer Science
Summer 2024

Description

This course examines fundamental aspects of Enterprise Web Development including client, middleware and databases as a foundation for follow on courses. It introduces the student to client side development using HTML 5, CSS and JavaScript. After a brief review of Object Oriented Programming in Java, Swing is used to introduce common user interface design patterns. Network protocols and multithreading concepts using Java transition into server-side technologies like Servlets, JavaserverPages and ReST. Java database development with JDBC and web security are also introduced during the semester. While the class covers development using build tools (Maven), basic IDEs are utilized to facilitate the teaching of concepts and demonstration through examples. Prerequisite(s): EN.605.202 Data Structures.

Expanded Course Description

This course examines major topics in the development of applications for the World Wide Web and covers foundation concepts for Enterprise Web Development. While it assumes little to no prior experience with web development, it expects some background in Java or at least Object Oriented Programming. Follow on courses are available to explore many of the modules we cover in much more detail. A summary of topics touched upon in this course (not necessarily in the order they will be introduced) includes:

  1. Web site development using HTML 5, CSS and JavaScript.
  2. Implementation of desktop applications using the Java programming language, including user interface development, asynchronous event handling, multithreaded programming that will lead us into network programming. It also introduces distributed database access via JDBC.
  3. The design and implementation of server-side web applications, for which students will examine the underlying Web protocol (HTTP), the development of client-side interfaces (e.g., via HTML forms, JavaScript), and the implementation of server-side programs (e.g., via Java servlets, JavaServer Pages, RESTful Web Services).

We cover Java in this course for several good reasons.

  1. It is ubiquitous in the Web Application field.
  2. It is a very flexible language, which allows us to cover a lot of material without having to learn a new language each time.
  3. Most of your follow on course are taught in Java as well.

However, despite the rationale above, Java is not the "end-all". There are many other languages and web development solutions out there. In many cases, solutions developed using other languages may work just as well and still follow the same protocols and patterns with different programming syntax and interfaces.

Prerequisitites

Experience with C/C++/Pascal/C# Prerequisites

I expect all students to have experience programming and to understand the basics of software design, debugging and data structures. I am also assuming some familiarity with C++ and Java, since experience with a higher level language is a prerequisite for the course. However, since some people may enter the program without knowing Java well, we do review basic language concepts during the first few weeks. I also do not assume that you know much about HTML, HTTP, Servlets or JavaServer Pages. If you know neither C++ or Java, or it has been many years since you looked at them, you will want to carefully review the chapters that introduce basic Java syntax and object-oriented programming, and can expect to spend significantly more effort compared to other students, especially on the few Java-related assignments. I also assume you can use a Web browser, have a basic understanding of ssh and sftp and can use tools that connect using those protocols.

Many people taking this course already are familiar with many topics covered. While this may mean that some of this material is a bit "basic", please remember the pre-requisites above. There are quite a few students who are not as experienced with Java, HTML, etc, so please be patient, and use your knowledge to help them with any problems they may have. I have found that a good percentage of students each semester are quite familiar with the topics covered, and participating in discussions in the forums will often prove quite fruitful as you complete each assignment.

While there is no explicit prerequisite for Java experience, as a graduate level class, the expectation is that you (with your previous experience) are able to quickly acquire the necessary Java skills to be proficient throughout the class. Basic Java skills are covered in three of the early modules in the class which orient the students to programming in Java and Object Oriented Programming through relatively basic assignments and material. It is already assumed that each student is already proficient in basic programming algorithms, structure and debugging skills. After week five, students are expected to be proficient enough in Java to support the complexity of the continued assignments, which increase significantly as the class progresses. Students who find the course too challenging within the first five weeks should consider withdrawing and taking the basic Java programming course as a prerequisite.

Instructor

Profile photo of Richard Spiegel.

Richard Spiegel

rspiege2@jhu.edu

Course Structure

The course materials are divided into modules which can be accessed by clicking Modules on the course menu.  A module will have several sections including the overview, content, readings, discussions, and assignments. You are encouraged to preview all sections of the module before starting. Most modules run for a period of seven (7) days, exceptions are noted in the Course Outline. You should regularly check the Calendar and Announcements for assignment due dates.  Each module will run from Saturday through Friday during the semester, with assignments and discussion participation deadlines being Friday evenings at 1159PM EST.  You can jump directly to the course content page at this link: 

Course Topics

Course Goals

When you have completed the course, you will be able to

  1. Design and create a basic HTML that uses the following:
    1. Basic HTML 5 tags
    2. Tables
    3. Cascading Style Sheets
  2. Validate an HTML page for proper format.
  3. Design and code a Java application that can include the following technologies (Please note that these concepts apply to many modern environments, so this will be more beneficial than you might believe).
    1. Frames
    2. Basic Swing Components
    3. Event Handling
    4. Exceptions
  4. Be able to describe and use Object Oriented programming methods, including inheritance and interfaces:
    1. Compare the advantages between classes and interfaces
  5. Design and code a simple GUI application.
  6. Have a basic understanding of JUnit and how it is used.
  7. Be able to describe and use basic multi-threading in Java.
  8. Understand the user of Java I/O and design a simple client/server application.
  9. Design and code a simple Servlet.
  10. Design and code a simple JSP Page.
  11. Design and code a simple Java REST service application.
  12. Be able to use Java to pass serialized JSON data between clients and servers.
  13. Describe and use JDBC for database access.
  14. Be able to compare and contrast different programming methods related to Principles of Enterprise Web Development.
  15. Understand the fundamentals of creating and building projects using Maven.

Textbooks

There are no required textbooks for this class. However, there are numerous free books and resources available on the internet. While many may be somewhat dated, they still provide a good reference and foundation for material presented in the class. Also did I mention that they were FREE? It is also my understanding that as JHU students, you have free access to books via Safari Books Online. I have provided a short list of text books that you may find helpful during the class and beyond.

Safari Books:HTML & XHTML The Definitive Guide, Chuck Musciano, and Bill Kennedy, O'Reilly, 6th Ed., 0-596-52732-2
FREE! Servlets and JavaServer Pages , Jayson Falkner and Kevin Jones, Addison Wesley, 2006. This is a free PDF download.
Optional ReadingThere is a great site with "Cheat Sheets" for several of the topics we cover in class. This seems to be very useful! http://sixrevisions.com/resources/cheat_sheets_web_developer
Optional ReadingAlso a great "cheat sheet" site is http://www.dzone.com. These are usually 6 page sheets with key syntax and examples for each topic (JDBC, Netbeans, Mysql, JSP, CSS, HTML, Core Java...the list goes on).


Since all books are optional, you may purchase them anywhere. (Amazon, Barnes and Nobels, or even from the Johns Hopkins bookstore at http://johns-hopkins.bncollege.com)

Other Materials & Online Resources

There are also many sites on the world wide web that provide very good tutorials and references that complement material covered in the class. Here is a short list of some that I have found to be informative and helpful:

HTML, CSS, JavaScript and more:w3schools.com
Standard Java:Oracle's Java Tutorial
Tutorials on Core and Enterprise JavaMkyong.com Tutorials
Tutorials on Everything in The Classtutorialspoint

Required Software

You will need the following hardware for the class:

Computer

You may use a Windows, Mac or Linux computer to do this class. However, if you use a Mac, you do so at your own risk as I don't have access to a Mac so I cant help troubleshoot if you have problems that are a result of the platform or operating system.

You will need the following software for the class:

Web Browser

Any common browser should work fine for the class. I typically use Chrome and/or Firefox, so when I look at the final assignment, this won't affect me.

Canvas

This is the tool that links to the class website, provides access to discussion forums and your grades and is where your homework submissions will be uploaded.

HTML Editor

You will need something to edit HTML. This can be something as simple as Wordpad/Emacs or a higher level product like NVU or Webstorm. Note that some provide community editions, while others are commercial and the free downloads are for trial versions only.

Netbeans and Eclipse IDEs referenced below also provide good html editors.

Java Compiler

Okay, Oracle has made a mess with it's new Java licensing and support. Any version of Java beyond 1.8 is available for personal use from Oracle, but it may not be used for other purposes or redistributed in any way without paying the monthly licensing fees. In addition Oracle is now providing for major updates every 6 months or so which results in previous versions reaching end of life and end of support quickly. Having said that the class web server where you code will be running currently supports Java 8, however, Java 8 is no longer publicly available. You have two recommended Java options:

Java Editor

You will need something to edit Java source code. You can use anything you want as we aren't teaching "how to use" a tool, and I can give some advice on alternate development environments. For many years, this classed used Netbeans, which was a well supported IDE. Once again, Oracle has sloughed off a product on Open Source, so Netbeans no longer has as much integration as it once did. That being the case, we will now use Eclipse as the "default" IDE for the class.

Please note: You can use any editor/IDE you are comfortable with. However, if you don't use Eclipse, I can't promise you help with configuration or other issues for other IDEs.

J2EE Environment

The class server currently is running Tomcat 8.5 as it's web server. As such you will also need to be using the Tomcat 8.5 web server for your local development. You don't need any special J2EE support, the standard Java SE environment you downloaded above will work fine.

SSH Client

To access and work on the class web server, you will need an SSH client. SSH clients are included with Solaris and Linux distributions. Please note that SSH connects to port 22 on the server. Putty is an excellent free Windows SSH client. You can get it from http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. Another good SSH client in MobaXterm which includes a built in X11 server so you can actually bring up GUI based applications from the class web server if you wish. MobaXterm is available here.

SFTP Tool

In order to upload and download files from the class web server you will need an additional tool that uses SFTP protocol. A popular one is FileZilla which can be found at http://filezilla-project.org/. FileZilla is a nice graphical, Drag and Drop, SFTP application that can run on Windows, Mac or Linux. This really does make uploading files much easier. Please note that when you connect to the class computer using FileZilla, you need to use the SSH port, port 22. I strongly recommend setting the option on FileZilla to not store passwords. The default behavior is to store passwords, and unfortunately there are stored as cleartext files on your computer. This is a significant security vulnerability. Easiest workaround....Don't store the password.

Another good option for Windows users is WinSCP.

Zip Software

You will also need software for "zipping" and "unzipping" (compressing and uncompressing) files. Windows 7 and 10 and the Mac does have zip support built in or you can download applications that might be easier to work with. Here are instructions and suggestions for compression on both platforms:

  1. Rar format will not be supported in this class.
  2. For Windows - WinZip at http://www.winzip.com/.
  3. For Macintosh - Instructions for compression/decompression using zip on a Mac.

Zoom

You will be using Zoom, a web-based conferencing system, to participate in real time office hours. Training guides for Zoom is found here:

JHU School of Engineering Zoom Page

I will be using Zoom to provide Office Hours for the class.

Computer Account

Most of the development for your homework can be done locally on your own machine. Executables for most assignments will need to be uploaded to the class computer (see Course Resources for details). Note this is not the Canvas server where you will upload the source for your assignments.

Your login to the class computer will be your JHED ID, with the initial password L3tMeIn!. YOU MUST CHANGE THE PASSWORD after your initial login by typing the command "passwd". Remember, case matters! Additionally, after you change the password, you will be the only one who knows it (I won't know it). If you forget it I can reset it to the initial default above which you will have to change again. There will be a public_html directory in your home directory which tomcat will use to serve up a default web application.

For all projects, you must upload source material to the Canvas server for grading, and in most cases you will have to upload executable code to the class server.

Please note that the class server has no email server on it, thus you will not have email on the class machine. If asked to email (like in the first assignment) you will just send me an email from an account of your choice.

Student Coursework Requirements

Much of the material in this class is foundational. Having said that it is being taught at a Graduate level so the expectations on students may differ from what you are accustomed to from your Undergraduate experience. Here is a brief list of what I expect from you during the semester.

PLEASE MAKE SURE YOU READ THROUGH AND UNDERSTAND THESE EXPECTATIONS to avoid pitfalls during the semester.

Links to all of the class notes and homework assignments are available on the Course Content Page. You will see that each week's module is preceded by the starting date for the material (though you should feel free to address it earlier if you would like) and the due date for the homework. For most sections, these dates will begin on Saturday just after midnight and end an 11:59PM on the following Friday. It is during the period defined by those two dates when you are expected to complete the homework and satisfy the discussion posting requirement.

This course will consist of two basic student requirements:

Homework - VERY IMPORTANT YOU FOLLOW ALL PARAGRAPHS HERE

There will be a homework for each lecture. Homework may be turned in up until the Tuesday following the previous Friday deadline except for the last week of the class, but there will be a 10% penalty for this late submission. Homework will not be accepted after that for grading unless prior arrangements have been made with me. Even though you will be working on your own computer, all homework must eventually run on the class server (see Course Resources for where this computer is). One of the reasons I do this is that this eliminates the "but it was running on my machine" explanation. If you see it running on the class computer, I'll see it running. Do not forget this important step of testing your submissions on the class computer as there are large penalties for it not running there.

When you upload your assignment to Canvas I expect a zipped package including your ENTIRE project. This facilitates my ability to reproduce and evaluate your code. Please DO NOT just submit your source files and overlook other files. In addition if you use an IDE like Netbeans (not class supported) or Eclipse (class supported) please upload the entire IDE project. If you don't use an IDE make sure your project is structured and includes any scripts you use to facilitate compilation, deployment, etc. If you fail to provide all necessary files (configuration, etc), even if they are not being graded, you will lose credit on the assignment.

Make sure your submission is zipped (please don't use other compression formats beside zip) and use the following naming convention for your submission:

lastname_firstinit_hw#.zip

So, my submission for homework 5 would be named as follows:

spiegel_r_hw5.zip

If there are other attachments beside your project (aka images, word/openoffice documents) please include them in the zip file at the top (same) level as the project submission.

Although it may sound like this naming convention is nitpicking. They are very straightforward and you WILL be penalized if you fail to follow them. I expect every submission to have the name pattern of last-name_first-initial_hw#. Again, if I was to submit assignment number 3 it would be submitted using the name spiegel_r_hw3. This naming convention is to be applied to the zip file you upload as well as the name of your overall project (if you use and IDE). When we start uploading web applications (aka java war files) I expect that your web application file follows the same convention as well.

Discussion Forum

Traditionally I have followed a very specific forum participation structure that required a fixed amount of posts each week for credit, and I would give credit to just about anything that was posted despite quality of content in lieu of the discussion. However, recently I have modified my approach to improve both student participation and value. You will be graded on your contribution in terms of quality and not quantity. Each week there will be 3 points available for that week's discussion. Those three points will be allocated across the week long grading period with one point granted for participation during different time periods to ensure that there are relevant "conversations" throughout the week. Here is a breakdown of each week's schedule and the distribution of discussion credits:

Period StartPeriod EndExpectationPoints Awarded
Saturday 12AM ESTMonday 1159PM ESTAn insightful post creating a NEW conversation in the forum.1 point
Tuesday 12AM ESTWednesday 1159PM ESTAn insightful post either creating a NEW conversation in the forum or responding to an existing conversation.1 point
Thursday 12AM ESTFriday 1159PM ESTAn insightful post either creating a NEW conversation in the forum or responding to an existing conversation.1 point


Beside your initial post each week, you can start conversations or continue others as often as you wish, feel free to post beyond the minimum requirements. Your overall discussion grade at the end of the semester will account for 20% of your grade.

Beyond the minimum discussion requirements, each week's discussion area will also be where you should go to post insights and ideas about the lecture material as well as looking for assistance with issues you have with lectures or assignments. As a participant I will be there to provide feedback but am also interested in what other students might offer as well. Make sure that if you have questions on assignments/material that you post them in the appropriate week's discussion. I prefer to discuss issues there so that the entire class can get resulting feedback and insights from myself or others. I will typically also offer cited references from the internet for you to review and offer insights on. They may cover advanced technologies in software or just some articles that present more opinion based content on technologies and practices that get you to think and maybe get exposure to "other ways" of thinking as well. My overall goal is to make the discussion forums a part of the class that offers additional knowledge and insight and not just a place for you to meet a requirement for a grade.

One thing to be aware of. This is an online class and it will be up to you to ensure you have computer access throughout the semester. Having computer problems is not a valid excuse for falling behind in class. It is a very good idea to have some type of backup computer available "just in case".

Grading Policy

Homework

Timely feedback on students' performance is an established learning tool, so we will endeavor to grade and return all submitted material to you, as quickly as possible (typically within one week of submission).

80% of your grade is based on your homework, 20% on your class participation in the Discussion Forums. Based on the final class numerical distribution, the final grade will be translated into a letter ranging from A+ to F.

General Homework Grading Guidelines (can vary by assignment):

  1. Homework completed exactly as specified (satisfying ALL requirements in the assignment) and runs on class server with apparent extra effort: 100%.
  2. Homework completed exactly as specified and runs on class server but with no extra effort: 95%-100%.
  3. Homework runs on class server and satisfies execution requirements but with minor design errors: 80%-95%.
  4. Homework runs on class server and satisfies execution requirements but with major design errors: 70%-80%.
  5. Homework does not run on class server or throws unhandled exceptions: 0%-70%.

I'm going to go on record stating "Don't get freaked out about the 95% for the homework done exactly as specified." Every semester, I get several students asking me "what did I do to lose 5 points?" (they got a 95). The truth is, there are so many projects, and none are too challenging, that if you do what I ask you, you'll get a good grade for the course (I've actually never had a single complaint at the end of the semester)...but, on projects where the 5% extra effort applies, we always cover more that week than is required in the homework so it is easy to get a little creative and add a little extra effort for the oh-so-sought-after 100%.

As mentioned earlier, homework may be handed in up to the Tuesday following the assignment due date, but there will be an additional reduction of 10 points.

Final grades are based on the following scale:

Letter GradeFinal Average
A+>=97
A>=94
A‐>=90
B+>=87
B>=83
B‐>=80
C+>=77
C>=73
C‐>=70
D+>=67
D>=63
F<63

Final averages will be determined by the following weighting:

ItemPercentage of Grade
Homework (1 assignment per week)80%
Discussion Participation20%

Course Policies

Academic Misconduct Policy

Regarding Academic standards and this class, students are free to look in any textbook, public WWW page, Usenet Group, or communicate with anybody about any assignment. As in all courses, these sources MUST be cited if you use the code as is. However, if you look at a WWW page, and gain understanding about how to do the problem, and then do it yourself without "cutting and pasting" code from the site, then you do not need to cite the source. You can (and actually are encouraged to) use the online class discussion forum to gain understanding about how to do the problem, but you can't just "get the answer" from the forum and use it.

Copying of code from individuals, whether or not they are or ever have been students in this class, is not allowed without prior permission. If you have a question about how to use a source, ask it via email or the group Discussion forum.

Plagiarism

Plagiarism is defined as taking the words, ideas or thoughts of another and representing them as one's own. If you use the ideas of another, provide a complete citation in the source work; if you use the words of another, present the words in the correct quotation notation (indentation or enclosed in quotation marks, as appropriate) and include a complete citation to the source. See the course text for examples.

Academic Policies

Deadlines for Adding, Dropping and Withdrawing from Courses

Students may add a course up to one week after the start of the term for that particular course. Students may drop courses according to the drop deadlines outlined in the EP academic calendar (https://ep.jhu.edu/student-services/academic-calendar/). Between the 6th week of the class and prior to the final withdrawal deadline, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and withdrew from the course.

Academic Misconduct Policy

All students are required to read, know, and comply with the Johns Hopkins University Krieger School of Arts and Sciences (KSAS) / Whiting School of Engineering (WSE) Procedures for Handling Allegations of Misconduct by Full-Time and Part-Time Graduate Students.

This policy prohibits academic misconduct, including but not limited to the following: cheating or facilitating cheating; plagiarism; reuse of assignments; unauthorized collaboration; alteration of graded assignments; and unfair competition. Course materials (old assignments, texts, or examinations, etc.) should not be shared unless authorized by the course instructor. Any questions related to this policy should be directed to EP’s academic integrity officer at ep-academic-integrity@jhu.edu.

Students with Disabilities - Accommodations and Accessibility

Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course as early as possible to provide time for effective communication and arrangements.

For further information or to start the process of requesting accommodations, please contact Student Disability Services at Engineering for Professionals, ep-disability-svcs@jhu.edu.

Student Conduct Code

The fundamental purpose of the JHU regulation of student conduct is to promote and to protect the health, safety, welfare, property, and rights of all members of the University community as well as to promote the orderly operation of the University and to safeguard its property and facilities. As members of the University community, students accept certain responsibilities which support the educational mission and create an environment in which all students are afforded the same opportunity to succeed academically. 

For a full description of the code please visit the following website: https://studentaffairs.jhu.edu/policies-guidelines/student-code/

Classroom Climate

JHU is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone has the right to be treated with dignity and respect. Fostering an inclusive climate is important. Research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. At no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity. 
 
If you have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to the course instructor directly. Reporting will never impact your course grade. You may also share concerns with your program chair, the Assistant Dean for Diversity and Inclusion, or the Office of Institutional Equity. In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).

Course Auditing

When a student enrolls in an EP course with “audit” status, the student must reach an understanding with the instructor as to what is required to earn the “audit.” If the student does not meet those expectations, the instructor must notify the EP Registration Team [EP-Registration@exchange.johnshopkins.edu] in order for the student to be retroactively dropped or withdrawn from the course (depending on when the "audit" was requested and in accordance with EP registration deadlines). All lecture content will remain accessible to auditing students, but access to all other course material is left to the discretion of the instructor.