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. [Applications]
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. [Analysis]
1 credit
600.404 (E) Artificial Neural Networks
This short course will expose students to the theory and
practice of artificial neural networks. We will use perceptrons and multilayer
networks to introduce general concepts in machine learning and statistical
pattern recognition, e.g. supervised and unsupervised learning, generalization,
bias vs variance and VC-dimension. We will examine example applications and
hardware implementations. The approach will be to introduce key ideas in the
lectures while leaving elaboration of these ideas to readings and homework.
Students will implement various algorithms in a language of their choice.
Prerequisites: Calc III, linear algebra, 600.226. Cross-listed with
Neuroscience. Short course. [Applications]
Pineda1 credit
600.409 (E) Embedded Computer Systems-Vulnerabilities,
Intrusions, and Protection Mechanisms
While most of the world is preoccupied with high profile
network-based computer intrusions, this course examines the potential for
computer crime and the protection mechanisms used in conjunction with the
embedded computers that can be found within non-networked products ranging from
vending machines to radar systems. This course provides a basic understanding
of embedded computer systems: differences with respect to networked-based
computers, programmability, exploitation mechanisms, and current intrusion protection
technologies. In-class computer laboratory experiments consisting of
demonstration software reinforces the topic areas as discussed in the lecture.
Prerequisite: basic understanding and working knowledge of computer systems.
Short course. [Systems]
Kalb1 credit
600.410 (E) Sensory Engineering
Sensory engineering is the science of engineering virtual
environments. The applications of sensory engineering include virtual reality,
telepresence, telerobotics, virtual workstations, distributed simulation
networks, interactive data visualization, and sensory enhancement. This course
provides an overview of the multidisciplinary nature of sensory engineering.
Topics include the study of human sensory processes as applied to sensory
interfaces and sensory interactions, human perception as applied to
interpreting virtual environments, human factors as related to performance in
virtual environments, algorithms such as computational geometry, image
processing, and real-time operations as related to generating interactive
virtual environments, and high performance computing hardware, head- mounted
displays, and other 1/0 devices for implementing interactive virtual
environments. Class members participate in a group project to design a simple
virtual environment. Grading is based on the group project and on a research
paper. Prerequisite: none. Short course. [Applications]
Massof1 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. [Applications]
1 credit
600.413 (E) Peer-to-Peer Network Systems
Peer-to-peer Internet applications have recently been
popularized through file sharing applications like Napster, Gnutella and
FreeNet. While much of the attention has been focused on the copyright issues
raised by these particular applications, peer-to-peer systems have many
interesting technical aspects like decentralized control, self organization,
adaptation and scalability. In this course we are going to cover several papers
covering the evolution and some of the technical issues around building
peer-to-peer (P2P) network systems. We are going to start by looking at the
original P2P application, Napster, and some of its later offsprings such as
Gnutella, Freenet and FastTrack. We are going to discuss the scaling
limitations of these systems and see how some recently proposed systems (Chord,
CAN, Pastry) propose to address these limitations. While these
second-generation systems are scalable in terms of the amount of routing state
required in each P2P node, they offer only a primitive, that is given a key the
ability to quickly locate a node that stores that key. Next, we are going to
cover some applications built on top of this primitive, spanning from
distributed file systems to event notification systems. We are going to close
the course by exploring some of the shortcomings of this second generation P2P
system and some of the open problems surrounding P2P systems. Finally we are
going to briefly cover some of the alternative designs in this system space
(i.e., network overlays) and discuss the implications of P2P systems on the
larger Internet. Prerequisites: 600.318/418, 600.344/444 or permission. Short
course. [Systems]
Terzis1 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]
Yarowsky3
creditsfall
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, C++ programming. [Systems]
Burns3 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; 600.111 recommended. [Systems]
Shapiro3 creditsspring
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]
Burns3 creditsFall
600.421 (E) Object-Oriented Systems
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]
Smith3 creditsfall
600.422 (E) Security Informatics Fundamentals
Principles of information security are addressed and
applications are considered. Topics covered include identification and
authentication, access control, security models, and issues related to
operational systems integrity. Practical aspects of security and assurance are
addressed and approaches to security evaluation are described. Distributed
systems security is considered from the perspective of the Web and the Internet
in terms of TCP/IP security. Multi-level security relative to concurrency
control is explored. Security applications to health and finance are discussed.
In addition to lectures, the course will involve attendance at a number of
Information Security Institute- sponsored seminars, as well as presentations by
guest lecturers. An information security and assurance topic area will be
identified for each student, and a research paper will be required addressing
relevant issues. Prerequisites: 600.333/433 and 600.344/444 and permission of
instructor. [Systems]
Masson3 credits
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) and 600.349/449 recommended.
[Systems]
Monrose3
creditsfall
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]
Eisner3 creditsspring
600.426 (E,Q) Programming Languages
This course departs from the traditional programming
languages course which surveys a number of programming languages. Instead,
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 in the course. ML includes features such as type
inference, a functional basis, and an advanced module system that make it worthy
of study in its own right. Prerequisites: 600.226. Freshmen/Sophomores by
permission only. [Analysis]
Smith3 creditsspring
600.427 (E) On-Line Computing
Intelligent decision making in spite of temporal and spatial
uncertainties, with applications to engineering and economics. On-line
algorithms: decision making without knowing the future (e.g., investing in the
stock market). Distributed algorithms: operation without knowledge of the
current state (e.g., mobile users communication in cellular networks).
Prerequisite: 600.363 or 600.463. [Analysis]
Awerbuch3
credits
600.428 (E) Compiling and Program Analysis
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.226; 600.120 highly recommended. [Systems]
Shapiro3 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]
Masson3
creditsfall/summer
600.434 (E) Computer System Architecture
Similar material as 600.334, covered in more depth. Intended
for upper-level undergraduates and graduate students. Students may receive
credit for 600.334 or 600.434, but not both. Prerequisite: 600.333/433 or
equivalent. [Systems]
3 credits
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
creditsspring
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]
Shapiro3 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: Intermediate
Programming and 600.226; 600.111 recommended. [Systems]
Amir3 creditsfall
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]
Shapiro3
credits
600.441 (E) Vision-Based Interaction for Man and Machine
[Replaced by 600.630 in 2005.]
This seminar course surveys recent research results on
algorithms for dynamic vision and their application. Specific emphasis will be
placed on approaches which derive novel and efficient algorithms using
generalizable mathematical and/or computational principles. Application papers
will cover problems ranging from the automated control of devices using vision
(e.g., automated driving) to perception-based user interfaces. Students will be
expected to participate in class by reading, presenting, and discussing
research papers. Prerequisites: 600.461 or 530.646 or permission of instructor.
[Applications]
Hager3 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]
Ateniese3
creditsfall
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]
Rubin3 creditsspring
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: linear
algebra and C++ programming or permission of instructor. Recommended: 600.457,
600.461, image processing. [Applications]
Taylor4 creditsfall
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]
Taylor3 creditsspring
600.447 (E,Q) Distributed Computing
Locality and symmetry breaking. Distributed data structures
for routing, tracking mobile users, wireless communication, directory service.
Introduction to distributed online computing: distributed data management (file
replication, paging). Asynchronous communication and synchronization
mechanisms. Fault tolerance: networks with dynamic and fault-ridden topology.
Prerequisites: familiarity with basic algorithmic and/or graph-theoretic
concepts (e.g., 600.363/463 or 600.226). [Analysis]
Awerbuch3 credits
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]
Scheideler3 credits
600.449 (E) Internet Protocols
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 (or 600.111) is recommended but not required.
[Systems]
Terzis3 creditsfall
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]
Taylor1 creditspring
600.456 (E,Q) Rendering Techniques
Similar material as 600.356, covered in more depth. Intended
for upper-level undergraduates and graduate students. Students may receive
credit for 600.356 or 600.456, but not both. Prerequisites: Data Structures
(600.226), Linear Algebra (550.291 or 110.201). [Applications]
Cohen3 credits
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]
Kazhdan3 creditsspring
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]
Cohen3 credits
600.461 (E,Q) Computer Vision
This course gives an overview of fundamental methods in
computer vision from a computational perspective. Methods include computation
of 3-D geometric constraints from binocular stereo, motion, texture,
shape-from-shading, and photometric stereo. Edge detection and color perception
are studied as well. Elements of machine vision and biological vision are also
included. Prerequisites: 600.226. [Applications]
Hager3 creditsfall
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]
Vidal3 creditsspring
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]
Awerbuch3
creditsfall
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]
Kosaraju3 creditsspring
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]
Eisner3
creditsfall
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]
Yarowsky3
creditsspring
600.471 (E,Q) Modern Complexity Theory
Similar material as 600.371, covered in more depth. Intended
for upper-level undergraduates and graduate students. Students may receive
credit for 600.371 or 600.471, but not both. Prerequisite: 600.271 or
permission. [Analysis]
Scheideler3 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]
Sheppard3 credits
600.484 (E,Q) Approximation Algorithms
Topics covered will be approximation with absolute and
relative guarantees, polynomial approximation schemes, nonapproximability,
complexity theoretic considerations, techniques for randomized approximation
algorithms, and approximate counting. [Analysis]
Scheideler3 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.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]
Smith1 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 JohnsHopkinsMedicalSchool.
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
CISSTEngineeringResearchCenter
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]
Taylor3 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.