A reading and discussion subject on advanced topics in the engineering of software systems. Focus on software development. Topics differ but are chosen from: software process and lifecycle; requirements development, specification and analysis; design principles; testing, formal analysis, and reviews; quality management and assessment; product and process metrics; COTS and reuse; evolution and maintenance; team organization and people management; software engineering aspects of programming languages; and software psychology. Prerequisite is basic knowledge of programming and an introductory class in software engineering. The second prerequisite can be waived with permission of the instructor and additional background reading.
The objective of this session is to introduce the subject of software engineering. When you have read this session you will understand what software engineering is and why it is important, know the answers to key questions which provide an introduction to
This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python programming language.
"This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python™ programming language."
An introduction to design and software design, in order to set up an underlying, supportive foundation to help the reader recognize both the relevance and the advantages of software design.
This course is an introduction to Java programming and software engineering. It is designed for those who have little or no programming experience in Java and covers concepts useful to 6.005. The focus is on developing high quality, working software that solves real problems. Students will learn the fundamentals of Java, and how to use 3rd party libraries to get more done with less work. Each session includes one hour of lecture and one hour of assisted lab work. Short labs are assigned with each lecture. This course is offered during the Independent Activities Period (IAP), which is a special 4-week term at MIT that runs from the first week of January until the end of the month.
The concepts of the Object-oriented paradigm using Java. The basic principles of software engineering are emphasized. We study how to design and think in an object oriented fashion. As a final project, students work in groups to develop a Gnutella distributed music-sharing client.
Modern computing platforms provide unprecedented amounts of raw computational power. But significant complexity comes along with this power, to the point that making useful computations exploit even a fraction of the potential of the computing platform is a substantial challenge. Indeed, obtaining good performance requires a comprehensive understanding of all layers of the underlying platform, deep insight into the computation at hand, and the ingenuity and creativity required to obtain an effective mapping of the computation onto the machine. The reward for mastering these sophisticated and challenging topics is the ability to make computations that can process large amount of data orders of magnitude more quickly and efficiently and to obtain results that are unavailable with standard practice. This class is a hands-on, project-based introduction to building scalable and high-performance software systems. Topics include performance analysis, algorithmic techniques for high performance, instruction-level optimizations, cache and memory hierarchy optimization, parallel programming, and building scalable distributed systems. The course also includes design reviews with industry mentors, as described in this MIT News article.
Subject:
Mathematics and Statistics, Science and Technology
The 6.370 Robocraft programming competition is a unique challenge that combines battle strategy and software engineering. In short, the objective is to write the best player program for the computer game Robocraft. The course is offered during MIT's Independent Activities Period (IAP) - a special 4-week term that runs the full month of January.
This module provides an introduction to the principles and concepts relevant to the software design. It examines the role and context of the design activity as a form of problem-solving process, describes how this is supported by current design methods, and considers the strategies, strengths, limitations, and main domains of application of these methods.
A reading and discussion subject on advanced topics in the engineering of software systems. Focus on software development. Topics differ but are chosen from: software process and lifecycle; requirements development, specification and analysis; design principles; testing, formal analysis, and reviews; quality management and assessment; product and process metrics; COTS and reuse; evolution and maintenance; team organization and people management; software engineering aspects of programming languages; and software psychology. Prerequisite is basic knowledge of programming and an introductory class in software engineering. The second prerequisite can be waived with permission of the instructor and additional background reading.
Computation over unreliable and anonymous protocols such as the World Wide Web. Problems of persistence, concurrency control, transactions, and transactions across multiple servers. The relational database management system as a tool for attacking these problems. Students work in small mentored teams on diverse projects. This is a course for students who already have some programming and software engineering experience. The goal is to give students some experience in dealing with those challenges that are unique to Internet applications, such as: concurrency; unpredictable load; security risks; opportunity for wide-area distributed computing; creating a reliable and stateful user experience on top of unreliable connections and stateless protocols; extreme requirements and absurd development schedules; requirements that change mid-way through a project, sometimes because of experience gained from testing with users; user demands for a multi-modal interface.
No restrictions on your remixing, redistributing, or making derivative works.
Give credit to the author, as required.
Your remixing, redistributing, or making derivatives works comes with some
restrictions, including how it is shared.
Your redistributing comes with some restrictions. Do not remix or make
derivative works.
Copyrighted materials, available under Fair Use and the TEACH Act for US-based
educators, or other custom arrangements. Go to the resource provider to see
their individual restrictions.