Computer Science Courses (CS)
CS 2210 - Applications of Computer Science (3)
This course provides students the concepts of data and techniques in data centric applications. The topics include but not limited to data entry, retrieval, preparation, analysis and visualization. Software tools are introduced to help the tasks.
CS 2220 - Numerical Methods in Computing (3)
Introduces a broad range of mathematical problems and their applications in scientific computing using various numerical computation techniques. Topics include but not limited to numerical analysis, floating point arithmetic, computational algebra, iterative solution to nonlinear equations and interpolation. Prerequisite: MTH 1112.
CS 2250 - Computer Science I (3)
An introduction to the theory and development aspects of a high-level programming language. The course covers programming methodologies, control structures, predefined and user defined functions, input/output streams, control structures, logical expressions, enumeration, repetition, multidimensional array and string manipulation, structures, searching, sorting techniques, and advanced input/output. Program analysis, design, development, and testing are emphasized. Prerequisite: MTH 1112.
CS 2255 - Computer Science II (3)
A continuation of Computer Science I to include advanced programming techniques including classes and data abstractions, inheritance and composition, pointers, virtual functions, overloading, exception handling, and recursion. Students analyze, design, implement, and test complex programs. Prerequisite: CS 2250.
CS 2265 - Advanced Programming I (3)
Provides student the opportunity to gain experience and training in an additional high-level language. The course focuses on advanced topics including objects, structures, applets, graphics, exception handling, files, and streaming. Prerequisite: CS 2250.
CS 3310 - Foundations of Computer Science (3)
A broad perspective of computer science concepts intended as preparation for more in-depth coverage in higher-level courses. Topics include machine and assembly language programming, computer system organization and operation, logic circuits, finite-state diagrams and programming language grammar, Boolean algebra, and circuit design considerations. Prerequisite: MTH 1112.
CS 3320 - Business Systems Programming (3)
The study and application of a business-oriented programming language. Students apply a structured, multiphase program development process that features a series of steps involving understanding of problems, formal problem definition, design methodologies, program specification, and file definition as applied to business processing systems. The course includes the study and application of the following concepts: structured design methodology, divisions, arithmetic and intrinsic functions, decisions structures and logical control structures, iterative processes, case structure, error capture, batch processing, file manipulation, table manipulation, and interactive structures. Prerequisite: CS 2255.
CS 3323 - Data Structures (3)
A survey of data structures that includes lists, ordered lists, linked lists, stacks, queues and trees. Also included are measurement of program performance and how program performance is affected by alternative data structures. These concepts are presented within an object-oriented framework. Programming labs are included. Prerequisite: CS 2255, MTH 1125, 2215.
CS 3325 - Operations Research (3)
Introduction to operations research, linear programming, simplex-based sensitivity analysis and duality, linear programming applications, network models, simulation, waiting line models, Markov processes, forecasting, and inventory models. Prerequisites: MTH 1125
CS 3329 - Analysis of Algorithms (3)
Alternative techniques to solve computer science problems are presented. Problems include sorting, searching, and graph traversal, lists, ordered lists, linked lists, stacks, queues, and trees. These concepts are presented within an object-oriented framework. Prerequisite: CS 3323.
CS 3330 - Data Structures and Algorithms (3)
A course in fundamental data structures concepts and alternative techniques for solving real-world problems in computer science. Concepts and application covered include analysis of data representation and associated algorithms, including linked lists, queues, stacks, arrays, graphs, trees, searching, sorting, string matching, and the application of recursive techniques. The course will place an emphasis on the implementation of various algorithms and data structures. Prerequisites: CS 2255, MTH 2201, 2215.
CS 3331 - Fundamentals of Artificial Intelligence (3)
Approaches to the definition of artificial intelligence and to the design and implementation of intelligent computer systems. Topics include the Turing Test, Sourly; Chinese Room, blackboard systems, logic programming, knowledge based systems, scripts and schemas, and heuristic search techniques. Prerequisite: CS 3323 or 3330.
CS 3332 - Software Engineering I (3)
Topics are presented that focus on the design and development techniques for large high quality software systems. They include project management issues, analysis and design methods, and approaches to testing. Prerequisite: CS 3323 or 3330.
CS 3333 - Introduction to Cryptography (3)
Discussion of mathematical foundations to the theory of cryptography. Topics include information theory, number theory, cryptographic protocols and various algorithms. Prerequisite: MTH 1125.
CS 3334 - Foundations of Cyber Security (3)
Course provides an introduction to cyber security. Topics include security protocols and policies, basic cryptography, various kinds of cyber threats and defenses, secure software design, key management, attack modeling and risk analysis. Prerequisite: MTH 1112
CS 3336 - Information Assurance (3)
This course focuses on the managerial aspects of information security and assurance. Topics include access control model, information security governance and information security program assessment and metrics. Foundational and technical components of information security is discussed as well. Prerequisites: CS 3334
CS 3347 - Advanced Programming II (3)
Provides student the opportunity to gain experience and training in an additional high level language. Topics include interactive techniques, arrays, multiple forms, data files and databases, grids, graphics, and custom objects. Emphasis is on finding creative solutions to application problems. Prerequisite: CS 2255.
CS 3360 - Concepts of Object Oriented Programming I (3)
Provides students the opportunity to gain experience and training in an additional high level language. The course focuses on advanced topics including classes, objects, interfaces, applications, encapsulation, exceptions, multithreading, graphics, exception handling, files, and streaming. Prerequisite: CS 2250.
CS 3361 - Concepts of Object-Oriented Programming II (3)
The conceptual framework for object-oriented programming and systems. Topics include classes, data hiding, modularity, inheritance, and reusable code presented through the use of some object-oriented language. Prerequisite: CS 3360.
CS 3365 - Introduction to Computer Organization and Architecture (3)
Organization and operation of computer systems are discussed. Topics include, but not limited to hardware components of digital computers, performance of computer systems, instruction set architectures, processor design, memory mapping and management and interrupt organization. Prerequisite: CS 3310.
CS 3370 - Nature of Programming Languages (3)
Basic principles and concepts of programming languages including what a programming language is, various paradigms that a language can follow, and how its syntactical and semantic structures can be specified. The traditional object-oriented paradigm will be presented as well as non-traditional paradigms based on symbolic logic (logic programming) and on functions in lambda calculus (functional programming). Prerequisite: CS 3323 or 3330.
CS 3372 - Formal Languages and the Theory of Computation (3)
Formal language theory, including the Chomsky hierarchy, is presented. Emphasis is placed on regular and context free grammars, finite state automata, and translators. Prerequisite: CS 3323 or 3330.
CS 3375 - Foundations of Networking (3)
An introduction to the principles of data communications and network systems. Topics to be addressed include standards, topologies, network management, LAN, WAN, Internet, basic communication protocols and introductory level network security. Prerequisite: CS 3310. Students majoring in Applied Computer Science or in the Computer Science Program may not apply this course to the Cyber Security Minor or certificate. Credit will not count toward a major or minor in Computer Science.
CS 4401 - Advanced Artificial Intelligence (3)
A continuation of Fundamentals of AI. A topic of research including logic programming, fuzzy sets genetic algorithms, artificial neural networks, or pattern analysis is included. Prerequisite: CS 3331.
CS 4410 - Introduction to Machine Learning (3)
The course introduces machine learning concepts, algorithms, and applications, topics covered included but not limited to regressions, clustering, decision tree, Bayesian learning, support vector machine, deep learning, feature reduction, hypothesis, bias, and model fitting. The course will discuss applications of machine learning with an emphasis on programming and real world problem solving. Prerequisite: CS 3323 or CS 3330.
CS 4420 - Introduction to Database Systems (3)
The fundamental concepts and structures necessary for the design and implementation of a database management system. Students design, load, and query a database using tools such as E-R diagrams and SQL. Also includes data normalization and file and index organization. Prerequisite: CS 3323 or 3330.
CS 4443 - Web Application Development (3)
Provides the essentials of Internet programming. Students will design and implement web applications utilizing various web technologies for the front-end and back-end development of the website. Applications will deal with many forms of data including graphics, audio, and video. Students use modern development tools and design methods to implement an enterprise web application. Prerequisite: CS 3323 or 3330.
CS 4445 - Data Communication and Networking (3)
Provides an overview of local-area and wide-area networked systems. Topics include but not limited to standards, topologies, management, and communication protocols. This course will discuss network systems with an emphasis on programming and real-world application development. This course involves hands-on projects. Prerequisite: CS 3323 or 3330. Students majoring in Applied Computer Science or in the Computer Science Program may not apply this course to the Cyber Security minor or certificate.
CS 4447 - Systems Analysis and Design (3)
Study of the analysis of computer-based information systems. Emphasis is placed on analysis, specifications development, design, and development of information systems, including the software and databases that support the business needs of organizations. Both data-oriented and process-oriented design methods are covered. Topics include the systems analyst, the systems development life cycle, methodologies, development technology, systems planning, project management, systems analysis, systems design, systems implementation, and systems support. Prerequisite: CS 3323 or 3330.
CS 4448 - Operating Systems (3)
An overview of operating system functions and components. Issues include process definition, scheduling, and memory management. Various modern operating systems are compared. Prerequisite: CS 3323 or 3330.
CS 4449 - Applied Networking (3)
Provides an overview of computer networks and its use in industry environments. Topics include OSI model, TCP/IP, Ethernet, wireless network, client-server network, network hardware and software, network administration, application software, internet working components, and key issues in network management. Prerequisite: CS 3375 or CS 4445.
CS 4451 - Computer Security (3)
Basic security concepts and principles applied to real-world applications. Introduces the major elements that go into a security implementation, including encryption, authentication, access control lists, execution control lists, vulnerability of operating systems, auditing, performing vulnerability analysis and risk assessment, developing a security plan and protecting data, systems and infrastructure. This course also builds on the fundamentals of reliability and safety engineering, which include software reliability, growth models, testing and stopping-rules, safety methods and redundancy. Prerequisite: CS 3323 or 3330.
CS 4452 - Cyber Security Policies and Compliance (3)
Course introduces the development of effective cybersecurity policies within the organization-wide cybersecurity framework. Topics including cyber law, cyber policy, intellectual property, privacy, professional responsibility, and global societal impacts. Prerequisite: CS 3334.
CS 4453 - Ethical Hacking (3)
Course provides an introduction to the principles, techniques, and tools of ethical hacking. Topics include information gathering and scanning, vulnerability analysis and exploitation. Emphasis is placed no hands-on and practical real world security threats and remedies. Prerequisite: CS 4445 or CS 4449.
CS 4454 - Secure Software Development (3)
Focuses on a comprehensive understanding of what the secure software development is. Topics include but not limited to secure software programming concepts and techniques and its application to identify threats and vulnerabilities of software. In addition, students will have opportunities to apply secure requirement process to the secure software life cycle (SSDLC), including requirement specification, requirement analysis and architectural design. Prerequisite: CS 3323.
CS 4455 - Cyber Security Techniques and Practices (3)
This course introduces various tools and techniques used to secure computer systems. Topics include packet analysis with diagnostic software, firewall configuration, conduct forensic investigation, etc. Prerequisite: CS 4453.
CS 4456 - Front-End Development (3)
Front end development and performance issues are discussed. Contemporary front-end UI tools and frameworks are studied. Focus will be on java script-based frameworks and data styling and presentation solutions for building UIs. Students will learn how to build service oriented responsive client-side applications. Prerequisite: CS 4443.
CS 4457 - Server-Side Development (3)
Server-side development, performance and testing issues are discussed. Students will learn about back-end as a service and database solutions for CRUD (Create, Read, Update, Delete) operations. REST API development model is followed. Prerequisite: CS 4443.
CS 4458 - Mobile Application Development (3)
Application development issues for mobile handheld devices are discussed. Students will learn about components in smart phones including but not limited to services, inter-process communication, content providers, etc. Focus will be on the test-driven development of maintainable mobile apps. Both front end and back-end issues will be discussed using a state-of-the-art programming framework. Prerequisite: CS 3360.
CS 4461 - Software Engineering II (3)
This course is a continuation of Software Engineering I with additional topics that include software quality insurance and testing techniques. Students will design, implement and test a large project. Prerequisite: CS 3332.
CS 4462 - Special Topics in Object-Oriented Programming (3)
This course is a continuation of CS 3361. It presents the conceptual framework for the design of object-oriented systems. Topics include re-factoring designs and design patterns, presented through the use of some object-oriented language. Prerequisite: CS 3361.
CS 4499 - Internship in Computer Science (1-3)
The Computer Science Internship is a supervised work experience that provides students with the opportunity to gain applied work experience in their field of study. Prerequisites: Chair's/Program Director's Approval Needed.
CS 4480 - Study Abroad in Computer Science (1-3)
The Computer Science Study Abroad provides students with the opportunities to take computer science courses at universities overseas. Prerequisites: Chair's/Program Director's Approval Needed.