Git Product home page Git Product logo

mit-bsc's Introduction

MIT BSc in Computer Science and Engineering

This is a fully online, self directed, free curriculum from MIT OpenCourseWare that closely matches the actual Bachelor's of Science in Computer Science and Engineering offered in person at MIT. You won’t be awarded a degree for taking these free online courses, but you’ll get largely the same knowledge from them and you'll save over a third of a million dollars along the way.

The 6-3 Computer Science and Engineering curriculum builds primarily on the Calculus II GIR; not all subjects require a GIR as a pre-requisite.

Introductory subjects

Introductory subjects introduce students to the breadth of the EECS department, and teach fundamental skills for electrical engineering and computer science.

Programming skills

This course aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class uses the Python 3.5 programming language.

Introduction to EECS

This course provides an integrated introduction to electrical engineering and computer science, taught using substantial laboratory experiments with mobile robots. The primary goal is to learn to appreciate and use the fundamental design principles of modularity and abstraction in a variety of contexts from electrical engineering and computer science. The second goal is to show that making mathematical models of real systems can help in the design and analysis of those systems. Complementary goals include the teaching of exciting and important basic material from electrical engineering and computer science, including modern software engineering, linear systems analysis, electronic circuits, and decision-making.

Discrete math

This subject offers an interactive introduction to discrete mathematics oriented toward computer science and engineering. The subject coverage divides roughly into thirds:

  1. Fundamental concepts of mathematics: Definitions, proofs, sets, functions, relations.
  2. Discrete structures: graphs, state machines, modular arithmetic, counting.
  3. Discrete probability theory.

On completion of 6.042J, students will be able to explain and apply the basic methods of discrete (noncontinuous) mathematics in computer science. They will be able to use these methods in subsequent courses in the design and analysis of algorithms, computability theory, software engineering, and computer systems.

Foundation subjects

Foundation subjects build on introductory material.

This course introduces architecture of digital systems, emphasizing structural principles common to a wide range of technologies. It covers the topics including multilevel implementation strategies, definition of new primitives (e.g., gates, instructions, procedures, processes) and their mechanization using lower-level elements. It also includes analysis of potential concurrency, precedence constraints and performance measures, pipelined and multidimensional systems, instruction set design issues and architectural support for contemporary software structures.

This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.

6.009 Fundamentals of Programming

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

6.009 is not available on OpenCourseWare. Instead, take 6.0002 Introduction to Computational Thinking and Data Science + 6.S096 Introduction to C and C++.

Header subjects

Header subjects typically rely on a foundation course as a pre-requisite.

This course introduces fundamental principles and techniques of software development, i.e., how to write software that is safe from bugs, easy to understand, and ready for change. The course includes problem sets and a final project. Important topics include specifications and invariants; testing; abstract data types; design patterns for object-oriented programming; concurrent programming and concurrency; and functional programming.

6.031, which replaced 6.005 in Fall 2016, is not available on OpenCourseWare; 6.005 is linked instead, as it covers the same material in breadth and depth.

This class covers topics on the engineering of computer software and hardware systems. Topics include techniques for controlling complexity; strong modularity using client-server design, operating systems; performance, networks; naming; security and privacy; fault-tolerant systems, atomicity and coordination of concurrent activities, and recovery; impact of computer systems on society.

This course introduces principles, algorithms, and applications of machine learning from the point of view of modeling and prediction. It includes formulation of learning problems and concepts of representation, over-fitting, and generalization. These concepts are exercised in supervised learning and reinforcement learning, with applications to images and to temporal sequences.

An alternative to this course is 6.034 Artificial Intelligence.

This course provides a challenging introduction to some of the central ideas of theoretical computer science. Beginning in antiquity, the course will progress through finite automata, circuits and decision trees, Turing machines and computability, efficient algorithms and reducibility, the P versus NP problem, NP-completeness, the power of randomness, cryptography and one-way functions, computational learning theory, and quantum computing. It examines the classes of problems that can and cannot be solved by various kinds of machines. It tries to explain the key differences between computational models that affect their power.

An alternative to this course is 6.046 Design and Analysis of Algorithms.

Communication-intensive subject

This course is designed to lay the foundations of good empirical research in the social sciences. It does not deal with specific techniques per se, but rather with the assumptions and the logic underlying social research. Students become acquainted with a variety of approaches to research design, and are helped to develop their own research projects and to evaluate the products of empirical research.

6.UAR is not available on OpenCourseWare, so 15.347 Doctoral Seminar in Research Methods I is linked instead, as it covers the same material in breadth and depth.

Advanced undergraduate subjects (AUS) + Course 6 elective

  • Two from AUS list.
  • One additional from EECS list.

At least one of the required subjects must be from the II list.

Roadmap

  • Semester 1: Programming skills + Discrete math
  • Semester 2: Introduction to EECS + Foundation #1
  • Semester 3: Foundation #2 + Foundation #3
  • Semester 4: Header #1 + Header #2
  • Semester 5: Header #3 + Header #4
  • Semester 6: AUS #1 + AUS #2

6.UAR and the Course 6 elective are typically taken at some point during semesters 4-6.

mit-bsc's People

Contributors

shrugged2 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.