

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. Pre-requisites: knowledge of algorithms, probability and programming. 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.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
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]
Shapiro 3 credits spring
 
600.419 (E) Storage Systems
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
Fall
 
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]
Monrose 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,Q) 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.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) 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.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 Topics in Operating Systems
Topics will vary from year to year, usually in the areas of operating system security, security assurance, resource management, high-performance microkernels, and similarly advanced subjects. Emphasis in this course is on understanding not just concepts but their implications for the whole of the resulting system design. A significant project may be included. Prerequisite: 600.318/418. [Systems]
Shapiro 3 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.442 (E,Q) Cryptography and Network Security
This course focuses on algorithms and protocols for secure network communication. Topics include cryptographic algorithms (DES, Diffie-Hellman, RSA), authentication, key management, secure networking, certification, trust management, and secure electronic commerce. Prerequisites: 600.271 and 550.171 or equiv, 600.226 and a 300-level or above systems course. [Analysis]
Ateniese 3 credits fall
 
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 work load, 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]
3 credits
 
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.448 (E,Q) Theory of Network Communication
Similar material to 600.348, but in more depth, intended for upper-level undergraduates and graduate students. Students may receive credit for 600.348 or 600.448, but not both. Weekly assignments. Some knowledge of probability theory is helpful. Prerequisite: 600.344/444 or permission. [Analysis]
Scheideler 3 credits
 
600.449 (E) Internet Protocols
[Replaced by 600.450 starting Fall 2007.] Similar material as 600.349, but in more depth, intended for upper-level undergraduates and graduate students. Students may receive credit for 600.349 or 600.449, but not both. Prerequistes: 600.120 and 600.344/600.444; 600.211 is recommended but not required. [Systems]
Terzis 3 credits fall
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.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.460 (E) Interactive Graphics and Games
This course studies a variety of techniques for creating interactive graphics applications. Students collaborate in small groups to design and implement their own 3D games. Prerequisite: 600.356/456 or 600.357/457 or significant graphics experience and permission. [Applications]
Cohen 3 credits
 
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.462 (E) Advanced Topics in Computer Vision
[Cross-listed as 580.464]
This
course covers state-of-the-art methods in dynamic vision, with an emphasis on
segmentation, reconstruction and recognition of static and dynamic scenes.
Topics include: reconstruction of static scenes (tracking and correspondence,
multiple view geometry, self calibration), reconstruction of dynamic scenes
(2-D and 3-D motion sementation, nonrigid motion analysis), recognition of
visual dynamics (dynamic textures, face and hand gestures, human gaits, crowd
motion analysis), as well as geometric and statistical methods for clustering
and unsupervised learning, such as K-means, Expectation Maximization, and
Generalized Principal Component Analysis. Applications in robotics and
biomedical imaging are also included. Prereq: 600.461 & linear algebra or
permission. [Applications]
Vidal 3 credits spring
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.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.Prerequisite: 600.271 or permission. [Analysis]
Hohenberger 3 credits
 
600.475 (E) Machine Learning
This course covers current topics in machine learning research. After a brief historical review, the class focuses on a series of different learning models, including memory-based learning, genetic algorithms, and neural net learning algorithms. The class considers the design and methodology of experiments used to test and compare different machine learning systems. Although the main focus is on experimental work, the course also examines theoretical work on distribution-free learning models. Students in the course design their own machine learning system as a final project. Prerequisite: 600.335/435 or permission of instructor. [Applications]
Sheppard 3 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-req: 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.501-502 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 either term by freshmen or sophomores.
 
600.503-504 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 either term by juniors or seniors.
 
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)
 
600.576 Intersession Independent Study
Similar to 600.501-504, except taken during winter intersession.
 
600.597 Summer Independent Study
Similar to 600.501-504, except taken during summer session.