78 courses with the subject CSC, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.
CSC 110Fundamentals in Computer Science3
Introduction to the fundamentals of computer science. Topics include surveys of the following sub-areas of computer science: artificial intelligence, hardware/operatin programming languages/software, ethics/social issues, history, electronic communica problem solving, and programming. The course includes laboratory projects (writing programs). Gen Ed Attribute: Digital Literacy Pathway, Science Distributive Distance education offering may be available. 2026-2027 CATALOG - UNDERGRADUATE DEPARTMENT OF COMPUTER SCIENCE
Introduction to the fundamentals of business computing. Topics include surveys of the following sub-areas of computer science: hardware/operating systems, programming languages/software, ethics/social issues, problem solving, and advanced MS Excel and Scratch programming for business use. The course includes laboratory projects in MS Excel and Scratch. Gen Ed Attribute: Digital Literacy Pathway, Science Distributive
The art and science of computing are introduced using an object-oriented programming language, such as Python. Topics include looping, branching, arrays, and program development. Gen Ed Attribute: Science Distributive
CSC 117AI for All: Fundamentals of Intelligent Systems3
This course introduces students from all disciplines to the fundamentals of artificial intelligence (AI) by examining how ideas from natural intelligent systems such as the human brain and biological perception inspire the design of AI systems. Students will explore core AI concepts including pattern recognition, image processing, language models, and decision- making, with an emphasis on practical understanding rather than technical depth. They will engage in interactive, no-code labs using modern AI tools, including large language models and prompt engineering, to learn how these systems work and how to interact with them effectively. The course emphasizes observation, data collection, analysis, and the role of theory and falsifiability in understanding AI and its potential integration into other scientific disciplines. The course also examines the ethical implications of AI, including fairness, transparency, and societal impact. Gen Ed Attribute: Science Distributive
An introduction to programming using Python. Topics covered include basic program design; program flow including decisions, functions, and loops; command line and file input/output; variables and types; and string and sequence processing. Gen Ed Attribute: Science Distributive Distance education offering may be available.
This course introduces the design and implementation of classes and objects, arrays using primitive types and Strings, array of objects, sorting and searching through arrays, recursion, aggregate objects and an introduction to graphical User Interfaces (GUIs). CSC 142 Prerequisite: Successful completion of CSC 141. Distance education offering may be available.
Topics include regular and context free grammars and languages, computational logic, finite state machines, and parsing. CSC 220 Prerequisite: Successful completion of MAT 151 and MAT 161.
This course introduces the fundamental concepts of modern computer systems. Coverage includes an introduction to CPUs, memory, storage, networking, operating systems, and parallel and distributed programming. Assembly language and C will be introduced and used to explore how computer systems interpret and execute programs. CSC 231 Prerequisite: Successful completino of CSC 142 and MAT 151. Distance education offering may be available.
This course focuses on more advanced topics in object-oriented programming, including project design,planning, and testing using milestones and checklists. Programming topics include text processing (including StringBuilder and StringTokenizer classes), inheritance, g systems, polymorphism, abstract classes, interfaces, generic classes, exception classes, exception tions, throwing and handling, random access files, serialization and an introduction to some basic computer data structures, such as collection classes and linked lists. CSC 240 Prerequisite: Successful completion of CSC 142.
Data structures and related algorithms are studied using object-oriented programming, such as Java. Topics include data abstraction, recursion, lists, stacks, queues, linked lists, trees, hashing, searching and sorting algorithms, and the evaluation of algorithm efficiency. CSC 241 Prerequisite: Successful completion of CSC 240, MAT 151, and MAT 161. 211
This course teaches introductory topics in computer architecture and hardware design as well as the basics of assembly language. Software is provided to assemble, run, and debug assembly language programs. Additionally, a C compiler demonstrates a realistic usage of pointers, and bitwise operations of assemble language. CSC 242 Prerequisite: Successful completion of CSC 142 and MAT 151. Distance education offering may be available.
The student works for an organization involved in the computer field. The student may do work in various areas of the discipline such as programming, networking, or customer support. CSC 300 Prerequisite: Successful completion of CSC 141, CSC 142, CSC 240, CSC 241, MAT 151, and MAT 161.
An introduction to Computer Security and the ethical underpinnings of security. The basic objectives of creating a secure system, attack methods and defenses are discussed.
This course will provide an introduction to critical and diverse topics in computer security, su as cryptography, network security, and operating systems security. CSC 302 Prerequisite: Successful completion of CSC 301 and CSC 335.
This course focuses on fundamental concepts about the visualization of various data in the disciplines of digital image processing, computer graphics, photometric processing, and image analysis. The application of python programming will also prepare students for learning Computer Vision and Machine Learning in the future. This course will focus on mathematical foundations and graphic tools including Matplotlib (a graphic plotting library) and OpenCV (an image processing and analysis library for Computer Vision). Some fundamental definitions about image processing or analysis will be introduced. CSC 317 Prerequisite: Successful completion of CSC 240. Distance education offering may be available.
Characteristics of generalized database management systems. Surveys of different database models that are currently used. The design and implementation of a database system. CSC 321 Prerequisite: Successful completion of CSC 142 and CSC 241.
This course is a general survey of elements of operating systems with in-depth studies of certain features of specific operating systems. Elements of concurrent programming are studied, such as the mutual exclusion problem, semaphores, and monitors. Additionally, the following topics are covered: process scheduling and deadlock avoidance; memory management issues such as paging and segmentation; organization and protection of file systems. CSC 331 Prerequisite: Successful completion of CSC 220, CSC 240, and CSC 241; and CSC 231 or CSC 242
An overview of the various aspects of modern data and telecommunications. Discussion of the hardware and software facets of the transmission of information in the forms of voice, data, text, and image. Topics include communication protocols, transmission technologies, analog/ digital transmission, communications media, public data networks, LANs, and ISDN. CSC 335 Prerequisite: Successful completion of CSC 240. Distance education offering may be available.
This course provides an in-depth exploration of advanced algorithmic techniques essential for solving complex computational problems. Building on foundational knowledge of data structures and algorithms, students will study algorithm complexity analysis, including Big O, Big Theta, and Big Omega notations and complexity classes such as P, NP, and NP- complete. The course covers advanced sorting algorithms, divide-and-conquer strategies, dynamic programming, and greedy algorithms. Students will also examine fundamental graph algorithms, including shortest paths, spanning trees, and network flow solutions, with real-world optimization and data processing applications. Emphasis is placed on theoretical understanding and practical implementation, equipping students with the skills to design, implement, and evaluate efficient algorithmic solutions. Through hands-on coding and problem-solving, students will enhance their computational thinking and prepare for advanced coursework or careers in software development, data science, and related fields. CSC 341 Prerequisite: Successful completion of CSC 241. 212
An examination of the conceptual underpinning of programming languages and of the paradigms into which they fall. Topics will be drawn from those comprising the field of programming language such as abstraction, bindings, concurrency, design, encapsulation, history, representation, storage, and types. Programming projects will focus on languages within the functional, declarative, and object-oriented paradigms such as Common Lisp, ML, Prolog, and CLOS rather than the familiar imperative paradigm. CSC 345 Prerequisite: Successful completion of CSC 220 and CSC 241.
This course begins with concepts such as variables, strings, decisions, functions, loops, file input/output, lists, arrays, object-oriented programming such as constructor, inheritance, and polymorphism. It then focuses on more advanced topics such as plotting graphs and using Python packages, machine learning, and statistics. Students will develop the skills necessary to use communication as a problem solving tool in the course. Special emphasis is placed on the student's performance. CSC 365 Prerequisite: Successful completion of CSC 141 and CSC 142. Gen Ed Attribute: Speaking Emphasis
ch This course will introduce data science and related programming concepts. The course includes basic statistics, an intro to machine learning, and an intro to data visualization. Students will learn how to read different types of data files and use statistical tools and machine learning tools to analyze them. Also, they will use basic data visualization techniques to present the result to help in decision-making. A programming language, such as, Python will be used in the class to help students develop understanding of the above concepts. CSC 381 Prerequisite: Successful completion of CSC 231, CSC 240, or CSC 241; or junior standing. Distance education offering may be available.
This course introduces machine learning techniques. Students will understand machine learning algorithms as they work with different algorithms and learn to build them from scratch. They will also gain theoretical and practical skills by applying machine learning to real-world problems. CSC 382 Prerequisite: Successful completion of CSC 381 or STA 248; or junior standing. Distance education offering may be available.
The student works in the area of computer science that is their specialty. CSC 400 Prerequisite: Successful completion of CSC 141, CSC 142, CSC 240, CSC 241, MAT 151, and MAT 161, with minimum grades of C-.
This course focuses on more advanced topics in object-oriented programming, including project design, planning, and testing using milestones and checklists. Programming topics include text processing (including the StringBuilder and StringTokenizer classes), inheritance, polymorphism, abstract classes, interfaces, generic classes, exception classes, exception throwing and handling, random access files, serialization, and an introduction to some basic data structures, such as collection classes and linked list. This is the required Capstone course for the program/major. CSC 402 Prerequisite: Successful completion of CSC 241. Distance education offering may be available.
This course consists of two components: software engineering and software testing. Software testing is a critical phase in the software development life cycle for the quality assurance of software. This course will take a practitioner's approach. Students will use hands-on labs to learn Node.js when we cover the principles of software testing. Testing theory topics may include: Math for testing engineers (discrete math, graph theory), Testing Categories (unit testing, integration testing, system testing, load testing, functional testing, and retrospective testing), Testing Approaches (white-box testing, black-box testing), and Testing Methodologies (boundary value testing, domain testing, equivalence class testing, decision- table-based testing, path testing, and data flow testing). CSC 404 Prerequisite: Successful completion of CSC 240 and CSC 241. 2026-2027 CATALOG - UNDERGRADUATE
This course introduces essential software design patterns and principles, focusing on building maintainable and scalable systems using Java. Topics include general program design principles, the Unified Modeling Language (UML), and object-oriented design principles such as SOLID. Students will learn software refactoring techniques, including both primitive and composite methods, to improve code quality and maintainability. Key patterns—such as delegate, library, and layering design patterns—will be explored, along with concepts of software product lines for managing product variability. Additional advanced topics include Java reflection and meta-programming, static software analysis, and the use of UML to visualize system architecture. By the end of the course, students will be able to design flexible, reusable, and efficient software systems that follow best practices for maintainability and scalability. Assignments and exams will assess both theoretical understanding and practical application of the course material.
Covers the basic topics in compiler design including lexical analysis, syntax analysis, error handling, symbol tables, intermediate code generation, and some optimization. Programming assignments will build various pieces of a compiler for a small language. CSC 416 Prerequisite: Successful completion of CSC 220, CSC 240, CSC 241, and CSC 242.
This course deals with database-driven graphical user interface applications. The Model-View- Controller software paradigm is used as a guiding principle for the applications developed. The course features applications using Java-based components as well as web-based components with a modern server-side scripting language such as PHP. Most of the course work is based on developing a complex, large scale web database system with the goal of implementing this system within a web application framework. CSC 417 Prerequisite: Successful completion of CSC 241. Distance education offering may be available.
CSC 418Modern Web Applications Using Server-Side Technologies3
This course provides training in the area of building web applications using Node.js (with Express, and MongoDB) for the back-end and EJS for the front-end user interface. JavaScript has been a client-side script programming language until later in 2009 when Google combined its V8 search engine with Node.JS. Since then, JavaScript has become a full-stack scripting language from the client-side to the server-side. Starting from building a web site without programming, students will be guided with hands-on labs and develop a website using Node.JS and EJS for the front-end. CSC 418 Prerequisite: Successful completion of CSC 240. Distance education offering may be available.
This is an introductory course on Android app development. Students will learn the entire app development cycle from an idea, to a storyboard, to a functional shell, to a working prototype, to an alpha app. They will learn basics of UI selection, interfacing with device hardware, persistence, requesting permissions from the user, connecting to a web API, and google play store presence. Additional topics can be explored by request of the students. CSC 461 Prerequisite: Successful completion of CSC 241.
This course introduces students to modern distributed platforms by examining several important technologies in the areas of parallel and distributed computing and how these technologies help in solving computational and data-intensive problems. Students will apply specific trade-offs for parallel application and algorithms development, performance, and management on different distributed platforms. CSC 466 Prerequisite: Successful completion of CSC 231 and CSC 241. Distance education offering may be available.
This course will investigate engineering approaches in solving challenges in data-intensive and big data computing problems. Course topics include distributed tools and parallel algorithms that help with acquiring, cleaning, and mining very large amount of data, including streaming data. CSC 467 Prerequisite: Successful completion of CSC 241. Distance education offering may be available.
This course provides an introductory overview to the technologies that enable cloud computing. Topics covered include basic concepts about cloud computing and advanced technical concepts regarding virtualization, containerization, and orchestration. CSC 468 Prerequisite: Successful completion of CSC 331 and CSC 335. 2026-2027 CATALOG - UNDERGRADUATE DEPARTMENT OF COMPUTER SCIENCE
This course will introduce students to modern malware analysis techniques through lectures and hands-on interactive analysis of real-world samples, including exploring various recent attacks. These examples and studies will help the students develop a foundation and a well- rounded view of cybersecurity research. Participants in the course will also read and discuss research papers, as well as conducting an independent project in a topic related to cyber risk and malware analysis. After taking this course students will be equipped with the skills to analyze advanced contemporary malware using both static and dynamic analysis. CSC 471 Prerequisite: Successful completion of CSC 231 or CSC 242; and CSC 302. , CSC 472. Software Security. 3 Credits. This course is primarily aimed at people interested in software security, reverse engineering, and low-level software. In this course, students will explore the foundations of software security. They will consider important software vulnerabilities and attacks that exploit them-- such as buffer overflows, SQL injection, and session hijacking--and they will consider defenses that prevent or mitigate these attacks, including advanced testing and program analysis techniques. CSC 472 Prerequisite: Successful completion of CSC 231 or CSC 242; and CSC 302.
This project-based course is concerned with game development and scripting using a modern game engine, such as Unity, with a modern programming language, such as C#. Topics include coding standards, design principles, debugging, game loops, physics engines, lighting, meshes, colliders, databases for persisting data, game lobbies, networked multiplayer games, and building for multiple resolutions and platforms. Individual and team-based assignments will utilize version control. CSC 476 Prerequisite: Successful completion of CSC 241.
This course provides students with more in-depth understanding of advanced cloud computing technical concepts. Through the perspective of infrastructure-as-code and project-based learning activities, students will study how cloud computing orchestration works to enable the deployment of large-scale complex services in business and academic environments. CSC 478 Prerequisite: Successful completion of CSC 468.
Artificial Intelligence (AI) is concerned with the replication or simulation on a machine of the complex behaviors associated with intelligence. Topics will be drawn from any of those comprising the field of AI such as agent architectures, automatic truth maintenance, constraint satisfaction, expert systems, fuzzy logic, games, genetic algorithms, knowledge representation, machine learning, neural networks and connectionism, natural language processing, planning, reasoning, robotics, search, theorem proving, and vision. Projects requiring coding will focus on an AI language such as Common Lisp or Prolog. CSC 481 Prerequisite: Successful completion of CSC 220 and CSC 241.
The student designs and implements a software system. Project problems are drawn from local industry and university departments. A computer science faculty member supervises each project. Gen Ed Attribute: Writing Emphasis Repeatable for credit.
In conjunction with the instructor, the student selects study topics via literature search. Gen Ed Attribute: Writing Emphasis Repeatable for credit. 213
The principles of algorithmic problem solving are introduced using the Python language. This course focuses on procedural programming techniques using elementary data and control structures. Distance education offering may be available.
This course introduces the design and implementation of object-oriented programming using the Java programming language. Topics include objects, classes, inheritance, polymorphism, abstract classes, interfaces, and generics. CSC 513 Prerequisite: Successful completion of CSC 512. Distance education offering may be available. e CSC 515. Introduction to Web Development. 3 Credits. This course covers website design and programming issues. It develops and uses the Php language and MySQL database for server-side programming and information storage/ retrieval. The JavaScript language is used for client side programming.
This course covers website design and programming issues. It develops and uses the Php language and MySQL database for server-side programming and information storage/retrieval. The JavaScript language is used for client side programming.
CSC 516Introduction to Data Structures and Algorithms3
This course introduces the definitions, implementations, and applications of the most basic data structures used in computer science, such as rudimentary linked structures, and complex structures such as trees, hash tables, and graphs. Abstract data types are studied using the C+ + programming language. CSC 516 Prerequisite: Successful completion of CSC 513. Distance education offering may be available.
This course covers the basic features of operating systems. Examples will be drawn from UNIX and other operating systems. This course includes an intensive study of the UNIX operating system by way of the UNIX kernel commands and utilities.
This course builds on rudimentary understanding of linked structures and develops complex data structures such as trees, hash tables, graphs, etc. It also introduces the basics of asymptotic analysis of running time and space in order to provide the justification for various data structures.
This course provides in-depth studies of various aspects of modern telecommunication systems such as network design, network implementation, serial port communications, and user interfaces.
This course emphasizes recent technological advances in database management systems. The course centers around data models and languages for those data models. Special attention is paid to relational and object-oriented data models and systems which implement these.
This courses focuses on various software processes, including the Personal Software Process and agile processes (like eXtreme Programming and Scrum). Another major focus is software assurance - processes for building secure software. Other topics include quality assurance, work culture issues and the professional responsibilities of software engineers.
This course introduces the methods to analyze the efficiency of computer algorithms in terms of their use of both space and time. Algorithmic design techniques, such as divide and conquer, greedy methods, and dynamic programming are illustrated throughout the course. The theory of NP-completeness and tractability is introduced. CSC 560 Prerequisite: Successful completion of CSC 520. 113
An in-depth study of the principles and design aspects of programming language translation. Students will design and implement a compiler using standard UNIX-based compiler tools for a small but representative language.
This course provides an introductory overview to the technologies that enable cloud computing. Topics covered include basic concepts about cloud computing and advanced technical concepts regarding virtualization and containerization. As a graduate level course, students are expected to demonstrate a deeper critical understanding of cloud technologies, evaluating trade-offs between different approaches and relating them to current research or industry practices. Projects will contain components such as scalability analysis, security considerations, or integration of recent scholarly or industrial advances. CSC 568 Prerequisite: Successful completion of CSC 535. Distance education offering may be available.
The goal of this class is to learn the basics and intermediates of Information Visualization (Info Vis). Students will learn how Info Vis can be used to make sense of the data using visual representation and analytical processing. It will also help students to learn how visual representations and human visual perception system is related. In the class, students will be using real-world large and complex datasets. Students will learn how different visualization techniques, such as symbolic, tabular, networked, hierarchical, and textual data visualization can help us to uncover different types of information. In this class, students will learn existin and new Info Vis techniques and systems, so that they can design new visualization techniques for real-world applications. Distance education offering may be available.
This course explores fundamental and advanced concepts in computer vision, focusing on techniques for image and video processing, as well as machine vision applications. Topics include image formation, filtering, edge detection, segmentation, object recognition, object detection and tracking, feature extraction, and 3D vision. The course also covers modern deep learning approaches for vision tasks and real-world applications in areas such as autonomous systems, medical imaging, and robotics. Distance education offering may be available.
In this course, students will study the emerging field of tiny machine learning (tinyML). This field is at the intersection of machine learning (ML) applications and embedded devices/ microcontrollers. It requires both software and embedded-hardware knowledge. More specifically, students will follow a hands-on learning approach with training and optimizing ML models in such ways that they are deployable onto tiny microcontrollers. The course will involve work with a Nano 33BLE sense microcontroller. Distance education offering may be available.
Artificial Intelligence (AI) aims to reproduce or simulate the intelligent capacities of human beings such as forming plans of action and conversing in English. This course will combine theoretical, practical, and programming aspects of AI. Common Lisp will be used for programming projects. CSC 575 Prerequisite: Successful completion of CSC 520.
This course will explore the fundamentals of data science by using current data mining and machine learning algorithms such as decision trees, regression, support vector machines, clustering, and neural networks for prediction and inference. Web scraping techniques to create datasets will be introduced. Data preprocessing techniques and data visualization will also be introduced. Programming assignments will be coded in a modern programming language, such as Python.
This course introduces the foundations of Natural Language Processing (NLP), from theoretical fundamentals of language models and grammars to the application of algorithms. The course will draw from the following NLP topics: word and sentence tokenization, spelling correction, question answering, text classification, and sentiment analysis. Programming assignments will utilize unstructured text and freely available corpora, be coded in a modern programming language, such as Python, and will utilize modern NLP toolkits such as NLTK and CoreNLP.
This course provides students with more in-depth understanding of advanced cloud computing technical concepts. Through the perspective of infrastructure-as-code and project-based learning activities, students will study how cloud computing orchestration works to enable the deployment of large-scale complex services in business and academic environments. As a graduate level course, students are expected to demonstrate a deeper critical understanding of orchestration and infrastructure-as-code, evaluating trade-offs among different platforms and connecting practices to research and emerging technologies. Distance education offering may be available.
An introduction to intermediate machine learning, covering supervised and unsupervised methods, optimization, Bayesian approaches, and key theoretical frameworks. Emphasis is placed on both foundational concepts and practical applications through programming assignments and projects. Distance education offering may be available.
This course will allow instructors to teach a 500-level (not research-oriented) course in a computer science topic not specified in the current course list. Different topics will be taught as different sections of this course.
The detailed course content varies from one semester to another. The topic will be decided based on the technological development in the field and the scholarly interests of the faculty. This course may be repeatable for different topics. Students will learn to develop individual projects.Topics discusses include but are not limited to: Server-Side Programming using Unix or Windows platform; ASP.NET with C#; Google Search Engine Optimization; Client-Side Web Programming using Content Management Systems (WordPress, Joomla, or Drupal); Other emerging technologies.
This course introduces the technical principles of User Interfaces (UI) using the Front-End development of web-based applications as an example. Students will take the procedure from HTML, CSS, and JavaScript for the front-end and then shift their attention to using React.js for the front-end of Single Page Applications. They will focus on the "V" portion in the Model-View-Controller (MVC) architecture. The course features a modern server-side scripting platform such as Node.js or Express.js although the main focus is on the front-end View Engine React.js. Most of the course work is targeting developing the front-end for complex, large-scale web application systems.
This course is a hands-on study of the essentials of operating system administration with a strong focus on systems security. Approximately half of the class time is spent in the lab. Students work as system administrators on projects devised to illustrate basic system and security administrative features. Additionally, various script languages are taught to provide the basis for understanding and extending the system capabilities.
CSC 587Modern Web Applications Using Server-Side Technologies3
This course provides training in the area of building web applications using Node.js (with Express, and MongoDB) for the back end and EJS for the front-end user interface. JavaScript has been a client-side script programming language until later in 2009 when Google combined it's V8 search engine with Node.JS. Since then, JavaScript has become a full-stack scripting language from the client-side to the server-side. Starting from building a web site without programming, students will be guided with hands-on labs and develop a website using Node.JS and EJS for the front-end.
This is a research-oriented course which will involve an investigation into an adva specialized topic determined according to faculty and student interest. Repeatable for credit.
An in-depth investigation into specific areas of Computer Security reflecting research interests and significant technological developments in the field.