En.605.704
Focuses on the what . Engineers define systemic requirements and build domain models without worrying about databases, servers, or user interfaces.
The curriculum of EN.605.704 highlights several critical areas that define high-quality software: Requirements Development:
Investigating reusable solutions to common software problems , which are vital for system maintainability.
is structured for working professionals, often offered in an online, asynchronous format (as seen in Summer/Fall 2026 offerings), allowing for flexibility. It is taught by experts, such as Samuel Schappelle and Joseph Demasco, who bring real-world industry experience to the academic setting. en.605.704
: In-depth coverage of both structured and object-oriented methods.
By mastering design patterns, students learn how to build software that can grow without becoming a "tangled mess" of code.
EN.605.704: Mastering Object-Oriented Analysis and Design In the evolving landscape of software engineering, the ability to translate complex business requirements into robust, maintainable systems is a critical skill. , a cornerstone course in the Johns Hopkins University (JHU) Computer Science program , provides the formal training necessary to bridge the gap between abstract ideas and concrete software architecture. The Core Pillars of the Course Focuses on the what
Students who successfully complete EN.605.704 leave with a tangible skill set that is immediately applicable in industry. These include:
In the context of the Johns Hopkins University course , a "deep feature" refers to a functional requirement or system capability that is explored through all phases of the OOAD lifecycle.
: Interestingly, there are no active programming assignments required in this course. It is entirely conceptual, analytical, and design-heavy. is structured for working professionals, often offered in
Using in SE mode, students:
, you must focus on the fundamental principles of modeling software requirements and designing complex systems.
| Week | Topic | Key Concepts | Reading | Assignment | |------|-------|--------------|---------|-------------| | 1 | Performance Fundamentals | Latency, throughput, CPI, Amdahl’s law, SPEC benchmarks | P&H Ch.1 | Worksheet: Performance equations | | 2 | ISA Design | RISC-V / MIPS ISA, addressing modes, encoding, RISC vs. CISC | P&H Ch.2 | ISA comparison essay | | 3 | Single-cycle & Multi-cycle Datapath | ALU, register file, control logic, clock cycles | P&H Ch.4 | Verilog datapath simulation | | 4 | Pipelining I | 5-stage pipeline, structural/data hazards, forwarding | P&H Ch.4.5-4.7 | Pipeline hazard detection (C++) | | 5 | Pipelining II | Control hazards, branch prediction (static/dynamic), BTB | P&H Ch.4.8 | Branch predictor simulator | | 6 | Memory Hierarchy I | Cache organization (direct, set-associative), write policies | P&H Ch.5.1-5.3 | Cache trace analysis (Python) | | 7 | Midterm Exam | Weeks 1-6 | - | Proctored exam | | 8 | Memory Hierarchy II | DRAM timing, prefetching, TLB, virtual memory | P&H Ch.5.4-5.7 | gem5 cache config experiment | | 9 | Out-of-Order Execution | Scoreboarding, Tomasulo’s algorithm, ROB | H&H Ch.7 | Tomasulo simulation (Java/Python) | | 10 | Advanced ILP | Superscalar, VLIW, speculative execution, register renaming | H&H Ch.7.6-7.9 | Speculative execution write-up | | 11 | SIMD & Vector Processors | Vector lanes, gather/scatter, GPU basics | P&H App.G | Vectorization exercise (AVX) | | 12 | Multiprocessors I | Shared memory, cache coherence (MSI/MESI), snooping | P&H Ch.5.8-5.10 | Coherence protocol FSM design | | 13 | Multiprocessors II | Directory-based coherence, memory consistency models (SC, TSO, RC) | P&H Ch.5.11-5.13 | Consistency litmus test analysis | | 14 | Final Project & Review | Project presentations, future trends (near-memory computing, CXL) | Selected papers | Final report & peer review |
: While there are often no heavy programming assignments, a solid background in an OO language like Java or C++ is essential for understanding the underlying concepts. Key Topics Covered
