Graduate catalog 2017 - 2018, 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 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 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 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 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 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 559: Distributed ProcessingCredits: 3− Description
Content: This course will cover fundamental topics in Distributed Processing Systems including Synchronization (Coordination, Consensus and Consistency), Communication, Naming, Distributed Algorithms, Distributed Data Structures and Distributed System Architectures. Important cross-cutting topics include Performance, Scalability, Security and Dependability.
Prerequisites: A Systems Programming, Operating Systems or Networking Course (CS450, CS452, CS450 or CS551) OR instructor consent.
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 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 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: Computer SecurityCredits: 3− Description
CS 584: Topics in Computer Science: Advanced SystemsCredits: 3− Description
CS 584: Topics in Computer Science: Numerical Methods for Deep LearningCredits: 3− Description
Content: This course provides students with the mathematical background needed to analyze and further develop numerical methods at the heart of deep learning. The course briefly reviews current trends in machine learning, classification, and in particular deep neural networks. Mathematical techniques covered in this class include numerical optimization, numerical differential equations, optimal control.
Particulars: Homework and additional course material will be made available using Canvas.
Prerequisites: In order to succeed in this class, students need to have a solid background in multivariate calculus and linear algebra and some programming experience in MATLAB, Julia, or Python. In addition, students are also expected to have experience or skills in either numerical analysis (optimization, partial differential equations) or machine learning (e.g., CS534, CS584, or similar).
CS 584: Topics in Computer Science: mHealth: Affordable and Sustainable Healthcare TechnologiesCredits: 3− Description
Content: This interdisciplinary course will provide an overview of the key issues involved in the introduction of sustainable healthcare technology in resource-constrained regions. The course combines lectures on critical concepts in affordable health care technology development and implementation, including context and needs evaluation, supply chain infrastructure and usability design, financial sustainability, and the ethics of low-cost healthcare provision, with practical learning. Through close faculty mentorship, small groups of students will work in mixed-discipline teams to create a solution to an identified real-world health problem, such as delivering clean water or perinatal monitoring. Students will develop applications for mobile-based devices in recognition that such technologies are increasingly relied upon as a rapid route to implementing and deploying healthcare solutions (mHealth). Organizations based in relevant resource-constrained settings will be identified who can provide feedback and detailed information important to the solutions; wherever possible, pilot implementation of student-developed apps will be facilitated with local partners at the conclusion of the course.
Prerequisites: If you are interested in this course, please send Dr. Clifford your CV (to gari@alum.mit.edu ) and a covering note explaining your relevant background (if any), identifying what is motivating you to take this course, and listing any questions. There's a good chance you'll get on the course, but you *must* get pre-approved by Dr. Clifford via a confirmation email.
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 Study: Professional DevelopmentCredits: 1− Description
Content: The purpose of this course is to provide CS Masters students with the necessary career management skills to effectively identify, compete, and secure relevant career-launching internships and full-time professional career opportunities.
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.