Computer Science (CSC)

Courses and Descriptions

CSC 105 Fundamentals of Computer Science 3 Credits

This course offers an introduction to fundamental areas of study in computer science - their applications, capabilities, and boundaries. Topics include computer organization, algorithms design and analysis, programming paradigms, software development process, operating systems responsibilities, applications, and communications. Hands-on python programming is also introduced in this course from a non-mathematical problem-solving point of view. Basic programming constructs include statements, expressions, variables, control structures, functions, and file operation.

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 or MTH 106 or MTH 210 or concurrent enrollment. MTH 210 or MTH 106 preferred for CSC majors.

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.

Prerequisite(s): MTH 105 or or concurrent enrollment or MTH 106 or concurrent enrollment or MTH 210 or concurrent enrollment.

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. CSC 150 is a required course for CSC majors and minors. This course will be open to other math and science majors.

Prerequisite(s): CMP 120 or CMP 125 or BHP 100 or BHP 150 may be taken concurrently.

CSC 200 Introduction to Software Engineering 3 Credits

This course introduces software engineering ideas and concepts in the context of the software development life cycle. The course will discuss fundamental methodologies of software engineering, the Software Development Life Cycle (SDLC) and Unified Modeling Language (UML), which is a modeling language in the field of software engineering. It also concentrates on the five major phases of the SDLC: requirements engineering, requirements analysis, design, coding/implementation, and testing. Students will also learn about project management which is used for delivering high-quality software that satisfies customer needs and budgets. Prerequisite(s): Sophomore or Junior Standing

Prerequisite(s): CSC 120.

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.

Prerequisite(s): CSC 130, CSC 140.

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 or concurrent enrollment.

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): CSC 130.

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. CSC 250 is a required course for CS majors.

Prerequisite(s): CSC 200.

CSC 301 Software Requirements & Modeling 3 Credits

This course is intended to introduce students with the techniques for eliciting requirements. . The course will consider the past, present and future standards and approaches in requirements engineering. This course will specifically focus on identifying and analyzing requirements for various types of systems: embedded systems, consumer systems, web-based systems, business systems, systems for scientists and other engineers. Prereq(s): CSC 200.

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.

Prerequisite(s): CSC 130 and CSC 140.

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 150.

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.

Prerequisite(s): CSC 130 and CSC 140.

CSC 360 Concept of Artificial Intelligence 3 Credits

This course offers an introduction to the basic principles, techniques, and applications of Artificial Intelligence. Topics to be covered include agent design, advanced search algorithms and heuristics, knowledge representation, logic, inference, game theory, advanced planning, and learning. Prereq(s): CSC 130 and CSC 230.

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.

Prerequisite(s): CSC 220 and (CSC 240 or CYB 200).

CSC 390 Software Design & Construction 3 Credits

This course introduces students to software design methodologies and also equips them with the knowledge and skills necessary to design large-scale software and to improve the quality of end products. Design techniques and methodologies for improving the productivity of software development and the quality of software are introduced. The course explores fundamental design concepts and notations with emphasis on Unified Modeling Languages (UML) and design patterns.

Prerequisite(s): CSC 200.

CSC 400 Introduction to Machine Learning 3 Credits

This course focuses on the fundamental concepts, theories, and algorithms for machine learning. The course briefly covers topics in supervised, unsupervised, reinforced, and deep learning including clustering, association, regression, neural network, support vector machines, Bayesian decision theory, decision trees, ensemble learning- the nearest neighbor algorithm and random forest.

Prerequisite(s): MTH 240 and CSC 360.

CSC 410 Data Science and Big Data Analytics 3 Credits

This course serves as an introduction to the interdisciplinary and emerging fields of data science and big data analytics. 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 science and data analytics processes; advanced analytical theory and methods; tools for working with both big and small datasets, statistical modeling, and machine learning. Specific topics and tools include: data wrangling and munging, machine learning algorithms, statistical models, data visualization, NoSQL, Weka, RapidMiner, R, Python, Hadoop, and MapReduce.

Prerequisite(s): CSC 360.

CSC 420 Software Testing, Verification, and Validation 3 Credits

This course discusses the concept software quality assurance and source code review. This course will help students understand the testing concepts and how they can easily apply the concepts to any software testing situation. This course presents the concepts and techniques for testing software and assuring its quality. Concepts that are taught as part of this course are software testing at the unit, module, subsystem, and system levels, automatic and manual techniques for generating and validating test data, the testing process, static vs. dynamic analysis, functional testing, web application testing, and reliability assessments.

Prerequisite(s): CSC 200.

CSC 430 Software Quality Assurance 3 Credits

The course aims to teach the basics of quality management in software development projects. Students will learn the definitions of quality of software product and software process. Students will learn about software quality assurance, software metrics and models in quality management, internal quality and external quality.

Prerequisite(s): CSC 420.

CSC 470 Special Topics in Artificial Intelligence 3 Credits

This is an upper level undergraduate course that covers advanced topics in Artificial Intelligence. Topics vary from one offering to the other. Topics that may be discussed include: Artificial Intelligence/ Machine Learning for Cybersecurity, Computer Vision, Robotics and Automation, Game Theory, Planning and Acting in the real World, Deep Learning, Reinforcement Learning, Decision-making under uncertainty, Image Processing, and Natural Language for Communication.

Prerequisite(s): CSC 360.

CSC 490 Independent Research and Study 3 Credits

Immerses the student in guided research. The student learns to organize material, use the literature, obtain reproducible data, and synthesize the results of the study. If possible, the student will publish the results or present them at a scientific meeting. Available to Junior or Senior students or Sophomores with permission of the department chair.

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.