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.
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 does expect and require a reasonable background in Java and Object Oriented Programming. Follow on courses are available in the department 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:
This course is designed to be taken online. While not completely self-paced, it has been designed to be used at your convenience. Everything that I would have shown you in class, or discussed, has been written down or captured via screen shot or video. I believe this makes for the best online experience, and it seems that past classes have been very pleased with this format.
We cover Java in this course for several good reasons.
Despite the rationale above, this is not to say that Java is the "end-all"for Enterprise Web Development. 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.
Experience with Java/C/C++/Pascal/C#.
I expect all students to have experience programming and to understand the basics of software design, debugging and data structures. I am also assuming a reasonable familiarity with Java, though we do review basic language concepts during the first few weeks. If you have not worked with Java recently, or need to brush up, it is expected that you become proficient quickly (by the third week). I also do not assume that you know much about HTML, HTTP, Servlets or JavaServer Pages. If you are not strong with Java, or it has been many years since you have used it, you will want to carefully review the chapters that introduce basic Java syntax and object-oriented programming. In addition, you can expect to spend significantly more time and effort on the class assignments. I also assume you can use a Web browser, understand the difference between a "client" and a "server" and have a basic understanding of protocols like ssh and sftp to interface with the class server for deploying and testing your work.
It is not uncommon for some students taking this course to already be familiar with many of the topics covered. While this may mean that some of this material is a bit "basic" for some of you, there are other students who are not as experienced with Java, HTML, etc, so please be patient, and use your knowledge to help each other with any questions and issues using the class discussion forums. It is a good way to satisfy your forum participation while providing additional resources for those looking for assistance.
I would like to stress that basic Java programming skills ARE a prerequisite for this class. If you don't have the necessary Java background, you will only have a short time to quickly acquire the necessary skills to be proficient with Java for the class. Basic Java and Object Oriented Programming skills are refreshed quickly during the first few weeks of the class. However, the assignments used during that refresh are not trivial. If you find yourself struggling with those assignments in weeks 2 and/or 3 you should reconsider whether you have the appropriate background to succeed in the class as the complexity of the assignments just increase significantly as the class progresses. Students who find the course too challenging within the first few weeks should STRONGLY consider withdrawing and taking the basic Java programming course as a prerequisite before taking this course.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 here.
When you have completed the course, you will be able to
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 Reading | There 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 Reading | Also 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)
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 Java | Mkyong.com Tutorials |
Tutorials on Everything in The Class | tutorialspoint |
You will need the following hardware for the class:
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:
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.
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.
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.
Most developer IDEs (Eclipse as referenced below) also provide good HTML editors.
Okay, Oracle has made a mess with it's past Java licensing and support. Since Java 17, Oracle has relented from it's previous licensing restrictions and again have a free license for both commercial and personal use. We are currently using Oracle Java version 18 on the class server. It is not the latest and greatest, but does support concepts and techniques used in the class. Since you will be deploying to that class server, it would be in your best interest to make sure your projects are built for that version, even if you are using a more recent version of Java.
Prior to the fall Oracle change, Any version of Java beyond 1.8 through 16 was available for personal use from Oracle, but it was not available for other purposes or redistribution in any way without paying the monthly licensing fees. As a result there are now two options for acquiring the Java Development Kit:
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. For many years, this class used Netbeans, which was once 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 with Java. That being the case, Eclipse is used as the "default" demonstration and teaching IDE for the class and is strongly recommended.
Ultimately, 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 that I may not be familiar with.
The class server currently is running Tomcat 9 as it's web server. As such you will also need to be using the Tomcat 9 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. Tomcat version 10 is available and provides support for later versions of the Servlet and JSP APIs. However, the additional capability under those specifications is marginal (and beyond the scope of this class) and it does alter the package names of the API libraries that are used in the class, so we have maintained a stable Tomcat 9 on the class server and for teaching. Using Tomcat 10 or later will NOT work with the code as developed for the class material because of the package name changes so you MUST use Tomcat 9 for your local development for the class. Details for download and installation will be in the class notes later in the semester.
For command line access and related work on the class web server, you will need an SSH client (SSH supports secure-encrypted connections). SSH clients are included with 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 here. Another good SSH client is 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.
While SSH will give you command line access to view and work in directories and editors on the class server, you will need another network protocol to physical move files between your local machines and the class server. In order to upload and download files from the class web server you will need an additional tool that uses SFTP (Secure File Transfer Protocol) or SCP (Secure Copy). MobaXterm does provide SFTP capability but there are others that are convenient as well. A popular SFTP utility is FileZilla which can be found at http://filezilla-project.org/. FileZilla is a nice graphical, Drag and Drop, 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 will 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 they are stored as cleartext files on your computer. This is a significant security vulnerability. Easiest workaround....Don't store the password.
Other good options for Windows users includes WinSCP, and MobaXterm
You will also need software for "zipping" and "unzipping" (compressing and un-compressing) files. Windows 7 and later 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:
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.
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 source code for your assignments to be graded.
Your login to the class computer will be your JHED ID, with an initial password L3tMeIn!. YOU MUST CHANGE THE PASSWORD after your initial login (using SSH) by typing the command "passwd" at the prompt. Remember, with linux, 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 the password I can reset it to the initial default password and you will have to change it again. Your home directory will include a public_html directory which tomcat will use to serve up web resources. So it is a good location for your early HTML work. Later in the semester you will be deploying web applications directoy to the tomcat server and not your public_html directory.
For every project, you will need to upload source material to the Canvas server for grading, and in many cases you will have to upload executable code to the class server.
Please note that the class server has no email server on it. So you will not have email associated with this class. You will have your JHU account for the program. If asked to email (like in the first assignment) you can just send me an email from an account of your choice.
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 in the Canvas modules. You will see that each week's module is given a time period in which to complete the material (though you should feel free to address it earlier if you would like) and a 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 and Discussion Forum Participation
There will be a homework for each week's lecture that will be due at 1159PM on the Friday of the week it was assigned. Except for the final week of class homework may be turned in up until the following Tuesday. However, it will incur a 5% penalty PER DAY for each day late according to the following schedule:
Submission Deadline | Starting Grade Before Evaluation |
---|---|
Friday by 1159PM (Due Date) | 100% |
Saturday by 1159PM (1 Day Late) | 95% |
Sunday by 1159PM (2 Days Late) | 90% |
Monday by 1159PM (3 Days Late) | 85% |
Tuesday by 1159PM (4 Days Late) | 80% |
After Wednesday at 1200PM | No longer accepted for grading |
Homework will not be accepted after the deadline for the final assignment unless prior arrangements have been made with me. As I said, the reason I start my lecture weeks on Saturday and have Friday deadlines for homework is to facilitate a rapid turnaround of grades for your submissions. In MOST cases, you will have grades and feedback by Sunday evening for submissions turned in the previous Friday. If I had a Sunday deadline, it would be difficult to turn around grades that quickly since I do have a day job. I believe that any disadvantages of a Friday deadline are offset by the benefit of the rapid feedback for assignments and material that follows.
Even though you will be working on your own computer, most homework (but not all) must eventually run on the class server (see Course Resources for where this computer is). One of the reasons I do this is to eliminate the "but it was running on my machine" explanation. If you see it running on the class computer, I'll see it running. Don't forget the 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 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, it could impact the overall grading of the assignment.
Make sure your submission is zipped (please don't use other compression formats beside zip). 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
Just to be explicit, the format is all lower case, starting with your last name, followed by an underscore, than your first initiial, followed by another underscore, followed by the letters "hw" followed by the assignment number.
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. So you should be submitting a SINGLE zip file with ALL of the artifacts (project, readme files, etc) to Canvas.
Although it may seem like this naming convention is nitpicking. It is very straightforward and you WILL be penalized if you fail to follow it. I expect every submission to have the name pattern discussed above. 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. If not there could be naming conflicts that over-write previously submitted projects.
You will likely find that I put much more thought into my discussion forums that most instructors that you have had. In the past, I have followed the typical forum participation structure that required a fixed number of posts each week to get course credit, and I would give credit to just about anything that was posted to the forum regardless of the quality of content. As you may realize from your own experience, this format is not conducive to learning or even generating interesting conversation. As a result I have spent time developing a forum strategy to not only improve student participation but also make it more beneficial to the student. You will be graded on your contribution in terms of quality and not quantity. Each week there will be 3 points available for the discussion forum. 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 Start | Period End | Expectation | Points Awarded |
Saturday 12AM EST | Tuesday 1159PM EST | An insightful post creating a NEW conversation in the forum. | 1 point |
Wednesday 12AM EST | Friday 1159PM EST | An insightful post either creating a NEW conversation in the forum or responding to an existing conversation. | 1 point |
There is also a THIRD (3rd) post (original or response to another) that is required and can occur at anytime during the week's grading cycle. However, at the end of each week's discussion cycle you must have met the minumum three posting requirement with one post in each time period AND you must have a post on at least THREE (3) distinct days during the grading cycle for the week.
I will typically post material to be read for the forums to stimulate open discussion. The topics will attempt to relate the lecture material to real world topics, advances and issues. Beside your initial post each week, you can start conversations or continue others as often as you wish and feel free to post beyond the minimum requirements. Your overall discussion grade at the end of the semester will account for 20% of your overall grade. Additionally, if you find yourself on a borderline between two grades at the end of the semester, one of the factors used to consider moving to the higher grade is your overall forum participation.
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. It should also be the prime place when 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 benefit from the 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.
As a last point with regard to the forums. I do read them daily and will address homework and lecture questions/issues in the forum within 24 hours (same turnaround as I do for email), but often more quickly. I will also jump in on the topic conversations from time to time, but that is dependent upon how busy I am with other class matters like grading, course maintenance, etc. Regardless of whether you see me post, do know that I DO review the forum material daily (at least).
As a last point with regard to the forums. I do read them daily and will address homework and lecture questions/issues in the forum within 24 hours (same turnaround as I do for email), but often more quickly. I will also jump in on the topic conversations from time to time, but that is dependent upon how busy I am with other class matters like grading, course maintenance, etc. Regardless of whether you see me post, do know that I DO review the forum material daily (at least).
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".
Final grades are based on the following scale:
Letter Grade | Final Average |
A+ | >=97 |
A | >=93 |
A‐ | >=90 |
B+ | >=87 |
B | >=83 |
B‐ | >=80 |
C+ | >=77 |
C | >=73 |
C‐ | >=70 |
D+ | >=67 |
D | >=63 |
F | <63 |
Item | Percentage of Grade |
Homework (1 assignment per week) | 80% |
Discussion Participation | 20% |
I welcome feedback (especially constructive criticism) throughout the class. In addition to providing an additional discussion forum topic to collect that feedback, I also typically use one of the week's discussion topics to collect feedback with regard to the discussion forum structure. Know that I do read and take the feedback seriously and even if it doesn't impact the current class, it may have an impact on future classes.
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. You may request a paper copy of this policy at this by contacting jhep@jhu.edu.
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 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.
Johns Hopkins University (JHU) is committed to creating a welcoming and inclusive environment for students, faculty, staff and visitors with disabilities. The University does not discriminate on the basis of race, color, sex, religion, sexual orientation, national or ethnic origin, age, disability or veteran status in any student program or activity, or with regard to admission or employment. JHU works to ensure that students, employees and visitors with disabilities have equal access to university programs, facilities, technology and websites.
Under Section 504 of the Rehabilitation Act of 1973, the Americans with Disabilities Act (ADA) of 1990 and the ADA Amendments Act of 2008, a person is considered to have a disability if c (1) he or she has a physical or mental impairment that substantially limits one or more major life activities (such as hearing, seeing, speaking, breathing, performing manual tasks, walking, caring for oneself, learning, or concentrating); (2) has a record of having such an impairment; or (3) is regarded as having such an impairment class. The University provides reasonable and appropriate accommodations to students and employees with disabilities. In most cases, JHU will require documentation of the disability and the need for the specific requested accommodation.
The Disability Services program within the Office of Institutional Equity oversees the coordination of reasonable accommodations for students and employees with disabilities, and serves as the central point of contact for information on physical and programmatic access at the University. More information on this policy may be found at the Disability Services Website or by contacting (410)516-8075.
Johns Hopkins Engineering for Professionals is committed to providing reasonable and appropriate accommodations to students with disabilities.
Students requiring accommodations are encouraged to contact Disability Services at least four weeks before the start of the academic term or as soon as possible. Although requests can be made at any time, students should understand that there may be a delay of up to two weeks for implementation depending on the nature of the accommodations requested.
New students must submit a Disability Services Graduate Registration Form along with supporting documentation from a qualified diagnostician that:
Questions about disability resources and requests for accommodation at Johns Hopkins Engineering for Professionals should be directed to:
EP Disability Services
Phone: 410-516-2036
Fax: 410-516-8049
E-mail: ep-disability-svcs@jhu.edu
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.