CIST 3110- Information Technology Ethics
The student will:- Be able to determine the impact of the privacy laws on information security policies.
- Understand the issues related to intellectual freedom, intellectual property, and copyright law as they relate to electronic publishing.
- Be able to determine and identify ethical procedures and behaviors in the organization related to information security.
- Be able to identify issues of professional conduct in information technology case studies.
- Be able to apply University standards of ethical conduct in preparing assignments for all coursework.
- Learn the areas most impacted by ethical decisions by professionals in the computing field and will gain skills in making such decisions.
- Identify key ethical concerns of information technology specialists.
- Apply theories of ethics to case situations in the context of organizational use of information technology.
- Appreciate how rapid changes in technology might affect ethical issues and changing norms of behavior.
- Understand the issues related to privacy and confidentiality as they relate to information technology.
- Understand the ethical issues associated with gathering, storing and accessing genetic information in databases.
- Recognize the differences in ethical codes of conduct in different cultures and countries.
- Understand the ethical issues that arise from findings in genomic and bioinformatics analyses.
- The student will study and apply the following: Business Rules, Firewalls, Cryptography, Privacy Laws, Copyright Ownership Privacy, Publicity and Defamation, Trademarks and Unfair Competition in Cyberspace, Intellectual Property, Contrast of Law vs. Ethics.
CSCI 2030- Mathematical Foundations of CS
This course seeks to foster the understanding and use of discrete structures that are backbone of computer science with an emphasis on the applications for students majoring in computer science. On successful completion of this course, a student will be:- Proficient in the logical concepts of propositional and aspects of first-order logic including quantification and proof methods based on these logical foundations.
- Able to comprehend and construct proofs used to reason about the working and correctness of several computing artifacts including data types, algorithms, and programs.
- Proficient in the use of recursive methods for constructing finite and infinite sets, functions, and data types and understand the close relationship between inductive reasoning and recursive specifications.
- Able to comprehend and formulate recursive sets and functions, and data types and reason about the behavior of these recursive structures using mathematical and structural induction methods.
- Proficient in basic counting principles including inclusion-exclusion, pigeon-hole principle, binomial theorem, and recurrences.
- Able to use counting techniques to quantitatively estimate the space and the time requirements of data, and algorithms designed to solve problems in several computer applications.
- Students will also learn the theory of relations and be able to reason about relations specified using computer databases.
CSCI 3320- Data Structures
Students who complete this course successfully, will be able to:
- Familiarize students with different data structures such as lists, stacks, queues, trees, heaps, hash-tables and file structures which are used to store runtime data of a computer program.
- Discuss different data manipulation strategies including different algorithms for sorting and searching items within various data structures.
- Focus on different program solving problems including greedy programming, dynamic programming, and backtracking.
- Encourage students to develop algorithms and solutions to different data structures related problems.
- To stress the importance of efficiency in terms of time and storage space for the computer programs developed by the students.
- Apply techniques learned in class to develop efficient programs using different data structures.
- Conduct evaluations (usability test) of the programs that they themselves have written
- Produce user documentation for all of the programs
CSCI 3550- Communication Networks
Students who complete this course successfully, will be able to:
- Demonstrate understanding of traditional and modern network technologies.
- Demonstrate understanding of details of common network protocols.
- Demonstrate understanding of Internet implementation details.
- Explain how the Internet works and how to design/implement Internet applications.
- Compare performance of different network protocols.
CSCI 3660- Theory of Computation
Students who complete this course successfully, will be able to:
- Demonstrate understanding of finite automata.
- Demonstrate understanding of regular languages and regular grammar.
- Explain the properties of regular languages.
- Demonstrate understanding of context-free languages.
- Demonstrate understanding of Chomsky Normal Form.
- Demonstrate understanding of pushdown automata.
- Explain the properties of context-free languages.
- Demonstrate understanding of Turing Machines.
- Demonstrate understanding of the hierarchy of formal languages and automata.
- Explain the limits of algorithmic computation.
CSCI 3710- Introduction to Digital Design and Computer Organization
Students who complete this course successfully, will be able to:
- Demonstrate understanding of gate designs at switch level.
- Demonstrate understanding of Boolean algebra, minimization, and combinational circuit design.
- Demonstrate understanding of primitive memory elements, analysis and design of sequential circuits.
- Demonstrate understanding of number representations.
- Demonstrate understanding of computer organization at the register level.
- Demonstrate understanding of the design of arithmetic, logic and shift units, both signed and unsigned.
- Demonstrate understanding of the register files and bus design.
- Demonstrate understanding of memory design.
- Demonstrate understanding of assembly instruction formats for different architectures.
- Demonstrate how to convert high-level constructs to assembly constructs.
CSCI 4350- Computer Architecture
Students who complete this course successfully, will be able to:- Students will have the competence of understanding and identifying various challenges and problems in computer architecture design.
- Students will have the ability to read computer architecture materials and topics (e.g. on Internet) and grasp the major architectural jargon/terms, design and tradeoffs.
- Students will have the ability to build upon the topics covered and practice them in their personal life and career (e.g. purchasing/assembling computer components).
CSCI 4500 - Operating Systems
Students who complete this course successfully, will be able to:- Explain the objectives and functions of modern operating systems.
- Analyze the tradeoffs inherent in operating system design.
- Describe the functions of a contemporary operating system with respect to convenience, efficiency, and the ability to evolve.
- Discuss networked, client-server, distributed operating systems and how they differ from single user operating systems.
- Identify potential threats to operating systems and the security features design to guard against them.
- Explain the concept of a logical layer.
- Explain the benefits of building abstract layers in hierarchical fashion.
- Describe the value of APIs and middleware.
- Describe how computing resources are used by application software and managed by system software.
- Contrast kernel and user mode in an operating system.
- Discuss the advantages and disadvantages of using interrupt processing.
- Explain the use of a device list and driver I/O queue.
- Describe the need for concurrency within the framework of an operating system.
- Demonstrate the potential run-time problems arising from the concurrent operation of many separate tasks.
- Summarize the range of mechanisms that can be employed at the operating system level to realize concurrent systems and describe the benefits of each.
- Explain the different states that a task may pass through and the data structures needed to support the management of many tasks.
- Summarize techniques for achieving synchronization in an operating system (e.g., describe how to implement a semaphore using OS primitives).
- Describe reasons for using interrupts, dispatching, and context switching to support concurrency in an operating system.
- Create state and transition diagrams for simple problem domains.
- Compare and contrast the common algorithms used for both preemptive and non-preemptive scheduling of tasks in operating systems, such as priority, performance comparison, and fair-share schemes.
- Describe relationships between scheduling algorithms and application domains.
- Discuss the types of processor scheduling such as short-term, medium-term, long-term, and I/O.
- Describe the difference between processes and threads.
- Compare and contrast static and dynamic approaches to real-time scheduling.
- Discuss the need for preemption and deadline scheduling.
- Identify ways that the logic embodied in scheduling algorithms are applicable to other domains, such as disk I/O, network scheduling, project scheduling, and problems beyond computing.
- Explain memory hierarchy and cost-performance trade-offs.
- Summarize the principles of virtual memory as applied to caching and paging.
- Evaluate the trade-offs in terms of memory size (main memory, cache memory, auxiliary memory) and processor speed.
- Defend the different ways of allocating memory to tasks, citing the relative merits of each.
- Describe the reason for and use of cache memory.
- Discuss the concept of thrashing, both in terms of the reasons it occurs and the techniques used to recognize and manage the problem.
- Articulate the need for protection and security in an OS.
- Summarize the features and limitations of an operating system used to provide protection and security.
- Explain the mechanisms available in an OS to control access to resources.
- Explain the concept of virtual memory and how it is realized in hardware and software.
- Differentiate emulation and isolation.
- Evaluate virtualization trade-offs.
- Discuss hypervisors and the need for them in conjunction with different types of hypervisors.
- Explain the key difference between serial and parallel devices and identify the conditions in which each is appropriate.
- Identify the relationship between the physical hardware and the virtual devices maintained by the operating system.
- Explain buffering and describe strategies for implementing it.
- Differentiate the mechanisms used in interfacing a range of devices (including hand-held devices, networks, multimedia) to a computer and explain the implications of these for the design of an operating system.
- Describe the advantages and disadvantages of direct memory access and discuss the circumstances in which its use is warranted.
- Identify the requirements for failure recovery.
- Implement a simple device driver for a range of possible devices.
- Describe the choices to be made in designing file systems.
- Compare and contrast different approaches to file organization, recognizing the strengths and weaknesses of each.
- Summarize how hardware developments have led to changes in the priorities for the design and the management of file systems.
- Summarize the use of journaling and how log-structured file systems enhance fault tolerance.
- Describe what makes a system a real-time system.
- Explain the presence of and describe the characteristics of latency in real-time systems.
- Summarize special concerns that real-time systems present, including risk, and how these concerns are addressed.
- Explain the relevance of the terms fault tolerance, reliability, and availability.
- Outline the range of methods for implementing fault tolerance in an operating system.
- Explain how an operating system can continue functioning after a fault occurs.
- Describe the performance measurements used to determine how a system performs.
- Explain the main evaluation models used to evaluate a system.
CYBR 2250- Low Level Programming
Students who complete this course successfully, will be able to:- students will understand the C programming language with sufficient detail to write useful programs, for example involving sockets, and to understand the underlying machine code that the compiler generates.
- students will learn to write in assembly language with sufficient experience to author a stand-alone program, equivalent to one of the assignments that the students would normally implement in C.
- students will understand at an introductory level, the relationship between the low-level programming of code in C versus the low-level programming in assembly language. They will be able to write assembly language code, which can call functions in C, and programs in C that can call functions in assembly language.
CYBR 3570 - Cryptography
Students who complete this course successfully, will be able to:- Define Cryptography and Cryptanalysis
- Understand classical encryption and decryption techniques
- Identify historically weak encipherment algorithms
- Understand the relationship between cryptography and security
- Define a Public Key Infrastructure, and understand the challenges in the successful operation of one
- Understand the fundamental challenges of modern crypto-systems
- Discuss and describe applications of cryptographic technology
- Understand the role of computers in modern cryptography
- Understand how to integrate cryptography into a coherent security policy.
CYBR 3600 - Information Technology Ethics
Students who complete this course successfully, will be able to:- Demonstrate an understanding of the difference between enterprise, information technology and information security governance.
- Communicate the development of an information security governance program.
- Develop a security policy and procedures needs analysis.
- Distinguish the differences between policy, procedures, standards, guidelines, and baselines.
- Conduct a risk analysis of current policies and procedures.
- Ability to develop a security policy and procedures management plan.
- Develop a security awareness plan for their organization.
- Identify security awareness needs and develop a security awareness campaign.
CYBR 4360/8366 - Foundations of Cybersecurity
Students who complete this course successfully, will be able to:- Know and comprehend the principle concepts of cybersecurity.
- Apply methods and tools associated with cybersecurity to engineer dependable software systems.
- Analyze case studies related to cybersecurity.
- Synthesize meaningful class presentations and discussions.
- Criticize current cybersecurity approaches.
CYBR 4380 - Digital Forensics
Students who complete this course successfully, will be able to:- Identify when a digital forensics investigation is required and define the appropriate actions that can be taken.
- Learn proper procedures for preserving, collecting, analyzing and reporting digital evidence related to a forensic investigation.
- Utilize industry-used tools to acquire forensically sound forensic images of RAM and hard disk drives.
- Identify forensic artifacts left behind by attacks/crimes such as applications logs, filesystem data and metadata, operating system logs, and memory contents.
- Utilize industry-used tools to analyze and recover digital evidence from various operating systems and types of media and use this information to develop a timeline of user/malicious actor activities.
CYBR 4440/8446 - Industrial Control System Security
Students who complete this course successfully, will be able to:- Describe and explain the terminology, operations, protocols and functions of control systems and how they relate to critical infrastructure and information technology.
- Associate the relevant sectors and applications with the types of industrial control systems in those sectors.
- Analyze potential vulnerabilities in industrial control systems and create software to perform network attacks on the systems in order to verify these vulnerabilities.
- Analyze existing example industrial control equipment/network diagrams and evaluate them relative to current security standards.
- Graduate students will work in teams of two and conduct a semester research project, appraising or critiquing an aspect of industrial control cybersecurity using the available lab environment.
CYBR 4450/8456 - Host-Based Vulnerability Discovery
Students who complete this course successfully, will be able to:- Students will understand the implementation of programming languages such as C and C++ on x86 hardware.
- Students will understand the vulnerabilities associated with operating system calls and invalid parameters utilized as input.
- Students will understand "hooking" and other techniques used to subvert the operating system and gain control of the machine.
- Students will understand how to obtain rights to execute code which would normally violate the permissions of the system.
- Students will gain knowledge of how adversaries may attempt to avoid detection.
- Students will investigate and discuss the ethical issues relative to the techniques learned in this class.
CYBR 4460/8466 - Network-Based Vulnerability Discovery
Students who complete this course successfully, will be able to:- Students will understand how network protocols are implemented and what existing known flaws exist in them.
- Students will learn how to examine web sites or web servers for known weaknesses, how to exploit these weaknesses, and how to defend against these weaknesses.
- Students will learn what mechanisms exist for detecting anomalous behavior in web servers (e.g. intrusion detection and prevention).
- Students will gain an understanding of web server logs and implement software which searches distributed logs for patterns indicative of intrusion attempts (data mining).
- Students will perform analysis on web services security modules and configuration choices and implement test programs to verify their functionality.
- Students will understand how to distribute data in the cloud so as to retain appropriate security and reliability requirements (cloud computing).
- Students will investigate and discuss the ethical issues relative to the techniques learned in this class (all). Vulnerabilities, security, and its significance in the unwanted disclosure or modification of information and the relevant social issues are typically discussed.
CYBR 8420 - Software Assurance
Students who complete this course successfully, will be able to:- Know and comprehend the principle concepts of software assurance.
- Apply methods and tools associated with software assurance to engineer dependable software systems.
- Analyze case studies related to software assurance to synthesize meaningful class presentations and discussions.
- Criticize current software assurance approaches.
CYBR 9460 - Security of Embedded Systems
Students who complete this course successfully, will be able to:- Programmable Logic - including
1. Students will understand and be able to write/describe hardware elements using a hardware description language.
2. Students will be able to simulate their HDL using Field Programmable Gate Array (FPGA) software simulators.
3. Students will understand how the development process results in a custom embedded circuit.
4. Students will understand possible mitigations against side channel and other attacks.
- Microcontrollers - including
1. Students will develop insight into special Instruction Set Architectures, I/O devices, timers, interrupt controllers, PWMs, and other typical embedded peripherals
2.Students will learn and understand the use of programming environments for microcontrollers, including add-ons such as real-time operating systems or protocol stacks
- Embedded Systems - General - including
1. Students will develop an understanding of common operating systems and programming environments in the embedded world
2. Students will understand cybersecurity issues particular to embedded systems; for example, PCI compliance for point-of-sale devices, or privacy concerns for embedded devices used in medical environments
3. The class will research specific areas in embedded systems such as voting systems, vending, closed debit systems, location services, navigation, etc.
PSCI 4260 - International Law
Students who complete this course successfully, will be able to:- Examine the sources of international law, including treaties, customary international law, juscogens, general principles of law, judicial decisions and teachings;
- Analyze the fundamentals of treaty formation, treaty interpretation, treaty enforcement, and the consequences of treaty breach, as well as the process of formation of customary international law;
- Investigate state obligations under applicable treaty law and customary law;
- Evaluate international dispute settlement mechanisms, including courts and tribunals, arbitration and negotiation;
- Critically assess the purpose, function, capacity and politics of some of the principal international and regional organizations, including the United Nations, EU and WTO;
- Compare and contrast different substantive areas, including international human rights law, law of armed conflict, international environmental law, and international criminal law.