CSCI: Computer Science (CSCI)

CSCI 100. Introduction To Computers. (3 Credits)

Brief history of computers. Computer architecture: Processing, Input/Output and Communication Devices. Software: operating systems and applications. The Internet, networking and mobile computing. Introduction to basic application programs.

CSCI 101. Intro the Cmptr Sci Profession. (2 Credits)

CSCI 101 Introduction to the Computer Science Profession - 2 semester hours F, Sp This course introduces students to the range of professions and research fields within computer science, addresses misconceptions about the field, and describes the distinction between computer science and other computing fields such as information systems and computer engineering. In addition, this course familiarizes students with the requirements and expectations for computing career paths including the importance of obtaining relevant research or career experiences, preparing personal statements, obtaining letters of reference, preparing successful applications, and following a professional code of ethics. Students will be introduced to the curriculum by completing introductory projects, aligned with each of the core computer science courses. when completing the course projects, students will be guided to develop essential skills that a computer science professional will need in order to keep pace with rapid changes in this evolving field. Such skills as improving organization, prioritizing and scheduling work tasks, working effectively in teams, applying effective methodologies for learning and reading, and using resources effectively will be discussed in the context of continued professional development and self-growth. Prerequisites(s): Major/Minor in Computer Science Co-requisite(s): CSCI 150 Programming I; CSCI 151 Programming I Lab.

CSCI 120. Introduction to Programming. (3 Credits)

An introduction to basic programming concepts using visual, graphical programming environments, and simple game design approach.

CSCI 150. Programming I. (3 Credits)

Introduces fundamental concepts of programming from an object-oriented perspective. Emphasizes problem solving, basic software design principles, and programming skills in a programming language that supports the object-oriented paradigm. Coverage includes simple data types, control structures, array and string data structures, basic testing and debugging. Students must be co-enrolled in CSCI 151. Co-requisites: CSCI 101 Introduction to Computer Science Profession and CSCI 151 Programming I Labs.

CSCI 151. Programming 1 Lab. (1 Credit)

Hands-on programming exercises on topics covered in CSCI 150. Students must be co-enrolled in CSCI 150. Co-requisites: CSCI 101 Computer Science Profession and CSCI 150 Programming I.

CSCI 250. Programming II. (3 Credits)

Continuation of CSCI 150. Builds on knowledge of fundamentals of programming to include more advanced object-oriented concepts, file I/O, basic sorting and searching, exception handling, and classic data structures such as arrays and lists. A programming-intensive course to develop software design and implementation skills. Students must be co-enrolled in CSCI 251. Co-requisite: CSCI 251 Programming II Lab Prerequisite: CSCI 150 Programming I; CSCI 151 Programming I Labs.

CSCI 251. Programming II Lab. (1 Credit)

Hands-on programming exercises on topics covered in CSCI 250. Students must be co-enrolled in CSCI 250. Co-requisite: CSCI 250 Programming II Prerequisites: CSCI 150 Programming I; CSCI 151 Programming I Labs.

CSCI 281. Discrete Structures. (3 Credits)

Recursion and Solutions of recurrence relations, Introduction to Graph Theory, Trees, Language and Grammars, Finite State Machines. Prerequisite: MATH 280 Discrete Mathematics for Computer Science 201608.

CSCI 287. Data Structures. (3 Credits)

This course emphasizes the implementation of programs that make use of lists, stacks, queues, trees, and hash tables in a variety of application settings. Several common algorithmic paradigms (such as recursion, searching, sorting, dynamic programming, divide and conquer) and their applications are also discussed. Prerequisites: CSCI 250 Programming I and CSCI 251 Programming I Lab.

CSCI 296. Web Programming. (3 Credits)

A programming intensive course that introduces the essential knowledge for website development. The course begins with web server installation and the fundamental web technologies (HTML, CSS, XML). It focuses mainly on client-side and server-side programming which exposes students to the techniques used in dynamic interactive websites. Prerequisites: CSCI 287 Data Structures 202005.

CSCI 298. Internship Computer Science I. (1 Credit)

CSCI 298 Internship in Computer Science - 1 semester hour F, Sp The internship allows students to obtain practical work experience related to computer science under the Computer Science faculty's supervision. Students must complete a Memorandum of Agreement prior to commencing the Internship. Course may be taken more than once for credit but no more than 3 times. Prerequisite(s): Permission of Department Chair.

CSCI 303. Computer Org & Architecture. (3 Credits)

A treatment of computer organizations and architectures. Digital logic, data representation at logical and machine level, assembly level organization, memory systems, interfacing and communications as well as performance enhancements architecture elements. Discussion of different computer architecture and organizations. Programming in the assembly language. Prerequisites: CSCI 250 Programming in C++ II; CSCI 251 Programming in C++ II Labs 201608.

CSCI 312. Introduction to Robotics. (3 Credits)

A basic treatment of robotics systems in practice and research. It surveys selected topics in vision, kinematics and inverse kinematics, motion planning, trajectory generation, localization, sensors, programming and design, and artificial intelligence. Laboratory and projects are integral components of the course. Prerequisite: CSCI 250 Programming in C++ II or equivalent Co-requisite: MATH 325 Linear Algebra or permission of instructor 201608.

CSCI 356. Database Systems. (3 Credits)

Database Design, Entity-Relationship and Relational Model, Relational Algebra, Query Language SQL, Storage and File Structures, Query Processing, System Architectures. Prerequisites: CSCI 250 Programming II and CSCI 251 Programming II Lab.

CSCI 358. Introd Information Assurance. (3 Credits)

Introduction to the confidentiality, availability and integrity goals of information systems. Topics covered include introduction to principles of information security from the perspective of the World Wide Web, identification/authentication, computer/network security, dependability, access control, security evaluation and other issues. Prerequisites: CSCI 250: Programming II.

CSCI 361. Embedded Syst: Design/Applic. (3 Credits)

The fundamentals of embedded system hardware and software design will be explored. Issues such as embedded programming, firmware design, development tools, and host communication will be discussed. Microcontrollers will be studied through a series of projects using a microprocessor evaluation board. These projects will expose students to programming tasks to work with physical sensors (such as GPS, medical sensor, etc) and write applications for smart phones, robots, unmanned vehicles and spacecraft. Prerequisites: CSCI 250 Programming in C++ II; CSCI 251 Programming in C++ II Labs 201608.

CSCI 389. Human-Computer Interaction. (3 Credits)

Facts, theories, and issues about human sensation, perception, and interaction for developing information processing systems interacted with humans. Other related human factors such as workplace, environmental, ethical and legal issues will be discussed. Software applications with rich human interface are to be designed, implemented and tested by teams of students. Prerequisites: CSCI 292 Programming in Java; CSCI 260 Objected Oriented Programming 201608.

CSCI 392. Algorithms & Adv Data Structur. (3 Credits)

Design, analysis and implementation of advanced data structures and related algorithms including trees, graphs, B-trees, advanced sorting algorithms, hashing. It is also a treatment of object-oriented concepts and objected-oriented design. Basic software engineering skills and teaming. Prerequisites: CSCI 387 Data Structures; CSCI 303 Computer Organizations 201608.

CSCI 396. Advanced Web Programming. (3 Credits)

CSCI 396 Advanced WEB Programming - 3 semester hours F, Sp A continuation of Web Programming (CSCI 296). This course aims to provide the necessary foundations for building a complete web application, focusing on utilizing front-end and back-end frameworks. Front-end development will encompass familiarity with JavaScript frameworks such as AngularJS, creating single page applications using various features such as services, components and directives, deploying responsive applications, and using observables. Back-end development will cover server platforms such as NodeJS, transfer protocols, server-side concepts such as REST and CRUD, building and configuring web server and Databases. Moreover, the course presents issues relating to security and the importance of authentication. Prerequisite(s): CSCI 296, Web Programming.

CSCI 398. Internship Computer Science II. (3 Credits)

CSCI 398 Internship in Computer Science II - 3 semester hours F. Sp The internship allows students to obtain practical work experience related to computer science under the Computer Science faculty supervision. Students must complete a Memorandum of Agreement prior to commencing the internship. Course may be taken more than once for credit but no more than 2 times. Prerequisite(s): Permission of Department Chair.

CSCI 400. Computer Science Seminar. (2 Credits)

CSCI 400 Computer Science Seminary - 2 semester hours F, Sp The focus of this course is to discuss practical skills required for research, broadly defined. The practical skills include but are not limited to skills on research process, skills on experimental methods, reading, writing, graphing, and presentation skills that are pertinent to computer scientists or software engineers. The course includes discussions of current research and developments in computer science that are facilitated by students, faculty members, or industry representatives. the current research and developments are used as examples for the discussion of the practical skills. Students are strongly encouraged to complete this course in advance of beginning CSCI 493 Senior Project I. Prerequisite(s): ENGL 342 Technical Communication or GEEN 310 Advanced Communication Skills, and Junior status or permission of Instructor. Co-requisite(s): None.

CSCI 402. Introd Artificial Intelligence. (3 Credits)

Basic problem-solving strategies, heuristic search, problem reduction AND/OR graphs, knowledge representation, expert systems, generating explanations, uncertainty reasoning, game playing, planning, machine learning, computer vision, and programming systems such as Lisp or Prolog. Prerequisite: CSCI 387 Data Structures 201608.

CSCI 445. Computer Communication Network. (3 Credits)

ISO model for communications. Protocols for physical, data link and network communications. Sockets. TCP/IP. Applications. Protocol correctness and efficiency. Error detection and recovery. Local-area and Wide-area networks. Prerequisites: CSCI 250 Programming in C++; CSCI 251 Programming in C++ II Labs 201608.

CSCI 450. Computer Forensics. (3 Credits)

ISO model for communications. Protocols for physical, data link and network communications. Sockets. TCP/IP. Applications. Protocol correctness and efficiency. Error detection and recovery. Local-area and Wide-area networks. Prerequisites: CSCI 250 Programming in C++; CSCI 251 Programming in C++ II Labs 201608.

CSCI 451. Computer Security. (3 Credits)

This course focuses on communication security in computer systems and networks. It is intended to provide students with a comprehensive introduction to the field of network security. The course covers critical network security services such as authentication and access control, integrity and confidentiality of data, routing, firewalls, virtual private networks, and web security. Where appropriate, we examine threats and vulnerabilities to specific architectures and protocols. Prerequisites: CSCI 358: Introduction to Information Assurance 201608.

CSCI 452. Introd to Cryptography. (3 Credits)

This course introduces cryptography and encryption concepts and how they are applied in real-world situations in order to implement strong and reliable security safeguards. This course will survey the various cryptography and encryption methods used in today's information technology and communications environments as well as to review the considerations for selecting commercial products that support encryption technology. Prerequisites: CSCI 358: Introduction to Information Assurance; CSCI 387: Data Structures 201608.

CSCI 453. Digital Image Processing. (3 Credits)

Introduction to the fundamentals of digital image processing. It emphasizes general principles of image processing, rather than specific applications. It covers topics such as image acquisition and display, properties of the human visual system, color representations, sampling and quantization, point operations, linear image filtering and correlation, transforms and nonlinear filtering, contrast and color enhancement, digital image file formats etc. Prerequisites: CSCI 387: Data Structures 201608.

CSCI 456. Advanced Database Applications. (3 Credits)

Applications of advanced database systems. Students will work on a series of projects using industry standard software. Prerequisite: CSCI 356 Database Systems.

CSCI 457. Introduction to Data Mining. (3 Credits)

CSCI 460. Computability & Formal Lang Th. (3 Credits)

Formal models of computation such as finite state automata, pushdown automata and Turing machines. Formal definitions of languages, problems, and language classes including recursive, recursively enumerable, regular, and context free languages. Halting problems, undecidable problems, recursive functions, Chomsky hierarchy, Church’s thesis and the limits of computability. Proofs of program properties including correctness. Prerequisite: CSCI 281 Discrete Structures 201608.

CSCI 462. Compiler Construction. (3 Credits)

Exploration of the design of programming language translators. Includes parsing, run-time storage management, error recovery, and code generation and optimization. Prerequisites: CSCI 485 Programming Languages and CSCI 460 Computability and Formal Language Theory.

CSCI 471. Parallel & Distributed Program. (3 Credits)

CSCI 471 Parallel and Distributed Programming - 3 semester hours (Core) F, Sp The course covers the practical aspects of designing and developing software that runs on parallel and distributed systems. The topics covered in this course include client-server programming, multi-threaded programming, message passing, shared memory, load-balancing, synchronization, and parallel GPU programming. Prerequisite(s): CSCI 445 Computer Communications Network.

CSCI 480. Computer Graphics. (3 Credits)

Techniques of modeling objects for the purpose of computer rendering: boundary representations, constructive solids geometry, hierarchical scene descriptions: mathematical techniques for curve and surface representation. Basic elements of computer graphics rendering pipeline; architecture of modern graphics display devices; Geometrical transformations such as rotation, scaling, translation, and their matrix representations. Homogenous coordinates, projective and perspective transformations: Algorithms for clipping, hidden surface removal, rasterization, and anti-aliasing. Scan-line based and ray rendering algorithms. Lighting models for reflection, refraction, transparency. Prerequisites: CSCI 387 Data Structures; MATH 301 Multivariate Calculus; MATH 325 Linear Algebra 201608.

CSCI 482. Matrix Computations. (3 Credits)

This course is fundamental for students who will pursue graduate studies of applications of computers to science and engineering. Vector and matrix Norms. Numerical Linear Algebra, condition number, singular values. Householder and Givens transformations. Orthogonalization and least Squares methods. The eigenvalue problem. Basic iterative methods: Jacobi Gauss-Seidel and SOR. Prerequisites: CSCI 250 Programming in C++ II; CSCI 251 Programming in C++ II Labs; MATH 325 Linear Algebra 201608.

CSCI 485. Programming Languages. (3 Credits)

Concepts for structuring data, computation, and whole programs. Object-oriented languages, functional languages, logic- and rule-based languages. Data Types, type checking, exception handling, concurrent processes, synchronization, modularity, encapsulation, interfaces, separate compilation, inheritance, polymorphism, dynamic binding, sub typing, overloading, beta-reduction, unification. Prerequisite: CSCI 387 Data Structures 201608.

CSCI 487. Software Design And Developmen. (3 Credits)

A formal approach to current techniques in software design and development. Students work in teams in the organization, management, and development of a large software project. Prerequisite: CSCI 387 Data Structures 201608.

CSCI 488. Advanced Systems Architecture. (3 Credits)

Fundamentals of uniprocessors and multiprocessors, scheduling, speculation, and multithreading. Prerequisite: CSCI 489 or its equivalent.

CSCI 489. Operating Systems. (3 Credits)

Fundamentals of operating systems design and implementation. Topics include an overview of the components of an operating system, processes and implementation of processes, mutual exclusion and synchronization, scheduling, memory management, and file systems, as well as discussion on Windows, Unix/Unix-like, and real-time operating systems. Prerequisite: CSCI 387 Data Structures 201608.

CSCI 492. Algorithms And Complexity. (3 Credits)

Recommended for students pursuing a graduate degree in Computer Science, definitions of algorithm and its complexity, proof of correctness of an algorithm, notion of time and space complexity, the complexity hierarchy, average and worst case complexity, complexity of search and sorting algorithms, recurrence relations arising from basic algorithms, linear and non-linear recurrences, divide-and-conquer algorithms, dynamic programming. Prerequisite: CSCI 387 Data Structures 201608.

CSCI 493. Senior Project I. (3 Credits)

The investigation of special problems in computer science on an individual basis. The student must submit a proposal of this investigation. The result of the investigation will be printed in a report. Prerequisite: Senior level standing in Computer Science or consent of Instructor 201608.

CSCI 494. Senior Project II. (3 Credits)

This is the second course in the two-course senior project sequence. The students will complete a well-tested implementation of the project that they began in CSCI 493. Additional related work research, presentations, and reporting of the project will be performed. The class culminates in a demo day, where students present their projects to faculty, students, and external visitors. Prerequisites: CSCI 493 Senior Project.

CSCI 495. Topics In Computer Science. (3 Credits)

Topics vary depending upon needs of students and current interest of the instructor. Students interested in the specific content of this course as offered in a particular term should consult the instructor. Prerequisite: Consent of Instructor 201608.

CSCI 496. Web Design & Cyber Security. (3 Credits)

An introduction to Web design and site management. Topics include JavaScript, PHP, database, and web security such as identifying and avoiding web vulnerabilities, detecting and preventing phishing, hacking and etc. Prerequisites: CSCI 358 Introduction to Information Assurance and CSCI 287 Data Structures.