CSC: Computer Science

College of the Sciences and Mathematics

How to Read Course Descriptions

CSC 110. Fundamentals in Computer Science. 3 Credits.

Introduction to the fundamentals of computer science. Topics include surveys of the following sub-areas of computer science: artificial intelligence, hardware/operating systems, programming languages/software, ethics/social issues, history, electronic communications, problem solving, and programming. The course includes laboratory projects (writing computer programs).
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 112. Programming & Data Science. 3 Credits.

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: Science Distributive Requirement.
Typically offered in Fall, Spring & Summer.

CSC 115. Introduction to Computer Programming. 3 Credits.

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 Requirement.
Typically offered in Fall & Spring.

CSC 116. Computational Thinking for Problem Solving. 3 Credits.

This course provides an introduction to problem solving and programming using Python. Computational thinking is an approach to solve problems using concepts and ideas from computer science and express solutions in a way that can be run on a computer. Topics covered in this course include (1) four pillars of computational thinking, namely decomposition, pattern recognition, data representation and abstraction, algorithms; (2) fundamental operations of a modern computer; (3) basic algorithms in computer science; and (4) programming using Python.
Gen Ed Attribute: Science Distributive Requirement.
Typically offered in Fall & Spring.

CSC 141. Computer Science I. 3 Credits.

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 Requirement.
Distance education offering may be available.
Typically offered in Fall, Spring, Summer, Winter.

CSC 142. Computer Science II. 3 Credits.

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).
Pre / Co requisites: CSC 142 requires a prerequisite of CSC 141.
Distance education offering may be available.
Typically offered in Fall, Spring, Summer, Winter.

CSC 199. Transfer Credits. 1-10 Credits.

Transfer Credits.
Typically offered in Fall, Spring & Summer.
Repeatable for Credit.

CSC 220. Foundations of Computer Science. 3 Credits.

Topics include regular and context free grammars and languages, computational logic, finite state machines, and parsing.
Pre / Co requisites: CSC 220 requires prerequisites of MAT 151 and MAT 161.
Typically offered in Fall & Spring.

CSC 231. Computer Systems. 3 Credits.

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.
Pre / Co requisites: CSC 231 requires prerequisites of CSC 142 and MAT 151.
Distance education offering may be available.
Typically offered in Fall, Spring & Summer.

CSC 240. Computer Science III. 3 Credits.

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, 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 lists.
Pre / Co requisites: CSC 240 requires prerequisites of CSC 142.
Typically offered in Fall, Spring & Summer.

CSC 241. Data Structures & Algorithms. 3 Credits.

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.
Pre / Co requisites: CSC 241 requires prerequisites of CSC 240 and MAT 151, MAT 161.
Typically offered in Fall & Spring.

CSC 242. Computer Organization. 3 Credits.

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.
Pre / Co requisites: CSC 242 requires prerequisites of CSC 142 and MAT 151.
Distance education offering may be available.
Typically offered in Fall & Spring.

CSC 300. Cooperative Programming. 3 Credits.

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.
Pre / Co requisites: CSC 300 requires prerequisites of CSC 141 and CSC 142 and CSC 240 and CSC 241 and MAT 151 and MAT 161.
Typically offered in Fall, Spring & Summer.

CSC 301. Computer Security & Ethics. 3 Credits.

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.
Pre / Co requisites: CSC 301 requires prerequisites of three CSC, CST, or CSW courses.
Gen Ed Attribute: Ethics Requirement.
Typically offered in Fall & Spring.

CSC 302. Computer Security. 3 Credits.

This course will provide an introduction to critical and diverse topics in computer security, such as cryptography, network security, and operating systems security.
Pre / Co requisites: CSC 302 requires prerequisites of CSC 301 and CSC 335.
Typically offered in Fall & Spring.

CSC 317. Introduction to Digital Image Processing. 3 Credits.

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.
Pre / Co requisites: CSC 317 requires prerequisites of CSC 240.
Distance education offering may be available.
Typically offered in Fall & Spring.

CSC 321. Data Base Management Systems. 3 Credits.

Characteristics of generalized database management systems. Surveys of different database models that are currently used. The design and implementation of a database system.
Pre / Co requisites: CSC 321 requires prerequisites of CSC 142 and CSC 241.
Typically offered in Fall & Spring.

CSC 331. Operating Systems. 3 Credits.

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.
Pre / Co requisites: CSC 331 requires prerequisites of CSC 220 and CSC 240 and CSC 241, and CSC 231 or CSC 242.
Typically offered in Fall.

CSC 335. Data Communications and Networking I. 3 Credits.

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.
Pre / Co requisites: CSC 335 requires a prerequisite of CSC 240.
Distance education offering may be available.
Typically offered in Fall, Spring & Summer.

CSC 336. Data Communications and Networking II. 3 Credits.

An in-depth study of various aspects of modern data communication systems. Discussion of serial port communications, network performance and design, and Internet protocols. Topics include PC serial port hardware (RS-232, UART) and software (XMODEM protocol), queuing theory, X.25, frame relay, SMDS, BISDN, ATM, TCP/IP, sockets and Internet applications.
Pre / Co requisites: CSC 336 requires prerequisite of CSC 335.
Typically offered in Spring.

CSC 345. Programming Language Concepts/Paradigms. 3 Credits.

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.
Pre / Co requisites: CSC 345 requires prerequisites of CSC 220 and CSC 241.
Typically offered in Fall & Spring.

CSC 400. Internship. 6 Credits.

The student works in the area of computer science that is his or her specialty.
Pre / Co requisites: CSC 400 requires prerequisites of CSC 141 and CSC 142 and CSC 240 and CSC 241 and MAT 151 and MAT 161.
Consent: Permission of the Department required to add.
Typically offered in Fall, Spring & Summer.

CSC 402. Software Engineering. 3 Credits.

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.
Pre / Co requisites: CSC 402 requires a prerequisite of CSC 241.
Typically offered in Fall & Spring.

CSC 404. Software Testing. 3 Credits.

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).
Pre / Co requisites: CSC 404 requires prerequisites of CSC 240 and CSC 241.
Typically offered in Spring.

CSC 416. Design/Construction Compilers. 3 Credits.

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.
Pre / Co requisites: CSC 416 requires prerequisites of CSC 220 and CSC 240 and CSC 241, and CSC 231 or CSC 242.
Typically offered in Fall.

CSC 417. User Interfaces. 3 Credits.

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.
Pre / Co requisites: CSC 417 requires prerequisites of CSC 241.
Typically offered in Spring.

CSC 418. Modern Web Applications Using Server-Side Technologies. 3 Credits.

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.
Pre / Co requisites: CSC 418 requires a prerequisite of CSC 240.
Distance education offering may be available.
Typically offered in Winter.

CSC 466. Distributed and Parallel Computing. 3 Credits.

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.
Pre / Co requisites: CSC 466 requires prerequisites of CSC 231 and CSC 241.
Distance education offering may be available.
Typically offered in Spring.

CSC 467. Big Data Engineering. 3 Credits.

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.
Pre / Co requisites: CSC 467 requires a prerequisite of CSC 241.
Distance education offering may be available.
Typically offered in Winter.

CSC 468. Introduction to Cloud Computing. 3 Credits.

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.
Pre / Co requisites: CSC 468 requires a prerequisite of CSC 231.
Typically offered in Spring.

CSC 471. Modern Malware Analysis. 3 Credits.

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.
Pre / Co requisites: CSC 471 requires prerequisites of CSC 231 or CSC 242, and CSC 302.
Typically offered in Spring.

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.
Pre / Co requisites: CSC 472 requires prerequisites of CSC 231 or CSC 242, and CSC 302.
Typically offered in Fall.

CSC 476. Game Development. 3 Credits.

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.
Pre / Co requisites: CSC 476 requires a prerequisite of CSC 241.
Typically offered in Fall.

CSC 481. Artificial Intelligence. 3 Credits.

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.
Pre / Co requisites: CSC 481 requires prerequisites of CSC 220 and CSC 241.
Typically offered in Fall.

CSC 490. Independent Project in Computer Science. 3 Credits.

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.
Consent: Permission of the Department required to add.
Gen Ed Attribute: Writing Emphasis.
Typically offered in Fall, Spring, Summer, Winter.
Repeatable for Credit.

CSC 495. Topics in Computer Science. 3 Credits.

Topic announced at time of offering.
Consent: Permission of the Department required to add.
Typically offered in Summer.
Repeatable for Credit.

CSC 496. Topics in Complex Large-Scale Systems. 3 Credits.

Topics in large scale systems. Topics announced at the time of offering.
Typically offered in Fall.
Repeatable for Credit.

CSC 497. Topics in Computer Security. 3 Credits.

Topic in computer security announced at time of offering.
Pre / Co requisites: CSC 497 requires a prerequisite of CSC 242.
Typically offered in Fall & Spring.
Repeatable for Credit.

CSC 499. Independent Study in Computer Science. 3 Credits.

In conjunction with the instructor, the student selects study topics via literature search.
Consent: Permission of the Department required to add.
Gen Ed Attribute: Writing Emphasis.
Typically offered in Fall, Spring, Summer, Winter.
Repeatable for Credit.