Graduate catalog 2016 - 2017, 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 534: Machine LearningCredits: 3− Description
Content: This course covers fundamental machine learning theory and techniques. The topics include basic theory, classification methods, model generalization, clustering, and dimension reduction. The material will be conveyed by a series of lectures, homeworks, and projects.
Prerequisites: Cross-listed with BIOS 534. Knowledge of linear algebra, multivariate calculus, basic statistics and probability theory. Homework and project will require programming in Python, Matlab, C/C++ or R. Or permission by the instructor.
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 covers recent advances in data management systems and their applications to biomedical problems. Topics include advanced database design, complex queries, data storage and indexing, XML data management, spatial data management, temporal data management, ontologies and semantics, parallel data management and MapReduce. Biomedical use cases will be used for course discussion and projects.
Prerequisites: Basic data structures and database background (CS 377 or equivalent), 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: CS 255, CS 450
CS 556: Compiler ConstuctionCredits: 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 323, CS 255, and CS 424, or their equivalents.
CS 557: Artificial IntelligenceCredits: 3− Description
Content: This course covers core areas of Artificial Intelligence including perception, optimization, reasoning, learning, planning, decision--making, knowledge representation, vision and robotics.
Prerequisites: Undergraduate level of Artificial Intelligence or Machine Learning.
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: CS 450
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 563: Digital Image ProcessingCredits: 3− Description
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 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 581: High Performance Computing: Tools and ApplicationsCredits: 3− Description
CS 584: Topics in Computer Science: Digital Image ProcessingCredits: 3− Description
Content: This course introduces the fundamental algorithms, concepts, and applications of image analysis with special focus on familiarizing students with 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 team project exercise. Following this course, students will understand the process of image formation, how information is extracted from images, and the role of this information in biomedical applications from diagnostics to molecular cell biology.
CS 584: Topics In Computer Science: Computer SecurityCredits: 3− Description
CS 584: Topics in Computer Science: Neural ComputationCredits: 3− Description
Content: This course will explore the intersection between the computational and biological study of neural networks. Topics will include history of artificial neural networks, vision and convolutional networks, recurrent networks, network refinements, and biological analogues. This course will have homeworks to be completed using the Python toolkit Theano, but beyond that no advanced programming is required. Students will be required to read 1 paper/wk in addition to bi-weekly homework assignments.
CS 584: Topics in Computer Science: Computational and Life Science SeminarCredits: 3− Description
CS 584: Topics in Computer Science: Advanced Information Retrieval: Intelligent AssistantsCredits: 3− Description
Content: Applications such as the Apple's Siri, Google Now, and Amazon's Alexa rely on decades of research in Information Retrieval and Natural Language processing, and more broadly AI and Human-Computer Interaction. This course will focus on both classical works in this area and the current state of the art. The course will be based largely on research papers and focused around a group project on one of the current Question Answering challenges.
CS 584: Topics in Computer Science: Info RetrievalCredits: 3− Description
CS 584: Topics in Computer Science: Deep LearningCredits: 3− Description
CS 584: Topics in Computer Science: Professional DevelopmentCredits: 1− Description
Content: This course is provided to assist graduate students better prepare for their transition from the university into a first-destination career by enhancing the professional development and leadership skills necessary to be successful. The course will cover topics such as: career exploration, resume/CV creation, cover letters, interviewing, negotiation, networking and general job search strategies, as well ask keys to success in a new professional role.
Particulars: Understand how personal and professional skills are critical to a successful transition into a professional setting. Become familiar with career development theories and models that will aid students in understanding the career development process. Identify and evaluate interests, skills, values, and lifestyle preferences and relate them to career planning. Learn about resources and information that can be utilized in career decision making and goal setting when exploring career options. Analyze job market trends and future career pathways. Develop decision-making skills and plan for reach self-determined goals. Learn basic job search skills and strategies. Begin to take an active role in the career planning process. Increase their awareness of employer needs and expectations. Be better prepared for the transition into a career.
CS 584R: Topics in Computer Science: Advanced Computer SystemsCredits: 3− Description
Content: This course will cover seminal recent research papers across topics in distributed computer systems, with a focus on managing big data. Topics may include communication paradigms, process management, naming, synchronization, consistency and replication, fault tolerance, storage architectures, high-performance file systems, data provenance, and next-generation storage devices and architectures, including those at Google, Yahoo, and Amazon. Throughout the course, we will discuss the tradeoffs made between performance, reliability, scalability, robustness, and security. Students will be expected to critically read scientific papers, present at least 2 papers during the semester, and complete and present a final project.
CS 584R: Topics in Computer Science: mHealth InformaticsCredits: 3− Description
CS 584R: Topics in Computer Science: HPC + DACredits: 3− Description
CS 584R: Topics in Computer Science: Big Data AnalyticsCredits: 3− Description
Content: The course covers scalable machine learning and data mining algorithms for large/complex data. Topics include large-scale optimization techniques, hashing, recommendation systems, and tensor factorization. This will be structured as a seminar course with emphasis on public data sets such as Kaggle competitions, MovieLens, and various healthcare datasets. The instructor will provide introductory lectures that set the context and provide reviews of relevant material.
Prerequisites: Graduate Data Mining (CS 570) and familiarity with Python, Matlab, or R.
CS 590: Teaching SeminarCredits: 1− Description
Content: This course explores theoretical and practical approaches for effective teaching, with particular emphasis on the discipline of Computer Science. After this course, students will be able to demonstrate knowledge of multiple pedagogical strategies, write a syllabus, develop assessment items, and design and deliver lectures and presentations for a variety of different audiences.
CS 597R: Directed StudyCredits: 1 - 9− Description
CS 597R: Directed StudyCredits: 1 - 9− Description
CS 598R: Rotation ProjectCredits: 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 598R: Rotation ProjectCredits: 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: 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 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 710: Topics in 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 720: 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 730: Topics in Data and Inforamtion 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 740: 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
CS 799R: Dissertation ResearchCredits: 1 - 9− Description