Full-Time Curriculum
\t\tFall 2019
\t\tIn consultation with the faculty director select 6 for a total of 12 units:
SWE 241P Applied Data Structures and Algorithms (2)
\nExploration of strategies to tackle computational problems whose solutions include well-known algorithms and data structures. Topics include: sorting, searching, indexing, algorithmic complexity and runtime performance analysis.
\nSWE 242P Network Programming (2)
\nExploration of networking principles and concepts for the development of distributed software. Topics include programming against well-known network protocols, ports and sockets, and network APIs.
\nSWE 243P Database Programming (2)
\nExploration of software development with substantial reliance on a database for storage and retrieval of data. Topics include: relational databases, structured query language, NoSQL storage systems, APIs and libraries for database programming.
\nSWE 244P Concurrent Programming (2)
\nExploration of concepts and mechanisms for the development of concurrent software. Topics include: threads, processes, locks, race conditions, and deadlocks.
\nSWE 245P GUI Programming (2)
\nExploration of interactive software with substantial graphical user interface elements. Topics include: libraries and frameworks for GUI programming, layout design and alternatives, and event-driven programming.
\nSWE 246P Mobile Programming (2)
\nExploration of contemporary libraries and frameworks for construction of mobile applications. Topics include: emulators, mobile development standards and patterns, energy consumption issues, and screen layout.
\nSWE 247P Applied Information Retrieval (2)
\nExploration of state-of-the-art techniques for storing and retrieving non-structured textual information. Topics include: tokenization, inverted indexes, tf-idf, ranked retrieval, precision and recall.
\nSWE 248P Neural Network Programming (2)
\nExploration of state-of-the-art frameworks for programming artificial intelligent components. Topics include: neural networks and deep neural networks, gradient descent, backpropagation, training and test sets, and model validation
\nWinter 2020
\t\tSWE 261P Software Testing and Debugging (4)
\nThis course is designed to teach students how to ensure high quality software by means of testing, debugging, and other quality assurance activities. Students learn a combination of both theoretical and practical skills via get hands-on experience with modern software quality-assurance tools and approaches. Topics include: black-box and white-box testing, category-partitioning testing, unit testing, test-driven and behavior-driven development, combinatorial testing, code reviews, static code analysis tools, mocking, regression testing, capture-reply, mutation testing, and debugging.
\nSWE 264P Distributed Software Architecture (4)
\nStudy of software system architectures and architectural styles for large-scale distributed applications, and contemporary technologies and standards for their construction. Topics include: client-server, peer-to-peer, publish-subscribe, REST, cloud computing, content distribution networks, scalability, latency, caching, and security, among others.
\nSWE 265P Reverse Engineering and Modeling (4)
\nIntroduces theories, concepts, representations, techniques, and case studies in understanding large-scale, complex software systems. Topics include static and dynamic modeling notations, manual and (semi-) automated reverse engineering techniques, APIs, patterns and styles. A significant, hands-on project is included.
\nSpring 2020
\t\tSWE 262P Programming Styles (4)
\nThis course is designed to teach students the various ways software can be decomposed and then how to put the parts back together. Students will be exposed to a variety of different programming styles and composition mechanisms. Topics include: procedural styles, functional styles, object-oriented styles, data-centered styles, error handling styles, and styles for concurrent and parallel programming.
\nSWE 263P User Experience and Interaction (4)
\nProvides an introduction to the basic principles of human-computer interaction (HCI) and the pragmatic aspects of usability engineering. Topics include the fundamentals of interaction, user experience, design for usability, and evaluation of products for their usability. Students will apply their knowledge in assignments and an ongoing class project.
\nSWE 266P Software Security and Dependability (4)
\nPrinciples and concepts for the design and construction of secure software. Topics include: common types of software security vulnerabilities, methods for detecting vulnerabilities, design and process methodologies to improve the security of software, and techniques for assessing the security properties of software.
\nSummer 2020
\t\tSWE 275P Internship (1)
\nExploration of strategies to tackle computational problems whose solutions include well-known algorithms and data structures. Topics include: sorting, searching, indexing, algorithmic complexity and runtime performance analysis.
\nFall 2020
\t\tSWE 271P Career and Entrepreneurship (4)
\nTeaches practical skills for spoken, written, and electronic communication in a range of business and technical contexts, including promoting project ideas and portfolio development. Students will practice their skills in classroom presentations and written exercises.
\nSWE 272P Project Management (4)
\nProvides an introduction to project management in software engineering from several perspectives. Topics include team behavior; globally distributed work; resource estimation, scheduling and budgeting. Students will apply their knowledge in an ongoing class project.
\nSWE 276P Capstone Project in Software Engineering (4)
\nQuarter-long software-intensive project focusing on the design and implementation of a novel software system. Students are expected to bring to bear the concepts acquired during the program
\nPart-Time Curriculum
\t\tFall 2019
\t\tIn consultation with the faculty director select 4 for a total of 8 units:
SWE 241P Applied Data Structures and Algorithms (2)
\nExploration of strategies to tackle computational problems whose solutions include well-known algorithms and data structures. Topics include: sorting, searching, indexing, algorithmic complexity and runtime performance analysis.
\nSWE 242P Network Programming (2)
\nExploration of networking principles and concepts for the development of distributed software. Topics include programming against well-known network protocols, ports and sockets, and network APIs.
\nSWE 243P Database Programming (2)
\nExploration of software development with substantial reliance on a database for storage and retrieval of data. Topics include: relational databases, structured query language, NoSQL storage systems, APIs and libraries for database programming.
\nSWE 244P Concurrent Programming (2)
\nExploration of concepts and mechanisms for the development of concurrent software. Topics include: threads, processes, locks, race conditions, and deadlocks.
\nSWE 245P GUI Programming (2)
\nExploration of interactive software with substantial graphical user interface elements. Topics include: libraries and frameworks for GUI programming, layout design and alternatives, and event-driven programming.
\nSWE 246P Mobile Programming (2)
\nExploration of contemporary libraries and frameworks for construction of mobile applications. Topics include: emulators, mobile development standards and patterns, energy consumption issues, and screen layout.
\nSWE 247P Applied Information Retrieval (2)
\nExploration of state-of-the-art techniques for storing and retrieving non-structured textual information. Topics include: tokenization, inverted indexes, tf-idf, ranked retrieval, precision and recall.
\nSWE 248P Neural Network Programming (2)
\nExploration of state-of-the-art frameworks for programming artificial intelligent components. Topics include: neural networks and deep neural networks, gradient descent, backpropagation, training and test sets, and model validation
\nWinter 2020
\t\tSWE 261P Software Testing and Debugging (4)
\nThis course is designed to teach students how to ensure high quality software by means of testing, debugging, and other quality assurance activities. Students learn a combination of both theoretical and practical skills via get hands-on experience with modern software quality-assurance tools and approaches. Topics include: black-box and white-box testing, category-partitioning testing, unit testing, test-driven and behavior-driven development, combinatorial testing, code reviews, static code analysis tools, mocking, regression testing, capture-reply, mutation testing, and debugging.
\nSpring 2020
\t\tSWE 263P User Experience and Interaction (4)
\nProvides an introduction to the basic principles of human-computer interaction (HCI) and the pragmatic aspects of usability engineering. Topics include the fundamentals of interaction, user experience, design for usability, and evaluation of products for their usability. Students will apply their knowledge in assignments and an ongoing class project.
\nSWE 266P Software Security and Dependability (4)
\nPrinciples and concepts for the design and construction of secure software. Topics include: common types of software security vulnerabilities, methods for detecting vulnerabilities, design and process methodologies to improve the security of software, and techniques for assessing the security properties of software.
\nSummer 2020
\t\tNo coursework
Fall 2020
\t\tIn consultation with the faculty director select 2 for a total of 4 units that were not previously taken in Fall 2019:
SWE 241P Applied Data Structures and Algorithms (2)
\nExploration of strategies to tackle computational problems whose solutions include well-known algorithms and data structures. Topics include: sorting, searching, indexing, algorithmic complexity and runtime performance analysis.
\nSWE 242P Network Programming (2)
\nExploration of networking principles and concepts for the development of distributed software. Topics include programming against well-known network protocols, ports and sockets, and network APIs.
\nSWE 243P Database Programming (2)
\nExploration of software development with substantial reliance on a database for storage and retrieval of data. Topics include: relational databases, structured query language, NoSQL storage systems, APIs and libraries for database programming.
\nSWE 244P Concurrent Programming (2)
\nExploration of concepts and mechanisms for the development of concurrent software. Topics include: threads, processes, locks, race conditions, and deadlocks.
\nSWE 245P GUI Programming (2)
\nExploration of interactive software with substantial graphical user interface elements. Topics include: libraries and frameworks for GUI programming, layout design and alternatives, and event-driven programming.
\nSWE 246P Mobile Programming (2)
\nExploration of contemporary libraries and frameworks for construction of mobile applications. Topics include: emulators, mobile development standards and patterns, energy consumption issues, and screen layout.
\nSWE 247P Applied Information Retrieval (2)
\nExploration of state-of-the-art techniques for storing and retrieving non-structured textual information. Topics include: tokenization, inverted indexes, tf-idf, ranked retrieval, precision and recall.
\nSWE 248P Neural Network Programming (2)
\nExploration of state-of-the-art frameworks for programming artificial intelligent components. Topics include: neural networks and deep neural networks, gradient descent, backpropagation, training and test sets, and model validation
\nand
SWE 271P Career and Entrepreneurship (4)
\nTeaches practical skills for spoken, written, and electronic communication in a range of business and technical contexts, including promoting project ideas and portfolio development. Students will practice their skills in classroom presentations and written exercises.
\nWinter 2021
\t\tSWE 264P Distributed Software Architecture (4)
\nStudy of software system architectures and architectural styles for large-scale distributed applications, and contemporary technologies and standards for their construction. Topics include: client-server, peer-to-peer, publish-subscribe, REST, cloud computing, content distribution networks, scalability, latency, caching, and security, among others.
\nSWE 265P Reverse Engineering and Modeling (4)
\nIntroduces theories, concepts, representations, techniques, and case studies in understanding large-scale, complex software systems. Topics include static and dynamic modeling notations, manual and (semi-) automated reverse engineering techniques, APIs, patterns and styles. A significant, hands-on project is included.
\nSpring 2021
\t\tSWE 262P Programming Styles (4)
\nThis course is designed to teach students the various ways software can be decomposed and then how to put the parts back together. Students will be exposed to a variety of different programming styles and composition mechanisms. Topics include: procedural styles, functional styles, object-oriented styles, data-centered styles, error handling styles, and styles for concurrent and parallel programming.
\nSummer 2021
\t\tSWE 275P Internship (1)
\nExploration of strategies to tackle computational problems whose solutions include well-known algorithms and data structures. Topics include: sorting, searching, indexing, algorithmic complexity and runtime performance analysis.
\nFall 2021
\t\tSWE 272P Project Management (4)
\nProvides an introduction to project management in software engineering from several perspectives. Topics include team behavior; globally distributed work; resource estimation, scheduling and budgeting. Students will apply their knowledge in an ongoing class project.
\nSWE 276P Capstone Project in Software Engineering (4)
\nQuarter-long software-intensive project focusing on the design and implementation of a novel software system. Students are expected to bring to bear the concepts acquired during the program
\n