Computer Science, Master of Science
Program Overview
Computer Science, Master of Science
The Master of Science in Computer Science is a graduate program offered by the Whiting School of Engineering at Johns Hopkins University.
Admission Requirements
Applicants must meet the general requirements for admission to graduate study. The applicant's prior education must include the following courses:
- One year of calculus (2 semesters or 3 quarters)
- One semester/term of advanced math (discrete math is strongly preferred but linear algebra and differential equations will be accepted)
- One semester/term of Java (C++ will be accepted but the student must be knowledgeable in Java)
- One semester/term of data structures
- One semester/term of computer organization (e.g., assembly language and machine organization)
Applicants whose prior education does not include the courses listed above may still enroll under provisional status, followed by full admission status once they have completed the missing courses.
Program Requirements
Ten courses (30 credits) must be completed within five years. Students are required to choose a focus area or concentration.
Requirements for Focus Area Completion
The curriculum consists of three core courses (9 credits) and a minimum of five courses (15 credits) from the Computer Science program, which includes selected courses from other programs as indicated in the course lists below, and a maximum of two electives (6 credits) may be selected from outside the Computer Science program and require prior advisor approval.
Core Courses
- EN.605.601: Foundations of Software Engineering
- EN.605.611: Foundations of Computer Architecture
- EN.605.621: Foundations of Algorithms
Focus Areas
The focus areas offered represent related groups of courses that are relevant for students with interests in the selected areas. Students are required to choose a focus area to follow and to take at least three courses from the selected focus area, including at least one 700-level course.
Artificial Intelligence
Courses:
- EN.605.613: Introduction to Robotics
- EN.605.645: Artificial Intelligence
- EN.605.646: Natural Language Processing
- EN.605.647: Neural Networks
- EN.605.649: Principles and Methods in Machine Learning
- EN.605.740: Machine Learning: Deep Learning
- EN.605.742: Deep Neural Networks
- EN.605.743: Advanced Artificial Intelligence
- EN.605.745: Reasoning Under Uncertainty
- EN.605.746: Advanced Machine Learning
- EN.605.747: Evolutionary and Swarm Intelligence
Bioinformatics
Prerequisite Courses:
- EN.605.205: Molecular Biology for Computer Scientists Courses:
- EN.605.631: Statistical Methods for Computer Science
- EN.605.643: Linked Data and the Semantic Web
- EN.605.651: Principles of Bioinformatics
- EN.605.652: Biological Databases and Database Tools
- EN.605.653: Computational Genomics
- EN.605.656: Computational Drug Discovery, Dev
- EN.605.657: Statistics for Bioinformatics
- EN.605.716: Modeling and Simulation of Complex Systems
- EN.605.751: Algorithms for Structural Bioinformatics
- EN.605.755: Systems Biology
- EN.605.759: Independent Project in Bioinformatics
Cybersecurity
Courses:
- EN.605.609: DevOps and Secure Software Development
- EN.605.636: Autonomic Computing
- EN.605.731: Survey of Cloud Computing Security
- EN.635.611: Principles of Network Engineering
- EN.635.673: Protecting Critical Infrastructure Against Cyber Attacks
- EN.635.676: Cybersecurity in Information Systems
- EN.635.711: Advanced Topics in Network Engineering
- EN.635.775: Cyber Operations, Risk, and Compliance
- EN.695.601: Foundations of Information Assurance
- EN.695.611: Embedded Computer Systems-Vulnerabilities, Intrusions, and Protection Mechanisms
- EN.695.612: Operating Systems Security
- EN.695.615: Cyber Physical Systems Security
- EN.695.622: Web Security
- EN.695.624: Introduction to Internet of Things Security and Privacy
- EN.695.641: Cryptology
- EN.695.642: Intrusion Detection
- EN.695.643: Introduction to Ethical Hacking
- EN.695.711: Java Security
- EN.695.721: Network Security
- EN.695.723: Advanced Web Security
- EN.695.742: Digital Forensics Technologies and Techniques
- EN.695.744: Reverse Engineering and Vulnerability Analysis
Data Communications and Networking
Courses:
- EN.605.671: Principles of Data Communications Networks
- EN.605.674: Network Programming
- EN.605.675: Protocol Design
- EN.605.677: Internetworking with TCP/IP I
- EN.605.771: Wired and Wireless Local and Metropolitan Area Networks
- EN.605.777: Internetworking with TCP/IP II
- EN.605.779: Network Design and Performance Analysis
- EN.635.611: Principles of Network Engineering
- EN.635.711: Advanced Topics in Network Engineering
- EN.525.678: Next Generation Mobile Networks and Security with 5G
- EN.525.768: Wireless Networks
Data Science and Cloud Computing
Courses:
- EN.605.631: Statistical Methods for Computer Science
- EN.605.632: Graph Analytics
- EN.605.633: Social Media Analytics
- EN.605.634: Crowdsourcing and Human Computation
- EN.605.635: Cloud Computing
- EN.605.649: Principles and Methods in Machine Learning
- EN.605.662: Data Visualization
- EN.605.724: Applied Game Theory
- EN.605.731: Survey of Cloud Computing Security
- EN.605.741: Large-Scale Database Systems
- EN.605.744: Information Retrieval
- EN.605.746: Advanced Machine Learning
- EN.605.788: Big Data Processing Using Hadoop
- EN.685.648: Data Science
- EN.625.734: Queuing Theory
- EN.625.741: Game Theory
Database Systems and Knowledge Management
Courses:
- EN.605.624: Logic: Systems, Semantics, and Models
- EN.605.641: Principles of Database Systems
- EN.605.643: Linked Data and the Semantic Web
- EN.605.644: XML Design Paradigms
- EN.605.645: Artificial Intelligence
- EN.605.647: Neural Networks
- EN.605.740: Machine Learning: Deep Learning
- EN.605.741: Large-Scale Database Systems
- EN.605.742: Deep Neural Networks
- EN.605.744: Information Retrieval
- EN.605.745: Reasoning Under Uncertainty
- EN.635.632: Engineering Data Intensive Systems
- EN.685.648: Data Science
- EN.525.733: Deep Learning for Computer Vision
Enterprise and Web Computing
Courses:
- EN.605.681: Principles of Enterprise Web Development
- EN.605.682: Web Application Development with Java
- EN.605.683: Java Enterprise Development: Processes, Tools and Infrastructure
- EN.605.686: Mobile Application Development for the Android Platform
- EN.605.687: Mobile Application Development for the iOS Platform
- EN.605.691: Entrepreneurship for Computer Scientists
- EN.605.784: Enterprise Computing with Java
- EN.605.786: Enterprise System Design and Implementation
- EN.605.787: Front End Web App Development
- EN.605.788: Big Data Processing Using Hadoop
- EN.605.789: Service API Design and Development
- EN.635.683: E-Business: Models, Architecture, Technologies, and Infrastructure
- EN.635.792: Entrepreneurship, Innovation, and Corporate Success
HumanComputer Interaction and Visualization
Courses:
- EN.605.633: Social Media Analytics
- EN.605.634: Crowdsourcing and Human Computation
- EN.605.661: Computer Vision
- EN.605.662: Data Visualization
- EN.605.667: Computer Graphics
- EN.605.668: Computer Gaming Engines
- EN.605.767: Applied Computer Graphics
- EN.605.768: Advanced Game Design and Development Engines
- EN.635.661: Principles of Human Computer Interaction
Research
Courses:
- EN.605.646: Natural Language Processing
- EN.605.728: Quantum Computation
- EN.605.746: Advanced Machine Learning
- EN.605.747: Evolutionary and Swarm Intelligence
- EN.605.795: Capstone Project in Computer Science
- EN.605.801: Independent Study in Computer Science I
- EN.605.802: Independent Study in Computer Science II
- EN.635.673: Protecting Critical Infrastructure Against Cyber Attacks
- EN.695.722: Covert Channels
Software Engineering
Courses:
- EN.605.601: Foundations of Software Engineering
- EN.605.603: Object-Oriented and Functional Programming in Kotlin
- EN.605.604: Object-Oriented Programming with C++
- EN.605.606: Programming with Domain-Specific Languages
- EN.605.607: Agile Software Development Methods
- EN.605.608: Software Project Management
- EN.605.609: DevOps and Secure Software Development
- EN.605.629: Programming Languages
- EN.605.701: Software Systems Engineering
- EN.605.702: Cloud-native Architecture and Microservices
- EN.605.704: Object-Oriented Analysis and Design
- EN.605.705: Software Safety
- EN.605.707: Software Patterns
- EN.605.708: Tools and Techniques of Software Project Management
Systems
Courses:
- EN.605.611: Foundations of Computer Architecture
- EN.605.612: Operating Systems
- EN.605.613: Introduction to Robotics
- EN.605.614: System Development in the UNIX Environment
- EN.605.615: Compiler Design with LLVM
- EN.605.616: Multiprocessor Architecture & Programming
- EN.605.617: Introduction to GPU Programming
- EN.605.618: Introduction to High Performance Computing
- EN.605.715: Software Development for Real-Time Embedded Systems
- EN.605.716: Modeling and Simulation of Complex Systems
Theory
Courses:
- EN.605.620: Algorithms for Bioinformatics
- EN.605.621: Foundations of Algorithms
- EN.605.622: Computational Signal Processing
- EN.605.624: Logic: Systems, Semantics, and Models
- EN.605.626: Image Processing
- EN.605.629: Programming Languages
- EN.605.630: Theory of Computation
- EN.605.721: Design and Analysis of Algorithms
- EN.605.724: Applied Game Theory
- EN.605.727: Computational Geometry
- EN.605.728: Quantum Computation
- EN.605.729: Formal Methods
- EN.625.617: Intro to Enumerative Combinatorics
- EN.625.687: Applied Topology
- EN.625.690: Computational Complexity and Approximation
- EN.625.692: Probabilistic Graphical Models
- EN.625.734: Queuing Theory
- EN.625.741: Game Theory
Independent Study
Courses:
- EN.605.795: Capstone Project in Computer Science
- EN.605.801: Independent Study in Computer Science I
- EN.605.802: Independent Study in Computer Science II
Requirements for Communications and Networking Concentration
Ten courses (30 credits) must be completed within five years. The curriculum consists of three core courses (9 credits) from the program and seven concentration courses (21 credits) as listed in the Courses by Concentration section, of which a maximum of three courses (9 credits) may come from the Electrical and Computer Engineering (EN.525.xxx) program.
Communications and Networking Concentration
Prerequisite:
- EN.525.202: Signals and Systems Core Courses:
- EN.605.601: Foundations of Software Engineering
- EN.605.611: Foundations of Computer Architecture
- EN.605.621: Foundations of Algorithms
Electives:
- EN.605.671: Principles of Data Communications Networks
- EN.605.674: Network Programming
- EN.605.675: Protocol Design
- EN.605.677: Internetworking with TCP/IP I
- EN.605.771: Wired and Wireless Local and Metropolitan Area Networks
- EN.605.777: Internetworking with TCP/IP II
- EN.695.601: Foundations of Information Assurance
- EN.695.622: Web Security
- EN.695.721: Network Security
- EN.525.608: Next Generation Telecommunications
- EN.525.614: Probability & Stochastic Processes for Engineers
- EN.525.616: Communication Systems Engineering
- EN.525.618: Antenna Systems
- EN.525.620: Electromagnetic Transmission Systems
- EN.525.638: Introduction to Modern Wireless and Optical Communication Systems
- EN.525.640: Satellite Communications Systems
- EN.525.641: Computer and Data Communication Networks I
- EN.525.678: Next Generation Mobile Networks and Security with 5G
- EN.525.707: Error Control Coding
- EN.525.708: Iterative Methods in Communications Systems
- EN.525.722: Wireless and Mobile Cellular Communications
- EN.525.735: MIMO Wireless Communications
- EN.525.738: Advanced Antenna Systems
- EN.525.747: Speech Processing
- EN.525.751: Software Radio for Wireless Communications
- EN.525.754: Wireless Communication Circuits
- EN.525.759: Image Compression, Packet Video, and Video Processing
- EN.525.761: Wireless and Wireline Network Integration
- EN.525.768: Wireless Networks
- EN.525.771: Propagation of Radio Waves in the Atmosphere
- EN.525.772: Fiber-Optic Communication Systems
- EN.525.776: Information Theory
- EN.525.783: Spread Spectrum Communications
- EN.525.789: Advanced Satellite Communications
- EN.525.791: Microwave Communications Laboratory
- EN.525.793: Advanced Communication Systems
Concentrations are noted on the students transcript.
