Pittsburgh-Silicon Valley Course Descriptions
Note: courses without course numbers are those currently or proposed to be offered at the Silicon Valley campus.
Core Courses
Practicum and Internship
Electives - Mobility Program
Electives - Information Security Program
Electives - Software Management Program
Electives - All Programs
Core Courses
14-702 / 14-703: INI MSIT Graduate Seminar
Summer / Fall: 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-XXX: 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-XXX: 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-XXX 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.
18-342: Fundamentals of Embedded Systems
Fall: 12 units.
This practical, hands-on course introduces students to the basic building-blocks and the underlying scientific principles of embedded systems. The course covers both the hardware and software aspects of embedded procesor architectures, along with operating system fundamentals, such as virtual memory, concurrency, task scheduling and synchronization. Through a series of laboratory projects involving state-of-the-art processors, students will learn to understand implementation details and to write assembly-language and C programs that implement core embedded OS functionality, and that control/debug features such as timers, interrupts, serial communications, flash memory, device drivers and other components used in typical embedded applications. Relevant topics, such as optimization, profiling, digital signal processing, feedback control, real-time operating systems and embedded middleware, will also be discussed.
Prerequisites: Experience in C programming.

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.
18-732: Secure Software Systems
Spring: 12 units. Poor software design and engineering are the root causes of most security vulnerabilities in deployed systems today. Moreover, with code mobility now commonplace -- particularly inthe context of web technologies and digital rights management -- system designers are increasingly faced with protecting hosts from foreign software and protecting software from foreign hosts running it. This class takes a close look at software as a mechanism for attack, as a tool for protecting resources, and as a resource to be defended. Topics covered include the software design process; choices of programming languages, operating systems, databases and distributed object platforms for building secure systems; common software vulnerabilities, such as buffer overflows and race conditions; auditing software; proving properties of software; software and data watermarking; code obfuscation; tamper resistant software; and the benefits of open and closed source development. Prerequisites: Introduction to Computer Security (18-730) or Introduction to Information Security (14-741) or equivalent.
96-XXX: Requirements Engineering
Spring: 12 units.
The overall learning objective of the Requirements Engineering course is to learn how to define the requirements for a software engineering project so the team knows what to build. Students will learn many different methods for gathering, analyzing, documenting, and managing requirements; they will expand their familiarity with software processes by following a customized version of the Unified Process; and they will be introduced to principles of designing usable web-based interfaces and carrying out light-weight usability tests. Topics covered in the course include requirements elicitation, requirements analysis, requirements management, and UML modeling.
Prerequisites: Introduction to Software Engineering or Foundations of Software Engineering.
8-533 / 8-733/ 19-608: Privacy Policy, Law, and Technology
Fall: 9 or 12 units. Privacy issues have been getting increasing attention from law makers, regulators, and the media. As a result, businesses are under pressure to draft privacy policies and post them on their web sites, chief privacy officers are becoming essential members of many enterprises, and companies are taking pro-active steps to avoid the potential reputation damage of a privacy mistake. As new technologies are developed, they increasingly raise privacy concerns -- the World Wide Web, wireless location-based services, and RFID chips are just a few examples. In addition, the recent focus on national security and fighting terrorism has brought with it new concerns about governmental intrusions on personal privacy. This course provides an in-depth look into privacy, privacy laws, and privacy-related technologies and self-regulatory efforts. Students will study privacy from philosophical, historical, legal, policy, and technical perspectives and learn how to engineer systems for privacy.
This course is intended primarily for graduate students and advanced undergraduate students (juniors and seniors) with some technical background. Programming skills are not required. 8-733 and 19-608 are 12-unit courses for PhD students. Students enrolled under these course numbers will have extra reading and presentation assignments and will be expected to do a project suitable for publication. 8-533 is a 9-unit courses for undergraduate students. Masters students may register for any of the course numbers. This course will include a lot of reading, writing, and class discussion. Students will be able to tailor their assignments to their skills and interests, focusing more on programming or writing papers as they see fit. However, all students will be expected to do some writing and some technical work. A large emphasis will be placed on research and communication skills, which will be taught throughout the course.
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.
96-XXX: Requirements Engineering
Spring: 12 units.
The overall learning objective of the Requirements Engineering course is to learn how to define the requirements for a software engineering project so the team knows what to build. Students will learn many different methods for gathering, analyzing, documenting, and managing requirements; they will expand their familiarity with software processes by following a customized version of the Unified Process; and they will be introduced to principles of designing usable web-based interfaces and carrying out light-weight usability tests. Topics covered in the course include requirements elicitation, requirements analysis, requirements management, and UML modeling.
Prerequisites: Introduction to Software Engineering or Foundations of Software Engineering.
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-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.

Electives - All Programs
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: Designing the Mobile User Experience II
Summer: 12 units.
This learn-by-doing course is alternate version of Introduction to Human-Computer Interaction (96-XXX) which introduces students to interaction design and assessment of usability in the context of designing a typical mobile application. Working as members of a high-performing team, 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, constraints and special considerations in mobile interaction design, persona- and scenario-based interaction design, prototyping, usability inspection methods, non-laboratory usability testing, special issues in mobile usability testing, and effective demonstrations.
Prerequisites: Designing the Mobile User Experience 1 (96-XXX) and previous experience in software development. (Note that Designing the Mobile User Experience II and Introduction to Human-Computer Interaction cannot both be taken.)
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.

|