SWE 505 Principles of Software Engineering (3-0-3)
Software Requirements: Modern SRS for Enterprise Application, Software Process: Personal and Team Software Process, Traditional Software Processes and Agile Processes. Software Design: Architecture Tradeoff Analysis and patterns. Software Project Management: project initiation, planning, executing, monitoring control and closing. Software Engineering Measurement and Analysis, Software Quality Assurance: 6-Sigma. Software Integration: Enterprise Application Integration, COTS Integration.
Note: This course is for non-SWE students, it cannot be taken for credit toward a MS degree by SWE graduate students.
SWE 515 Software Requirements Engineering (3-0-3)
The course gives state of the art and state of the practice in software requirements engineering. In-depth research-oriented study of methods, tools, notations, and validation techniques for the analysis, specification, prototyping, and maintenance of software requirements. Topics include study of object-oriented requirements modeling, using state of the art modeling techniques such as the Unified Modeling Language (UML). The course work includes a project investigating or applying approaches to requirements engineering. Note: SWE 515 cannot be taken for credit with ICS 512
SWE 516 Software Design (3-0-3)
Concepts and methods for the architectural design of large-scale software systems. Fundamental design concepts and design notations are introduced. Several design methods are presented and compared. In-depth research-oriented study of object-oriented analysis and design modeling using state of the art modeling techniques such as Unified Modeling Language (UML). Students participate in a group project on object-oriented software design. Note: SWE 516 cannot be taken for credit with ICS 513
SWE 526 Software Validation, Verification, and Quality Assurance (3-0-3)
In-depth research-oriented study of verification and validation throughout the development lifecycle. Techniques for validation and verification, quality assurance at the requirements and design phases, software testing at the unit, module, subsystem, and system levels. Automatic and manual techniques for generating and validating test data. Testing process: static vs. dynamic analysis, functional testing, inspections, and reliability assessment. Note: SWE 526 cannot be taken for credit with ICS 514
SWE 531 Secure Software (3-0-3)
Software security development lifecycle including security requirements analysis, design, coding, review, and testing. Construction of secure and safe C/Unix programs. Vulnerabilities in C source code. Stack and heap buffer overflows. Overview of secure web application development with consideration for SQL injection, cookies, and forceful browsing. Techniques for software protection, such as code obfuscation, tamper-proofing, and watermarking. Analysis of software-based attacks and defenses, timing attacks and leakage of information. Type safety and capability systems.
SWE 532 Web Applications Security (3-0-3)
Study of contemporary web application vulnerabilities, based on the OWASP (Open Web Application Security Project). Study of exploitation techniques for server and client web applications, and techniques that lead to web defacement and server penetration. Auditing and scanning web applications and servers for security weaknesses and vulnerabilities. Contemporary attack scenarios exploiting web vulnerabilities such as cross-site scripting, SQL injection, cookies, and forceful browsing. Content-based attacks and effective countermeasures. Secure programming for the following technologies: .NET, ASP.NET, ActiveX, JAVA, Secure Sockets, and XML, and a study of web security protocols such as SSL and HTTPS.
SWE 536 Software Architecture (3-0-3)
Advanced principles, methods and best practices in building software architecture and the architecture design process are discussed. Architectural styles and patterns are presented and compared. Software architecture analysis and evaluation methods such as ATAM and CBAM, tradeoffs among conflicting constraints in building high quality architecture are also discussed. Architecture documentation is also presented.
SWE 539 Software metrics (3-0-3)
Software metrics history and current practice, basics of measurement theory for software metrics, framework for software measurement, product, application, and process metrics. The course includes introduction to foundations of measurement theory, models of software engineering measurement, software products metrics, software process metrics and measuring management.
SWE 566 Software Agents (3-0-3)
Agent-based programming; elements of distributed artificial intelligence; beliefs, desires and intentions; component-based technology; languages for agent implementations; interface agents; information sharing and coordination; KIF; collaboration; communication; ontologies; KQML; autonomy; adaptability; security issues; mobility; standards; agent design issues and frameworks; applications in telecommunications. Prerequisites: Consent of Instructor
SWE 585 Empirical software engineering (3-0-3)
The course discusses how empirical studies are carried out in software engineering. The distinction between analytical techniques and empirical techniques is reviewed. Other topics include empirical studies required in software engineering, kinds of problems that can be solved empirically, methods used to control variables and eliminate bias in empirical studies, and analysis and presentation of empirical data for decision making.
SWE 587 Software Project Management (3-0-3)
Lifecycle and process models; process metrics; planning for a software project; mechanisms for monitoring and controlling schedule, budget, quality, and productivity; and leadership, motivation, and team building. Topics cover quantitative models of the software lifecycle, process improvement techniques, cost-effectiveness analysis in software engineering, multiple goal decision analysis, uncertainty and risk analysis, software cost estimation, software engineering metrics, and quantitative lifecycle management techniques. Note: SWE 587 cannot be taken for credit with ICS 515
SWE 595 Special Topics in Software Engineering (3-0-3)
Advanced topics selected from current journals of software engineering that deal with theoretical development or applications in the field. Topic include Reusable Software Architectures, Software Engineering, Experimentation, Concurrent Software Systems, Software Metrics, Web Engineering or Formal Methods and Models in Software Engineering, etc. Prerequisites: Consent of Instructor
SWE 599 Seminar (1-0-0)
Graduate students are required to attend the seminars given by faculty members, visiting scholars, and fellow graduate students. Additionally, each student must give at least presentation on a timely research topic. Among other things, this course is designed to give the student an overview of research, research methodology, journals and professional societies. Graded on a Pass or Fail basis Prerequisites: Graduate standing
SWE 606 Independent Research (3-0-3)
This course is intended to allow the student to conduct research in advanced problems in his MS research area. The faculty offering the course should submit a research plan to be approved by the Graduate Program Committee at the academic department. The student is expected to deliver a public seminar and a report on his research outcomes at the end of the course. Graded on a Pass or Fail basis Prerequisites: Prior arrangement with an instructor
SWE 610 Master Thesis (0-0-6)
The student has to undertake and complete a research topic under the supervision of a faculty member in order to probe in depth a specific problem in Computer Science. Prerequisites: SWE 599 or Consent of Instructor.
SWE 634 Software Reuse (3-0-3)
In-depth research-based study of the concepts and engineering principles of software reuse with a focus on component-based reuse, domain analysis and modeling, service-oriented architectures; quality aspects of reuse, economic models of reuse; and reuse of non-code artifacts. Prerequisites: Consent of Instructor
SWE 638 Software Maintenance & Re-Engineering (3-0-3)
Software evolution and reengineering approaches and abstraction techniques to extract specifications and design from existing code are discussed. Major maintenance activities are presented including estimating maintenance costs, managing change and predicting maintainability with software quality metrics. Organizational issues relative to product maintenance are discussed. Principles of reverse engineering techniques are also presented. Prerequisites: Consent of Instructor.
SWE 670 Formal Methods and Models in Software Engineering (3-0-3)
In-depth advanced formal mechanisms for specifying, validating, and verifying software systems. Program verification. Formal specification via algebraic specifications and abstract model specifications, including initial specification and refinement toward implementation. Integration of formal methods with existing programming languages, and the application of formal methods to requirements analysis, testing, safety analysis, and object-oriented approaches. Model-driven architectures. Formal methods using the Object Constraint Language (OCL). Prerequisites: Consent of Instructor.
SWE 671 Global Software Engineering (3-0-3)
Topics include: Essentials of global software engineering, Software engineering outsourcing (Onshore outsourcing, Nearshore Outsourcing, Offshore out-sourcing), Outsourcing models (Simple Dyadic Outsourcing, Multi-Vendors Outsourcing, Co-Sourcing and Complex Outsourcing), Global software project management concepts, tools, and techniques, Managing virtual teams, Cross-cultural collaboration, Global project leadership, Measuring organizations readiness for global software development, Software quality in global software development (CMMI, ISO 9001:2000), Global software engineering challenges, Professional practices for global software engineering (Intellectual Property Rights, Group working, conflict and negotiations management, Presentations, writing and referencing) Prerequisites: Consent of Instructor.