Computer Science
COSC 1301 (3-3-0) Introduction to Computers
An introduction to the science of computing, with emphasis on the history and terminology of computer construction, operation, and data processing. Ethical standards for computing are stressed. Homework assignments develop skills in computer operation, Word processing, Spreadsheets, Databases, and Presentation software, and can be completed on either the student's personal computer or an on-campus laboratory computer.
Requisites: None.
Offered: Periodically, Online.
COSC 1302 (3-3-0) Introduction to Computer Science and Programming
An introduction to the discipline of computer science. Topics include algorithms, data representation and storage, hardware and software organization, networking, the Internet, computer security, ethical and social issues, and fundamental problem solving and programming skills. This course also includes an introduction to programming concepts and skills with a modern programming language such as Python.
Requisites: None.
Offered: Spring.
COSC 1405 (4-3-2) Foundations of Computer Science I
Computer programming in a high-level, block-structured language. Basic concepts: the role of algorithms in the problem-solving process; basic data types and variables; memory usage; control structure (sequential, selection, repetition; functions and parameter passing); recursion; console and file input/output. Lab fee.
Requisites: None.
Offered: Fall.
COSC 1408 (4-3-2) Foundations of Computer Science II
Introduction to object-oriented programming. Basic concepts: abstract data types; encapsulation; classes; inheritance; polymorphism; dynamic function binding; strings, stacks, queues, lists, and trees; event handling in modern languages; introduction to modern APIs. Lab fee.
Requisites: COSC 1405.
Offered: Spring.
COSC 2306 (3-3-0) Data Structures and Introduction to Algorithms
Design and analysis of algorithms with an emphasis on data structures. Basic concepts include identifying differences among best, average, and worst-case behaviors; algorithmic strategies such as brute-force and divide-and-conquer; fundamental computing algorithms, including searching, sorting, and recursive algorithms; and data structures such as lists, trees, hash tables, and graphs.
Requisites: COSC 2403.
Offered: Spring.
COSC 2403 (4-3-2) Object-Oriented Analysis and Design
Provides practical skills in the latest object-oriented analysis and design methods using the Unified Modeling Language (UML) and Java programming language. Basic concepts: Use case diagrams; object models; packages and subsystems; classes, object behavior, and attributes; encapsulation and interfaces; inheritance and composition; polymorphism and collections. Lab fee.
Requisites: COSC 1408.
Offered: Fall.
COSC 3301 (3-3-0) Database Management Systems
Introduction to the design and implementation of database systems. Topics include data modeling, database normalization, SQL database definition/manipulation language, stored procedures, transaction management, database applications, and database security.
Requisites: COSC 2306.
Offered: Fall.
COSC 3305 (3-3-0) Computer Organization and Architecture
Basic structure of digital computer hardware and hardware-software interface. Computer organization, including simple digital logic building blocks, such as logic gates, flip-flops, registers, logic expressions, and computer arithmetic. Fundamentals of computer design, such as main memory organization, memory hierarchy, instruction set architectures, assembly languages, multiprocessing and multicore, and pipelining. Basics of input and output, including interrupts, buses, DMA (Direct Memory Access), and storage technologies.
Requisites: COSC 1408.
Offered: Fall.
COSC 3306 (3-3-0) Networks and Telecommunication
Design and analysis of computer networks. Basic concepts: background and architecture of the Internet; five-layer and seven-layer reference models; TCIP/IP; packet switching; transport protocols; flow control; congestion control; local area networks; routing; network application architectures such as client/server.
Requisites: COSC 1408.
Offered: Spring.
COSC 3310 (3-3-0) Introduction to Machine Learning
The Introduction to Machine Learning course offers an overview of the fundamental principles, techniques, and applications of machine learning with an emphasis on applying Machine Learning techniques. This course introduces different types of machine learning: Supervised, Un-Supervised, and Reinforcement Learning, and the algorithms and models for each type of machine learning including Regression, Classification, Clustering, Naïve Bays, Association Rule, Thompson Sampling, Upper Confidence Bound, and Deep Learning.
Requisites: COSC 2306.
Offered: Periodically
COSC 3312 (3-3-0) Information Assurance
This course provides the basic concepts of information assurance. The topics covered include Goals of Cybersecurity, Compliance with Regulations, Threats and Adversaries, Vulnerabilities and Risks, Basic Risk Assessment, Security Life-Cycle, Intrusion Detection and Prevention Systems, Cryptography, Data Security, Security Models, Access Control Models.
Requisites: COSC 3301, 3306.
Offered: Spring.
COSC 3403 (4-3-2) Software Security
This course provides students with the knowledge of the importance of software security to the development of secure systems, the characteristics of secure programs, and the ability to implement programs that are free from vulnerabilities, the methods and techniques that lead to secure software, and understanding of the tools and methods for analyzing software. Topics include Characteristics of Secure Software, Secure Development Life-Cycle Phases, Threat Modeling, Robust and Defensive Programming, Code Analysis Techniques and Tools, and Test Methodologies. Lab fee.
Requisites: COSC 2306.
Offered: Spring.
COSC 3410 (4-3-2) Website Development and Programming
Hands-on experience in the design and development of professional Web content. Basic concepts: Website design considerations (user profiles, user platforms, design concepts) HTML, DHTML and XML fundamentals; Cascading Style Sheets (CSS); JavaScript (programming model, animation and graphics, browser events, cookies, security, controlling Java). Lab fee.
Requisites: COSC 2403.
Offered: Periodically.
COSC 4308 (3-0-6) Senior Project in Computer Science (S-L)
Detailed design, implementation, and testing of a system or component under the guidance of a faculty member. Specific technical requirements will be set up by the individual faculty member teaching/supervising the course. All students must submit a written report and make an oral presentation at the culmination of the project. This course contains a field-based service-learning component.
Requisites: Completion of COSC core courses and senior standing.
Offered: Spring, Fall.
COSC 4316 (3-3-0) Ethical Hacking and System Defense
The course combines an ethical hacking methodology with the hands-on application of security tools to better help students secure systems. Students are introduced to common countermeasures that effectively reduce and/or mitigate attacks. Topics include Flaw Hypothesis Methodology, Legal Restrictions, and Ethical Guidelines, Social Engineering, Vulnerability Scanning, Enumeration, Exploitation Methods, Post Exploitation.
Requisites: COSC 3306, COSC 3312.
Offered: Spring.
COSC 4317 (3-3-0) Digital Forensics
This course provides students with the skills to apply forensics techniques throughout an investigation life cycle with a focus on complying with legal requirements. Topics include Techniques and Processes of Digital Investigation, modern Forensic Tools, E-Discovery, Root Cause Analysis, Using Virtual Machines for Analysis, File Systems, and File System Forensics,
Cryptanalysis, Mobile Device Analysis, and Computer Forensics Law.
Requisites: COSC 3312.
Offered: Spring.
COSC 4351 (3-3-0) Quantum Information Processing
(PHYS 4351, MSITM 5351)
This course lays the foundations for understanding and utilizing quantum computing, as well as writing quantum computing programs. Topics covered include the history of quantum computing; current state of the field; potential future applications; quantum phenomena; the symbolic and mathematical representation of quantum circuits; the mathematics needed to understand quantum computing, circuit identities, writing and running programs on computers; and basic quantum algorithms. This course will assume a knowledge of algebra and trigonometry is is possessed by the student, as well as basic programming skills. A knowledge of linear algebra and complex numbers will deepen understanding.
Requisites: None.
Offered: Fall, Spring, Summer.
COSC 4352 (2-2-0) Quantum Computing Algorithms
(PHYS 4352, MSITM 5352)
This course focuses on understanding and implementing the major algorithms of quantum computing, including analysis of their use cases, as well as error correction. In this course, students will get hands-on experience coding quantum algorithms. Topics covered include a review of phase kickback and basic algorithms, quantum teleportation, superdense coding, quantum Fourier transform, quantum phase estimation, Shor's algorithm, Grover's algorithm, error correction, and other advanced topics. Graduate students will study in greater depth complexity of algorithms and their use cases.
Requisites: COSC 4351 or PHYS 4351.
Offered: Fall, Spring.
COSC 4401 (4-3-2) Operating Systems
An introduction to fundamental concepts in operating systems, their design, implementation, and usage. Basic concepts: process management - concurrency and scheduling; main memory management; virtual memory; input/output and device drivers; file systems; secondary storage management, security and protection; real-time systems. Lab fee.
Requisites: COSC 2403.
Offered: Spring, Periodically.
COSC 4402 (4-3-2) Software Engineering (S-L)
Introduction to software life cycle models, software requirements Engineering, formal specification, and validation. Basic concepts: software metrics (product and process metrics); introduction to software standards and documentation; software quality assurance; configuration management and control Project planning and risk management; software estimation; software maintenance and re-engineering. This course contains a field-based service-learning component. Lab fee.
Requisites: COSC 2306.
Offered: Fall.
COSC 4403 (4-3-2) Mobile Cloud Computing (AGP)
Introduction to the mobile and cloud computing technologies. Topics include mobile device apps development, basic concepts and service models of cloud computing technologies including Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS), and examples of cloud computing platforms such as Google Cloud Platform and Amazon Web Service. Lab fee. (This course is AGP-eligible.)
Requisites: COSC 3306.
Offered: Fall.
COSC 4409 (4-3-2) Big Data Technologies
This course explores data mining methodologies and algorithms for big data analytics including introduction of Big Data, Association Rules, Classification, Clustering, and PageRank. The primary tools introduced and used in this course include MongoDB, NoSQL, R, Python for data sciences, and particularly Hadoop platform and its associated components and technologies including MapReduce, HDFS, PIG, and Hive. Lab fee.
Requisites: COSC 3301, Python recommended.
Offered: Spring, Periodically.
COSC 4415 (4-3-2) Network Security and Cryptography
This course equips students with techniques that can be taken to protect a network and communication assets from cyber threats. This course also provides students with the ability to understand Cryptography and how cryptography is used for network security. The topics covered include Network Security Concept, Link-Layer Security, Network-Layer Security, Transport-Layer Security, Web Security, Electronic Mail Security, Wireless Network Security, IP Security, Firewall, Intrusion Detection & Prevention Systems, Symmetric Cryptography, Public Key Cryptography and Infrastructure, Cryptanalysis, and common Cryptographic Protocols. Lab fee.
Requisites: COSC 3306.
Offered: Spring.