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 19603 - Wksp: Introduction to 3D Printing (1)
This seminar will introduce you to computer-controlled manufacturing using 3D printing. You will learn how to design basic components and then optimize them for quality production on a commercial 3D printer. You will also learn about how computer-controlled manufacturing is transforming modern industry.
Attributes: Workshop/Seminar
CPSC 19604 - Wksp: Building a Data Center (1)
This series of 10000-level seminars focuses on various topics related to computer science and is usually offered on weekends.
Attributes: Workshop/Seminar
CPSC 19605 - Wksp: Raspberry Pi (1)
This series of 10000-level seminars focuses on various topics related to computer science and is usually offered on weekends.
Attributes: Workshop/Seminar
CPSC 19606 - Wksp: Starting and Managing a Software Company (1)
This series of 10000-level seminars focuses on various topics related to computer science and is usually offered on weekends.
Attributes: Workshop/Seminar
CPSC 19607 - Wksp: iOS Development (1)
This series of 10000-level seminars focuses on various topics related to computer science and is usually offered on weekends.
Attributes: Workshop/Seminar
CPSC 19608 - Wksp: GenAI Essentials (1)
This series of 10000-level seminars focuses on various topics related to computer science and is usually offered on weekends.
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 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 introduces computer programming using the Visual BASIC programming language with object-oriented programming designs and principles. The Microsoft .NET framework is used to develop applications. Emphasis is placed on event-driven programming methods, including creating and manipulating objects, classes, and using object-oriented tools such as the class debugger. An introduction to databases and ASP .NET applications is also discussed.
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 28000 - Packet Tracer (1)
This is an introductory course to Cisco Packet Tracer, a powerful network simulation, visualization, collaboration, and assessment tool that allows students to experiment with network designs and behavior. As an integral part of the Networking Academy learning experience, Packet Tracer provides simulation, visualization, authoring, assessment, and collaboration capabilities and facilitates the teaching and learning of complex technology concepts. Packet Tracer supplements physical networking equipment by allowing students to create virtual networks with an almost unlimited number of devices; encouraging practice, discovery, and troubleshooting.
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
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 28300 - Scaling Networks (3)
This is the third course in the CCNA Routing and Switching curriculum, teaching students how to configure routers and switches for advanced functionality. By the end of this course, students will be able to configure and troubleshoot routers and switches, and resolve common issues with OSPF, EIGRP, and STP.
Prerequisite: CPSC 28200
CPSC 28400 - Connecting Networks (3)
This is the fourth and final course in the CCNA Routing and Switching curriculum covering the WAN technologies and networks services employed by converged applications in a complex network. Students will understand and describe the operations of virtual private network (VPN).
By the end of this course, students will be able to implement VPN, configure and troubleshoot network devices and resolve common issues with data link protocols.
Prerequisite: CPSC 28300
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 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 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)
Programming for mobile devices requires knowledge of in a wide range of computer science topics including human-computer interaction, memory management, processing power, and communications technologies. This course explores video game development focusing on issues specific to mobile devices Topics that will be addressed include user interfacing, hardware devices, telephony, GPS systems, notifications, and application frameworks for mobile devices. Students will develop using both simulators and actual mobile devices. Work will be done individually and in teams.
Prerequisite: CPSC 24500 or CPSC 23000 or CPSC 24700
CPSC 42000 - 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 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 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.