605.784.81 - Enterprise Computing with Java

Computer Science
Spring 2024

Description

This comprehensive course explores core application aspects for developing, configuring, securing, deploying, and testing a Java-based service using a layered set of modern frameworks and libraries that can be used to develop full services. Students will learn thru lecture, examples, and hands-on experience to build multi-tier enterprise services using a configurable set of server-side technologies.The course will specifically cover designing and building components, a data tier, synchronous and asynchronous server-side logic, and integration with the web.The student will also learn to secure the application and tackle various build, testing, and development issues. Specific framework and specification emphasis (e.g., Jakarta EE, Spring, Spring Boot) for designing and developing server-side components will vary per section.

Expanded Course Description

This comprehensive course explores a variety of modern Java frameworks and technologies that can be used for developing mission-critical complex enterprise applications. The emphasis is on use of the latest Java EE platform, its set of underlying specifications, designing and developing server-side application components. Students will learn thru having hands-on experience in building multi-tier based distributed enterprise applications, comparing and using variety of Java EE design patterns, rich set of server-side components and technologies, and web-enabled by modern design practices and communication protocols.

Students will learn to:

Other critical Java EE infrastructure services will be discussed, including the Java Naming and Directory Interface (JNDI), the Java Message Service (JMS), the Java Transaction (JTA) API, and Java EE security.

Students will review and discuss Spring framework and inversion of control, as well as some alternative solutions for developing and deploying enterprise applications.

Using modern development tools, commercial persistence providers, and application servers, students will design and implement several significant programming projects using the above- mentioned technologies and deploy them to a Java EE environment that they will manage.

Prerequisites: 605.481 - Distributed Development on the World Wide Web or equivalent.

Instructor

Profile photo of Leonid Felikson.

Leonid Felikson

lfelikson@gmail.com

Course Structure

Course Topics


Course Goals

Students will learn Enterprise Java design principles and will practice developing, packaging and deploying Enterprise Java components by working on the cross-semester project. Several development, build and run-time products and tools will be used, including open source Java Web application server.

Course Learning Outcomes (CLOs)

Textbooks

Required

Antonio Goncalves. Beginning Java EE 7, Apress, 2013.

ISBN-10: 143024626X
ISBN-13: 978-1-4302-4626-8

Andrew Lee Rubinger and Bill Burke. Enterprise Javabeans 3.1, 6th Edition. Sebastopol, CA: O'Reilly, 2010.

ISBN-10: 0596158025
ISBN-13: 978-0596158026

Textbook information for this course is available online through the appropriate bookstore website: For online courses, search the MBS website.

Required Software

This course is based on use of open source Java EE application server called Wildfly Server. Below is a list of other tools to be used:

Students will install and configure development environment as a part of content in one of the first class modules.

Student Coursework Requirements

It is expected that the class will take approximately 10–14 hours per week to complete. Here is an approximate breakdown:

This course will consist of four basic student requirements:

Participation and Class Discussions (10% of Final Grade Calculation) 

Each student is responsible for carefully reading all assigned material and being prepared for discussion. The majority of readings are from the course text. The course will cover most of the topics in the text. Additional reading may be assigned to supplement text readings.

Post your response to the questions by Friday evening of that module week.

The references listed in the annotated bibliography in the course text present supporting or contrasting views of concepts discussed in the text. In some cases, these references present a detailed discussion of topics not treated in depth or only touched upon in the course text.

The annotated bibliography also provides web sites that can provide additional information on topics covered in the course.

Each student is encouraged to exploit these resources in preparing for discussions and in his/her homework.

Leonid Felikson will monitor class discussions on daily basis and will respond to some of the discussions as discussions are posted. In some instances, Leonid Felikson will summarize the overall discussions and post the summary for the class.

Evaluation of preparation and participation is based on contribution to discussions. Participation and class discussion is evaluated by the following grading elements:

Participation and class discussion is graded as follows: 

Grade

Timeliness

Critical Thinking

100-90 = A

  • regularly participates
  • all required postings
  • early in discussions
  • throughout the discussion 
  • rich in content; full of thoughts, insight, and analysis 
  • always contributes to the discussion by raising
    thoughtful questions, analyzing relevant issues, and building on others’ ideas
  • synthesizing across readings and discussions, expanding the class’ perspective, and appropriately challenging assumptions and perspectives

89-80 = B

  • regularly participates
  • all required postings
  • early in discussions
  • throughout the discussion
  • substantial information; thought, insight, and analysis has taken place
  • sometimes contributes to discussion in the aforementioned ways

79-70 = C

  • infrequently participates
  • all required postings
  • most at the last minute  without allowing for response time 
  • generally competent; information is thin and commonplace
  • rarely contributes to discussion in the aforementioned ways
 
  • rarely participates
  • some, or all required postings missing
  • rudimentary and superficial
  • no analysis or insight is presented
  • never contributes to discussion in the aforementioned ways

Homework (75% of Final Grade Calculation)

Reading assignments as well as readings from the texts and other outside sources will be important sources of material for all of the homework assignments and quizzes.

All homework assignments are due according to the dates in the Calendar and Assignments tools.

Every assignment has to be submitted by its deadline. If it was submitted ahead of time, a student can resubmit it before its deadline, if a student would like to make some changes; number of resubmissions is unlimited as long as they take place before assignment's deadline.

Late submissions will be reduced by one letter grade for each week late (no exceptions without prior coordination with the instructor).

Since every next project usually is built based on the results of previous project, it is imperative to have every project done correctly. Students are encouraged to address issues (if any) pointed out by a grader on the previous assignment, while working on the next one.

Criteria (rubrics) for grading homework assignment

Program Specifications / Correctness

This is the most important criterion. An assignment must meet its specifications as written in the assignment page, be properly packaged and ready to be deployed on an web application server and to function correctly. This means that it behaves as desired, producing the correct output, for a variety of inputs. This criterion includes the need to meet specifications by writing a code in a particular way or using a particular Java EE programming model feature, if such a thing is mentioned in the problem.

If a specification is ambiguous or unclear, students have two choices:

If a student makes an assumption about an ambiguous specification, student should mention that somewhere in a comment so that the grader knows what a student were thinking. Points may be taken off for poor assumptions, however.

Readability

Code needs to be readable, to both a student and a grader. This involves:

Documentation

Every file containing code should start with a header comment. At the very least, this header should contain the name of the file, a description of what the included code does, and the name of its author (you). Other details you might include are the date it was written, a more detailed description of the approach used in the code if it is complex or may be misunderstood, or references to resources that you used to help you write it.
All code should also be well-commented. This requires striking a balance between commenting everything, which adds a great deal of unneeded noise to the code, and commenting nothing, in which case the reader of the code (or you, when you come back to it later) has no assistance in understanding the more complex or less obvious sections of code. In general, aim to put a comment on any line of code that you might not understand yourself if you came back to it in a month without having thought about it in the interim.

Code Efficiency

There are often many ways to write a program that meets a particular specification, and several of them are often poor choices. They may be poor choices because they take many more lines of code (and thus your effort and time) than needed, or they may take much more of the computer's time to execute than needed. For example, a certain section of code can be executed ten times by copying and pasting it ten times in a row or by putting it in a simple for loop. The latter is far superior and greatly preferred, not only because it makes it faster to both write the code and read it later, but because it makes it easier for you to change and maintain.

Assignment Specifications

Assignments will usually contain specifications and/or requirements outside of the programming problems themselves. For example, the way you name your files to submit them to the course website will be specified in the assignment. Other instructions may be included as well, so please read the assignments carefully.

Homework is graded following grading standards below:

Every criterion will make up an approximate percentage of the grade given to a single programming problem as indicated in the "Approx. % of Grade" column. Points will be assigned for a particular criterion roughly along the lines of the guidelines of the "Excellent," "Adequate," "Poor," and "Not Met" evaluations.

For example, a problem that was marked as "Adequate" in the Program Spec / Correctness criterion, "Poor" for readability, and "Excellent" in all other areas would receive:

0.8*0.5 + 0.6*0.2 + 1*0.2 + 1*0.05 + 1*0.05 = 82%


Criterion

Approx.

% of Grade

Excellent (100%)

Adequate (80%)

Poor (60%)

Not Met (0%)

Program
Specification/
Correctness

50%

  • No errors and program always works correctly
  • all functionality is in compliance with assignment requirements and implementation is correct
  • Minor details of the program specification are violated
  • program functions incorrectly for some inputs
  • Significant details of the specification are violated
  • program often exhibits incorrect behavior 
  • Program only functions correctly in very limited cases or not at all

Readability

20%

  • No errors
  • code is clean, understandable, and well-organizeded
  • Minor issues with consistent indentation, use of whitespace, variable naming or general organization
  • At least one major issue with indentation, whitespace, variable names, or organization
  • Major problems with at three or four of the readability subcategories

Documentation

20%

  • No errors
  • code is well-commented
  • One or two places that could benefit from comments are missing them or the code is overly commented
  • File header missing, complicated lines or sections of code uncommented or lacking meaningful comments
  • No file header or comments present

Efficiency

5%

  • No errors
  • code uses the best approach in every case
N/A
  • code uses poorly- chosen approaches in at least one place
  • many things in the code could have been accomplished in an easier, faster or otherwise better fashion

Assignment Specifications

5%

  • No errors
N/A
  • minor details of the assignment specification are violated, such as files named incorrectly or  extra instructions slightly misunderstood
  • significant details of the specification are violated, such as extra instructions ignored or entirely misunderstood


Note - As a special case, if a program does not meet the specifications at all or is entirely incorrect, no credit will be received for the other criteria either.

Quiz (5% of Final Grade Calculation)

There will be one quiz during semester that will take place at the end of session #1. It will take up to 60 minutes to complete. There will be 20 questions; all questions are multiple-choice type. Some questions will be recognition type, meaning that students have to choose one correct answer out of multiple answers given, or check all applicable answers. Some other questions will be of best choice type, where students will have to choose the best answer out of several given.
The instructor will review results of the quiz after the quiz is over and will issue partial credits in the appropriate situations. It will update a grade of the quiz accordingly.

Final assignment/project (10% of Final Grade Calculation)

 

Grading Policy

Timely feedback on students' performance is an established learning tool, so we will endeavor to grade and return to you, as quickly as possible, all material that you submit.

Homework will normally be graded and returned via the website before the next assignment is due. If you do not receive a grade on homework that you have turned in, please ask of its whereabouts; it may need to be resubmitted.

Assignments and the quiz will be graded on a scale from 0-100. In order to get a grade of "90" on programming homework assignments, all requirements must be met; programs must be properly documented and executed correctly.

Student homework assignments are due according to the dates in the Calendar and Assignments tools. Leonid Felikson or class grader will post grades one week after assignment due dates.

The grading scale for this course is listed below. 

Letter Grade

Grade Percentage Range

A

96% - 100%

A-

90% - 95%

B+

87% - 89%

B

83% - 86%

B-

80% - 82%

C+

77% - 79%

C

73% - 76%

C-

70% - 72%

F

69% and below


The course final grades will be determined by the following weighting:

Item

% of Grade

Class Preparation and Participation

10%

Homework

75%

Java EE Quiz

5%

Final assignment/project

10%

Course Policies

Homework is expected to be turned in through the assignment items within the modules; it will be considered late if it is received after that time. Special circumstances (e.g., temporary lack of internet access) can be cheerfully accommodated if the student informs us in advance.

Homework that is unjustifiably late will have the grade reduced for lateness.

Students are expected to participate/submit the following to receive a grade for the course:

We generally do not directly grade spelling and grammar. However, egregious violations of the rules of the English language will be noted without comment. Consistently poor performance in either spelling or grammar is taken as an indication of poor written communication ability that may detract from your grade.

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.