Academic Catalog

2020-2021 Undergraduate Academic Catalog

Computer Science Major

App View

Degree Type Offered: B.S. Major

The major consists of 41-50 credits.

Students choose one of three tracks: Cybersecurity, Full-Stack Software Development, and Theoretical Computing. The following core courses are required for each track, consisting of 32 credits:

CSCI-101 Programming I

Credits: 4 Term Offered: Fall and Spring

This course introduces the fundamentals of programming in a general-purpose object-oriented programming language such as C++ or Java. Topics include data types, data representation, arithmetic and logical expressions, control structures, methods, single and two-dimensional arrays, and file I/O. The course consists of 3 credit hours of lecture and 2 hours of lab per week.

CSCI-102 Programming II

Credits: 4 Term Offered: Fall and Spring

This course is an intermediate course in programming and focuses on Object Oriented Programming and Event-Driven Programming in a high-level programming language. Topics include inheritance, polymorphism, class design, generics, lambda expressions, map-reduce transformations, building GUIs, and an introduction to common data structures. The course consists of 3 credit hours of lecture and 2 hours of lab per week. Prerequisites: A grade of C or greater in CSCI-101 or both CSCI-100 and a grade of C or greater on the CSCI-101 assessment exam.

CSCI-210 Discrete Mathematics

Credits: 3 Term Offered: Fall Only

This course focuses on the fundamentals of discrete mathematics applicable to computer science. The main goals are to learn the mathematical representation of collections of items and their relationships, selection and ordering of items, mathematical reasoning for proofs, model modeling, concepts about probability and computation theory. Topics include: Sets, Relations and Functions, Inductive and Deductive reasoning, Permutations and Combinations, Graphs, Probability, FSMs, PDAs, LBAs (or Regular, Context-Free, Context-Sensitive Grammars) and Turing machines. Prerequisites: MATH-110

CSCI-220 Data Structures and Algorithms

Credits: 3 Term Offered: Spring Only

Advanced programming techniques will be covered with extensive use of recursion and dynamic data structures. Abstract data types including lists, stacks, queues, trees and hash tables are studied. Algorithms for searching and sorting are explored. The topics in this course provide an essential foundation for the further study of computer science. A general-purpose object-oriented programming language such as C++ or Java will be used to illustrate these topics. Prerequisites: A grade of C or greater in CSCI-102

CSCI-320 Algorithm Analysis and Design

Credits: 3 Term Offered: Fall Only

This course covers the principles of algorithm design and analysis. Different approaches to design such as divide and conquer, greedy, and dynamic programming are covered. Advanced data structures beyond the basic lists, stacks and trees are also introduced such as red-black and AVL trees. Proving the correctness of algorithms and analysis using advanced techniques such as the master theorem are covered. Tractability of algorithms is discussed including NP-Completeness. Prerequisites: CSCI-210 and CSCI-220

CSCI-341 Computer Architecture

Credits: 3 Term Offered: Fall Only

Introduction to computer systems and their organization. Topics include CPU design and construction using logic gates, data representation, and assembly language representation of common programming language constructs including conditionals, loops and functions. The gcc compiler and the C programming language will be used to illustrate these topics. Prerequisites: CSCI-210 and CSCI-220

CSCI-342 Operating Systems

Credits: 3 Term Offered: Spring Only

Covers principles of computer operating systems including the management of processes, memory, I/O devices, and file systems. Other topics include issues of scheduling, security, and concurrency, distributed systems and virtualization. Students will gain practical experience working with the LINUX operating system, the C programming language, and various system libraries. Prerequisites: CSCI-341

CSCI-350 Computer Networks

Credits: 3 Term Offered: Spring Only

Networked machines are at the core of today's computing world. This course covers the theory and practice of networking, from applications to the physical components including IP, routing, internetworking, TCP/UDP, congestion control, wireless and security. All the concepts are demonstrated using network simulation software and tools. Students will implement many algorithms for networking such as routing and communication in a contemporary programming language. Prerequisites: CSCI-210 and CSCI-220

CSCI-400 Software Engineering

Credits: 3 Term Offered: Fall Only

This course is a project-based course that covers the tools and processes used in modern software development. Students will work in teams to design, implement, test, and document a software system. Various topics are discussed including Agile development, software repository management, and licensing. Prerequisites: Senior standing in the computer science major or both CSCI-220 and permission by instructor

DSA-230 Database Systems

Credits: 3 Term Offered: Spring Only

Introducing database systems and database management. The emphases are database design and implementation. The topics covered include ERM (ERD) and EERM (EERD), relational and object-oriented database design, SQL and QBE. This course focuses on practical skill in database design and implementation. Prerequisites: CSCI-210 or permission of instructor

The remaining credits come from the tracks as follows students choose one:

Cybersecurity Track

Consists of 9 credits, including the following courses:

CSCI-360 Introduction to Cybersecurity

Credits: 3 Term Offered: Fall Only

This course is an introduction to cybersecurity. The course will discuss cybersecurity concepts, security domains, threat space, risks, auditing, access controls in file systems, cryptography, and writing security policies and standards. The course will discuss different categories of malware. We will discuss some methods an adversary can use to attack information systems. Prerequisite: CSCI-205 and CSCI-225 Offered alternate years

CSCI-362 Applied Cryptography

Credits: 3 Term Offered: Spring Only

This course is about the fundamentals of cryptography and its applications. Details of classical and contemporary cryptographic algorithms are first examined along with techniques to break them. Next, the various applications of cryptography are explored including web, email, network authentication and digital currencies. Students will use both software tools (GUI and/or command-line) for testing ciphers and use crypto API in a programming language to design programs as well. Prerequisites: CSCI-210 and CSCI-220 Corequisite: CSCI-350

CSCI-460 Network Security

Credits: 3 Term Offered: Spring Only

Networks are a key aspect of computing. Security issues in various aspects of networking are examined in this course including network programming and network administration. All layers of TCP/IP are studied for vulnerabilities and protection mechanisms. Network defense tools such as IDPS and firewalls are explored. Practical, lab-based activities using network simulators, packet sniffers, and software tools are included throughout the course for demonstration and training. Prerequisites: CSCI-360 Offered alternate years

Full-Stack Software Development Track

Consists of 18 credits, including the following courses:

ART-120 Introduction to Visual Design

Credits: 3 Term Offered: Fall and Spring

A studio project-based introduction to the elements and principles of 2-D and 3-D design in visual art and communication contexts. Emphasis is on visual problem solving, mastery of visual design principles, technical proficiency, and critical analysis of how visual images communicate. This course provides a foundation for students planning to take advanced courses in any art media and other fields in which visual imagery plays an important role. As a stand-alone course Art 120 provides critical and practical skills related to visual communication.

ART-322 Web Design and Development

Credits: 3 Term Offered: Fall Only

Design and construct websites using current HTML and CSS standards and digital tools including Brackets, Dreamweaver and Photoshop. Emphasis on design process, content development and professional workflows.

ART-323 Graphic Design

Credits: 3 Term Offered: Spring Only

A studio based exploration into visual communication with typography and images using Adobe Creative Cloud applications. Emphasis is placed on the design process and creative thinking. Corequisite: ENG-110 FILA general education: fine arts and music

ART/DMS-422 Web Design and Development II

Credits: 3 Term Offered: Fall Only

A continuation of Art 322 using team-based approaches to web design and development. Emphasis is placed on developing fully responsive websites and designing for interactivity. Prerequisites: ENG-110, COMM-100, and ART-322, or permission of instructor

and

CSCI-230 Web Scripting

Credits: 3 Term Offered: Fall Only

This course introduces the JavaScript programming language. Students learn how to use JavaScript to dynamically create and manipulate elements within web pages. Advanced JavaScript utilities such as rest operator, generators, destructuring, object literals, arrow functions, modern classes, and promises are also discussed. Prerequisites: A grade of C or greater in CSCI-100 or a grade of C or greater in CSCI-101

CSCI-430 Server-Side Web Development

Credits: 3 Term Offered: Spring Only

This course covers servers-side web application development. Students will learn to set up a development server and develop web application servers that incorporate database connectivity and user authentication, and that provide RESTful APIs. Topics also include web protocols and security issues. Prerequisites: CSCI-220, CSCI-230, and DSA-230 Offered alternate years

CSCI-432 Client-Side Web Development

Credits: 3 Term Offered: Spring Only

This course covers the design and development of rich reactive web UI's using front-end JavaScript frameworks such as Bootstrap, Angular.js, React.js and Vue.js. Prerequisites: CSCI-220, CSCI-230, and DSA-230 Offered alternate years

Theoretical Computing Track

Consists of 9 credits, including the following courses:

CSCI-410 Numerical Algorithms

Credits: 3 Term Offered: Fall Only

This course studies algorithms for generating and using mathematical objects such as permutations and subsets. It also studies algorithms for efficient computing of mathematical quantities such as exponents and numbers modulo n. It will also study topics in computational geometry such as determining whether two line segments intersect. Prerequisites: CSCI-210 and CSCI-220 Offered alternate years

CSCI-412 Theoretical Cryptography

Credits: 3 Term Offered: Spring Only

This course studies the mathematical theory behind cryptographic systems including the RSA encryption algorithm. It will also examine ways of breaking current encryption systems. Prerequisites: CSCI-210 or MATH-300 Offered alternate years

CSCI-414 Coding Theory

Credits: 3 Term Offered: Fall Only

This course studies the detection and correction of errors which occur when transmitting data. It will include maximum likelihood and nearest neighbor decoding, linear codes, and Hamming codes. Prerequisites: CSCI-210 or MATH-300 Offered alternate years