Courses

Core Courses

14-702 / 14-703: INI MSIT Graduate Seminar
Spring/Summer: 6 units. This is a student-led seminar course in which students select, investigate, discuss, debate, and solve multi-disciplinary problems in information technology. Students are expected to do weekly reading assignments and each week different students (or student groups) propose a topic of interest to them and prepare a presentation for the course. Faculty and experts from local companies will also serve as guest lecturers on specific topics. Prerequisites: Graduate standing and instructor’s permission.

14-740: Fundamentals of Telecommunications and Computer Networks
Fall: 12 units. 14-740 is a graduate-level, first-course in computer and telecommunication networks. There is no pre-requisite of an undergraduate equivalent, but basic computer, programming and probability theory background is required. The primary objective of this course is for you to learn the fundamental principles underlying computer and telecommunication networks. Using a top-down approach, we will cover topics in the application, transport, network and link layers of the protocol stack. We will also go over advanced topics, including network management, traffic engineering, and router internals. Besides learning about the nuts and bolts, you will gain an understanding as well in engineering tradeoffs made and design principles used in computer and telecommunication networks. Another objective is for you to apply some of this knowledge in the context of systems projects. We will follow an aggressive pace in this course. Prerequisites: Graduate standing.

14-741: Intro to Information Security
Fall: 12 units. The growing importance of information systems, and their use to support safety-critical applications, has made information security a central issue for modern systems. The course introduces the technical and policy foundations of information security. The main objective of the course is to enable students to reason about information systems from a security engineering perspective. Topics covered in the course include elementary cryptography; access control; common software vulnerabilities; common network vulnerabilities; digital rights management; policy and export control law; privacy; management and assurance; and special topics in information security. Prerequisites: The course assumes a basic working knowledge of computers, networks, C and UNIX programming, as well as an elementary mathematics background, but does not assume any prior exposure to topics in computer or communications security.

14-774: Managerial Economics
Fall: 6 units. This class presents the basic concepts of microeconomics theory with an emphasis on business applications. The approach of microeconomics is to solve an economic problem by modeling it as an optimization problem; the solution to the optimization problems is then interpreted in terms of the original economic problem. This approach will be used to answer such problems as input selection, pricing and project selection. The format of the class is to present theory common to a general class of applied problems and then to apply the theory by solving actual problems. The goal of the class is for the students to be capable of applying the basic concepts to problems faced in both future classes (e.g. finance, macroeconomics) and future careers. Prerequisites: Graduate standing.

14-775: Business Management
Fall: 6 units. This class includes management functions such as accounting (reading and understanding financial statements, basic cost analysis and budgeting), finance (project evaluation and capital budgeting), human relations (motivation and organization of work), marketing (distribution and consumer behavior), and operations (production planning and control). The importance of information systems is emphasized across all management functions. Prerequisites: Graduate standing.

96-821: Introduction to Software Engineering
Fall: 12 units. As a student in Introduction to Software Engineering, you have the opportunity to practice principled software development in the context of an authentic project using an agile method. You track your progress against a plan and manage risks along the way. You prioritize features, do pair programming and follow test-driven development. You measure code coverage and code quality. Through this course, you experience the ins and outs of software engineering. Topics covered in the course include software lifecycles, project planning, requirements tracking, software development, using a revision control system, testing, user personas, user scenarios, and agile development. Prerequisites: Students should be comfortable programming in an object-oriented language.

Practicum and Internship

14-798: INI MSIT Project Practicum
Spring: 24 units. This course provides the opportunity to consolidate and apply the skills and knowledge developed in previous coursework in a team-based approach to a real problem. A team of students works with a real-world client on a real-world problem of value to the client. Most important, this is an opportunity to apply the team's advanced engineering and management skills, including the specialized knowledge and skills needed to solve a real problem. In particular, team members must learn to work effectively with clients, quickly understand their problem, negotiate deliverables, and then select, adapt, and apply just the right amount of process and documentation to meet clients' needs and effectively manage the project. Prerequisites: Graduate standing and instructor's permission.

14-799: INI MSIT Internship
Summer: 12 units. In an internship, a student undertakes full-time work with an organization. The purpose of the internship is for the student to apply knowledge in a real-world setting, gain experience in a specific field and create professional contacts.
Prerequisite: Graduate standing.

Electives- Mobility Program

96-822: The Mobile Ecosystem
Spring: 12 units. The goal of this course is to equip students with the ability to thoughtfully analyze business and technology proposals. It provides an overview of the different players in the mobile space, including device manufacturers, network operators, application developers, users and regulators. Students will understand how these stakeholders operate in the US and other countries, their business drivers, and their competitive posture. Different user segments and some aspects of their needs, wants and drivers will be analyzed. There will be guided discussion of how cultural, business climate and national attributes impact decisions. Prerequisites: Graduate standing.

96-823: Designing the Mobile User Experience, I
Spring: 12 units. This learn-by-doing course is an alternate version of Software Product Definition (96-XXX), which teaches students to evolve a compelling product vision in the context of developing a typical mobile application. Working in teams, students apply techniques of contextual and scenario-based design to validate and refine an initial product idea. Topics covered in the course include introductions to contextual inquiry, work modeling, the use of scenarios to derive coherent requirements, functional and nonfunctional requirements, definition of the “whole product,” and development of an effective product vision document. Prerequisite: Previous experience in software development. (Note that Designing the Mobile User Experience I and Software Product Definition cannot both be taken.)

96-825: Mobile Hardware for Software Engineers
Spring: 12 units. This course enables students to analyze the implications of mobile hardware capabilities and restrictions in order to plan and develop mobile applications. Students will be able to devise and interface simple hardware additions to mobile platforms such as cell-phones, internet tablets and wireless sensors. The course covers the elements of embedded systems development, such as hardware fundamentals, real-time operating systems, interrupts, and cross-development, as well mobile topics such as power management, machine-to-machine communication, radio/RF subsystems and wireless protocols. Topics typically include: USB, GPIO, blue-tooth, cellular networks, 802.11, Zigbee, RFID, NFC, cameras, audio, etc. Student teams will undertake small HW/SW interfacing projects to sharpen their experience. Unlike a conventional hardware course, the course would instead focus on the software implications, rather than the CPU and radio. Prerequisites: Some understanding of basic electrical terminology and Java programming required; C programing desired.

Electives - Information Security Program

18-731: Network Security
Spring: 12 units. Some of today's most damaging attacks on computer systems involve the exploitation of network infrastructure, either as the target of attack or as a vehicle to advance attacks on end systems. This course provides an in-depth study of network attack techniques and methods to defend against them. Topics include firewalls and virtual private networks; network intrusion detection; denial of service (DoS) and distributed denial-of-service (DDoS) attacks; DoS and DDoS detection and reaction; worm and virus propagation; tracing the source of attacks; traffic analysis; techniques for hiding the source or destination of network traffic; secure routing protocols; protocol scrubbing; and advanced techniques for reacting to network attacks. Prerequisites: Introduction to Computer Security (18-730) or Introduction to Information Security (14-741 or equivalent.

14-761: Applied Information Assurance
Fall: 12 units. This course focuses on practical applications of Information Assurance (IA) policies and technologies in enterprise network environments. The course will include lecture and demonstrations, but is designed around a virtual lab environment and scenario that provides for robust and realistic hands-on experiences in dealing with a range of information assurance topic areas. Students will be provided numerous practical opportunities to apply information security practices and technologies to solve real-world IA problems. Prerequisites: Graduate standing or instructor’s permission.

Electives - Software Management Program

96-782: Project and Process Management
Spring: 12 units. This course enables students to analyze software project plans (agile and traditional) to determine whether a fictional software project is being set up for success. Students work in teams to determine whether an agile or traditional methodology is best suited for the project, what specific risks the project faces and what the students recommend the organization do to manage those risks. Topics covered in the course include agile and traditional methodology strengths and weaknesses in terms of requirements management, estimation, project planning, metrics, infrastructure, organization, change and risk. Students use an estimation method to assess the project's schedule and budget, and present their overall project recommendations and risks in formal presentations to senior management. Prerequisites: Graduate standing.

96-783: Managing Software Professionals
Spring: 12 units. This course provides a learn-by-doing experience during which students describe and investigate the issues associated with the "employee life cycle," comprised of hiring employees, establishing a good working environment that will attract top talent and prevent them from leaving, and how to address firing someone and company layoffs, should those become necessary. Students work individually and in teams to build a hiring process that facilitates selecting the right candidates (including mock interviews); to propose a work environment that aligns the needs of the business and employees to everyone's mutual benefit; to manage common employee performance problems (including mock performance and annual reviews), and to build a plan for firing or laying off students legally and appropriately. Prerequisites: Graduate standing.

Electives and Courses for All Programs

96-781: Metrics for Software Managers
Fall: 12 units. This practical course introduces students to the use of software metrics for managing. The course covers metrics that are appropriate for a range of software engineering methodologies, such as the Unified Process and Scrum. Through a series of team-based tasks, students will learn how to apply the goal-question-metric approach to the definition, collection, and use of software metrics; define and analyze software engineering process measurements at the project and portfolio level; assess the appropriateness of standard metrics and develop new metrics; address the organizational change implications for the introduction, collection, reporting, and use of software metrics. Prerequisites: Introduction to Software Engineering or consent of the instructor.

96-796: Introduction to Human-Computer Interaction
Summer: 12 units. This learn-by-doing course introduces students to interaction design and assessment of usability in the context of designing a typical Web 2.0 application. Working in teams, students learn to apply a user-centered approach to the design of human-computer interactions which includes continuously involving the targeted users in the design process, regularly testing design decisions, and working iteratively to optimize the design. Topics covered in the course include contextual inquiry, persona- and scenario-based interaction design, prototyping, usability inspection methods, non-laboratory usability testing, and effective demonstrations. Prerequisite: Previous experience in software development.

96-818: Innovation and Entrepreneurship
Summer: 12 units. In this course, students work in small teams, advised by experienced venture capitalists and facilitated by other industry experts, to master the elements of entrepreneurship in the context of a business plan competition. Each team evaluates cases, meets with business leaders, and refines a business plan. The winning team receives a cash prize, and selected plans may be submitted to external business plan competitions. Prerequisite: Graduate standing.

96-XXX: Avoiding Software Project Failures
Fall: 12 units. A strikingly large percentage of software projects fail to even come close to meeting their original objectives. During this course, you will analyze four case studies of real software project failures and develop detailed recommendations for how those projects might have avoided becoming failures. Using these case studies and supporting readings, you will learn how to analyze projects to identify and prioritize the specific risks they face, how to select approaches to avoiding or mitigating those risks, how to manage risks throughout the software development process, and how to carry out an effective post mortem at the end of the project. Topics include risk identification and mitigation, risk management, failure analysis, death march, and other project anti-patterns. Prerequisites: Graduate standing.

96-XXX: Open Source Software
Summer: 12 units. This course introduces contemporary thinking and fundamental skills regarding Open Source Software. Emphasis is on understanding the impact of open source software on the software industry, including licensing and commercialization issues, corporate software evaluation techniques, and business models. Students install and use open source software (Linux, OpenOffice, Firefox, etc.) and work in teams in a problem-based seminar/workshop format. Team projects focus on creating evaluation criteria for specific categories of software, followed by evaluating open source software components. Team projects will be supplemented by recommended readings and presentations by invited outside speakers. Prerequisite: Graduate standing.