Curriculum

Bachelor of Technology (B. Tech) in Computer Science and Engineering

The Computer Science and Engineering curriculum is geared towards providing the student with a strong foundation in the discipline and the tools and competence to address new and challenging problems that they have not seen before. In order to earn a B. Tech. degree in Computer Science and Engineering, a student should earn a minimum of 174 credits in the course of their study. The credit requirements for their program of study is comprised of 4 parts:

  • General Education Requirements – Humanities and Social Science (HS)
  • Science and Engineering Requirements – Basic Sciences (BS) and Engineering Science (ES)
  • Disciplinary Requirements comprising of:
    • Computer Science and Engineering Core course (CSE)
    • Computer Science and Engineering Electives (CSE-E)
    • Research, Design, and Industry Practice component -- Undergraduate Research Opportunities Program (UROP), Summer Internships, Specialized courses through the Study Abroad program, Senior Thesis Project, and Industry CO-OP through the semester.
  • Open Electives (OE)

One credit corresponds to one hour of lecture, 2 hours of recitation or 2 hours of lab work. Typically, one credit translates to 3 hours of work per week for a student as a combination of in-class and out-of-class engagement with the course work. In-class work corresponds to time spent in lecture, recitation, and discussion sessions. Out-of-class student work includes homework assignments, project work, independent or group study, or other work relating to the course.

General Education Requirements (GER) 

The General Education Requirements consist of courses in Humanities and Social Sciences that are aimed at developing communication skills, both oral and written; understanding human cultures, past and present; awareness of concepts, ideas, and systems of thought that underlie human activities; understanding of the social, political, and economic framework of societies; understanding the impact of science and technology on society. Courses pertaining to communication skills, law and ethics, and the relationship between science, technology and society are required of every student.

Science and Engineering Requirements (SER)

The Basic Sciences courses aim to provide the outgoing graduates with a strong foundation in the sciences. Required courses include courses is Mathematics, Physics, Chemistry, Biology, and Environmental Science. The Engineering Sciences requirements support multiple objectives: first, the courses provide a foundation in the basic tools and methodologies common to all engineering disciplines; second, all students are exposed to basics of each discipline allowing for cross-disciplinary competencies; last, there is a multi-disciplinary project component where students from different engineering disciplines come together on a design project, allowing for practice in collaborative team work.

Computer Science and Engineering Requirements 

The disciplinary core courses are aimed at providing the student with a solid foundation in their chosen field of study. The disciplinary electives, on the other hand, provide the student with an option to gain exposure to different specializations within the discipline, or an opportunity to study one of the subfields in some depth.

Open Electives 

The open subject elective courses provide the student wide latitude to pursue their interests, be it in humanities, arts, their chosen field of study, a related discipline, or use it towards developing a concentration in another field as a Minor.

Advanced Undergraduate Subjects, and courses from within and outside engineering disciplines for “minor” fields of study in addition to their major are being evolved in partnerships with international experts. The students can elect to consider these additional options upon joining the university.

  • Computer Science Engineering Major Requirements

    Credits
  • Humanities & Social Science (HS)

    18
  • Basic Sciences (BS)

    34
  • Engineering Sciences (ES)

    17
  • CS Core courses (CSE)

    54
  • Project, Seminar, Senior Design, Co-op (RD)

    27
  • Department Electives (CSE-E)

    15
  • Open subject Electives (OE)

    9
  • Degree requirement (HS+BS+ES+CSE+CSE-E+RD+OE)

    174
  • Semester 1

    Credits
  • Humanities and Social Sciences Elective - 1

    3
  • Humanities and Social Sciences Elective - 2

    3
  • BIO 101 - Introduction to Biology

    4

Prerequisites: High-school Biology

The course focuses on the basic principles of biochemistry, molecular biology, genetics, and recombinant DNA. The core material focuses on function at a molecular level:

  • the structure and regulation of genes, and the structure and synthesis of proteins
  • how these molecules are integrated into cells
  • how cells are integrated into multicellular systems and organisms
  • computational and genomic approaches to biology.
  • CHE 101 - Principles of Chemistry

    4

Prerequisites: High-school Chemistry

This course provides an introduction to the chemistry of biological, inorganic, and organic molecules. The emphasis is on basic principles of atomic and molecular electronic structure, thermodynamics, acid-base and redox equilibria, chemical kinetics, and catalysis.

  • CSE 101 / ENG 121 - Introduction to Computer Science and Programming

    5

Prerequisites: None

Introduction to computer science and programming for students with little or no programming experience. Students learn how to program and how to use computational techniques to solve problems. Topics include software design, algorithms, data analysis, and simulation techniques. Assignments are done using the Python programming language. This course is a MITx offering licensed through MIT's Office of Digital Learning.

  • MAT 141 - Discrete Mathematics

    3

Prerequisites: High-school Mathematics

This course covers elementary discrete mathematics for computer science and engineering. It emphasizes mathematical definitions and proofs as well as applicable methods. Topics include formal logic notation, propositional and predicate logic, proof methods; induction, well-ordering; sets, relations; elementary graph theory; integer congruences; asymptotic notation and growth of functions; permutations and combinations, counting principles; discrete probability. Formal language theory, including regular expressions, grammars, finite automata, Turing machines, and NP-completeness. Mathematical rigor, proof techniques, and applications. Further selected topics may also be covered, such as recursive definition and structural induction; state machines and invariants; recurrences; generating functions.

  • 22
  • Semester 2

    Credits
  • Humanities and Social Sciences Elective - 1

    3
  • Humanities and Social Sciences Elective - 2

    3
  • CSE 103 / EEE 102 - Introduction to Electrical Engineering and Computer Science

    4

Prerequisites: CSE 101 (Introduction to Computer Science and Programming)

An integrated introduction to electrical engineering and computer science, taught using substantial laboratory experiments. Key issues in the design of engineered artifacts operating in the natural world: measuring and modeling system behaviors; assessing errors in sensors and effectors; specifying tasks; designing solutions based on analytical and computational models; planning, executing, and evaluating experimental tests of performance; refining models and designs. Issues addressed in the context of computer programs, control systems, probabilistic inference problems, circuits and transducers, which all play important roles in achieving robust operation of a large variety of engineered systems.

  • ENG 111/ EEE 101 - Basic Electronics

    4

Prerequisites: None

Overview of electronic circuits and applications. Electrical quantities and their measurement, including operation of the oscilloscope. Basic models of electronic components including resistors, capacitors, inductors, and the operational amplifier. Frequency response of linear circuits, including basic filters, using phasor analysis. Digital logic fundamentals, logic gates, and basic combinatorial logic blocks. Lab. Lab assignments.

  • MAT 111 - Math I: Single-variable Calculus

    4

Prerequisites: High-school Mathematics

This calculus course covers differentiation and integration of functions of one variable, and concludes with a brief discussion of infinite series. Illustrate applications to many scientific disciplines including physics, engineering, and economics. This course is a MITx offering licensed through MIT's Office of Digital Learning.

  • PHY 111 - Physics I: Introduction to Classical Mechanics

    4

Prerequisites: High-school Physics

This first course in Physics is an introduction to classical mechanics. The subject is taught using the TEAL (Technology Enabled Active Learning) format which features small group interaction via table-top experiments utilizing laptops for data acquisition and problem solving workshops. This course is a MITx offering licensed through MIT's Office of Digital Learning.

  • 22
  • Summer after Semester 2: Summer internship or UROP opportunity for students (Optional; students can earn up to 3 credits) **

  • Semester 3

    Credits
  • Humanities and Social Sciences Elective

    3
  • ENV 101 - Introduction to Environmental Science

    3

Prerequisites: None

This course provides an integrated, quantitative and interdisciplinary approach to the study of environmental systems. Topics include Environment, Structure and functions in an ecosystem; Biosphere, Broad nature of chemical composition of plants and animals; Natural Resources covering Renewable and Non-renewable Resources, Forests, water, minerals, Food and land ; Energy, Growing energy needs, energy sources; Biodiversity and its conservation; Environmental Pollution; Environmental Biotechnology; Social Issues and Environment covering, problems relating to urban living, climate change, environmental regulation, and environmental ethics.

  • CSE 105 / ECE 102 - Introduction to Communication Networks

    4

Prerequisites: CSE 101 (Introduction to Computer Science and Programming)

Studies key concepts, systems, and algorithms to reliably communicate data in settings ranging from the cellular phone network and the Internet to deep space. Weekly laboratory experiments explore these areas in depth. Topics presented in three modules - bits, signals, and packets - spanning the multiple layers of a communication system. Bits module includes information, entropy, data compression algorithms, and error correction with block and convolutional codes. Signals module includes modeling physical channels and noise, signal design, filtering and detection, modulation, and frequency-division multiplexing. Packets module includes switching and queuing principles, media access control, routing protocols, and data transport protocols.

  • PHY 112 - Physics II: introduction to Electricity & Magnetism

    4

Prerequisites: PHY 111(Classical Mechanics), MAT 111 (Single-variable Calculus)

This second coursein introductory physics focuses is on electricity and magnetism. The subject is taught using the TEAL (Technology Enabled Active Learning) format which utilizes small group interaction and current technology. The TEAL/Studio Project at MIT is a new approach to physics education designed to help students develop much better intuition about, and conceptual models of, physical phenomena. This course is a MITx offering licensed through MIT's Office of Digital Learning.

  • MAY 121 - Math II: Multi-variable Calculus

    4

Prerequisites: MAT 111 (Single-variable Calculus)

This course covers vector and multi-variable calculus.. Topics include vectors and matrices, partial derivatives, double and triple integrals, and vector calculus in 2 and 3-space. This course is a MITx offering licensed through MIT's Office of Digital Learning.

  • ENG 132 / MAT 161 - Probability and Statistics for Engineers

    4

Prerequisites: MAT 121 (Multi-variable Calculus)

Probability: random variables, independence, and conditional probability; discrete and continuous distributions, moments, distributions of several random variables. Topics in mathematical statistics: random sampling, point estimation, confidence intervals, hypothesis testing, non-parametric tests, regression and correlation analyses; limit theorems; Bayesian estimation; modeling and analysis of probabilistic systems;Elements of statistical inference. Bernoulli and Poisson processes. Markov chains; applications in engineering, industrial manufacturing, medicine, biology, and other fields.

  • UROP** (Summer after semester 2- Optional)

    3
  • 22
  • Semester 4

    Credits
  • Humanities and Social Sciences Elective

    3
  • EEE 122/CSE 221 - Computation Structures

    4

Prerequisites: PHY 112 (Electricity and Magnetism)

Introduces architecture of digital systems, emphasizing structural principles common to a wide range of technologies. Multilevel implementation strategies; definition of new primitives (e.g., gates, instructions, procedures, and processes) and their mechanization using lower-level elements. Analysis of potential concurrency; precedence constraints and performance measures; pipelined and multidimensional systems. Instruction set design issues; architectural support for contemporary software structures. This course is a MITx offering licensed through MIT's Office of Digital Learning.

  • MAT 151 - Linear Algebra

    4

Prerequisites: MAT 121 (Multi-variable Calculus)

This is a basic subject on matrix theory and linear algebra. Emphasis is given to topics that will be useful in other disciplines, including systems of equations, vector spaces, determinants, eigenvalues, similarity, and positive definite matrices.

  • CSE 222 - Formal Languages and Automata

    4

Prerequisites: CSE 101 (Introduction to Computer Science and Programming), MAT 141 (Discrete Mathematics)

Introduce concepts in automata theory and theory of computation; Identify different formal language classes and their relationships; Design grammars and recognizers for different formal languages; Prove or disprove theorems in automata theory using its properties; Determine the decidability and intractability of computational problems

  • CSE 223 - Data Structures and Programming Fundamentals

    4

Prerequisites: CSE 101 (Introduction to Computer Science and Programming)

Introduces fundamental programming concepts. Designed to develop skills in applying basic methods from programming languages to abstract problems. Topics include software engineering, algorithmic techniques, data types, data structures, recursion and tail recursion. Sorting, Searching, and introduce notions of computational complexity. Lab component consists of software design, construction, and implementation of design.

  • UROP

    3
  • 22
  • Summer term after year 2

    Up to 6 credits
    Internship / UROP/Summer abroad (optional)
  • Semester 5

    Credits
  • CSE 225 - Computer Systems Engineering

    4

Prerequisites: CSE 221(Computation Structures), CSE 223 (Programming Fundamentals)

Topics on the engineering of computer software and hardware systems: techniques for controlling complexity; strong modularity using client-server design; virtual memory, and threads; networks; security and privacy; performance optimization; fault-tolerance, atomicity and coordination of concurrent activities. Includes a semester-long design project.

  • CSE 231 - Operating Systems

    3

Prerequisites: CSE 221 (Computation Structures)

Covers the basic components of modern Operating Systems – Concurrency, Memory Management, File Systems, and Networking. Topics include: (Concurrency) processes and threads, context switching, synchronization, scheduling, and deadlock; (Memory Management) linking, dynamic memory allocation, dynamic address translation, virtual memory, and demand paging; (File Systems) storage devices, disk management and scheduling, directories, protection, and crash recovery; (Networking) sockets, TCP/IP, routing. Discussion of Virtual Machines, Distributed Systems. Includes 3 to 4 programming projects.

  • CSE 241 - Introduction to Algorithms

    4

Prerequisites: CSE 223 (Programming Fundamentals), MAT 141 (Discrete Mathematics)

This course covers the modeling of computational problems, common algorithms, algorithmic paradigms, and data structures used to solve these problems. Emphasizes the relationship between algorithms and programming. Introduces basic performance measures and analysis techniques for these problems - algorithmic complexity analysis, recurrence relations, and the master method. Algorithms covered include randomized algorithms, divide and conquer strategies, greedy algorithms, hashing, heaps, graph algorithms, and search algorithms (including blind and A* search). Exercises require students to practice devising algorithms for various problems.

  • CSE 251 - Introduction to Databases

    4

Prerequisites: CSE 223(Programming Fundamentals), MAT 141 (Discrete Mathematics)

The course covers database design and the use of database management systems for applications. It includes detailed coverage of the relational model, relational algebra, and SQL. The course includes database design and relational design principles based on dependencies and normal forms. Many additional key database topics from the design and application-building perspective are also covered: indexes, views, transactions, authorization, integrity constraints, triggers, on-line analytical processing (OLAP), JSON, emerging NoSQL systems; concurrency control; distributed, parallel and heterogeneous databases; adaptive databases; publisher-subscriber systems; semi structured data and XML querying.

  • CSE Elective

    4
  • Open Elective

    3
  • 22
  • Semester 6

    Credits
  • CoOps / Capstone Project (May -July, 3.0 months)

    4
  • CSE 271 - Artificial Intelligence

    4

Prerequisites: CSE 223 (Programming Fundamentals), MAT 141 (Discrete Mathematics), ENG 132 (Probability and Statistics)

Introduces representations and methods used to build AI applications that are prevalent today – speech recognition, medical diagnosis, web search, robotics. Specific topics include search, constraint satisfaction, game playing, Markov decision processes, graphical models, machine learning, and logic. Course includes a significant programming component where students work in teams to build AI system components.

  • CSE 281 - Computer Networks

    4

Prerequisites: CSE 225 (Computer Systems Engineering)

Principles and practice of computer networks. Network components, packet switching, layered architectures. Applications: web/http, voice-over-IP, p2p file sharing and socket programming. Reliable transport: TCP/IP, reliable transfer, flow control, and congestion control. The network layer: names and addresses, routing. Local area networks: ethernet and switches. Wireless networks and network security.

  • ENG 321 - Multi-disciplinary Design Project

    4

Prerequisites: Successful completion of Semesters 1 to 5

Students from different engineering disciplines - EEE, ECE, ME and CSE - will come together on an engineering design project. Will engage in collaborative work and build a prototype.

  • CSE Elective

    3
  • Open Elective

    3
  • 22
  • Summer term after year 3

    Up to 6 credits
    Industry Internship / Co-op / Capstone Project
  • Semester 7

    Credits
  • CSE 261 - Human Computer Interaction

    4

Prerequisites: CSE 225 (Computer Systems Engineering)

Introduces fundamental methods and principles for designing, implementing, and evaluating user interfaces. Topics include user-centered design, rapid prototyping, experimentation, direct manipulation, cognitive principles, visual design and the use of relevant software tools. Students work in teams on a semester-long design project.

  • CSE 321 - Cryptography & Information Security

    3

Prerequisites: CSE 225 (Computer Systems Engineering), MAT 141 (Discrete Mathematics)

Course covers computer systems security. Attack techniques and how to defend against them. Cryptography. Topics include: network attacks and defenses, operating system security, application security (web, apps, databases), malware, privacy, security for mobile devices; crypotographic hash functions, cryptanalysis, authentication codes, public-key cryptography (encryption, digital signatures), biometrics. Course includes group project where students work in teams.

  • CSE 331 - Object-oriented Programming

    4

Prerequisites: CSE 223 (Programming Fundamentals)

Covers fundamental principles and techniques of object-oriented system design and software development: OOP design, design patterns, testing, graphical user interface (GUI) OOP libraries, software engineering strategies; how to write software that is safe from bugs, easy to understand, and ready for change. Specifications and invariants; testing, test-case generation, and coverage; concurrent programming, including message passing and shared concurrency, and defending against races and deadlock. Student work on group projects.

  • CSE Elective

    4
  • CSE Elective

    4
  • Open Elective

    3
  • 22
  • Semester 8 - Option 1

    Credits
  • Co-op

    20
  • Semester 8 - Option 2

    Credits
  • Senior Project

    20
  • Computer Science and Engineering Course Electives

    Credits
  • CSE 341 - Design and Analysis of Algorithms

    3

Prerequisites: CSE 241 (Introduction to Algorithms)

Covers techniques for the design and analysis of efficient algorithms for sorting, searching, and selection, emphasizing methods useful in practice. Data structures: search trees, heaps, hash tables. Algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis. Algorithms for fundamental graph problems: minimum-cost spanning tree, connected components, topological sort, and shortest paths. Network flow, computational geometry.

  • CSE 351 - Introduction to Machine Learning

    4

Prerequisites: CSE 223 (Programming Fundamentals), MAT 151 (Linear Algebra), ENG 132 (Probability and Statistics)

Provides a broad introduction to machine learning and statistical inference. Topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning, neural networks, support vector machines); unsupervised learning (clustering, dimensionality reduction, kernel methods); learning theory (bias/variance tradeoffs; VC theory; large margins); reinforcement learning and adaptive control. The course will also discuss recent applications of machine learning, such as to robotic control, data mining, autonomous navigation, bioinformatics, speech recognition, and text and web data processing.

  • CSE 354 - Natural Language Processing

    3

Prerequisites: CSE 241(Introduction to Algorithms), CSE 271 (Introduction to AI)

Introduces the study of human language from a computational perspective, including syntactic, semantic and discourse processing models. Emphasizes machine learning methods and algorithms. Uses these methods and models in applications such as syntactic parsing, information extraction, text similarity, statistical machine translation, speech tagging, dialogue systems, and text summarization.

  • CSE 361- User Interface Design and Implementation

    4

Prerequisites: CSE 223 (Programming Fundamentals), CSE 261 (Human-Computer Interaction)

In this course, students will learn the theory and methods for developing successful user interfaces (UIs). Examines human-computer interaction in the context of graphical user interfaces to computing applications. Covers human capabilities, design principles, prototyping techniques, evaluation techniques, and the implementation of graphical user interfaces. Includes short programming assignments and a semester-long group project.

  • CSE 362 - Computer Language Design (Compilers)

    4

Prerequisites: CSE 221 (Computation Structures), CSE 223 (Programming Fundamentals)

Principles and practices for design and implementation of compilers and interpreters. Topics: lexical analysis, parsing, syntax-directed translation, abstract syntax trees, symbol tables; types and type checking, scope; semantic analysis; intermediate languages, dataflow analysis, program optimization, code generation, and runtime systems. Course involves a group project on compiler design and implementation.

  • CSE 372 - Computer Graphics and Visualization

    4

Prerequisites: MAT 121 (Multi-variable Calculus), CSE 241 (Introduction to Algorithms)

This course provides introduction to computer graphics algorithms, software and hardware. Topics include: ray tracing, the graphics pipeline, transformations, texture mapping, shadows, sampling, global illumination, splines, animation and color. Focuses on using OpenGL to create visual imagery, as well as an understanding of the underlying mathematical concepts. Includes several programming assignments and a final project.

  • CSE 382 - Cloud Computing

    3

Prerequisites: CSE 223 (Programming Fundamentals), CSE 241(Introduction to Algorithms)

This course covers the tools, techniques and design principles that are key to cloud computing. Topics include: Clouds, MapReduce, key-value stores, Classical precursors, Widely-used algorithms, Classical algorithms, Scalability, application to Big Data, Virtualization, and cloud storage. The students will work on programming exercises to master the tools and concepts and complete a sizable group project.

  • CSE 385 - Distributed Systems

    4

Prerequisites: CSE 225 (Computer Systems Engineering), CSE 231 (Operating Systems)

This class teaches the abstractions, design and implementation techniques that enable the building of fast, scalable, fault-tolerant distributed systems. Topics include multithreading, network programming, consistency, fault tolerance, consensus, security, and several case studies of distributed systems. The course includes multiple programming assignments and a significant design and implementation group project.

  • CSE 387 - Parallel Computing

    4

Prerequisites: CSE 221 (Computation Structures), CSE 231 (Operating Systems)

Provides an introduction to parallelism and parallel programming. Most new computer architectures are parallel; programming these machines requires knowledge of the basic issues of and techniques for writing parallel software. Topics include: varieties of parallelism in current hardware (e.g., fast networks, multicore, accelerators such as GPUs, vector instruction sets); implicit vs. explicit parallelism; shared vs. non-shared memory; communication and synchronization algorithms and mechanisms; locality; parallel programming models (threads, data parallel/streaming, futures, SPMD, message passing, SIMT, transactions, and nested parallelism). Significant parallel programming assignments and a substantial project are required.

  • CSE 392 - Theory of Complexity

    3

Prerequisites: CSE 222 (Formal Languages and Automata)

Provides an introduction to some of the central ideas of theoretical computer science, including circuits, finite automata, Turing machines and computability, efficient algorithms and reducibility, the P versus NP problem, NP-completeness, PSPACE-completeness. Examines the classes of problems that can and cannot be solved in various computational models.

TOP