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
-
Computer Science, B.S. -
Computer Science, Minor
Courses
CSC 100: Introduction to Computing
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 100L: Introduction to Computing Lab
Required laboratory course to accompany CSC 100.
CSC 110: Computer Programming I
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 110L: Computer Programming I Lab
Required laboratory course to accompany CSC 110.
CSC 111: Computer Programming II
This is a second course in computer programming. Programming concepts stressed in this course will be data abstraction, advanced functional topics, exception handling and file manipulation.
CSC 111L: Computer Programming II
Required laboratory course to accompany CSC 111.
CSC 220: Data Structures
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.
CSC 310: Database Systems
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.
CSC 320: Programming Languages
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.
CSC 325: Analysis of Algorithms
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.
CSC 375: Computer Organization
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.
CSC 385: Theory of Computing
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.
CSC 390: Professional Ethics in Computer Science
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 410: Software Engineering
Explores the key software design concepts involved in practical software projects. Topics include software development processes, design patterns, software architecture, software testing, software performance, security, and safety.
Prerequisites
Math 360 and CSC 325
CSC 422: Internet Systems
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.
CSC 450: Operating Systems
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.
CSC 465: Artificial Intelligence and Machine Learning
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.
CSC 469: Concurrent and Parallel Programming
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.
CSC 476: Networked Computer Systems
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.
CSC 495: Capstone Computer Science Project
This is a semester-long project-based course providing a capstone experience for the Computer Science major.