Computer Science (CSC)

CSC 101:  Applied Computing    (3 credits)  

This course emphasizes technical computing concepts and the development of skills in a technology driven world. It further provides students with skills to perform basic operations involved in system administration, with an understanding of the roles of an operating system, its basic functions, and the services provided by the operating system. An introduction to coding languages is provided. Finally, the course provides students with the ability to create simple scripts/programs to automate and perform simple operations.

CSC 210:  Computer Networks and Network Security    (3 credits)  

The purpose of this course is an in-depth exploration of data security controls and techniques. This course will examine theoretical concepts of network security implementation. This course will examine network security tools and techniques and include hands-on practical applications. Networking has enabled the emergence of mobile and cloud computing, creating one of the most important technological paradigm shifts in computing of the past decade. Coming advancements in wireless networking are expected to transform the technological landscape over the next decade by enabling an endless possibility of new applications, including the Internet of Things and wireless virtual reality, through the emergence of wireless networks with gigabit speeds. In order to play a role in this era of new network-powered advancements, students must have a thorough understanding of emerging networking topics, especially in the wireless domain.

CSC 215:  Data Structures    (3 credits)  

The purpose of this course is to explore abstract data types and their implementation. This course is motivated by problems that arise in a variety of disciplines; this course examines concepts and develops skills in solving computational problems. Topics include stacks, queues and trees, linked lists, as well as design and testing principles and software interfaces.

Prerequisite: Introduction to Computer Science. Laboratory assignments are implemented using object-oriented programming techniques. Prerequisite: CSC101  
CSC 220:  Computation Structures    (3 credits)  

This course offers an introduction to the engineering of digital systems. Starting with MOS transistors, the course develops a series of building blocks — logic gates, combinational and sequential circuits, finite-state machines, computers and finally complete systems. Both hardware and software mechanisms are explored through a series of design examples. A good grasp of the material is essential for later courses in digital design, computer architecture and systems.

CSC 297:  Programming Languages    (3 credits)  

This course introduces a systematic approach to programming. Specifically, this course teaches students to use Python to solve real world problems. By the end of the course, students will be able to construct a program from a series of instructions in Python.

CSC 300:  Software Developments    (3 credits)  

This course considers software development as a systematic process involving specification, design, documentation, implementation, testing, and maintenance. Examines software process models; methods for software specification; modularity, abstraction, and software reuse; and issues of software quality. Students, possibly working in groups, design, document, implement, test, and modify software projects.

Prerequisite: CSC 101 and CSC 215  
CSC 302:  Operating Systems and Operating Systems Programming    (3 credits)  

This class introduces the basic design of computing systems, computer operating systems, and assembly language using x86, FASM. It describes caches and virtual memory. It covers the interface between assembly language and high-level languages, including call frames and pointers, the use of system calls and systems programming to show the interaction with the operating system. Covers the basic structures of an operating system, including application interfaces, processes, threads, synchronization, inter-process communication, deadlock, memory management, file systems, and input/output control.

Prerequisite: CSC 215 and CSC 220  
CSC 310:  Algorithms    (3 credits)  

This class introduces the basic principles and techniques for the design, analysis, and implementation of efficient algorithms and data representations. It discusses asymptotic analysis and formal methods for establishing the correctness of algorithms, considers divide-and-conquer algorithms, graph traversal algorithms, and optimization techniques. Introduces information theory and covers the fundamental structures for representing data. It examines flat and hierarchical representations, dynamic data representations, and data compression. It concludes with a discussion of the relationship of the topics in this course to complexity theory and the notion of the hardness of problems.

Prerequisite: CSC 215, MAT 221, and MAT 222  
CSC 351:  Automata, Computability and Complexity    (3 credits)  

This class introduces the theory behind computers and computing aimed at answering the question, “What are the capabilities and limitations of computers?” It covers automata theory, computability, and complexity. The automata theory portion includes finite automata, regular expressions, non-determinism, non-regular languages, context-free languages, pushdown automata, and non-context-free languages. The computability portion includes Turing machines, the Church-Turing thesis, decidable languages, and the Halting theorem. The complexity portion includes big-O and small-o notation, the classes P and NP, the P vs. NP question, and NP-completeness.

Prerequisite: CSC 220 and CSC 310  
CSC 401:  Applied Data Science    (3 credits)  

This class presents key concepts of applied data science. This is a survey of main topics in applied data science, with the goal of methods and tools used to analyze real life data and perform predictions using statistical and machine learning methods. Topics covered include data collection, data management, exploratory data analysis, statistical and machine learning, and communication.

CSC 405:  Internet of Things and Artificial Intelligence Analysis    (3 credits)  

Students will learn throughout this course the overall market around the Internet of Things (IoT), the expansive quantity globally, the technology used to build these kinds of devices, how they communicate, how they store data, and the kinds of distributed systems needed to support them. Students will further understand and appreciate the role big data, cloud computing and data analytics in a typical IoT system. This course will also explore the basics of modern Artificial Intelligence (AI) and some of the representative applications of AI, as well as exposing students to the basic ideas, challenges, techniques, and problems in AI.

CSC 420:  Cryptography    (3 credits)  

Cryptography is an indispensable tool for protecting information in computer systems. This course explains the inner workings of cryptographic primitives and how to correctly use them. Students will learn how to reason about the security of cryptographic constructions and how to apply this knowledge to real-world applications. The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. We will examine many deployed protocols and analyze mistakes in existing systems.

CSC 425:  Software Vulnerabilities and Security    (3 credits)  

This course seeks to help students to become aware of systems security issues and to gain a basic understanding of security. Presents the principal software and applications used in the Internet, discussing in detail the related vulnerabilities and how they are exploited. Also discusses programming vulnerabilities and how they are exploited. It examines protection and detection techniques. It includes a number of practical lab assignments as well as a discussion of current research in the field.

CSC 430:  Innovation Lab: Research and Development    (3 credits)  

This project-based class offers an opportunity to conduct research under faculty supervision. It allows an opportunity to explore more advanced concepts in software development and allow hands on project-based opportunity in which the students design, document, implement, test, and modify software projects of advanced level. This course utilizes project-based learning.

Prerequisite: CSC 101, CSC 215, and CSC 310  
CSC 435:  Innovation Lab: Advanced Software Implementation & Production    (3 credits)  

This project based class covers software life cycle models (waterfall, spiral, and so forth), domain engineering methods, requirements analysis methods (including formal specifications), software design principles and methods, verification and testing methods, resource and schedule estimation for individual software engineers, component-based software development methods and architecture, and languages for describing software processes. Includes a project where some of the software engineering methods (from domain modeling to testing) are applied in an example.

Prerequisite: CSC 101, CSC 215, and CSC 310  
CSC 440:  Advanced Topics in Cybersecurity    (3 credits)  

In this class, we will explore the context and foundational questions of security research and practice in general, such as: why are some security technologies deployed successfully and others fail, how we measure security and assess risk, and the economics of security. We will also learn to have an attacker's mind by studying various recent attacks. These questions and studies will help the students develop a foundation and a well-rounded view of the cybersecurity sphere. We will explore how to define and address security research questions in these settings. In particular, we will discuss new threats emerged from these new platforms and applications such as IoT, the rich cloud and mobile platforms, and SCADA systems, study various analysis techniques and tools for vulnerability discovery and threat analysis, and explore approaches for building in better security in these platforms and applications.

CSC 455:  Capstone Project    (3 credits)  

Students write an in-depth research paper that reflects upon and analyzes the observations and experiences of the field study using the computer science literature to interpret and better understand those experiences. It requires students to give a twenty- to thirty-minute formal presentation on a topic of their research.

CSC 499:  Computer Science Internship    (6 credits)  

The internship in Computer Science is a supervised practical learning experience designed to give students the opportunity to explore career interests in fields related to communications, to acquire valuable on-the-job experience, and to put into practice the knowledge and skills acquired through course work.