Computer Science (CPSC)
CPSC 19600 - Topics in Computer Science (1-3)
This 100-level series of workshops will cover a range of topics in computer science and typically occur on the weekends.
Attributes: Workshop/Seminar
CPSC 20000 - Introduction to Computer Science (3)
This course explores the field of computer science. It provides an overview of computer architecture, networking, data organization, information security, and computational theory. Students will be introduced to fundamental concepts underlying all of computing, such as algorithms, abstractions, and how computers represent numbers, text, images, and sound. Students will learn the basics of programming and computational problem solving.
CPSC 20200 - Fundamentals of Artificial Intelligence (3)
Students will explore how artificial intelligence systems learn, reason, and interact with the world, while critically examining the ethical, legal, and social challenges posed by these technologies. Topics include machine learning, natural language processing, computer vision, and the future of AI, responsible AI and fairness. Through case studies, discussions, and collaborative projects, students will gain the tools to engage thoughtfully with AI in both academic and real-world contexts.
CPSC 21000 - Programming Fundamentals (3)
A study of computer organization, data types, expressions, logical structures, subprograms (subroutines and functions), recursion, structured data types (arrays and records), dynamically allocated data, array-based lists, linked lists, stacks, queues, graphs, trees, sorting, and searching.
Prerequisite: CPSC 20000 or CPSC 31500 or DATA 20000 or ECEN 10000
CPSC 22000 - Introduction to Linux (3)
Students are introduced to the Linux operating system, including installation, configuration, and administration and prepare for LPIC-1 Certification. Students will gain proficiency using the command line interface and become familiar with file permissions, boot, partitioning, package managers, shells, editors, regular expressions, and virtualization.
CPSC 23000 - .NET Programming (3)
This course familiarizes students with using C# and the .NET Framework to create a variety of applications, including console-based,
desktop GUI, web apps, and RESTful APIs. Students will develop these various kinds of software using object-oriented design and
development best practices.
Prerequisite: CPSC 21000 or DATA 23500
CPSC 24500 - Object-Oriented Programming (3)
Students will learn to design and develop software using the object-oriented approach. Topics include encapsulation, inheritance, polymorphism, abstraction, and patterns. Students will learn how to use an SDK to develop desktop and web applications that provide data processing and visualization services. Students will also learn how to manage threads and networking connections in software they write.
Prerequisite: CPSC 21000
CPSC 24700 - Web and Distributed Programming (3)
Languages and technologies for programming and leveraging web-based computer services securely. Languages include PHP, Perl, JavaScript, Java, Ruby, CSS, and HTML5. Technologies include relational databases, web services, Hadoop, and cloud computing platforms. This course teaches students how to develop useful applications using a variety of distributed data and programming models.
Prerequisite: CPSC 21000
CPSC 25000 - File Systems and Digital Forensics (3)
A study of concepts related to the storage, retrieval, backup, and recovery of data in file systems. Topics include the organization and processing of sequential access files, direct access files, and indexed sequential access files; RAID and disk spanning; the organization of data on a variety of storage devices; the disk boot process; identifying hidden data on a disk's Host Protected Area; analyzing various kinds of partitions; analyzing FAT, NTFS, Ext2, Ext3, UFS1, and UFS2 file systems; recovering data from deleted files and hidden file locations; and using open-source forensics tools to identify drive contents.
Prerequisite: CPSC 20000 or DATA 20000 or ECEN 10000
CPSC 28100 - Introduction to Networks (3)
In this course, students will be introduced to current and emerging internetworking technologies. Topics include Open Systems Interconnect (OSI) reference model, binary numbers, hexadecimal numbers, address classes, Internet Protocol (IP) addressing and subnetting, protocols, standards, and cabling techniques.
Prerequisite: CPSC 20000 or ECEN 10000 or DATA 20000
Attributes: Experiential Learning Gen Ed
CPSC 28200 - Switching, Routing, and Wireless Essentials (3)
Students will be introduced to network architecture and operations of routers and switches in a networked environment. Students will learn to configure and analyze routers and switches. They will contrast and implement routing and switching operations and perform basic network configuration and troubleshooting, identify and mitigate LAN security threats, and configure and secure a basic WLAN.
Prerequisite: CPSC 28100
CPSC 29700 - Special Topic: Computer Science (3)
This course focuses on a specific topic in computer science that typically falls outside the established curriculum. This course enables the student to encounter content that engages an emerging question or subject in computer science. Topics will vary in accordance with areas of intense current interest.
CPSC 30000 - Computer Organization (3)
This study of computer organization covers the central processor unit, memory unit and I/0 unit, number systems, character codes and I/O programming. Programming assignments provide practice working with assembly language techniques, including looping, addressing modes, arrays, subroutines, and macros. Microsoft assembler is discussed and used for programming throughout the course.
Prerequisite: CPSC 21000
CPSC 31500 - Scientific Computing (3)
An introduction to developing computer applications for collecting, analyzing, and visualizing scientific and mathematical data. Students will learn how to use mathematical computing environments like Matlab, Octave, and R as well as to write journal-style papers in LaTeX.
Prerequisite: MATH 20400 or MATH 20600 or MATH 20900
CPSC 32100 - Cybersecurity Essentials (3)
Fundamentals of computer and network security and information assurance. Topics include access control, authentication, trusted computing, software security and vulnerabilities, operating system security models, how various kinds of malware function, network security devices and architecture, computer hacking techniques and countermeasures, intrusion detection, cryptography, wireless security, and network security protocols
Prerequisite: CPSC 28100 and (CPSC 20000 or DATA 20000 or ECEN 10000)
CPSC 33000 - Database Systems (3)
This study of database management systems includes database models, database design, physical implementation and writing code to access data in a database. Topics covered in this course include file storage structure, relational database management systems, entity-relationship diagrams, SQL, database security, concurrency control, distributed and cloud storage solutions and coding database-supported applications.
Prerequisite: CPSC 20000 or DATA 20000 or ECEN 10000
CPSC 34000 - Algorithms and Data Structures (3)
This course is the study of the design and analysis of computer algorithms including the data structures used in these algorithms. Topics include design techniques, such as divide-and-conquer, dynamic programming, the greedy method and backtracking, sorting, searching, graph computations, pattern matching and NP-complete problems.
Prerequisite: CPSC 21000 and MATH 21000
CPSC 35000 - Operating Systems (3)
A survey of concepts, facilities, and characteristics of contemporary computer operating systems that includes topics such as memory management, concurrent process control, multi-threading, security, virtualization, and parallelization.
Prerequisite: CPSC 21000
CPSC 35500 - Cloud Computing and Virtualization (3)
An introduction to the concepts and techniques of implementing cloud computing through the use of virtualization and distributed data processing and storage. Topics include operating system virtualization, distributed network storage, distributed computing, cloud models (IAAS, PAAS, and SAAS), and cloud security.
Prerequisite: CPSC 35000
CPSC 36000 - Programming Tools and Techniques (3)
This course covers industry-standard software development tools and team practices used to build commercial software. Topics include development environments, debugging, source code control, shell scripting, release management, containers, automated test development, issue tracking, linting, tracking race conditions and deadlocks, reverse engineering, and profiling.
Prerequisite: CPSC 24500 or CPSC 23000 or CPSC 24700
CPSC 38200 - Network Security (3)
Provides the knowledge and hands-on skills required to install, troubleshoot, and monitor Cisco security network devices. Students who complete this course will be prepared to sit for the Cisco Certified Networking Associate (CCNA) Security Certification exam which is a stepping stone for job roles such as network security specialist and network security administrator. CCNA security certification is a prerequisite for becoming a Cisco Certified Security Professional (CCSP).
Prerequisite: CPSC 28200
CPSC 40100 - Introduction to Transformer Models (3)
This course provides a comprehensive introduction to transformer-based foundation models which underpin modern artificial intelligence. Students will explore the core transformer mechanics, including self-attention, and the processes of pre-training and fine-tuning. The course has a strong practical emphasis, providing hands-on experience with industry-standard libraries and frameworks. Students will learn to deploy, customize, and optimize models using techniques like quantization to improve efficiency. This includes working with tools like the Hugging Face ecosystem, Ollama, and other open-source platforms to build applications for text generation, classification, and summarization.
Prerequisite: DATA 36000
CPSC 40200 - Emerging Trends in Artificial Intelligence (3)
This course explores the latest developments, innovations, and research directions in artificial intelligence (AI). Students will engage with recent academic literature, industry case studies, and hands-on projects to critically evaluate and apply emerging AI technologies.
Prerequisite: CPSC 47000 or DATA 36000
CPSC 41000 - Video Game Programming 1 (3)
Video game design is an inherently interdisciplinary and technically challenging activity that requires proficiency in a broad range of topics and skills in the computer science curriculum. Video game developers must be excellent programmers, have a firm grasp of how to render and animate shapes and scenes, understand mathematical modeling of physical systems, be able to design and implement artificial intelligence systems, understand enough about hardware to optimize code for a variety of platforms, be able to plan and document complicated team projects, and appreciate the human factors issues involved in game design. And, of course, game developers must be creative and have an eye and ear for what makes for impactful game content. This course will cover each of these issues in an applied manner as the class builds basic but professional-looking video games from scratch. Students will work both individually and in teams and will be expected to document their work.
Prerequisite: CPSC 24500 or CPSC 23000 or CPSC 24700
CPSC 41500 - Video Game Programming 2 (3)
This course will expand on CPSC 41000 Students will learn how to write 2D games for a variety of platforms and 3D games for PCs and popular consoles They willuse APIs and modeling tools for developing games in 3D and games for portable and other non-PC platforms In addition, they will simulate physical systems and intelligent thought processes using vector math, mechanics and artificial intelligence Work will be done in teams.
Prerequisite: CPSC 41000
CPSC 41700 - Mobile Application Development (3)
There are many widely used computing platforms. Writing applications that run on all of them is challenging. This course covers technologies and frameworks that simplify and improve cross-platform application development. Topics include cross-platform frameworks, programming languages, development environments, code management tools, and data sources. Work will be done both individually and in teams and will culminate in a term project: a data-driven application that can run of a variety of devices.
Prerequisite: CPSC 24500 or CPSC 23000 or CPSC 24700
CPSC 42100 - Advanced Cybersecurity (3)
This second course in computer security explores techniques for performing encryption and authentication of data, operating system and application security, malware operation and analysis, code-level exploits, reverse engineering, security design principles, techniques for reducing complexity, and formal security models.
Prerequisite: CPSC 42000 and CPSC 21000
CPSC 42200 - Wireless Security (3)
This course provides students with practical exposure to setup and operate a wireless network. Common threats to wireless networks will be explained, network attackers will be demonstrated and steps to control attacks will be discussed. Students will be able to detect and prevent wireless attacks by gaining an understanding of various security technologies and common attacks and vulnerabilities.
Prerequisite: INSY 33500 or CPSC 42000
CPSC 42300 - Ethical Hacking (3)
An introduction to some of the most popular and useful tools cyber security professionals use to ensure the security of computers, networks, and mobile devices. Examples from several different categories of security applications are discussed and practiced: password crackers, traffic sniffers, vulnerability scanners, web scanners, wireless security scanners, exploitation, packet crafters, fuzzers, and computer and mobile forensics. Students will learn how to use these tools and, just as importantly, how they work from a Computer Science perspective, so that they can improve them and code their own.
Prerequisite: CPSC 20000 or DATA 20000 or ECEN 10000
CPSC 42500 - Encryption and Authentication Systems (3)
This is a one-semester course focusing on cryptography and network security Three areas of emphasis include: symmetric key encryption, public key encryption, and network security practices The mathematical concepts underlying encryption algorithms will also be presented.
Prerequisite: MATH 21000 and (CPSC 20000 or DATA 20000 or ECEN 10000)
CPSC 42600 - Mobile Device Forensics (3)
This course presents hands-on techniques for recovering evidence for mobile phones such as iPhones, and windows and android phones. Mobile devices such as iPads, Tablet PCs and iPods will also be covered in this course. Students will learn how to recover passwords, deleted voicemails, photos, and text messages and data from various apps on mobile devices.
Prerequisite: CPSC 20000 or DATA 20000 or ECEN 10000
CPSC 42700 - Programming for Penetration Testing (3)
The best way to defeat a hacker is to code like one. That means being able to build, extend, and manipulate scripts and applications that compromise systems. This course presents a number of techniques for exploiting vulnerabilities in a variety of computer systems. Students will build port scanners, construct botnets, write exploits, create their own forensic analysis and network traffic analysis tools, develop web reconnaissance applications, implement scripts for examining and exploiting a wireless network, and craft malware that evade antivirus tools.
Prerequisite: CPSC 21000
CPSC 42800 - Programming for Digital Forensics (3)
While many tools exist for examining digital systems, the frenetic pace at which the cyber threat evolves means that hackers are constantly discovering new ways to hide their tracks. Digital forensics specialists who lack a programmer's understanding of how data are stored and hidden and how tools are written to examine these systems will forever be limited to using the tools others create. This course prepares digital forensics experts who can write their own digital forensics tools.
Prerequisite: CPSC 21000
CPSC 43000 - Computer Graphics Programming (3)
This course involves the study of both 2D and 3D graphical programming techniques for applications in real-time simulations such as video games and virtual reality. Concepts covered include graphical transformations for scaling, rotation, and translation. Data structures for vector objects are discussed and implemented in code. In addition, students learn to apply compound geometric transformations to vector lists. The core concepts of transformations, window to viewport mapping, and projection are discussed and implemented in code.
Prerequisite: CPSC 21000
CPSC 44000 - Software Engineering (3)
Methods, strategies, and tools for implementing software systems, particularly as part of a development team. Topics include the software development life cycle, Unified Modeling Language, software testing techniques, software security, open-source development, requirements gathering and documentation, maintenance, and basic software project management.
Prerequisite: CPSC 24500 or CPSC 23000 or CPSC 24700
CPSC 44500 - Application Frameworks (3)
This course covers modern programming languages and development frameworks. Topics include JAMStack (React), service-oriented architectures, microsevices architecture, cloud-native architectures, containers, serverless functions, map-reduce, distributed authentication, internationalization, and functional programming.
Prerequisite: CPSC 33000 and (CPSC 23000 or CPSC 24500 or CPSC 24700)
CPSC 44800 - Introduction to Malware Analysis and Reverse Engineering (3)
This course will introduce students to malware analysis and malware reverse engineering. It provides an overview of the various types of malware, how they are used, and the role malware analysis and reverse engineering plays in information security. Students will reverse engineer and analyze malicious code to gain a better understanding of how it works and more importantly, how to defend against it. This course is geared towards computer science and cybersecurity students with some knowledge of computer programming. Prior cyber security or malware analysis experience is not required.
CPSC 46000 - Programming Languages (3)
This course provides a study of the structures of selected programming languages related to ALGOL 60 and LISP. Emphasis is placed on semantics rather than syntax of the programming languages. Backus-Naur Form, recursion, parameter transmitting techniques, and an introduction to formal language theory is covered. Functional programming is also discussed. A term project is required.
Prerequisite: CPSC 24500 or CPSC 23000 or CPSC 24700
CPSC 46500 - Theory of Algorithms and Computation (3)
This course examines undecidability, computational complexity, and models of computations. Topics include languages and automata, Turing machines, reductions, time and space complexity classes, and completeness.
Prerequisite: CPSC 34000
CPSC 47000 - Artificial Intelligence (3)
Introduction to the field of artificial intelligence. This course covers the study of intelligent agent design and rational decision making. Topics include: goal-driven agents, search techniques, optimization, constraint satisfaction problems, logic, knowledge-based agents, probability and utility theory, Bayesian networks, and the basics of machine learning.
Prerequisite: CPSC 21000 and (MATH 31000 or MATH 21000)
CPSC 48000 - Client-Server Computing (3)
This course reviews computer networking protocols, including TCP/IP, and then builds upon that to describe how modern networks use such protocols to implement client-server systems. The course discusses servers, the services they provide, and the clients that request and utilize those services. Students learn to identify the range of services provided by modern networks, the fundamentals of configuring those services, and how to implement a variety of clients that access those services.
Prerequisite: CPSC 21000
CPSC 48500 - Enterprise Networking, Security and Automation (3)
In this course, students will explore in depth network architecture and infrastructure and considerations related to designing, securing operating and troubleshooting enterprise networks. Topics include wide area network (WAN) technologies and quality of service (QoS) mechanisms used for secure remote access along with the introduction of software-defined networking, virtualization, and automation concepts that support the digitalization of networks.
Prerequisite: CPSC 28100
CPSC 49000 - Compiler Construction (3)
Students a analyze formal language theory and finite state automaton, finite automaton-based lexical analysis, Wirth-Weber relations and simple precedence grammar, recursive descent parsing, symbol table organization, semantic routine and semantic models, and code generation techniques.
Prerequisite: CPSC 46000
CPSC 49200 - Software Systems Capstone Project (3)
In this course students will participate, as part of a team, in the design, implementation and testing of a medium-to-large software project. Additionally, this course will cover topics in professional ethics, intellectual properties, privacy, and professional communication.
Prerequisite: CPSC 44000 or CPSC 36000 or CPSC 44500
Attributes: Advanced Writing, Experiential Learning Gen Ed
CPSC 49300 - Computer Infrastructure Capstone Project (3)
In this course students will participate, as part of a team, in the design, implementation and testing of a medium-to-large networked computer system. Additionally, this course will cover topics in professional ethics, intellectual properties, privacy and professional communication.
Prerequisite: CPSC 28100 or CPSC 42000 or CPSC 48000
Attributes: Advanced Writing, Experiential Learning Gen Ed
CPSC 49400 - CS+X Capstone (3)
This course serves as the capstone experience for students enrolled in a CS+X program. Students will pursue a research or development project using the tools and concepts of computer Science to solve or explore problems in the student's other field of interest. Depending on the scope of the project, it may involve working as a team. Each section of the course will relate to a particular CS+X program and will be team-taught by one faculty member in Computer Science and one faculty member from the partnering discipline. The student will pursue a project with the guidance of both faculty members. The student will present their work as a scholarly paper and as a presentation to faculty and peers.
CPSC 49500 - Artificial Intelligence Capstone Project (3)
In this course students will participate, as part of a team, in the design and implementation of a project that incorporates artificial intelligence in the solution. Students will document their work in a scholarly report and present their methodology and results to peers.
Prerequisite: CPSC 40200 or CPSC 47000 or DATA 36000
CPSC 49600 - Topics in Computer Science (1-3)
This series of 400-level seminars focuses on various topics related to computer science;these seminars are usually offered on weekends.
CPSC 49700 - Research in Computer Science (3)
This course allows senior computer science students to engage in a scholarly research project in the field of computer science. Under the close guidance of their faculty advisor, students will select a research problem in a particular computer science area. They will survey the current literature in the chosen area and formulate a specific research question. Students will then attempt to address the research question using techniques from Computer Science, document their work, and present the results and conclusions. Students will write a well-researched final paper and give a presentation of their project and findings.
Prerequisite: CPSC 34000 (may be taken concurrently)
CPSC 49800 - Computer Science Internship (1-3)
Students acquire practical related experience through placement in selected settings. Students submit an internship proposal in advance for approval, maintain a daily task log and submit a five-page written summary report at the conclusion of the internship. A minimum of 210 clock hours and an interview with the on-site supervisor are required.
Program Restrictions: Must be enrolled in the following Program: Computer Science .
Class Restrictions: Must be enrolled in one of the following Classes: Junior or Senior.
Attributes: Experiential Learning Gen Ed
CPSC 49900 - Independent Study in Computer Science (1-3)
This course is designed to meet the needs of Computer Science majors wishing to study an advanced topic not found in the curriculum.
Class Restrictions: Must be enrolled in one of the following Classes: Junior or Senior.
