EN.605.704: A Comprehensive Guide to Johns Hopkins’ Advanced Real-Time Systems Course

Module 4: Advanced Analytics & AI (Weeks 10-12)

6. Sample Exam Question (Midterm)

Problem: You are given a 5-stage pipeline (IF, ID, EX, MEM, WB) with full forwarding but no branch prediction (always assume not taken). Branches resolve in EX stage. Compute total cycles for:

Loop: lw   x1, 0(x2)
      addi x1, x1, 1
      sw   x1, 0(x2)
      addi x2, x2, 4
      bne  x2, x3, Loop   # assume x2 != x3 for 3 iterations

Tasks:


The course EN.605.704, titled Object-Oriented Analysis and Design, is a graduate-level offering within the Computer Science program at the Johns Hopkins University (JHU). Course Overview

This course provides a comprehensive exploration of the principles and practices of Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD). It focuses on using these methodologies to create robust, maintainable, and scalable software systems.

Core Focus: Transitioning from requirements to a high-level design using object-oriented concepts.

Key Concepts: Classes, objects, inheritance, polymorphism, encapsulation, and abstraction.

Modeling: Extensive use of the Unified Modeling Language (UML) for documenting and communicating software architectures.

Design Patterns: Introduction to common software design patterns that solve recurring architectural challenges. Role in the Curriculum

Prerequisite for Advanced Studies: It is often a highly recommended prerequisite for specialized courses like Service Oriented Architecture (SOA) (EN.605.681).

Career Integration: Profiles of Senior Software Engineers and Staff Platform Engineers frequently list this course as a foundational part of their technical training.

Academic Pathways: It serves students in the Computer Science, Cybersecurity, and Data Science programs. Educational Context Institution Johns Hopkins University (Whiting School of Engineering) Subject Area Computer Science (605) Level Graduate (700-level) Credits Common Prerequisites

Foundations of Software Engineering (EN.605.601) and proficiency in an OO language (C++, Java, or Python)

The course EN.605.704 Object-Oriented Analysis and Design at Johns Hopkins University, focuses on the fundamental principles required to design and integrate complex information systems.

Below is a blog post exploring the core concepts and importance of this topic in modern software engineering.

The Blueprint of Modern Software: Why Object-Oriented Analysis and Design Matters

In the world of software engineering, jumping straight into code is often a recipe for disaster. Whether you're building a massive enterprise system or a specialized application, success starts long before the first line of Java or C++ is written. This is where Object-Oriented Analysis and Design (OOAD) —the core focus of EN.605.704 —becomes an essential discipline. What is OOAD?

At its heart, OOAD is about understanding a problem and planning its solution through the lens of

. Instead of thinking about code as a series of steps (procedural), we think about it as a collection of interacting entities that have specific roles and data.

This phase is about the "what." What does the system need to do? We use tools like Unified Modeling Language (UML) Object Constraint Language (OCL)

to specify requirements and understand the static and dynamic nature of the problem.

This phase is about the "how." How do we structure the software to be maintainable, reusable, and efficient? This involves creating state models to describe how objects behave over time. The Pillars of Effective Design

The curriculum of EN.605.704 highlights several critical areas that define high-quality software: Requirements Development:

Translating vague user needs into precise software specifications. Design Patterns:

Reusing proven solutions to common software design problems to ensure the system is robust and flexible. Maintainability and Reuse:

Ensuring that the code you write today doesn't become a technical debt nightmare tomorrow. State and Persistence:

Managing how data lives and changes within the system over its lifecycle. Why Professionals Study It For software engineers at places like Johns Hopkins Engineering for Professionals

, mastering these principles is what separates a "coder" from a "software architect." Understanding how to model complex systems ensures that they can scale as business needs grow and remain stable under pressure. Conclusion

Object-Oriented Analysis and Design isn't just an academic exercise; it's the professional standard for building reliable software. By focusing on the architecture and the relationships between objects, developers can create systems that are as elegant as they are functional. Design Patterns 605.704.81 - Object-Oriented Analysis and Design

EN.605.704 Object-Oriented Analysis and Design is a graduate-level course within the Johns Hopkins University Whiting School of Engineering focused on building robust, scalable software systems. The curriculum emphasizes UML modeling, design patterns, and application of object-oriented principles across the software development lifecycle. For more details, visit Johns Hopkins University

Here’s a sample post for the course EN.605.704 (typically Foundations of Computer Architecture or a similar advanced computing course at Johns Hopkins EP). You can adjust the specifics based on the actual current offering.


Subject: EN.605.704 – Week [X] / Project / Question

Posted by: [Your Name]

Hi everyone,

I’m currently working through the [pipelining / memory hierarchy / out-of-order execution] material in EN.605.704 and wanted to see how others are approaching [specific concept, e.g., calculating CPI with structural hazards].

In particular, I’m looking at Problem [#] from the latest problem set. I understand the baseline performance, but I’m getting stuck on how to model the effect of a [cache miss / branch misprediction] across multiple issue widths.

Has anyone worked through this yet? Also, for those who’ve taken the course before – any recommended outside readings (Patterson & Hennessy chapters, etc.) that helped clarify the trade-offs between latency and bandwidth in the context of SIMD?

Thanks in advance for any insights.


To write a paper for EN.605.704: Object-Oriented Analysis and Design Johns Hopkins University

, you must focus on the fundamental principles of modeling software requirements and designing complex systems.

Below is a structured guide to drafting a high-quality technical paper for this specific course. 1. Identify Your Core Topic

Projects in this course typically center on creating or evaluating an object-oriented system. Common paper topics include: Case Study of a Domain: Unified Modeling Language (UML)

to a real-world scenario (e.g., an automated healthcare management system). Design Pattern Implementation:

Comparing how different patterns (e.g., Factory, Observer, or Strategy) solve specific architectural bottlenecks. Refactoring Analysis:

Taking a legacy procedural codebase and redesigning it using OO principles like encapsulation, inheritance, and polymorphism. 2. Required Technical Components

Your paper should include the following standard course elements: Requirements Specification: Clearly defined functional and non-functional requirements. Static Analysis (Class Diagrams):

Visualizing the structure of the system and the relationships between objects. Dynamic Analysis (Sequence/State Diagrams):

Describing how objects interact over time and how they respond to events. Design Rationale: A section explaining

specific design choices were made (e.g., "Choosing a Decorator pattern over subclassing to maintain flexibility"). Object Constraint Language (OCL):

If applicable, use OCL to define formal constraints on your models. 3. Suggested Paper Outline Key Content Introduction

Problem statement, scope of the system, and target audience. Analysis Model

Use Case diagrams and descriptions; identifying primary actors. Design Model

Class diagrams with associations, aggregations, and compositions. Behavioral Model

Interaction diagrams (Sequence/Communication) for key use cases. Design Patterns

Description of patterns used to ensure reuse and maintainability. Conclusion

Summary of how the OO approach met the project requirements. 4. Professional Resources JHU Catalog: Review the official Course Description

to ensure your paper covers all listed syllabus topics like persistence and state models. Modeling Tools: Use professional diagramming tools like Lucidchart Visual Paradigm to generate clear UML visuals. Do you have a specific system or case study in mind that you'd like to model for this paper?

Course Context: EN.605.704 (Johns Hopkins University – Whiting School of Engineering) Course Title: Effective Technical Writing and Communication

In the context of this advanced graduate course, a "deep piece" usually refers to a Comprehensive Technical Communication Strategy Analysis or an Expository Essay on the Ethics and Philosophy of Technical Documentation. It is not merely a set of instructions; it is a meta-analysis of how information is structured, consumed, and valued in high-stakes engineering environments.

Below is a deep piece titled "The Architecture of Understanding: Bridging the Semantic Gap in High-Stakes Engineering." It is written in the academic and professional tone expected of a 700-level course submission.


3. Sample Lecture Content (Week 4: Pipelining I)

Slide 4: Structural Hazards

Assignment 2: Cache Simulator (Week 6)

Implement a trace-driven cache simulator in C++ that accepts:

Outputs: hit rate, miss rate, dirty evictions, average access time.

Test trace: gcc compilation trace (provided).

WebRezPro logo

Any questions?

We would love to hear from you! Please let us know how we can help or if you would like to schedule a free, no-obligation demonstration. 

* By agreeing to accept SMS messaging from WebRezPro, you agree and acknowledge that WebRezPro may send text messages to your wireless phone number for any purpose. Message and data rates may apply. You will be able to opt-out by replying STOP. For more information, please refer to our Privacy Policy.