Undergraduate Courses

Software Engineering

Introduction to software engineering and software processes. Construction techniques and principals. Concepts of Programming Languages: Syntax and semantics. Analysis and Design Modes. Ethical and professional responsibilities. Prerequisites: ICS 102

Pre-Requisites: ICS102 Or ICS101 Or ICS103

Introduction to software engineering discipline, software process, requirements analysis and design models. Understanding of ethical and professional issues of software engineering discipline

Pre-Requisites: ICS108

Study of software engineering process models, requirements engineering process, and system models. Methods, tools, notations, and verification and validation techniques for the analysis and specification of software requirements. Introduction to the principles of project management. Students participate in a group project on software requirements.

Requirements engineering process. Methods, tools and techniques for eliciting , organizing and documenting software requirements . Analysis and validation techniques, including need, goal, and use case analysis. Requirements documentation standards. Traceability. Requirements management. Handling requirements changes. Students participate in a group project on software requirements. Prerequisites: ICS 201 and SWE 205

Pre-Requisites: ICS201 And SWE205

Requirements engineering process. Methods, tools and techniques for eliciting, organizing and documenting software requirements. Analysis and validation techniques, including need, goal, and use case analysis. Requirements documentation standards. Traceability. Requirements management. Handling requirements changes. Capturing usability requirements and developing UI prototypes based on requirements. Students participate in a group project on software requirements.

Pre-Requisites: SWE206

Introduction to games; Game programming principles; Game development engines: PyGame and Unity3D; Game data structures; Game intelligence; Simulation; Graphics and animation; Collision detection; Strategy games; Action games; Games research; Application of games to other domains.

Pre-Requisites: SWE206

History and overview of software engineering. Software processes. Software project management. Software requirements and specification. Software design. Software testing and validation. Software metrics. Software quality assurance. Software evolution. Using APIs. Software tools and environments. Prerequisite: ICS 202 Note: SWE 311 cannot be taken by SWE students.

Study of both theoretical and practical issues in human-computer interfaces. Principles of user interface design, development, and programming. Topics include user psychology and cognitive science, adaptive user interfaces, icon and window design, media design, command language design, user guidance systems, and collaborative working.

Study of design concepts and notations. Architecture, construction and design patterns. Designing for different qualities criteria. Design evolution processes and activities.

Pre-Requisites: SWE206

Mathematical foundations for formal methods. Formal languages and techniques for specification and design, including specifying syntax using grammars and finite state machines. Analysis and verification of specifications and designs. Use of assertions and proofs. Automated program and design transformation.

Pre-Requisites: ICS202 And ICS253

Study of issues related to the development of concurrent software systems. Topics include the basics of synchronization and coordination techniques, concurrent programming languages and constructs and the specification, design, verification,and validation of concurrent programs. Students are required to solve concurrent programming problems and to check their solutions by using verification, testing,and debugging tools.

Practical ways to design high quality tests during all phases of software development. Test Planning. Test design. Test coverage criteria. Test automation. Concept of static analysis. Reviews. Walkthroughs. Inspections. Students participate in a group project on software.

Pre-Requisites: SWE216

Principles of Internet work architecture and communication protocols. Open systems and interoperability. Wide area connectivity through interconnection of autonomous networks. Case studies of particular protocols from network layer and above. Selected examples of networked client-server applications such as e-mail, news, file-transfer, HTTP. Socket programming. Programming Project(s).

Fundamentals of web and mobile applications and how they impact people’s lives; Building responsive front-end web and mobile apps; Back-end programming of dynamic and data-driven websites; Development frameworks for web and mobile apps; Security issues of web applications; Practical applications to real-world problems.

Introduction to project management concepts, managing time, cost, change, risk, quality, communication and people; development and management standards and managing software development projects.

A summer period of 8 weeks spent as a trainee in industry, business, or government agencies for the purpose of familiarizing the student with the real job world and enabling him to apply and relate his academic knowledge to a real work environment. The student is required to participate in software engineering related activities and use his time to get acquainted with the software engineering related functions and resources used by his employing organization. Besides progress reports, the student is required to submit a final report and do a presentation on his experience and the knowledge he gained during his summer training program. Prerequisites: SWE 363, ENGL 214 and Department Approval

Pre-Requisites: SWE363 And ENGL214

This is the first part of a two-semester senior-year capstone project. Student teams employ knowledge gained from courses throughout the program such as development of requirements, design, implementation, and quality assurance to develop a software solution to a real-world problem from conception to completion. In this part, students develop project plan and software requirements specification. Next, students’ teams can either develop complete design document or follow agile like methodology to develop design document and implementation for 30% of system features.

Pre-Requisites: SWE316 And SWE387

This is the second part of a two-semester senior-year capstone project. Student teams employ knowledge gained from courses throughout the program to develop a software solution to a real-world problem from conception to completion. In this part, students review and refine documents prepared in SWE 411; finalize design, complete implementation of the application, test their code, and evaluate their final product.

Pre-Requisites: SWE326 And SWE411

Concept of software quality, software metrics, & Total Quality Management. SQA planning & implementation. Validation & verification. Reviews, walkthroughs & inspections. Automatic and manual techniques for generating and validating test data. Static vs. dynamic analysis, functional testing, inspections, and reliability assessment. Students participate in a group project on software validation and verification.

Study the concepts, principles, methods, and best practices in software architecture. Different architectural styles, patterns and product lines are presented and compared. Methods to analyze, evaluate and document software architectures are also discussed. Students participate in a group project on software architecture design.

Pre-Requisites: SWE316

This is the first part of a two-semester senior-year capstone project. Student teams employ knowledge gained from courses throughout the program such as development of requirements, design, implementation, and quality assurance to develop a software solution to a real-world problem from conception to completion. In this part students develop project plan, software requirement specification and software design document. Prerequisites: SWE 326 and SWE 387

Pre-Requisites: SWE316 And SWE387

This is the second part of a two-semester senior-year capstone project. Student teams employ knowledge gained from courses throughout the program such as development of requirements, design, implementation, and quality assurance to develop a software solution to a real-world problem from conception to completion. In this part, students implement the design they produced in SWE 417, test their code, and evaluate their final product. Prerequisites: SWE 417

Study of security policies, models, and mechanisms for secrecy, integrity, and availability. Topics include mechanisms for mandatory and discretionary controls; data models, concepts, and mechanisms for database security; basic cryptography and its applications; security in computer networks and distributed systems; and control and prevention of viruses and other rogue programs.

Design, implement and evaluate software system interfaces with focus on usability, interaction paradigms and human computer activities. The lifecycle of an interactive human computer interface is studied from both engineering and end-user perspectives.

Pre-Requisites: SWE206

Why multimedia systems? Fonts and hypertext. Digital audio. Synthesized audio & MIDI. Audio on the Internet & audio streaming. Speech recognition. Computer graphics and images. Image formats and standards. Color models in images. Image compression. Principles of animation. Digital video. Video compression. Video on the Internet & video streaming. Videoconferencing. Multimedia software tools. Issues in multimedia applications design. Multimedia programming techniques.

A depth study of object-oriented design patterns. How design patterns solve design problems? How to select a design pattern? How to use a design pattern? Detailed study of creational patterns, structural patterns, and behavioral patterns. Case studies.

Pre-Requisites: SWE316

Overview of engineering foundations of software, basics of measurement theory, empirical experimentation in software engineering, software metrics and measuring software quality.

Pre-Requisites: SWE316 And STAT319

Introduction to information security management principles, management of threats to and vulnerabilities of information security, risk management, and to apply the knowledge of people and technical security controls. Prerequisite: Senior Standing

Frameworks for web-application development. Component Architectures. Multi-tier Applications. End-to-end functional building blocks and their use in adaptive and non-adaptive applications, including multimedia: coding, compression, security, and directory services. Database connectivity. Integration of media services into applications.

Security in requirements engineering; Secure designs; Risk analysis; The SQUARE Process Model; Threat modeling; Defensive coding; Software protection; Fuzzing; Static analysis and security assessment; Memory leaks, buffer and heap overflow attacks, injection attacks.

Design and implementation of computer models of learning and adaptation in autonomous intelligent agents. E-commerce models and architectures. IP telephony and video conferencing. Designing applications to support user mobility. Emulation of virtual application specific network architectures. Trends and new directions in Internet technologies, protocols, architectures, and applications.

Cloud computing and service models. Software development for the Cloud. Software architectures: monoliths, service-oriented, microservice, and serverless. Trade-offs between architectural patterns and Cloud services. Development lifecycle for Cloud-native SaaS applications. Design patterns for SaaS applications, Cloud service level agreements, and Cloud infrastructures. Software engineering practices and tools for the Cloud: Agile. CI/CD, DevOps, ArchOps, DataOps, MLOps, and DevSecOps. Business processes to implement cloud solutions, Cloud migration processes, and issues, Case studies.

Pre-Requisites: COE344 Or ICS343

Comprehensive introduction to building mobile applications for devices based on Android and iOS operating systems, including use of standard integrated development environment: Android Studio and Xcode, as well as testing and debugging on devices and emulators/simulators. Topics cover programming language for iOS programming, and mobile platform APIs for user interface, graphics, networking, data, and web services

Pre-Requisites: ICS108 Or ICS201

Overview of software metrics, basics of measurement theory, goal-based framework for software measurement, empirical investigation in software engineering. Measuring internal product attributes, measuring external product attributes, measuring cost and effort, measuring software reliability, software test metrics, and object-oriented metrics. Prerequisites: SWE 316 and STAT 319

Software process models. Software process analysis. Life cycle process models and standards. Process implementation at various levels like organization, project, team, or individual. Measurement and analysis of software process. Process improvements.

Pre-Requisites: SWE387

In-depth study of a selected special topic relevant to software engineering Prerequisites: Consent of the Instructor

In-depth study of a selected special topic relevant to software engineering Prerequisites: Consent of the Instructor

The course introduces students to research. Explains the differences between different publications channels like conferences, journals, books, and book chapters. Introduces students to metrics like impact factor and H-index. Teaches how to search and locate relevant literature on a given research topic. Introduces students to research methodology, experimentation design, and ways to conduct experiments and report the results. It also teaches students on how to prepare a research article. Prerequisites: Consent of the Instructor