Computer Science (CSC)
CSC 110 Computer Science I 3 Credits
This course is an introduction to computer science and modern computing fundamentals. Students will develop programs and algorithms to solve a variety of problems posed in the natural sciences. Students will learn to code in Python, a widely adopted language and learn the basics of algorithms, data types, program structure and development
Prerequisite(s): MTH 105 (Algebra & Trigonometry) or equivalent.
CSC 120 Computer Science II 3 Credits
This course is an introduction to developing algorithms using abstract data types and the object-oriented methodology. Students will design and implement robust ADTs using Java, an object-oriented programming language. Students will learn how to develop their own algorithms and the best techniques for analyzing their performance. Students will be able to adapt the course knowledge to real world, practical challenges.
Prerequisite(s): CSC 110.
CSC 130 Data Structures and Algorithms 3 Credits
This course is a study of data structures and the algorithms used to process them. Topics include stacks, queues, lists, trees, graphs, sorting and searching techniques, recursive algorithms, and efficiency considerations. This course will give students a comprehensive study in data structures and algorithms which are the building blocks in programming.
Prerequisite(s): CSC 120.
CSC 140 Discrete Structures 3 Credits
This course is an introduction to the ideas and techniques from discrete mathematics as widely applied to Computer Science. Topics include sets, numbers, algorithms, logic, combinatorics, recursion principles, graph theory, trees, and discrete probability.
CSC 150 Cyber Ethics and Societal Impact 3 Credits
This course will investigate the ethical and social challenges stemming from computing and telecommunication technology, as well as from mobile information-enabling devices. Topics include: cyber ethics, global and societal impact of the Internet, ethical analysis tools, ethical dimensions of computer system reliability, professional ethics, ethical frontiers in emerging technologies, privacy, security, intellectual property, cybercrime, and civil liberties in cyberspace. CS 150 is a required course for CS majors and minors. This course will be open to other math and science majors.
Prerequisite(s): CMP 115 or can be taken concurrently.
CSC 220 Computer Organization and Architecture 3 Credits
An introduction to the fundamental concepts of computer organization and architecture, this course explores how computer systems execute programs and manipulate data, working from the C programming language down to the microprocessor. Topics include: processor organization, Assembly and C programming languages, machine-level code, data representation, digital logic gates and Boolean algebra, computer arithmetic, code compilation, memory organization and management, interrupts, and performance evaluation and optimization. CS 220 is a required course for CS majors. The prerequisites for this course are CS 130 (Data Structures and Algorithms) and CS 140 (Discrete Structures).
CSC 230 Probability for Computer Science 3 Credits
This course is an overview of probability theory and its application to computer science. Students will develop an understanding of combinatorics, variables, distributions, and parameter estimation. Applications to real world data and large datasets are also studied, with an introduction to machine learning.
Prerequisite(s): MTH 211.
CSC 240 Operating Systems 3 Credits
The course will study the basic concepts, design and implementation of operating systems. Topics to be covered include an overview of basic computing hardware components, operating system structures, process management, memory management, concurrency, resource allocation and scheduling, file systems, input/output systems, protection and security. CS 240 is a required course for CS majors.
Prerequisite(s): CS 130, Data Structures and Algorithms.
CSC 250 Software Security Engineering 3 Credits
Secure software engineering focuses on both theoretical and practical perspectives in the development of software systems, exploring secure software design and development methods, software analysis, and reverse engineering. Emphasis is placed on security as part of the software engineering lifecycle, as well as on the correctness and robustness of code. CS 250 is a required course for CS majors.
Prerequisite(s): CSC 140.
CSC 310 Theory of Computation 3 Credits
This course introduces a formal framework for investigating both the computability and complexity of problems. Theoretical foundations of computer science and formal models of computation are covered. Students study several models of computation including finite automata, regular expressions, formal languages, Chomsky language hierarchy, context-free grammars and Turing machines. Topics include undecidable problems, the halting problem and the P versus NP problem.
CSC 320 Human-Computer Interaction 3 Credits
This course presents Human-Computer Interaction (HCI) as a discipline that is concerned with technical advance, and that must integrate different disciplinary perspectives. Foundational theoretical issues deal with principles of human perception, visual representation and purposeful action, discussed in the context of novel interactive technologies and computer-based systems. It examines issues in the design of system interfaces from a number of perspectives: user, programmer, and designer.
Prerequisite(s): CSC 130.
CSC 340 Cybersecurity Essentials 3 Credits
This course is an in-depth study of the theories and practices for prevention of cyber attacks. Countermeasures discussed include education, encryption, virtual private networks, policies, practices, access controls, secure systems development, software assurance, verification and validation, firewall architectures, anti-virus, patching practices, personnel security practices, and physical security practices. Topics also include incident response, forensic investigations, business continuity plans, disaster recovery plans, and critical infrastructure protection.
Prerequisite(s): CSC 130.
CSC 350 Analysis of Algorithms 3 Credits
This course investigates methods for analyzing and designing efficient and reliable algorithms, emphasizing methods useful in practice. It introduces several algorithm design strategies that build on data structures and programming techniques learned in the introductory computer science course sequence. Topic coverage includes induction, divide-and-conquer, dynamic programming, network flow, randomization, complexity theory, greedy algorithms, searching and sorting algorithms, cryptographic algorithms, graph theory, hashing, and advanced data structures. CSC 350 is a required course for CS majors.
CSC 380 Parallel and Distributed Systems 3 Credits
Widely deployed in scientific computing centers and commercial data centers, large-scale parallel and distributed systems (PDS) are crucial to scientific discovery, business success, national security, and technology innovation. This course examines the design and analysis of large scale computing systems for processor- and data-intensive applications with the focus on the technologies and factors that impact the performance, power, resilience, and scalability of modern parallel and distributed systems. Topics include the organization of multicore computers, parallel computer clusters, computing grids, supercomputers, client-server systems, and peer-to-peer systems; computer networks and network protocols; network security; multithreaded programming; and network programming.
CSC 410 Data Engineering 3 Credits
This course serves as an introduction to the interdisciplinary and emerging fields of data engineering and data science. Students learn to combine tools and techniques from computer science, statistics, data visualization and the social sciences to solve problems using data. Central themes include: the data engineering and data science processes; tools.
CSC 491 Internship in Computer Science 1-4 Credits
A supervised research experience in an approved organization where qualified students gain real-world knowledge and utilize their academic training in a professional environment. Placement may be in private, public, non-profit, or governmental organizations under the guidance of a mentor. The mentor and student will have regular consultation with the departmental internship coordinator to assess the student’s progress. Normally, 50 hours of internship per credit is required. The grade for the course will be determined by the student’s overall performance in their research work, a research paper documenting their work with their internship mentor and an oral or poster presentation at the end of the semester. Available for juniors and seniors.
Prerequisite(s): 2.5 GPA and permission of the instructor.