Graduate catalog 2014 - 2015, 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: 3− 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: 3− 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 540: Software EngineeringCredits: 3− Description
Content: Software engineering principles and practice is taught by using materials from the classic textbook by Roger Pressman, guest lectures from industry practitioners from the Atlanta area, and a collection of essays from author-practitioners, like Joel Spolsky and Steve McConnell. 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 constructing a real-life project. See the course website at http://www.mathcs.emory.edu/~cs540000/index.html for information on textbooks, schedule, presentation materials, grading and assignments.
CS 551: Systems ProgrammingCredits: 3− 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: 3− Description
CS 553: Data Structure & Algorithms ICredits: 3− Description
CS 554: Database SystemsCredits: 3− Description
Content: This course present topics that are important to implement a Database Management System. We start by discussing data storage on disks and buffer management methods, followed by indexing techniques to speed up access to the data. We then discuss query processing, query parsing and query optimization. The remaining topics cover data consistency: transaction processing (using logging), concurrency control and serializability.
Prerequisites: Basic data structures and database background CS 377 (or similar) and CS 323 (or similar), familiar with a programming language preferred, or permission of the instructor.
CS 555: Parallel ProcessingCredits: 3− 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: 3− 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: 3− Description
CS 558: NetworkingCredits: 3− 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: 3− Description
CS 560: Computer GraphicsCredits: 3− 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: 3− 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: 3− 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: 3− 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: 3− 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: 3− Description
Content: This course will introduce students to the legal and ethical issues of data privacy and security and computational technologies for protecting privacy and security while allowing society to collect and share person-specific data for many worthy purposes. The main topics include privacy and anonymity models, data anonymization, privacy preserving data mining, access control, secure computations, privacy in social networks and privacy in clinical and public health research. The foundations are drawn from a number of sub-disciplines of Computer Science including: database systems, data mining, computer security, cryptography, and statistics.
CS 574: Machine LearningCredits: 3− Description
Content: This course introduces the basics of machine learning, which is about finding patterns in data and to make predictions based on the patterns. According Daume, one may think of the idea is to replace the process of human writing programs with human supplying data.
CS 580: Operating SystemsCredits: 3− 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: 3− 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: 3− 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: 3− 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: 3− 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: Topics in Computer Science: Machine LearningCredits: 3− Description
CS 584: Topics in Computer Science: Semantic WebCredits: 3− Description
Content: The semantic web is primarily an approach to leveraging content and user metadata for an improved, “intelligent” web experience. The course will explore the role metadata plays in the world wide web via supporting models, tools and technologies: RDF (Resource Description Framework), OWL (Web Ontology Language), XML, relational data, and more. We will look at the limitations of HTML, and discuss the role that browsers play in supporting the web. Finally, we will look at some of the algorithms that contribute to the semantic web.
Particulars: The course will include web development projects, homework, presentations, and 2 exams (mid-term and nal). Graduate standing required.
CS 584: Topics in Computer Science: Introduction to Biomedical InformaticsCredits: 3− Description
CS 584: Topics in Computer Science: High-Performance ComputingCredits: 3− Description
CS 584: Topics in Computer Science: Clinical InformaticsCredits: 3− Description
Content: This course focuses on clinical and translation informatics, and serves as a follow up to BMI500, which introduces basic biomedical informatics concepts. Specifically, we will review various electronic medical records systems and how clinical data is captured and stored. Emphasis in the first half of the course will be made on how various forms of patient data, either physician notes, radiology data, labs, etc, get translated, stored, and ultimately used to support clinical decision making. The second half of the course will focus on how, once electronically stored, this information can be used to support clinical research. A number of the practical challenges related to data security and HIPPA will also be discussed.
CS 584: Introduction to Biomedical InformaticsCredits: 3− Description
CS 584: Topics in Computer Science: HPC & Parallel ProcessingCredits: 3− Description
CS 584: Intro. to Clinical EnvironmentsCredits: 3− Description
CS 584: Topics in Computer Science: Biomedical Image AnalysisCredits: 3− Description
Content: This course covers contemporary techniques and applications in biomedical image analysis. Theoretical and practical knowledge concerning image analysis algorithms will be developed through short lectures, paper discussions, and a course-long team project. Following this course students will understand the process of image formation in various modalities, how information is extracted from images using algorithms, and the role of this information in biomedical applications from clinical diagnostics to molecular cell biology. Course website: http://lore.com/Biomedical-Image-Analysis.1
Prerequisites: A background in mathematics is recommended, familiarity with at least one programming language is required for class assignments.
CS 584: Data AnalyticsCredits: 3− Description
CS 584R: Topics in Computer Science: Exascale Data AnalyticsCredits: 3− Description
Content: This course will cover techniques used to perform complex analysis of multiscale, multidimensional structured and unstructured information at exascale data volumes. Topics to be covered include: high end I/O, parallel filesystems, data mining, in transit data processing, system architectures that provide particular support for high end data analytics, memory hierarchies for data analytics, application use cases.
CS 584R: Topics in Computer Science: Network Science / Structure of Information NetworksCredits: 3− Description
Content: The course would investigate how the social, technological, and natural worlds are connected, and how the study of graphs and networks sheds light on these connections.
Particulars: Particular topics include: *) how opinions, fads, and political movements spread through society; *) the robustness and fragility of food webs and financial markets; and *) the technology, economics, and politics of Web information and online communities. Special emphasis will be placed on the following areas: *) PageRank and web link analysis, *) the theory behind strong and weak ties in relationships, and *) the small-world phenomenon. You will learn to use models and theory to explain and exploit the structure of information and social networks. Some basic toolkits for analyzing such networks will also be discussed.
CS 590: Teaching SeminarCredits: 1− Description
Content: This seminar will concentrate on effective teaching techniques in computer science. Topics included will include: General advice for new TA's. General advice for International TA's. Students will present several practice lectures over different levels of material. They will receive practice on quiz and test preparation. Syllabus information on courses most likely to be taught by new TA's will be supplied. General professional development information will also be included.
CS 597R: Directed StudyCredits: 1 - 9− Description
CS 598R: Rotation ProjectCredits: 1 - 3− 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 - 9− 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: 3− 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: 3− 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: 3− 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 & Information Management: Advanced Database SystemsCredits: 3− Description
Content: The course Advanced Database Systems covers recent advances in DBMSs and their application to biomedical problems. The topics include extensions and extensibility of database systems, XML databases, spatial databases, temporal databases, biomedical data management and integration, semantics enabled data management, parallel and distributed databases. The course comes with projects from biomedical research environments, with real data and databases. Students will get hands-on research and development experience from these projects
Particulars: Web: https://web.cci.emory.edu/confluence/display/CS730R
Prerequisites: Basic data structures and database background (CS 377 or equivalent), Familiar with a programming language (e.g., Java) preferred but not required, or permission of the instructor.
CS 740R: Topics in Computational and Life SciencesCredits: 3− 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 StudyCredits: 1 - 9− Description
CS 799R: Dissertation ResearchCredits: 1 - 9− Description