Computer Science

The Bachelor of Science in Computer Science will produce high-quality graduates who will be among the top professionals and researchers in the computing field, and who will be outstanding contributors in enhancing the quality of life for future generations.  Our vision will be to provide graduates with the capacity to become creative engineers focusing on the development of computing solutions to address the needs of the 21st century. 

Degrees and Certificates

Courses

CSC 100: Introduction to Computing

Semester Hours 3.0

The objective of this course is to introduce students to the fundamentals of computer science.  This is not a computer literacy course (e.g., how to use office applications, email, web, etc.). The focus of this course is on topics in computer science.  This is a broad survey of computer science and should be taken by a student to determine if they might be interested in majoring in computer science.  A sampling of topics includes computer architecture, data representation, artificial intelligence, database systems, operating systems, networking, algorithms, and programming.  Approximately 1/3 of the class will be devoted to learning how to program using programming language. 

CSC 110: Computer Programming I

Semester Hours 3.0

This is an introductory course in computer programming in a high-level language.  Problem-solving techniques and writing algorithms will be stressed.  Concepts stressed in this course are proper use of control structures, development of essential data structures, creating functions and object-oriented programming. 

CSC 220: Data Structures

Semester Hours 3.0

A study of abstract data types, including lists, stacks, queues, and search tables, and their supporting data structures, including arrays, linked lists, binary search trees, and hash tables.  Implications of the choice of data structure on the efficiency of the implementation of an algorithm.  Efficient methods of sorting and searching.  

Prerequisites

Math 370

CSC 310: Database Systems

Semester Hours 3.0

This course focuses on logical and physical organization of sets of related data.  It covers issues in file structures as well as file and database management systems.  Exploration of relational models, hierarchical models, directed graph models, data definition and manipulation of languages and relational calculus.  Application projects are required.  

Prerequisites

CSC 220

CSC 320: Programming Languages

Semester Hours 3.0

This course focuses on formal specification of programming languages, including definition of syntax and semantics: simple statements including precedence, infixes, prefix, and postfix notations.  It stresses the concepts of sequence control, data structure implementation, scooping, storage management, grouping of statements, sub-routines and tasks. 

Prerequisites

CSC 220

CSC 325: Analysis of Algorithms

Semester Hours 3.0

Algorithm design strategies, including greedy, divide-and-conquer, and dynamic programming methods.  Advanced data structures, including balanced search trees, graphs, heaps, and priority queues.  Advanced methods of searching and sorting.  Computational complexity and analysis of algorithms.  NP-complete problems. 

Prerequisites

MATH 152 and CSC 220

CSC 375: Computer Organization

Semester Hours 3.0

An introduction to how digital computers are built and the process by which computer programs expressed in a high-level language are translated into signals to be routed on a digital circuit board.  Topics include data representation and manipulation, digital logic building blocks (logic gates, flip-flops), computer memory, assembly and machine code, hardware components and their organization. 

Prerequisites

CSC 220

CSC 385: Theory of Computing

Semester Hours 3.0

This course is the study of topics, which include theory of finite state machine and automata; regular expressions; Turing machines; Grammars; parsing; language hierarchy; machine design and construction; computability; insolvability; halting problem; computational complexity; and recursive functions.  The course also discusses issues in equivalence of various computational models, minimization, and chracterizations. 

Prerequisites

CSC 325

CSC 390: Professional Ethics in Computer Science

Semester Hours 3.0

This course examines the increasingly complex interaction between computer systems, our social fabric and ethics.  Software and microprocessors control automobiles, banks, brokerage trading, aircraft, medical equipment, and just about every other device used in industrialized nations.  Impacts of computerized systems upon personal privacy and citizen involvement in governance are examined in relation to the public policy questions of the day.  Interdisciplinary readings are stressed, along with required written and oral presentations and class debates. 

CSC 422: Internet Systems

Semester Hours 3.0

This course addresses the structure and functionality of the Internet and software that exploits it.  Topics include mark-up languages, static, dynamic, active web pages, multimedia applications, communication protocols, client-server architectures, scripting, distributed communications through Internet protocols and security issues addressed. 

Prerequisites

CSC 325

CSC 450: Operating Systems

Semester Hours 3.0

An introduction to the theory and practice of operating system design and implementation.  Algorithmic techniques are presented for implementing process management, memory management, processor management, file systems, concurrency, and security. 

Prerequisites

CSC 375

CSC 465: Artificial Intelligence and Machine Learning

Semester Hours 3.0

This course discusses the theory and application of artificial intelligence with a focus on machine learning.  It covers concepts related to search, knowledge representation, logistic reasoning, supervised and unsupervised learning.  Students will be required to write programs implementing artificial intelligence and machine learning concepts. 

Prerequisites

CSC 325

CSC 469: Concurrent and Parallel Programming

Semester Hours 3.0

This course introduces parallel programming and problem-solving.  Topics include parallel programming design, parallel programming models, programming on multicore architectures, parallel computational thinking, and introduction to performance analysis of parallel algorithms. 

Prerequisites

CSC 450 or Consent of Instructor 

CSC 476: Networked Computer Systems

Semester Hours 3.0

This course presents an overview of the technology, architecture and software used by systems of network-connected computers.  The course will cover data transmission, local area network architecture, network protocols, internetworking, security, and World Wide Web technology.  Students will write programs that run concurrently on multiple computers.  

Prerequisites

CSC 220