Software Engineering (SWEG)

SWEG 3301 Software Engineering Methods    3 Credits

Attributes: MWID Magis Core: Writing in the Discipline

Corequisite: CPSC 3351L.

Prerequisite: CPSC 2232.

This course explores the requirements gathering, system analysis, and software design methods of software application following the software processes required for the production of high quality software. Techniques for creating documentation and using software development tools will be presented. Students will gain experience in software project management, requirements, analysis, and safety issues in software development, interpersonal skills for management and team membership, and the software engineering discernment of systems architecture. Graduate equivalent: SWEG 5301. Previously SW 0300.

SWEG 3302 Software Design Methods    3 Credits

Prerequisite: SWEG 3301.

This course is the continuation of SWEG 3301 with in-depth projects and further discussions of design and implementation topics. Through the use of case studies and project work that has the student gradually building a large design specification, students will achieve an understanding of how complex applications are designed and built. Graduate equivalent: SWEG 5302. Previously SW 0301.

SWEG 4312 Agile Software Engineering    3 Credits

Prerequisite: SWEG 3301.

In this course, students apply in-depth techniques and experience various roles incorporated into one of the main approaches to software development which is agile methodology. It uses detailed knowledge about each of the major traditional software engineering phases to explore a more iterative approach for development of faster and more adaptable software. Proficiency in programming is expected of the students entering this course. Graduate equivalent: SWEG 5312. Previously SW 0312.

SWEG 4320 Software Testing and Maintenance    3 Credits

Prerequisite: SWEG 3301.

This course will cover in-depth methods for software testing, reliability and maintenance of software. Students will learn the principles of software testing and how to apply software testing techniques to the development of quality software and how to deploy software systems, maintain, enhance, and reuse software systems. Graduate equivalent: SWEG 5320. Previously SW 0320.

SWEG 4321 Software Project Management    3 Credits

Prerequisite: SWEG 3301.

This course explores and practices fundamental project management skills and life cycles required for both the successful management and development of software. Quality management principles of Personal Software Process (PSP) and Team Software Process (TSP) are introduced and practiced. Students will learn how to develop a project plan, scope a project, identify project activities, create work breakdown structures, estimate and schedule resources, construct and analyze project network diagrams, finalize project schedule and cost based on resource activity, recruit team members, organize and manage a project team, monitor and control progress, understand critical path project management, and have knowledge of both agile and traditional project management methods. Graduate equivalent: SWEG 5321. Previously SW 0321.

SWEG 4505 Advanced Database Concepts    3 Credits

This course covers topics in database implementation designed to provide software engineers with a wide variety of server-side problem solving techniques. Topics include cursors, query and index optimization, advanced SQL programming, distributed databases, object-oriented databases, clustering, partitioning, and working with XML and other unstructured data. While Microsoft SQL Server is primarily used for demonstration, the topics covered are applicable to any database platform, and the different approaches of the major database vendors are frequently contrasted. The format consists of lecture and lab components. Cross-listed with SWEG 6505.

SWEG 4599 Ethical Hacking    3 Credits

This course covers current information security practices and countermeasures put in place to safeguard against security breaches. The course reviews internet infrastructures such as firewalls, IDS systems, and honey pots. Additional areas include risk analysis, computer-use policies, physical security, internet/intranet security, malware, firewall infrastructure, and current information security issues. Cross-listed with SWEG 6599.

SWEG 4900 Special Topics (Shell)    3 Credits

This course provides an in-depth study of selected topics in software engineering of particular interest to the students and instructor. The course is counted as a major elective/specialization course. The topics and prerequisites will be announced when this course is offered. Previously SW 0382.

SWEG 4990 Independent Study    1-3 Credits

This course is an individualized study under the supervision of the faculty member. The course emphasizes individual creativity. Undergraduate students work with a faculty mentor in studying and investigating topics of current interest in software engineering. Enrollment by permission only. Previously SW 0383.

SWEG 5301 Software Engineering Methods    3 Credits

This course explores the requirements gathering, system analysis, software design methods and prototyping of software application following the software processes required for the production of high quality software. Techniques for creating documentation and using software development tools will be presented. Students will gain experience in software project management; requirements, analysis, and design; procedural maturity; social, ethical, cultural, and safety issues in software development; interpersonal skills for management and team membership; and the software engineering discernment of systems architecture. Undergraduate equivalent: SWEG 3301. Previously SW 0400.

SWEG 5302 Software Design Methods    3 Credits

This course is designed to introduce fundamental concepts of object orientation techniques.Through the use of case studies and project work that has the student gradually building a large design specification, students will achieve an understanding of how complex applications are designed and built. Undergraduate equivalent: SWEG 3302. Previously SW 0401.

SWEG 5304 Web Development I    3 Credits

This course introduces the student to developing browser applications for use on the web. Students learn client side concepts including the display of static information. The course topics include designing and authoring web pages, usability, search engine optimization, markup languages, style sheets, the client side document object model, and making web pages dynamic on the client side. Undergraduate equivalent: CPSC 2304. Previously SW 0406.

SWEG 5305 Mobile Application Development    3 Credits

This project-oriented course examines the fundamental aspects of mobile computing, application architecture, and mobile application design and development. Students will learn application development on the Android platform. Students will complete a hands-on project building a prototype mobile application. Topics include user interface design and building, input and data handling, and network techniques and GPS and motion sensing. Students are expected to work on a project that produces a professional-quality mobile application. Projects will be deployed in real-world applications. Undergraduate equivalent: CPSC 4305. Previously SW 0416.

SWEG 5312 Agile Software Engineering    3 Credits

Prerequisite: SWEG 5301.

In this course, students apply in-depth techniques and experience various roles incorporated into one of the main approaches to software development which is agile methodology. It uses detailed knowledge about each of the major traditional software engineering phases to explore a more iterative approach for development of faster and more adaptable software. Proficiency in programming is expected of the students entering this course. Undergraduate equivalent: SWEG 4312. Previously SW 0412.

SWEG 5315 Computational Biology    3 Credits

This course is designed to benefit computational and experimental biologists to understand the principles of analyzing biological data, building models and testing hypotheses using computer science paradigms. Students will learn how to build computational tools that are used to analyze DNA content, identify protein binding patterns, compare sequences, and discover variation within genomes. Undergraduate equivalent: CPSC 4315. Previously SW 0415.

SWEG 5317 Computational Statistics for Biomedical Sciences    3 Credits

This course will provide a practical introduction to analysis of biological and biomedical data. Basic statistical and machine learning techniques will be covered, including descriptive statistics, linear regression, non-linear regression, classification/prediction, and biomedical data visualization. Emphasis will be on how to choose appropriate data analysis models and how to assess statistical significance. This course will benefit data scientists to apply data science techniques to analyze biomedical data or clinical data. In addition, this course is also designed to benefit computational and experimental biologists to understand the principles of analyzing biological data, building models and testing hypotheses using computer science paradigms. To visualize data and carry out data analysis, students will learn R or Python, and other programming languages for statistical computing and graphics. The class will be a combination of lecture and computer lab. Undergraduate equivalent: CPSC 4317. Previously SW 0417.

SWEG 5320 Software Testing and Maintenance    3 Credits

Prerequisite: SWEG 5301.

This course will cover in-depth methods for software testing, reliability and maintenance of software. Students will learn the principles of software testing and how to apply software testing techniques to the development of quality software and how to deploy software systems, maintain, enhance and reuse software systems. Undergraduate equivalent: SWEG 4320. Previously SW 0420.

SWEG 5321 Software Project Management    3 Credits

This course explores software project activities from conception to completion based on best practices. Topics include software systems engineering, personal/team software process management and control, and project planning and management. Through group and individual activities, students apply project management tools and techniques, and address typical problems that occur during the life cycle of the software project. Undergraduate equivalent: SWEG 4321. Previously SW 0421.

SWEG 5322 Visual Analytics    3 Credits

In this course, students investigate visual analytics tools and techniques used to synthesize information and derive insight from massive, dynamic, ambiguous, and often conflicting data and to communicate the findings effectively for decision-making. Extensive use of case studies based on real-world events will be used to illustrate course concepts. Students will apply visual analytics techniques toward a focused research problem in a real-world application or a domain of interest. Undergraduate equivalent: CPSC 4322. Previously SW 0422.

SWEG 5333 Introduction to Cybersecurity    3 Credits

In this course, students will be given an extensive overview of the various components of cybersecurity including software development, operating systems, databases, and networks. They will learn cybersecurity concepts, issues, and tools that are critical in solving problems in the computing security domain. The course will use lectures, reading assignments, and interactive lab exercises to re-enforce the concepts that are introduced. Undergraduate equivalent: CPSC 3333. Previously SW 0433.

SWEG 5335 Digital Forensics    3 Credits

In this course students will be given the basic notions and theory of digital forensics. For file systems and operating systems, the class covers investigative techniques and legal and technical considerations that the examiner should make. They will learn concepts, challenges, and tools in applying digital forensics examinations. The course includes, but not limited to, topics in the suggested curriculum of CDFE certification. The course will use lectures, reading assignments, and interactive lab exercises to reinforce the concepts that are introduced. Undergraduate equivalent: CPSC 4335.

SWEG 5349 Cloud Computing    3 Credits

This course will introduce the foundations of cloud computing, and familiarize students with the core concepts needed to build, deploy and manage applications in a cloud. Besides the theoretical underpinnings, emphasis will be put on practical experience of using cloud resources and services. Concepts like microservices and containers will be discussed in depth, as well as best practices for building successful cloud native applications and implications for development and operational processes. The course will be a combination of lectures and hands-on experience of a public cloud. Undergraduate equivalent: CPSC 3349. Previously SW 0449.

SWEG 5355 Artificial Intelligence    3 Credits

This course, which examines computational and theoretical accounts of human intelligence, includes knowledge representation, commonsense reasoning, planning, natural language understanding, machine learning, and deep learning. Undergraduate equivalent: CPSC 4355. Previously SW 0455.

SWEG 5357 Database Management Systems    3 Credits

This course focuses on the steps required to build and maintain relational database infrastructure for modern n-tiered applications. It covers logical and physical design, implementation of the database, the use of the database to meet the informational needs of a software system, and the installation, operation and maintenance of the software. Specific topics include database design, SQL, interacting with the DBMS, and backup and recovery of data security. Students perform a number of hands-on exercises using the Oracle Database Server running on the Microsoft Windows platform. Undergraduate equivalent: CPSC 4357. Previously SW 0402.

SWEG 5360 Machine Learning    3 Credits

This course will provide a practical introduction to machine learning applications such as face recognition, clinical diagnosis, speech recognition, natural language processing, or image classification. Topics such as regression, classification, neural networks, deep learning, and ensemble methods will be discussed. Emphasis will be on how to choose appropriate machine learning and deep learning models and how to evaluate their performance. The class will be a combination of lecture and computer lab. Undergraduate equivalent: CPSC 4360.

SWEG 5407 Java for Programmers    3 Credits

This course is a study of object oriented software component design. This course introduces object oriented programming and its use in problem solving with abstract data types such as lists, linked lists, stacks, queues, graphs, and trees. Previously SW 0407.

SWEG 5417 Security Management    3 Credits

This course will introduce the foundations of security program management and familiarize students with the core concepts needed to build, deploy, and manage security controls and policy to protect against today's cyber threats and regulations. Besides the theoretical underpinnings, emphasis will be put on practical experience of using security governance resources. Concepts like security policy/standards, governance, risk management, and program management will be key to ensuring effective security program management. The course will be a combination of lectures and hands-on collaborative working experience in building a security program.

SWEG 5420 Systems Security    3 Credits

This course will introduce the core concepts of detective and preventative security and the venues that threat agents use to compromise and breach systems. Students will learn to evaluate their environment for potential attacker entry points physical, virtual, and electronic, and come up with solutions to deploy to prevent intrusions. Emphasis will be placed on theoretical occurrences, but will also include practical experience of using prevention applications. Additionally, research on methodologies used by attackers will be required from outside resources (internet) which will be shared with the class as a whole. The course provides a current status of what is prevalent in the evolving cybersecurity domain.

SWEG 5427 Operating Systems and Programming    3 Credits

This course introduces the internal operations of modern operating systems. Students will learn how to program on non-Windows OS platforms. The topics cover a brief history of operating systems, the major components of modern operating systems, and the object-oriented methodology on UNIX-like platforms. Various UNIX tools will be used in the course and students will study examples using object-oriented programs as well as large system integration by object-oriented methodology. Previously SW 0427.

SWEG 5440 Vulnerability Management    3 Credits

This course will introduce the foundations of vulnerability program management and familiarize students with the core concepts needed to build, deploy, and manage vulnerability management controls that help identify risk and help prioritize remediation and determine risk to protect against today’s cyber threats. Besides the theoretical underpinnings, emphasis will be put on practical vulnerability management experience. Concepts like vulnerability discovery, reporting and assessing risk, threat modeling, and security testing are key to managing a vulnerability management program's risk posture. The course will be a combination of lectures and hands-on a collaborative working experience in building a vulnerability management program.

SWEG 5521 Information Visualization    3 Credits

Topics covered include graphics programming, information visualization general principles, visualization techniques for one-dimensional, two-dimensional, and N-dimensional information, graph visualization, information visualization lifecycle: representation, presentation, interaction, perception, and interpretation, as well as theories behind information visualization, and focus+context techniques. This course also includes the implementation of techniques presented in lecture. Students are encouraged to devise new techniques, implement them, and determine their effectiveness. Students will be required to complete in-depth assignments, read, summarize, and present recent journal papers from the information visualization literature, and prepare term papers with regard to an information visualization research topic. Students will also be required to specify, design, implement, and document a semester-long software project related to information visualization. Undergraduate equivalent: CPSC 4521. Previously SW 0521.

SWEG 5525 Human Computer Interaction    3 Credits

This course introduces students to the foundations of Human Computer Interaction and how it applies in software engineering and research settings. Students will learn how to design user interfaces based on the capabilities of computer technology and the needs of human factors. They will design user interfaces and learn how to implement a prototype from a list of informal requirements. It will also introduce students to issues related to human subject research as well as ethical implications of human computer interaction.

SWEG 5530 Introduction to Information Security    3 Credits

This course gives students a fundamental understanding of current social engineering methods in the information security arena. Deception and human behavior is exploited to gain valuable information, which is very relevant to today's growing security concerns. This course is another key class in the information security track within the software engineering program, and builds upon the weaknesses in the human factor. Areas of discussion will be methods, current trends, and most of all countermeasures. Instruction includes lectures and discussion assignments which involve analyzing current work places and social gatherings coupled with scenarios of exploitation. Previously SW 0530.

SWEG 5900 Special Topics (Shell)    3 Credits

This course provides an in-depth study of selected topics in software engineering of particular interest to the students and instructor. The course is counted as a major elective/specialization course. The topics and prerequisites will be announced when this course is offered. Previously SW 0482.

SWEG 5990 Independent Study    3 Credits

This course is an individualized study under the supervision of the faculty member. The course emphasizes individual creativity. Students work with a faculty mentor in studying and investigating topics of current interest in software engineering. Enrollment by permission only. Previously SW 0483.

SWEG 6404 Network Security    3 Credits

This course is intended for individuals who need an understanding of the client-server environment, with any emphasis on network security. The OSI Model, network concepts and network architecture are discussed. The components that make up a network, including cabling, wiring hubs, file servers, bridges, switches, routers, network interface cards, network operating systems, and network software and hardware configurations are discussed. Network architectural concepts, wide area networks, remote access, and segmentation are discussed. Operating systems will be discussed and demonstrated. Featured is the seven-layer OSI model, the foundation of today's communication protocols. Students will work with various security protocols and configure routers and switches with security methods. Previously SW 0404.

SWEG 6409 Advanced Programming in Java    3 Credits

This course covers advanced topic of Java programming. Topic covers multithreading, networking, nested references, design patterns, JDBC, persistence, I/O and advanced GUI such as swing. Data structure concepts such as linked list, tree and basic searching and sorting algorithms will be covered. Lab component included. Previously SW 0409.

SWEG 6410 Enterprise Java    3 Credits

Prerequisite: SWEG 6409.

Advanced server-side Java technologies. Coverage includes state-of-the-art explorations into server-side technologies such as JDBC, Google Web Toolkit, Enterprise JavaBeans (EJB), Android, XML, etc., as time permits. Lab component included. Previously SW 0410.

SWEG 6411 JavaScript Web Development    3 Credits

This course teaches software engineers how to produce robust, scalable, data driven JavaScript web applications. JavaScript is currently the most popular general-purpose programming language for web development. In this course students learn a wide range of JavaScript concepts. Topics covered in the course include web application architecture and organization; information management across distributed computing systems; connectivity to parallel and distributed database / web service systems; custom and dynamic web controls; web forms; and best practices. Towards the end of the course, students will engage in a major project that will require application of acquired course knowledge and skill. Students will also be able to articulate the complexities involved in creating and publishing an interactive JavaScript based web site. Programming will be part of this course. Finally, students will be able to implement best principles and practices for securing their web application.

SWEG 6448 Server Management    3 Credits

This is a course designed to provide the student with the tools necessary to manage Windows servers. The topics include user management, installation and configuration of web servers, mail servers, FTP servers, LDAP and backup, and other routine systems and network administration. Previously SW 0448.

SWEG 6461 Pattern Recognition    3 Credits

This course introduces the student to the techniques used and capabilities of modern pattern recognition systems with an emphasis on those that can learn and improve their performance as they are used. After a short review of some necessary mathematical concepts (probability, stochastic processes, and vector spaces), the student is introduced to the problem of representing real-world problems to a system. Selected real world applications are used to show examples of some valid representations (e.g. speech and handwriting) to provide insight and experience in the application of recognition systems. Several important recognition engines are then described and analyzed for their effectiveness in recognition/synthesis/learning systems. The use of additional knowledge bases dealing with the problem environment is then introduced to increase system performance and overall recognition system structures are discussed. Previously SW 0461.

SWEG 6499 Algorithms    3 Credits

This course explores the development and evaluation of algorithms. This class covers classic algorithms, algorithm analysis, searching and sorting algorithms, dynamic programming, heuristics, and graphic algorithms. Algorithm efficiency and performance is a focus as the student gains experiences through problems and programming projects. Previously SW 0499.

SWEG 6505 Advanced Database Concepts    3 Credits

This course covers topics in database implementation designed to provide software engineers with a wide variety of server-side problem solving techniques. Topics include cursors, query and index optimization, advanced SQL programming, distributed databases, object-oriented databases, clustering, partitioning, and working with XML and other unstructured data. While Microsoft SQL Server is primarily used for demonstration, the topics covered are applicable to any database platform, and the different approaches of the major database vendors are frequently contrasted. The format consists of lecture and lab components. Previously SW 0505.

SWEG 6508 Data Warehouse Systems    3 Credits

This course examines the tools, techniques, and processes used in the design and development of data warehouses. As such we will examine how to successfully gather structure, analyze, and understand the data to be stored in the data warehouse, discuss techniques for modeling the data in the data warehouse, discuss the ETL process, and describe techniques for presenting and analyzing the data in the warehouse. We will also discuss capacity planning and performance monitoring. Microsoft Analysis Services and Sybase ASIQ will be examined as approaches for implementing a data warehouse. Previously SW 0508.

SWEG 6512 Web Development II with ASP.NET    3 Credits

This course teaches site developers how to create robust, scalable, data-driven ASP.NET Web. Students learn how to create ASP.NET applications using a text editor and the command-line tools, as well as using Visual Studio. Topics include the .NET framework, web forms, validation controls, database connectivity, web services, component development, user controls, custom server controls, and best practices, etc. At the end of the course, students will be able to describe the issues involved in creating an enterprise web site, creating and publishing a web site, creating interactive content for a website, adding server scripting to a web page using ASP.NET, implementing security in a website, and reading and writing information to a database from ASP.NET. Previously SW 0512.

SWEG 6516 PHP and MySQL    3 Credits

Prerequisite: SWEG 5304.

This course is an introduction to the PHP programming language. Topics include installation and configuration with the Apache HTTP server, variables and data types, language syntax, control structures, functions, strategies and tools for handling input and generating output, error handling, sending email, manipulating dates and times, string manipulation and regular expressions, SQL and MySQL database access. The course also covers advanced topics such as MVC model-based web application development using framework and packages from the PHP Extension and Application Repository (PEAR). At the conclusion of the course, students will be able to design and implement scalable data-driven web applications. Previously SW 0516.

SWEG 6518 Data Mining and Business Intelligence    3 Credits

This course examines business intelligence concepts, methods and processes used to improve data-centric business decision support solutions with a particular focus on data mining techniques. Students will first examine the principles and practices of gathering and retrieving large volumes of data for analysis and synthesis. Next, students will examine analytical techniques for extracting information from large data sets. In particular, the course examines the following data mining techniques: classification, estimation, prediction, and clustering. During the course, students will also discuss knowledge management, how organizations manage and use the knowledge that they acquire, and presentation of data. Previously SW 0518.

SWEG 6530 Applications and Data Security    3 Credits

This course is structured around enterprise and web applications and the data security associated with these applications. It encompasses the encryption schemes of transmission to execution of code and complete flight of an execution. Common countermeasure and best business practices that help ensure a solid security understanding are the objectives of the course. Previously SW 0531.

SWEG 6596 Network Routing and Switching    3 Credits

This course presents concepts and develops skills needed in designing, implementing, and troubleshooting local and wide area networks. Students design and configure LAN and WAN using routers and switches, learn the components of wireless networks, and how to configure and troubleshoot a network and optimize its performance. The course also provides numerous lab opportunities to configure and troubleshoot networks with Cisco routers and switches. Previously SW 0596.

SWEG 6599 Ethical Hacking    3 Credits

This course covers current information security practices and countermeasures put in place to safeguard against security breaches. The course reviews internet infrastructures such as firewalls, IDS systems, and honey pots. Additional areas include risk analysis, computer-use policies, physical security, internet/intranet security, malware, firewall infrastructure, and current information security issues. Previously SW 0599.

SWEG 6961 Capstone Professional Project I    3 Credits

Prerequisite: MATH 5417 or SWEG 5301 or SWEG 5322 or SWEG 5530 or SWEG 6518.

In this two-semester capstone sequence, students form teams, perform a technical study, and design software systems based on either their customer's requirements, develop, test, and deploy software systems. The results of these projects provide a library of case studies, designs, and software development techniques, and project management skills that are of general interest to local information technology professionals. A capstone prospectus, approved by your advisor, must be submitted to and accepted by the director of the program prior to starting the capstone sequence. Previously SW 0550.

SWEG 6962 Capstone Professional Project II    3 Credits

Prerequisite: SWEG 6961.

In this two-semester capstone sequence, students form teams, perform a technical study, and design software systems based on either their customer's requirements, develop, test, and deploy software systems. The results of these projects provide a library of case studies, designs, and software development techniques, and project management skills that are of general interest to local information technology professionals. A capstone prospectus, approved by your advisor, must be submitted to and accepted by the director of the program prior to starting the capstone sequence. Previously SW 0551.

SWEG 6971 Thesis I    3 Credits

Prerequisites: SWEG 5302; at least 18 credits of software engineering courses.

In this two-semester sequence of thesis courses, students will work on an individual research project that they should formulate as a problem, solve under the guidance of a faculty member, and communicate the results. Work involves literature search, writing a proposal, analysis and/or implementation with critical thinking, and writing convincingly. The student must also submit a final paper for possible publication in a refereed journal appropriate to the topic. Previously SW 0560.

SWEG 6972 Thesis II    3 Credits

Prerequisite: SWEG 6971.

In this two-semester sequence of thesis courses, students will work on an individual research project that they should formulate as a problem, solve under the guidance of a faculty member, and communicate the results. Work involves literature search, writing a proposal, analysis and/or implementation with critical thinking, and writing convincingly. The student must also submit a final paper for possible publication in a refereed journal appropriate to the topic. Previously SW 0561.