Graduate catalog 2009 - 2010, Computer Science

Note: The class catalog is published every two years. Courses listed in the catalog may not be offered in a given term. For class offerings for each semester please click on the "Offerings" links.
CS 524: Theory Of ComputingCredits: 4− Description
Content: This course gives mathematical methods to classify the complexity of computational problems. Topics include regular languages, grammars, decidability, NP-completeness, and corresponding models of computation.
Prerequisites: CS 124 and 253.
CS 526: AlgorithmsCredits: 4− Description
Content: This course is a graduate level introduction to the design and analysis of algorithms. Although we will review some undergraduate level material, we will instead emphasize reading and experimentation at a level appropriate for the initiation of research. This course will have both theoretical and practical content. As course highlights, students will be expected to implement and analyze the performance of a fundamental data structure, starting with a close reading of the original research paper.
Particulars: There will be about six regular homework assignments, including both written and programming components, counting for at least half of the grade. There will be a take-home mid-term exam and a take-home final exam. The examinations will emphasize both analysis and reading.
Prerequisites: CS 224 and CS 253.
CS 551: Systems ProgrammingCredits: 4− Description
Content: Systems programming topics will be illustrated by use of the Unix operating system. Topics include: file i/o, the tty driver, window systems, processes, shared memory, message passing, semaphores, signals, interrupt handlers, network programming and remote procedure calls. Programming examples and assignments will illustrate the system interface on actual computer hardware. All assignments will be in written in C. The department's computing lab will be used in the course to allow students to get hands-on experience with operating system and hardware topics that cannot effectively be pursued on a central timesharing computer.
CS 552: Computer Architecture IICredits: 4− Description
CS 553: Data Structure & Algorithms ICredits: 4− Description
CS 554: Database SystemsCredits: 4− Description
Content: Database implementation as well as advanced database concepts and emerging database applications will be covered. Topics include: data storage and indexing, database recovery, transaction concurrency control, distributed databases, web data management, and database security and privacy.
Particulars: An introduction level database systems course. We will use a database textbook as well as papers from recent database literature. Grades will be based on assignments, a midterm exam, and a course project.
CS 555: Parallel ProcessingCredits: 4− Description
Content: Principles of parallel and concurrent processing. Algorithm classes including sorting, graph algorithms, matrix computations, alpha-beta search, fourier transforms, and numercial analysis. Study of parallel architectures and concurrent computing models. Assignments include programming distributed and shared memory multiprocessors, cluster systems, and analysis of performance and speedup curves.
Prerequisites: CS255, CS351.
CS 556: Compiler ConstructionCredits: 4− Description
Content: An introduction to the algorithms and data structures used to construct a high level language compiler. Topics include: formal language specification, lexical analysis, parsing, and code generation.
Particulars: A substantial portion of this course will involve a student project to construct a compiler for a simplified programming language. Working knowledge of C or C++ is highly recommended.
Prerequisites: CS 253, CS 255, and CS 424, or their equivalents.
CS 557: Artificial IntelligenceCredits: 4− Description
CS 558: NetworkingCredits: 4− Description
Content: Principles of computer networking and data communications, physical transmission, data link control, network and transport layer protocols, application protocols, standards.
Particulars: Available to undergraduates with consent of instructor.
Prerequisites: CS351.
CS 559: Distributed ProcessingCredits: 4− Description
CS 560: Computer GraphicsCredits: 4− Description
Content: This course is an introduction to the techniques of interactive computer graphics. The topics discussed include graphics hardware, software, data structures, mathematical transformations (both 2D and 3D), the user interface, and fundamental algorithms including hidden line and surface removal, shading and color techniques. The major emphasis of the course is on graphics algorithms and programming techniques, with assignments and demonstrations using the X window system for raster scan graphics.
Particulars: Programming assignments will be in C using OpenGl, and require C programming expertise at the same level as in CS351/CS551. Students should have a good background in Linear Algebra.
CS 561: Software SystemsCredits: 4− Description
Content: The goal of this course is to impart working knowledge on how to develop computer programs for scientific applications. 1. We will briefly discuss the computer architecture and how data are represented within a computer system. 2. Software development methodology with structured diagrams 3. Software development in programming languages C and Fortran, with emphasis on applying the software development methodologies in these languages. Examples used in the discussion will be numerical in nature; relying on the students' background in numerical analysis 4. Scientific libraries (LAPack) 5. Parallel software systems with multi-threading (in C and Fortran).
CS 570: Data MiningCredits: 4− Description
Content: This course offers an introduction to data mining concepts and techniques. The goal is for the students to have a solid foundation in data mining that allows them to apply data mining techniques to real-world problems and to conduct research and development in new data mining methods. Topics include data processing, design and implementation of data warehouse and OLAP systems, data mining algorithms and methods including association analysis, classification, cluster analysis, as well as emerging applications and trends in data mining.
Particulars: Some familiarity with a programming language, such as Java or C++, is required for programming assignments and/or final project. Some knowledge about database systems and statistics will be helpful.
CS 571: Natural Language ProcessingCredits: 4− Description
Content: This course introduces the fundamental concepts and ideas in natural language processing (NLP). It develops an understanding of algorithms for processing linguistic information and the underlying computational properties of text. The focus is on modern quantitative techniques in NLP. Advanced topics will include introduction to information retrieval, text mining and knowledge discovery from text data, as well as applications of NLP to bioinformatics and medical informatics.
Particulars: Texts: Foundations of Statistical Natural Language Processing, Christopher Manning and Hinrich Schtze, MIT Press, 1999.
CS 572: Information RetrievalCredits: 4− Description
Content: This course will cover fundamental techniques for text-based information systems: text indexing; Boolean, vector space, and probabilistic retrieval models; structured and semi-structured search; evaluation, feedback and interface issues. Web search including algorithmic and system issues for crawling, link-based algorithms, web usage mining, and Web metadata. The goal of the course is to be exposed to current issues and trends in information retrieval and web search and to understand the fundamental algorithms behind modern web search engines.
Particulars: Text: Introduction to Information Retrieval, C.D. Manning, P. RAghavan, and H. Schtze. Cambridge University Press, 2007.
Prerequisites: Required: Proficiency in Java programming, basic probability and statistics, CS 253 or equivalent.
CS 573: Data Privacy and SecurityCredits: 4− Description
Content: Security and privacy are central concerns in managing biomedical and patient data. This course covers algorithmic techniques for preserving data security and privacy, and is a key elective in the Data and Information Management area.
Prerequisites: No formal prerequisite. Some familiarity with a high-level programming language (Java, C++) is required for the programming assignments and final project. Some knowledge with data bases and statistics will be helpful.
CS 573: Data Privacy and SecurityCredits: 4− Description
Content: Security and privacy are central concerns in managing biomedical and patient data. This course covers algorithmic techniques for preserving data security and privacy, and is a key elective in the Data and Information Management area.
Prerequisites: No formal prerequisite. Some familiarity with a high-level programming language (Java, C++) is required for the programming assignments and final project. Some knowledge with data bases and statistics will be helpful.
CS 580: Operating SystemsCredits: 4− Description
Content: The structure and organization of computer operating systems. Process, memory, and I/O management; device drivers, inter-machine communication, introduction to multiprocessor systems. An important portion of the course is a course long programming project that implements a simple operating system in stages. Each stage takes about three weeks, and is used as a basis for the next stage.
CS 584: Topics in Computer Science: Computational and Life Science SeminarCredits: 4− Description
Content: This course will concentrate on how biological problems are formulated into computational, mathematical, and statistical problems. This will enable the student to understand interdisciplinary computational and life science research possibilities at Emory. For each topic covered in the course, there will be a background lecture, a research seminar, and possibility a student-led discussion. By the end of the course students will have been exposed to a variety of interesting projects and will be in an informed position to explore summer or possibly longer-term computational research projects with Emory's life science researchers.
CS 584: Topics in Computer Science: Information RetrievalCredits: 4− Description
Content: Basic and advanced techniques for text-based information systems: text indexing; Boolean, vector space, and probabilistic retrieval models; evaluation, feedback, and interface issues; Web search including crawling, link-based algorithms, and Web metadata; text/Web clustering, classification; information extraction and text mining.
CS 584: Topics in Computer Science: Software EngineeringCredits: 4− Description
Content: Software engineering as a discipline has evolved in conjunction with computer hardware and programming tools. Despite its infancy, SW Engineering has some fundamental processes that are recognized as essential to the production of quality software that meets customer requirements. Both the ACM (as "SE2004") and the IEEE (as "Software Engineering Body of Knowledge" or "SWEBOK") have defined a set of skills that practitioners of software development should possess. These include Requirements, Design, Construction, Testing, Quality Control, and Configuration Management. This course seeks to teach principles of software engineering through hands-on experience in a series of projects. In addition, the student will be introduced to applied concepts in software engineering through the blogs and writings of some of today's most noted practitioners.
Particulars: Grading: 25% exams (10% mid-term, 15% final); 30% projects; 25% homework; 20% Presentations: Students will provide a brief (10-minute) presentation on each project (5% each for the first 2 projects and 10% for the last one). Homework: There will be 5 readings assigned during the semester. Students will provide a report on each paper, at a value of 5% each of the course grade,
Prerequisites: Senior standing, Graduate student, or permission from the instructor. The student should be familiar with at least one language used in web software development
CS 584: Topics in Computer Science: Streaming DatabasesCredits: 4− Description
Content: Traditional Database Systems manage persistent data sets and data content are relatively permanent. User queries vary over a wide range of topics and are relatively unstable. Stream Databases is a relatively recent topic where applications generate a stream of information. Some examples are stock tickers, network traffic monitoring, patient monitoring, etc. The data managed in Stream Databases is always in flux and data content changes constantly. The user queries are relatively fixed: the user queries monitor a small number of well-defined events (e.g., in stock tickers: "buy and sell signals"). These queries are called "Stream Queries" and traditional database system are ill-equipped to process stream queries. In this course, we study a number of proposed architecture to process stream queries and techniques to mine information in streaming data.
Prerequisites: CS 377
CS 584: Topes in Computer Science: Machine LearningCredits: 4− Description
CS 597R: Directed StudyCredits: 1 - 12− Description
CS 598R: Rotation ProjectCredits: 1 - 4− Description
Content: Computer Science and Informatics PhD students are required to complete two rotation projects prior to their qualifying exams and dissertation research. Projects often involve interdisciplinary work, and can be co-supervised by a Math/CS faculty and an external faculty member or researcher (e.g., Schools of Medicine and Public Health, the CDC). Students are required to submit a project proposal and a final report.
CS 599R: Master's Thesis ResearchCredits: 1 - 12− Description
CS 700R: Graduate SeminarCredits: 1− Description
Content: This is a required course for all students in the PhD program. It comprises seminars given by faculty, invited guests, and students.
Particulars: This course is a one-credit course; the grading basis is S/U only.
CS 700R: Graduate Seminar: Open Problems in Genome InformaticsCredits: 1− Description
Content: This course will explore key problems in the analysis of genomic data. Areas of discussion will include Genome assembly and alignment, with emphasis on the challenges posed by next generation sequencing technologies, and functional element detection (gene finding, regulatory motif identification). Particular attention will be given to methods for incorporating comparative genomic (between species) and population genomic (within species) datasets. Each class will explore one area -- both historical context and current challenges and developments. All readings will be taken from primary literature, and students will be expected to read, present, and lead discussion.
Particulars: This section will be offered every other Friday.
CS 710R: Topics in Computing SystemsCredits: 4− Description
Content: This is an advanced graduate course in the focus area of the Computer Science and Informatics PhD program. Coverage and syllabus will vary according to the instructor and emphasis will be on current developments in the field.
CS 720R: Topics in AlgorithmsCredits: 4− Description
Content: This is an advanced graduate course in the focus area of the Computer Science and Informatics PhD program. Coverage and syllabus will vary according to the instructor and emphasis will be on current developments in the field.
CS 730R: Topics in Data and Information ManagementCredits: 4− Description
Content: This is an advanced graduate course in the focus area of the Computer Science and Informatics PhD program. Coverage and syllabus will vary according to the instructor and emphasis will be on current developments in the field.
CS 740R: Topics in Computational and Life SciencesCredits: 4− Description
Content: This is an advanced graduate course in the focus area of the Computer Science and Informatics PhD program. Coverage and syllabus will vary according to the instructor and emphasis will be on current developments in the field.
CS 797R: Directed StudiesCredits: 1 - 12− Description
CS 799R: Dissertation ResearchCredits: 1 - 12− Description