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 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:
We cover Java in this course for several good reasons.
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.
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.
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:
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.
Netbeans and Eclipse IDEs referenced below also provide good html editors.
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:
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.
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.
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.
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.
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:
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 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.
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:
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.
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 Start | Period End | Expectation | Points Awarded |
Saturday 12AM EST | Monday 1159PM EST | An insightful post creating a NEW conversation in the forum. | 1 point |
Tuesday 12AM EST | Wednesday 1159PM EST | An insightful post either creating a NEW conversation in the forum or responding to an existing conversation. | 1 point |
Thursday 12AM EST | Friday 1159PM EST | An 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".
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):
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 Grade | Final 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 |
Item | Percentage of Grade |
Homework (1 assignment per week) | 80% |
Discussion Participation | 20% |
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.
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.