SFE - Software Engineering Course Descriptions
Introduction to the methods and tools for software development. Topics include the personal software process, requirements engineering, software design, testing methods, project management, and other management techniques.
This course covers the Linux operating system, the BASH command line, and its related applications. The goal of this course is to build familiarity with the Linux command line environment, Linux system administration, and scripting proficiency. Students will get hands-on technical experience with building BASH, Python and other scripting techniques to solve problems and automate tasks.
Provide an understanding of fundamental software architecture concepts, standards, drivers, styles, and design specification tenets including design patterns. Develop an understanding of UML method notations and tools to document architectures, and use of tradeoff methodologies (e.g., QAW, ATAM) to evaluate an architecture. Present tenets of technical and ethical debt. Throughout the course students will implement a core set of software design patterns using language of choice.
CSC 352
Introductory course addressing all aspects of Requirements Management, including elicitation, analysis, specification, validation, and management of user requirements; conflict resolution; process, notations, methods and tools, requirements standards, operational concepts documents (OCD) and system requirements specifications (SRS). Addresses the connection of requirements to project management methods.
This course will focus on both the technologies and practices of cybersecurity on the Internet networking environment, and key cybersecurity methods and practices for securing complex computing and networking systems. Included in the course are: how networks are designed and constructed, security practices given internet exposed systems, software, and networks, cloud technologies, root cause analysis methods, and simple cybersecurity attacks and defenses. This course has lab and classroom components that introduces students to key technologies for the upper level cybersecurity and software engineering coursework.
Introduces students to the fundamentals of network and data communication technologies. Course topics include telecommunication media and equipment; data transmission and protocols; corporate, local, and wide area networks; intranets and internets; and network software and management. An introduction to electromagnetic concepts and principles is included to provide a technical foundation for these concepts (Cross listed with CSC 256).
Studies the design and the implementation querying of a database. The focus is on the development of effective SQL queries and the use of relational databases. Other database types and technologies will be discussed.
This course aims to cultivate virtuous leadership in a technological era. It investigates the growing need for an ethical sophistication in our engagement with the technological world. The course will specifically examine ethical cases surrounding the ethical development and use of technical systems, their impact on persons and society, and the personal role and response of those with responsibility for the development and deployment of technology. This includes an examination of codes of ethics, artificial intelligence systems, and current issues in fields of engineering and computing. In the light of Church Teaching, it aims to provide students with the knowledge and tools to defend Christian values in the face of technological and social change.
Covers the fundamental algorithms used in both private key and public key cryptography. Algorithms covered will include DES, AES, Diffie-Hellman, and RSA. Traditional encryption methods such as Vigenere ciphers and their cryptanalysis will be briefly described. The number theory needed to understand primality testing and RSA encryption will be developed in detail. Several programming projects aimed at implementing some of the material will be given throughout the semester.
This course focuses on the mathematical foundations found at the heart of computer-based machine learning and artificial intelligence techniques. Topics include linear regression, network connectivity and neural networks, input methods including edge detection and filters, genetic algorithms, and Bayesian networks.
Students will learn fundamental methodology for how to analyze cybersecurity, test cybersecurity, and protect information systems. This course will cover concepts in computer security including operating system dynamics and application vulnerability analysis and defense. Students will gain experience securing enterprise systems, including use of Red Team methods, in both Windows and Linux environments. Has lab and classroom components.
Students will learn the fundamental methodology for how to analyze and secure enterprise networks. This course will cover the basic concepts in both wireless and wired network security including network security controls, protocol analysis, and applied cryptography. Students will conduct network vulnerability analysis and defense. This course builds upon topics covered in the Advanced Network Management course.
This course exposes students to the challenges of insecure and vulnerable software. Students will be exposed to basic programming constructs as well as the specific principles of object-oriented programming languages. The course also surveys the types of threats and vulnerabilities inherent in software, and use of AI and automated analysis to find vulnerabilities. . An overview of secure coding concepts and techniques will be provided to students to provide exposure as to how software can be made more secure and resilient through the application of proper software engineering practices. This course builds upon topics covered in the Software Engineering courses.
This course is a project-based introduction to software development. It addresses the methods of code quality, and their interplay with software planning, process, and development. With a focus on agile development, it covers inspections of requirements, design and code, as well as testing, the handling of change requests, software evolution, code comprehension, and change management.
Hands-on lab introducing software inspection techniques, agile planning, tools, test case design and automation in support of software and process quality.
This class gives the student a fundamental background in computer architecture and operating systems. Through this course a student will learn how to use this information to develop more secure and efficient programs (Cross listed with CSC 401).
This course focuses on the software development principles that emphasize collaboration, communication, and automation among all stakeholders, including IT operations, testers, developers, customers, and security personnel at the inception of a project. Materials leverage reference architectures and use cases for architectural design principles on continuous integration (CI), continuous delivery/deployment (CD), and continuous authorization (CA) tools and practices, including technical laboratory exercises and practical scenarios. Includes introduction to DevOps and DevSecOps.
Provides the student with the opportunity to pursue a research project. Students will conduct research in consultation with Software Engineering faculty. The project and the amount of credit must be approved by the faculty member.
Initiation of capstone project in software engineering. Students will work on a team project to develop a secure, effective, and efficient capability of value to a customer through the application of software engineering theory, processes, tools, technologies and methodologies. Students are expected to pursue their project in a way that shows proficiency in the software engineering tools, processes and techniques, and demonstrate ethical professional conduct.
Notes
Culmination of capstone project in software engineering. Students will work on a team project to develop a secure, effective, and efficient capability of value to a customer through the application of software engineering theory, processes, tools, technologies and methodologies. The students are expected to complete their project in a way that shows proficiency in the software engineering processes and techniques, and demonstrate ethical professional conduct.
Software testing is a fundamental skill set applicable to all aspects of the software development lifecycle. This course provides an examination and application of testing practices, test case design, unit testing frameworks, and test automation in support of software system verification.
This course aims to familiarize students with the forensic acquisition and analysis processes and to apply forensic principles with many tools of the trade. Upon completion of the course, a student should feel confident in participating in a digital forensic investigation and be able to turn digital artifacts into admissible evidence. This course focuses on the forensic process (planning, acquisition, analysis, reporting) as it relates to computer system and networks. Class periods will consist of lecture and exercises.
This course provides a systematic introduction to the field of digital forensics. The course aims to familiarize students with the forensic process and to apply forensic principles with many tools of the trade. Upon completion of the course, a student should feel confident in participating in a digital forensic investigation. This course focuses on the forensic process (planning, acquisition, analysis, reporting) as it relates to host system and network forensics. Class periods will consist of lecture and exercises.