CATALOG: Introduction -- Undergraduate Programs -- Graduate Programs -- Undergraduate Courses -- *Combined Courses* -- Graduate Courses

Advanced Undergraduate/ Graduate Courses

600.402 (E) Medical Informatics
Computers and information technology have become major forces in transforming American medicine. We shall discuss some of the new entities—the computer-based patient record, clinical practice guidelines, and digital libraries—and their underlying technologies: networks, databases, controlled vocabularies, and decision analysis. Prerequisite: none. Short course.
Lehmann     1 credit

600.403 (E) Computational Genomics: Sequence Modeling
This short course will cover probabilistic methods for modeling biological sequences (e.g., DNA and protein sequences). Topics include inferring relationships between and among sequences and evolutionary trees over sequences. Prerequisites: knowledge of algorithms, probability and programming. Short course.
1 credit

600.406 (E) Developing Photo and Video Applications for Online Social Networks
How many hours do you spend on facebook a day? This experimental course will teach you how to create and launch web 2.0 applications. The class provides an introduction to the field of computer vision, giving you the tools to detect and track objects in the environment. Class topics include social network interfaces - primarily facebook application interface (API), image processing, face detection, virtual environment and rendering methods. Students will work in small teams to conceptualize, develop, distribute, and market new applications to facebook users. Course is appropriate for students interested in computer vision, entrepreneurship, or human-computer interaction. Prereq: 600.107 and 600.120.  Short course. 
1 credit

600.407 (E) General Purpose Computation on the GPU
Programmable graphics hardware not only provides a way to perform advanced real-time 3D rendering, but also a platform for highly parallel numerical computing. Over the past 5 years, the General Purpose Graphics Processor Unit (GPGPU) community has grown around performing non-graphics computations using the limited instruction set and framework of the graphics pipeline.  This short course, which meets one hour per week from the Spring semester, will introduce students to GPGPU computing using NVIDIA's CUDA platform.  Prerequisites: 600.120 and 600.333/433; computer graphics and linear algebra recommended.  Short course.
1 credit

600.408 (E, Q) Empirical Research Methods in CS
Computer programs are real-world processes that, like complex physical and biological systems, can be studied in controlled experiments and analyzed statistically. This course gives a rigorous grounding in empirical methods for students interested in any area of applied computer science. Topics: experimental design, probabilistic modeling, exploratory data analysis, hypothesis testing, and system tuning. Prerequisites: 600.120 and 600.226, or equivalent knowledge. Short course.
1 credit

600.409 (E) Digital Preservation
This course explores how digital information may be stored, maintained, and retrieved over decades or centuries.   It examines both the technical and social aspects of preservation, drawing material from both Computer Science and the Digital Library community.  Lecture topics will include architectures for long-term archival, data provenance, information representation, metadata semantics, replica maintenance, authenticity and privacy, and business models for sustainable archives. Students will define and execute a research project investigating a hot unsolved problem related to data preservation.  The course is suitable for upper-level undergraduates and graduate students from all disciplines that have had an introductory programming course. Prerequisites:  600.107 or equivalent.  Short course.
1 credit

600.411 (E) Conversational Interfaces
This course looks at the application of natural language processing technology systems for human-computer interaction, in particular text-based conversational interfaces. The course begins with background on computational approaches to discourse and dialogue, and then reviews recent work in information extraction and question answering. There will be one final project which explores a novel use of nlp for text-based human computer interaction. Prerequisite: 600.465 or 600.466. Short course.
1 credit

600.415 (E) Database Systems
Similar material as 600.315, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.315 or 600.415, but not both. Prerequisite: 600.226. [Systems]
Yarowsky     3 credits     fall

600.416 (E) Transaction Processing Systems
[Last offered 2009.] Similar material as 600.316, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.316 or 600.416, but not both. Prerequisite: 600.315/415 or equivalent, 600.120. [Systems]
Burns     3 credits

600.418 (E) Operating Systems
Similar material as 600.318, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.318 or 600.418, but not both. Prerequisites: 600.120, 600.211 (or equivalent C experience), 600.226, 600.333. [Systems]
staff     3 credits     spring

600.419 (E) Storage Systems
[Last offered 2008.] Similar material as 600.319, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.319 or 600.419, but not both. Prerequisites: 600.226 and 600.333/433. [Systems]
Burns     3 credits 

600.420 (E) Parallel Programming
Similar material as 600.320, covered in more depth. Intended for upper-level undergraduates and graduate students.  Students may receive credit for 600.320 or 600.420, but not both. Prerequisites: 600.120 or equiv. [Systems]
Burns     3 credits

600.421 (E) Object-Oriented Software Engineering
Similar material as 600.321, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.321 or 600.421, but not both. Prerequisites: 600.226 and 600.120. [Systems or Applications]
Smith     3 credits     fall

600.424 (E) Network Security
Similar material as 600.324, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.324 or 600.424, but not both. Prerequisites: 600.226, 600.344/444 or permission; 600.120 (or equivalent) recommended. [Systems]
staff     3 credits     fall

600.425 (E) Declarative Methods
Similar material as 600.325, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.325 or 600.425, but not both. Prerequisites: 600.226, 600.271, Calc II. [Analysis]
Eisner     3 credits     spring

600.426 (E) Programming Languages
Functional, object-oriented, and other language features are studied independent of a particular programming language. Students become familiar with these features by implementing them. Most of the implementations are in the form of small language interpreters. Some type checkers and a small compiler will also be written. The total amount of code written will not be overly large, as the emphasis is on concepts. The ML programming language is the implementation language used. Prerequisites: 600.226. Freshmen/sophomores by permission only. [Analysis]
Smith     3 credits     spring

600.428 (E) Compilers and Interpreters
Similar material as 600.328, covered in more depth. Intended for upper-level undergraduates and graduate students.  Students may receive credit for 600.328 or 600.428, but not both. Prerequisite: 600.120 & 600.226.  [Systems]
Fröhlich     3 credits

600.433 (E) Computer Systems
Similar material as 600.333, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.333 or 600.433, but not both. Prerequisite: 600.107 or 600.109. [Systems]
Masson     4 credits     fall/summer

600.435 (E) Artificial Intelligence
Similar material as 600.335, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.335 or 600.435, but not both. Prerequisite: 600.226, 550.171; linear algebra, prob/stat recommended. [Applications]
Hager, Sheppard     3 credits     spring

600.436 (E) Algorithms for Sensor-Based Robotics
Similar material as 600.336, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.336 or 600.436, but not both. Prerequisite: 600.226, calculus, prob/stat. [Analysis]
Hager     3 credits 

600.437 (E) Distributed Systems
Similar material as 600.337, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.337 or 600.437, but not both. Prerequisites: 600.120 and 600.226. [Systems]
Amir     3 credits     fall

600.438 (E) Advanced Operating Systems
This course is for people who wish to explore operating systems in greater detail in a hands-on fashion.  Student partners (pairs) implement a UNIX-inspired thread library and kernel.  Prerequisite: 600.318/418, 600.439 or perm.. [Systems]
staff     4 credits

600.439 Microkernel Architecture and Design
This course examines operating system internals by using an existing, high-performance microkernel as a guide. We start from the moment the machine is powered on and look at each action that the microkernel takes as it starts up. We follow this path until we have worked our way through the first interprocess communication, and then look at how drivers and system structure is initialized. As we work our way through the microkernel's initialization and startup, we examine what is happening at each step, what options exist for the design at that point, and why the particular choice of the actual implementation was made. We will also look at architectural tradeoffs in the design of the operating system. Prereq: Thorough knowledge of C and UNIX, 600.333/433 & 600.318/418. [Systems]
Shapiro     3 credits

600.440 (E) High-Assurance Systems
This course focuses on the design and implementation of high assurance (i.e., certifiably secure) systems. It examines the history of high assurance standards and system building, the state of current standards, and the motivations behind them. It discusses the objectives of high-assurance software construction and the methods by which high-assurance is achieved, and tests these methods against an actual high-assurance software system. In the process, it challenges the assumptions that underlie high assurance software processes, and investigates how these assumptions and methods may need to change in the face of open source and/or collaborative software development. Finally, it looks at research topics in high assurance systems. Prerequisite: 600.318/418. [Applications]
Shapiro     3 credits

600.442 (E,Q) Modern Cryptography
This course focuses on cryptographic algorithms, formal definitions, hardness assumptions, and proofs of security. Topics include number-theoretic problems, pseudo-randomness, block and stream ciphers, public-key cryptography, message authentication codes, and digital signatures.  Prerequisites: 600.271 and 550.171 or equiv, 600.226 and a 300-level or above systems course. [Analysis]
Ateniese     3 credits

600.443 (E) Security and Privacy in Computing
Lecture topics will include computer security, network security, basic cryptography, system design methodology, and privacy. There will be a heavy workload, including written homework, programming assignments, exams and a comprehensive final. The class will also include a semester-long project that will be done in teams and will include a presentation by each group to the class. Prerequisite: a basic course in operating systems and networking, or permission of instructor. [Applications]
Rubin     3 credits     spring

600.444 (E) Computer Networks
Similar material as 600.344, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.344 or 600.444, but not both. [Systems]
Terzis     3 credits    spring

600.445 (E) Computer-Integrated Surgery I
This course focuses on computer-based techniques, systems, and applications exploiting quantitative information from medical images and sensors to assist clinicians in all phases of treatment from diagnosis to preoperative planning, execution, and follow-up. It emphasizes the relationship between problem definition, computer-based technology, and clinical application and includes a number of guest lectures given by surgeons and other experts on requirements and opportunities in particular clinical areas. An optional term project may be undertaken under supervision of the instructor and clinician end users. Although this course is primarily intended for graduate students and advanced undergraduate students interested in doing research in this area, it may also be of interest to medical or qualified premedical students wanting to obtain a broader background in this emerging field. Prerequisites: 600.120, 600.226 and linear algebra or permission of instructor; recommended: 600.457, 600.461, image processing. [Applications]
Taylor     4 credits     fall

600.446 (E) Computer-Integrated Surgery II
This weekly lecture/seminar course addresses similar material to 600.445, but covers selected topics in greater depth. In addition to material covered in lectures/seminars by the instructor and other faculty, students are expected to read and provide critical analysis/presentations of selected papers in recitation sessions. Students taking this course are required to undertake and report on a significant term project under the supervision of the instructor and clinical end users. Typically, this project is an extension of the term project from 600.445, although it does not have to be. Grades are based both on the project and on classroom recitations. Students wishing to attend the weekly lectures as a 1-credit seminar should sign up for 600.452. Students may also take this course as 600.646. The only difference between 600.446 and 600.646 is the level of project undertaken. Typically, 600.646 projects require a greater degree of mathematical, image processing, or modeling background. Prospective students should consult with the instructor as to which course number is appropriate. Prerequisite: 600.445 or permission of instructor. [Applications]
Taylor     3 credits     spring

600.450 (E) Network Embedded Systems and Sensor Networks
This course is an introduction to fundamental concepts of networked embedded systems and wireless sensor networks. It is intended for juniors, seniors and first-year graduate students in computer science and other engineering majors with the prerequisite background. Covered topics include embedded systems programming concepts, low power and power aware design, radio technologies, communication protocols for ubiquitous computing systems, and some of the mathematical foundation of sensor behavior. Laboratory work consists of a set of programming assignments that consider a set of the issues described in class. Prerequisites: 600.226, 600.120, and 600.344. [Systems]
Terzis     3 credits     fall

600.451 (E) Performance of Computer-Communication Networks & Protocols
This is an advanced course in networks and protocols that examines the performance evaluation, design, and management of networks, including wireless networks. This course may have additional newer topics such as network calculas and randomized algorithms as well other algorithms for networking. The course uses analytical and simulation methods to evaluate, design and manage networks and protocols. Topics include introduction to and application of queuing theory, queueing networks, introduction to and application of graph theory, optimization techniques for routing and flow control; introduction to and application of  simulation methods; performance of multiple access, TCP/IP, Wireless Cellular, Ad hoc and Sensor Networks; design of backbone and access networks.  Prerequisites: 600.344/444 & 550.310.  [Analysis]
Mishra     3 credits

600.452 (E) Computer-Integrated Surgery Seminar
Essentially, 600.452 is identical to 600.446/646 without the term project. Students may receive credit for only one of 600.446/452/646. Prerequisite: 600.445 or permission of instructor. [Applications]
Taylor     1 credit     spring

600.457 (E,Q) Computer Graphics
Similar material as 600.357, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.357 or 600.457, but not both. Prerequisites: 600.120, 600.226, linear algebra; or permission of instructor.[Applications
Kazhdan     3 credits     spring

600.461 (E,Q) Computer Vision
Similar material as 600.361, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.361 or 600.461, but not both. Prerequisites: 600.226. [Applications]
Hager     3 credits     fall

600.463 (E,Q) Algorithms I
Similar material as 600.363, covered in more depth. Intended for upper-level undergraduates and graduate students. Students may receive credit for 600.363 or 600.463, but not both. Prerequisite: 600.226. [Analysis]
Awerbuch     3 credits     fall

600.464 (E,Q) Randomized Algorithms
The course concentrates on the design and analysis of randomized algorithms. Problems from graph theory, computational geometry and information routing in networks will be treated. Some knowledge of probability theory and deterministic algorithmic techniques is helpful. Prerequisite: 600.363 or 600.463. [Analysis]
Kosaraju     3 credits     spring

600.465 (E) Introduction to Natural Language Processing
This course is an in-depth overview of techniques for processing human language. How should linguistic structure and meaning be represented? What algorithms can recover them from text? And crucially, how can we build statistical models to choose among the many legal answers? The course covers methods for trees (parsing and semantic interpretation), sequences (finite-state transduction such as morphology, and words (sense and phrase induction), with applications to practical engineering tasks such as information retrieval and extraction, text classification, part-of-speech tagging, speech recognition and machine translation. There are a number of structured but challenging programming assignments. Prerequisite: 600.226; previous exposure to probability or linguistics may be helpful. [Applications]
Eisner     3 credits     fall

600.466 (E) Information Retrieval and Web Agents
An in-depth, hands-on study of current information retrieval techniques and their application to developing intelligent WWW agents. Topics include a comprehensive study of current document retrieval models, mail/news routing and filtering, document clustering, automatic indexing, query expansion, relevance feedback, user modeling, information visualization and usage pattern analysis. In addition, the course explores the range of additional language processing steps useful for template filling and information extraction from retrieved documents, focusing on recent, primarily statistical methods. The course concludes with a study of current issues in information retrieval and data mining on the World Wide Web. Topics include web robots, spiders, agents and search engines, exploring both their practical implementation and the economic and legal issues surrounding their use. Prerequisite: 600.226. [Applications]
Yarowsky     3 credits     spring

600.467 (E) Wireless Networks and Mobile Computing Fundamentals
This course covers the basics of mobile communication and wireless networking for computer science majors by keeping a balance between communication and networking topics. In this course the students will be exposed to wireless transmission fundamentals (path loss, shadowing, modulation, coding and channel models), wireless cellular networks (cellular concept, channel reuse, capacity limits, and cellular systems such as GSM, GPRS and UMTS), and learn about mobile network and transport layers, medium access control protocols, wireless local area networks (IEEE 802.11) , wireless mesh networks (IEEE 802.16), and emerging dynamic spectrum access networks based on cognitive radios. Prerequisites: 600.344/444 recommended.  [Systems]
Mishra     3 credits

600.471 (E,Q) Theory of Computation
This is a graduate-level course studying the theoretical foundations of computer science. Topics covered will be models of computation from automata to Turing machines, computability, complexity theory, randomized algorithms, inapproximability, interactive proof systems and probabilistically checkable proofs. Students may not take both 600.271 and 600.471, unless one is for an undergrad degree and the other for grad. Prerequisite: 550.171 or permission. [Analysis]
Hohenberger     3 credits

600.472 (E, Q) Theoretical Cryptography
(No longer offered - see 600.442 or 600.742.) The focus of this course is on the definitions and constructions of various cryptographic primitives and protocols, such as one-way functions, pseudo-random generators, digital signature schemes, encryption schemes, zero-knowledge and multiparty computation.  We will study how to formulate definitions that capture desired security properties as well as techniques for designing and then proving that a construction realizes these properties.   Students should be comfortable with the basics of number theory and proof writing.   Prerequisite: 600.471 recommended.  [Analysis]
Hohenberger  3 credits

600.475 (E) Machine Learning
This course takes an application driven approach to current topics in machine learning. The course covers supervised learning (classification/structured prediction/regression/ranking), unsupervised learning (dimensionality reduction, bayesian modeling, clustering) and semi-supervised learning. Additional topics may include reinforcement learning and learning theory. The course will also consider challenges resulting from learning applications, such as transfer learning, multi-task learning and large datasets. We will cover popular algorithms (naive Bayes, SVM, perceptron, HMM, winnow, LDA, k-means, maximum entropy) and will focus on how statistical learning algorithms are applied to real world applications. Students in the course will implement several learning algorithms and develop a learning system for a final project.
 Prerequisite: 600.335/435 or permission of instructor. [Applications]
Dredze     3 credits

600.476 (E) Graphical Models
This course will cover the fundamentals of graphical models and their use for statistical inference. Topics will include: problem representation using Bayesian networks and Markov networks, methods for inference in graphical models, and learning in graphical models.  Prerequisite: 600.226, probability, 600.363/463.  [Analysis]
Hager     3 credits

600.478 (E) Visual Imaging in Surgery and Medicine
A survey course in visual imaging registration and fusion methods and its applications in surgery and medicine. Such applications are common in medical imaging including integration of CT, MRI, ultrasound, PET, and other sensing. However, compared to these sensing technologies visual imaging requires more efficient computation and stronger emphasis on contextual and temporal information. Key goals for such methods include multi-resolution, and multi-temporal registration and superresolution. A large body of work and practical applications using visual imaging exist in remote sensing, surveillance, and robot vision, but methods for surgical visualization are relatively rare and new. This course aims to provide background on devices, methods, and applications for visual imaging in medicine and surgery including  recent  work in the field. Students will design and implement registration methods based on data sets provided as part of a semester-long team project. Prereq: 600.226,  600.461; recommended: linear algebra, 600.445.  [Applications]
Kumar     3 credits

600.488 (E) Foundations of Computational Biology and Bioinformatics II
[Co-listed with 580.488.]  This course will introduce probabilistic modeling and information theory applied to biological sequence analysis, focusing on statistical models of protein families, alignment algorithms, and models of evolution.  Topics will include probability theory, score matrices, hidden Markov models, maximum likelihood, expectation maximization and dynamic programming algorithms.  Homework assignments will require programming in Python.  Foundations of Computational Biology I is not a prereq.  Prerequisites: math through linear algebra and differential equations, 580.221 or equiv., 600.226 or equiv.  [Analysis]
Karchin     4 credits

600.490 (E) Modern Software Development for Scientists & Engineers
This course provides a broad survey of modern software development tools and methods for scientists and engineers working outside of computer science and computer engineering.  Topics will include: programming style and documentation practices, software development processes, configuration management, object-oriented analysis and design, essential algorithms and data structures, software testing and quality assurance, performance analysis and tuning, automation of development activities, and a number of widely used libraries for scientific computation and visualization.  Restrictions: graduate students only; not for CS or CE students.  Prerequisites: intro programming; recommended: data structures, basic familiarity with Unix.
Froehlich     4 credits

600.491-492 (E) Computer Science Workshop I, II
An applications-oriented, computer science project done under the supervision and with the sponsorship of a faculty member in the Department of Computer Science. Computer Science Workshop provides a student with an opportunity to apply theory and concepts of computer science to a significant project of mutual interest to the student and a Computer Science faculty member. Permission to enroll in CSW is granted by the faculty sponsor after his/her approval of a project proposal from the student. Interested students are advised to consult with Computer Science faculty members before preparing a Computer Science Workshop project proposal. Prerequisite: consent of faculty supervisor.
3 credits

600.493 (E) Robocup I
This course allows students to participate in the development of a robot soccer team. Students will work with a development team to improve some aspect of the team infrastructure, sensing, world modeling, or strategy components. Prerequisites: 600.226, calculus, probability and statistics; co-requisite: 600.336 when offered.
Hager     1 credit     spring

600.494 (E) Robocup II
This course is for students who wish to manage a development team for robot soccer. Students will create and manage software projects related to robot soccer. Prerequisites: 600.493 or permission.
Hager     1 credit     spring

600.498 Programming Contest Laboratory
This laboratory course meets for 2.5 hours/week. The intent is to develop the skills needed to achieve victory in programming contests. Prerequisite: permission of instructor. [General]
Smith     1 credit

600.503-504, 576, 597 Independent Study
Individual guided study  under the direction of a faculty member in the department. The program of study, including the credit to be assigned, must be worked out in advance between the student and the faculty member involved. May be taken fall (503), spring (504), intersession (577), summer (597).

600.507-508, 574, 595 Independent Research
Independent research under the direction of a faculty member in the department. The program of research, including the credit to be assigned, must be worked out in advance between the student and the faculty member involved. May be taken fall (507), spring (508), intersession (574), summer (595).

600.509-510, 550, 599 Computer Science Internship
Individual work in the field with a learning component, supervised by a faculty member in the department. The program of study and credit assigned must be worked out in advance between the student and the faculty member involved. Students may not receive credit for work that they are paid to do. As a rule of thumb, 40 hours of work is equivalent to one credit. P/F only. May be taken fall (509), spring (510), intersession (550), summer (599).

600.519-520 (E) Senior Honors Thesis
For computer science majors only. The student will undertake a substantial independent research project under the supervision of a faculty member, potentially leading to the notation “Departmental Honors with Thesis” on the final transcript. Students are expected to enroll in both semesters of this course during their senior year. Project proposals must be submitted and accepted in the preceding spring semester (junior year) before registration. Students will present their work publicly before April 1 of senior year. They will also submit a first draft of their project report (thesis documentation) at that time. Faculty will meet to decide if the thesis will be accepted for honors. Prerequisite: 3.5 GPA in Computer Science after spring of the junior year and permission of faculty supervisor.
3 credits / semester (taken twice)

600.546 (E) Senior Thesis in Computer Integrated Surgery
The student will undertake a substantial independent research project in the area of computer-integrated surgery, under joint supervision of a WSE faculty adviser and a clinician or clinical researcher at the Johns Hopkins Medical School. This project will typically require background literature research, design, and execution of an experimental study or substantial implementation effort, and writeup of the results. The written reports will be published as reports by the CISST Engineering Research Center and may be used by the students as the basis for further academic publication. Because of the interdisciplinary, team oriented nature of much CIS research, students may work in small groups or with other members of the adviser’s research group. Students will be expected to establish a research plan and schedule and may be required by their adviser to provide interim documentation and meet interim deadlines, as appropriate. This requirement will be especially pertinent for two-semester projects. Prerequisite: 600.445 or permission required. [Applications]
Taylor     3 credits/semester (may be taken twice)