Software Engineering-Master of Information Technology Strategy - Carnegie Mellon University

Software and Networked Systems

14-740 Fundamentals of Telecommunications and Computer Networks

Fundamentals of Telecommunications and Computer Networks is a foundational graduate-level course in computer and telecommunication networks.  The primary objective of this course is for the student to gain knowledge in the fundamental principles underlying computer and telecommunication networks. Using a top-down approach, the course covers topics in the application, transport, network and link layers of the protocol stack. Advanced topics, including network management, traffic engineering and router internals, will also be addressed. Consideration will be given to engineering tradeoffs and design principles used in computer and telecommunication networks.  The application of acquired knowledge within the context of systems projects will be encouraged.

The course will follow an accelerated pace.

Prerequisite:  Although there is no prerequisite course, basic computer knowledge, programming, and probability theory background is required.
Units: 12
Schedule: Fall and Spring semester

16-720 Computer Vision

This course introduces the fundamental techniques used in computer vision, that is, the analysis of patterns in visual images to reconstruct and understand the objects and scenes that generated them. Topics covered include image formation and representation, camera geometry and calibration, multi-view geometry, stereo, 3D reconstruction from images, motion analysis, image segmentation, object recognition. The material is based on graduate-level texts augmented with research papers, as appropriate. Evaluation is based on homeworks and final project. The homeworks involve considerable Matlab programming exercises.

Prerequisite: 
Units: 12
Schedule: Fall and Spring semester

16-722 Sensing and Sensors

The principles and practices of quantitative perception (sensing) illustrated by the devices and algorithms (sensors) that implement them. Learn to critically examine the sensing requirements of proposed applications of robotics to real problems, to specify the required sensor characteristics, to analyze whether these specifications can be realized even in principle, to compare what can be realized in principle to what can actually be purchased, to understand the engineering factors that account for the discrepancies, and to design transducing, digitizing, and computing systems that come tolerably close to realizing the actual capabilities of available sensors. To the extent that time and interest permit, in addition to the sensing requirements of robot function (manipulation, mobility) per se, illustrative applications will also be drawn from the domain of observations that robots are employed to make (e.g., noninvasively locating buried objects or skeletal features, or nondestructively characterizing natural or manufactured materials), and the domain of infrastructures that robotic applications depend on (e.g., broadcast communication and navigation signals).

Prerequisite:  Linear Algebra, Calculus, Undergraduate or Graduate level Vision or Graphics.
Units: 12
Schedule: Fall semester

16-761 Introduction to Mobile Robots

This course covers all aspects of mobile robot systems design and programming from both a theoretical and a practical perspective. The basic subsystems of control, localization, mapping, perception, and planning are presented. For each, the discussion will include relevant methods from applied mathematics. aspects of physics necessary in the construction of models of system and environmental behavior, and core algorithms which have proven to be valuable in a wide range of circumstances.

Prerequisite:
Units: 12
Schedule: Spring semester

17-627 Software Security Engineering

It is increasingly important for software engineers to understand how to develop secure software. Because software systems are increasingly under attack, methods for developing secure systems need to be considered at each stage of development. This course focuses on methods and practices for the development of secure software systems including: Lifecycle process models, risk management, requirements engineering, architecture and design, coding and testing, governance and management. As time permits, acquisition of newly-developed and COTS software will also be discussed. Students will acquire an understanding of the fundamental concepts for developing secure systems and access to resources for more detailed follow-up studies. Prerequisite: Prior software engineering or computer security course, or instructor permission.

Prerequisite: None
Units: 6
Schedule: Summer semester

17-638 Systems Architecture for Managers

Modern business is run on information systems of ever-increasing complexity and sophistication. As a result, business managers must be able to make effective decisions regarding the strategic selection, specification, design, and deployment of information systems. Appropriate application of architectural design concepts and techniques can significantly improve these decisions. The course introduces key architectural concepts, techniques, and guidance to aspiring managers of organizations so as to enable them to make more effective architectural decisions and avoid common pitfalls. Although the course covers a significant body of technical material, the focus is on managerial challenges rather than technical implementation. There is no formal prerequisite for this class other than a solid academic standing and some familiarity with software development. Experience building, designing, specifying, or working with large information systems will be helpful, but is not required.

Prerequisite: 17-655
Units: 12
Schedule: Spring semester

17-664 Enterprise Application Integration

Modern business enterprises are supported by hundreds of disparate applications that work together to achieve a common goal. These applications are typically large three-tier (or n-tier) application silos developed to support a particular facet of business. Unfortunately, in most cases these systems were never designed to have their services reused transparently across an organization. The result is often a lack of flexibility for large-scale reuse, lack of reliability when integrated, inappropriate security models for organization-level integration, and others. Enterprise Application Integration is a graduate-level course on how to design and deploy large-scale systems for supporting the critical backbone of an organization. Although a particular emphasis is put on Service Oriented Architecture (SOA) and Enterprise Service Bus (ESB), a broad set of topics is covered. These include security for large-enterprise systems, reliability for distributed long-running transactions, standards for intra- and extra-organization system integration, deployment and fault-tolerance of systems, and others. The aim of the course is to prepare future software architects to pragmatically deal with large-scale systems, so as to understand the trade-offs and implications of supporting the goals of an organization.

Prerequisite: None
Units: 12
Schedule: Fall semester

18-342 Intro to Embedded Systems

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.

Prerequisite: 18348 or 18349
Units: 12
Schedule: Fall semester

18-349 Intro to Embedded Real Time Systems

This practical, hands-on course introduces the various building blocks and underlying scientific and engineering principles behind embedded real-time systems. The course covers the integrated hardware and software aspects of embedded processor architectures, along with advanced topics such as real-time, resource/device and memory management. Students can expect to learn how to program with the embedded architecture that is ubiquitous in cell-phones, portable gaming devices, robots, PDAs, etc. Students will then go on to learn and apply real-time principles that are used to drive critical embedded systems like automobiles, avionics, medical equipment, the Mars rover, etc. Topics covered include embedded architectures (building up to modern 16/32/64-bit embedded processors); interaction with devices (buses, memory architectures, memory management, device drivers); concurrency (software and hardware interrupts, timers); real-time principles (multi-tasking, scheduling, synchronization); implementation trade-offs, profiling and code optimization (for performance and memory); embedded software (exception handling, loading, mode-switching, programming embedded systems). Through a series of laboratory exercises with state-of-the-art embedded processors and industry-strength development tools, students will acquire skills in the design/implementation/debugging of core embedded real-time functionality.

Prerequisite: 18342 or 18348
Units: 12
Schedule: Fall semester

18-756 Packet Switching & Computer Networks

This course is designed to provide graduate students an understanding of the fundamental concepts in computer networks of the present and the future. In the past, the scarce and expensive resource in communication networks has been the bandwidth of transmission facilities. Accordingly, the techniques used for networking and switching have been chosen to optimize the efficient use of this resource. These techniques have differed according to the type of information carried: circuit switching for voice and packet switching for data. It is expected that elements of circuit and packet switching will be used in the integrated networks. This course focuses on packet switching for computer networks and protocol design. Topics in the course include: computer networks over-view; OSI layers, queuing theory; data link protocol; flow control; congestion control; routing; local area networks; transport layer. The current networks and applications will be introduced through the student seminars in the last weeks of the course.

Prerequisite: 18-345
Units: 12
Schedule: Fall semester

18-843 Mobile and Pervasive Computing

This is a course exploring research issues in the newly emerging field of mobile computing. Many traditional areas of computer science and computer engineering are impacted by the constraints and demands of mobility. Examples include network protocols, power management, user interfaces, file access, ergonomics, and security. This will be an "advanced" course in the truest sense --- most, if not all, the topics discussed will be ones where there is little consensus in the research community on the best approaches. The course will also offer significant "hand-on" experience in this area. Each student will have to present and lead the discussion on a number of papers. Students will work in groups of three under the guidance of a mentor on a hands-on project. Each student will also be required to write one of two documents: (a) a research proposal (similar in spirit to an NSF proposal) on an idea in mobile computing or (b) a short business plan for a commercial opportunity in mobile computing. Grading will be based on the quality of the presentations, the project, and the proposal or business plan.

Prerequisite: 15-410
Units: 12
Schedule: Spring semester