Computer Science (CS) Courses
CS 101 INTRODUCTION TO COMPUTER SCIENCE PRINCIPLES (3-0-3)(F/S). Introduction to the central ideas, practices, and impact of computer science and computational thinking. Covers the seven big ideas in computer science: creativity, abstraction, data and information, algorithms, programming, the internet, and global impact. Computational thinking practices: connecting computing, creating computational artifacts, abstracting, analyzing problems and artifacts, communicating, and collaborating. PREREQ: MATH 108 or satisfactory placement score.
CS 111 INTRODUCTION TO PROGRAMMING (3-0-3)(F,S). An introduction to the syntactic and execution characteristics of programming, including selection statements, loops, arrays, functions, classes, and objects using the Python programming language. Emphasis is on construction, compilation, debugging, and execution of complete programs that implement given algorithms or solve simple problems. PREREQ: MATH 108 or a satisfactory placement score.
CS 117 C++ FOR ENGINEERS (3-0-3)(F,S). An introductory course in computer programming using C++. Topics include: scalar types; aggregate types; pointers and reference types; statements; expressions; functions; libraries; and a brief introduction to classes, objects, and overloading. Emphasis is on: development, compilation, debugging, and execution of complete programs implementing given algorithms for numerical, scientific, and engineering applications. PREREQ: MATH 170.
CS 121 COMPUTER SCIENCE I (4-0-4)(F,S). Introduction to object-oriented problem solving and programming. Software development process. Data and expression, conditionals and loops, arrays and lists, and classes and interfaces. Introduction to graphical user interfaces (GUIs). Guided, in-class programming activities and targeted projects to teach problem solving and software development skills. PREREQ: MATH 170.
CS 133 FOUNDATIONS OF DATA SCIENCE (3-0-3)(F,S). Introduction to Python programming and common Python data science libraries. Simple data visualization. Introduction to basic statistics including distributions and random sampling, testing statistical hypotheses, estimation, prediction, comparison, causality, and decisions. Introduction to classification methods. PREREQ: MATH 143 or satisfactory placement score.
CS 221 COMPUTER SCIENCE II (3-0-3)(F,S). Object-oriented design including inheritance, polymorphism, and dynamic binding. Graphical user interfaces. Recursion. Introduction to program correctness and testing/analysis of time/space requirements. Basic data structures: lists, collections, stacks, and queues. Basic searching and sorting. PREREQ: CS 121.
CS 230 ETHICAL ISSUES IN COMPUTING (3-0-3)(F,S). Privacy, intellectual property rights, computer crime, codes of conduct. Risks and liabilities of computer-based systems. Electronic information and free speech. Local and global impact of computing. PREREQ: ENGL 102, CS 121, CS-HU 130, and (COMM 101 and ENGL 212) or (ED-CIFS 201 and STEM-ED 220).
CS 233 ESSENTIALS OF DATA SCIENCE (3-0-3)(S). Introduction to data formats, data collection, data manipulation, data visualization, data cleaning, and data analysis. Introduction to probability and information theory, basic database queries, supervised classification, interpretation of results, and ethical considerations. PREREQ: CS 133.
CS 252 INTRODUCTION TO C AND SYSTEMS PROGRAMMING FOR NON-MAJORS (3-0-3)(F/S). Structure of C programs, functions, scope, arrays, structures, pointers and run-time memory management. Introduction to build systems, debugging techniques, shell scripting and process management. Basic systems programming including buffers, system calls, processes, threads and libraries. Not intended for Computer Science majors. CS 252 cannot replace CS 253 as prerequisites for CS upper-division courses. PREREQ: CS 117, or CS 121, or GIMM 110, or ITM 225.
CS 253 INTRODUCTION TO SYSTEMS PROGRAMMING (3-0-3)(F,S). Structure of C programs, functions, scope, arrays, structures, pointers, and run-time memory management. Generic programming techniques. Introduction to build systems, debugging techniques, version control, shell scripting and process management. Security vulnerabilities, buffer overflow and dynamic memory analysis. Basic systems programming including topics such as streams, buffers, pipes, system calls, processes, threads and libraries for Linux and Microsoft Windows. PREREQ: CS 221. COREQ: CS-HU 250.
CS 321 DATA STRUCTURES (3-0-3)(F,S). Sorting, searching, and order statistics. Further data structures: trees, priority queues, dictionaries, balanced search trees, B-Trees, heaps, hash tables, and graphs. PREREQ: CS 221 and MATH 189. COREQ: CS-HU 250, CS-HU 271 and CS-HU 310.
CS 330 (ECE 337)(ENGR 337)(MATH 337)(ME 337) INTRODUCTION TO SECURITY IN CYBER-PHYSICAL SYSTEMS (3-0-3)(F). Overview of systems security: hardware, software, encryption, and physical security. Includes multiple modules: system security, physical issues in security, hardware and firmware security issues, industrial control, and all things connected to the internet. PREREQ: CS 117 or CS 121 or MATH 265, PHYS 211, and MATH 189 or MATH 360 or MATH 361.
CS 331 COMPUTER SECURITY AND INFORMATION ASSURANCE (3-0-3)(F/S). Fundamentals of computer security and information assurance. Topics include security goals, access control, common software and network vulnerabilities, cryptography, security policies and procedures. PREREQ: CS 117 or CS 121, or ITM 225.
CS 332 ETHICAL HACKING (3-0-3)(S). Study of fundamental hacking techniques. Topics include information gathering, target enumeration, network sniffing, vulnerability assessment, remote exploitation, social engineering, and web hacking. PREREQ: CS 253 or CS 331 or ITM 455.
CS 333 NETWORK SECURITY AND DEFENSE (3-0-3)(S). Topics include firewalls, virtual private networks, intrusion detection, intrusion prevention, traffic analysis, techniques for responding to network attacks. PREREQ: CS 253 or CS 331 or ITM 455.
CS 334 ALGORITHMS OF MACHINE LEARNING (3-0-3)(F). Supervised classification, unsupervised classification, reinforcement learning, feature engineering, machine learning workflow, linear algebra for machine learning, evaluation metrics, survey of machine learning applications, ethical considerations. PREREQ: CS 233 and (MATH 360 or MATH 361). COREQ: MATH 301.
CS 354 PROGRAMMING LANGUAGES (3-0-3)(F,S). Principles of programming languages: design, syntax, semantics, information binding, strings, arithmetic, input/output, recursion and extensibility. PREREQ: CS 321.
CS 361 INTRODUCTION TO THE THEORY OF COMPUTATION (3-0-3)(F,S). Regular languages, finite automata, context-free languages, pushdown automata, Turing machines, decidability, introduction to reducibility and computational complexity. PREREQ: CS 321.
CS 402 MOBILE APPLICATION DEVELOPMENT (3-0-3)(F/S). A project-intensive course on mobile development using either iOS or Android as a platform. Overview of mobile platforms and their characteristics, mobile interface design and best practices using such technologies as GPS, camera, persistence, notifications and others. Platform will be announced before the beginning of each semester. PREREQ: CS 321.
CS 410 DATABASES (3-0-3)(S). Foundations of database management systems. Database models: relational, object and others. Database design: entity-relationship modeling, logical relational schema design, physical design, functional dependencies and normalization, and database tuning. Database application development using database interfaces embedded in host languages. PREREQ: CS 321.
CS 411 DATABASES FOR DATA SCIENTISTS (3-0-3)(S). Foundations of database management systems. Database models: relational, object and others. Database design: entity-relationship modeling, logical relational schema design, physical design, functional dependencies and normalization, and database tuning. Database application development using database interfaces embedded in host languages. PREREQ: CS 233.
CS 421 ALGORITHMS (3-0-3)(F,S). Asymptotic analysis and recurrences. Divide-and-conquer, dynamic programming, greedy algorithms, graph algorithms, and string matching. Introduction to tractability and NP-Completeness. PREREQ: CS 321.
CS 424 CYBER SECURITY OF CRITICAL INFRASTRUCTURES (3-0-3)(S)(Odd years). Explores vulnerabilities, threats, and mitigating controls of critical infrastructures. Examines industry standards, and protocols for protection of critical infrastructures. Discusses environmental, operational, and economic impacts of attacks and supporting mitigating controls. PREREQ: CS 253, MATH 360, PHYS 211.
CS 425 (ECE 434) COMPUTER NETWORKS (3‐0‐3)(F). Concepts and implementation of networking: physical, link, network, transport, and application layer protocols. Wireless networking and security basics. PREREQ: CS 253 and CS 321.
CS 430 PARALLEL COMPUTING (3-0-3)(F)(Even years). Models of parallel computation. Fundamental design patterns used in parallel algorithms: embarrassingly parallel, partitioning, divide and conquer, software pipelining, synchronous computations and load balancing. Implementation of parallel programs using MPI, GPUs and Map-Reduce on parallel clusters. PREREQ: CS 253 and CS 321.
CS 434 APPLIED DEEP LEARNING (3-0-3)(S)(Even Years). Introduction to multilayer perceptrons, recurrent and convolutional architectures, gradient descent, backpropagation, and regularization. Exposure to widely-used libraries and frameworks. PREREQ: CS 334 and MATH 301.
CS 436 NATURAL LANGUAGE PROCESSING (3-0-3)(S)(Odd years). Probability theory, information theory, and linguistics. Machine learning techniques applied to language data, including generative and discriminative classification related to language modeling, syntactic parsing, sequence tagging, and lexical semantics. PREREQ: CS 354 or CS 334. COREQ: MATH 301.
CS 437 INTRODUCTION TO INFORMATION RETRIEVAL (3-0-3)(F)(Odd years). An overview of Information Retrieval (IR): fundamental concepts and terminology related to IR; analyzing design methodologies and issues of IR applications; text processing, search, ranking, indexing, classification/clustering, fundamental IR models (e.g., Boolean, Vector Space, and Probabilistic models), and evaluation strategies. PREREQ: CS 321.
CS 441 (ECE 432) COMPUTER ARCHITECTURE (3-0-3)(F). Structure of computer systems using processors, memories, and input/output (I/O) devices as building blocks. Computer system instruction set design and implementation, including memory hierarchies, microprogramming, pipelining and multiprocessors. Issues and trade-offs involved in the design of computer system architectures with respect to the design of instruction sets. Cyber-physical security implications of architectural design choices. May be taken for either CS or ECE credit, but not both. PREREQ: ECE 330.
CS 450 PROGRAMMING LANGUAGE TRANSLATION (3-0-3)(S)(Odd years). Theory/practice of formal-language translation and experience with Unix compiler-construction tools. Students work on significant projects. PREREQ: CS 253, CS 321, and CS 354.
CS 453 OPERATING SYSTEMS (3-0-3)(F,S). Operating systems structure and design. Process management, concurrency and synchronization, inter-process communication, scheduling, device management, memory management, file systems and security. Case studies of multiple operating systems. PREREQ: CS 230, CS 253, CS 321, and ECE 330.
CS 455 DISTRIBUTED SYSTEMS (3-0-3)(S)(Even years). Principles and paradigms of distributed systems. Communication, processes, naming, synchronization, consistency and replication, fault tolerance and security. In-depth coverage of Remote Procedure Call (RPC), Remote Method Invocation (RMI) and socket programming. Survey of major distributed systems. Major software project. PREREQ: CS 253 and CS 321.
CS 457 INTRODUCTION TO ARTIFICIAL INTELLIGENCE (3-0-3)(F)(Odd years). Topics in artificial intelligence: informed search, game playing, constraint satisfaction and optimization, logical inference, probabilistic reasoning, and learning from observations. Significant project work demonstrating various AI techniques. PREREQ: CS 253 and CS 321.
CS 464 COMPUTER GRAPHICS (3-0-3)(F)(Odd years). Mathematics and programming techniques for computer graphics that cover raster graphics, transformations, rendering pipeline, clipping algorithms, lighting models, shading and shadows, texture mapping, antialiasing, ray tracing, non-photorealistic graphics. MATH 275 or MATH 301 recommended. PREREQ: CS 321.
CS 469 HUMAN COMPUTER INTERACTION (3-0-3)(S)(Odd years). Science-based theories and models of user interface design and development. Graphical user interfaces for desktop, web, and mobile devices. Usability assessment by quantitative and qualitative methods. Task analysis, usability tests, expert reviews, and continuing assessments of working products by interviews, surveys, and logging. Building of low-fidelity paper mockups, and a high-fidelity prototype using contemporary tools and programming environments. PREREQ: CS 321.
CS 471 SOFTWARE ENGINEERING (3-0-3)(F,S). A formal study of the software development process. Topics include: life cycle models, requirements definition, specification, design, implementation, validation, verification, maintenance, and reuse. Students work in small teams on significant projects. PREREQ: CS 321 and CS-HU 271.
CS 472 OBJECT-ORIENTED DESIGN PATTERNS (3-0-3)(S)(Even years). Reviews object-oriented design principles, explains the goals and form of design patterns, and examines several well-known patterns. PREREQ: CS 321.
CS 474 SOFTWARE QUALITY (3-0-3)(S)(Even years). Focus on two traditional verification techniques, testing and program analysis. Emphasis on structural adequacy criteria used in testing as well as experience with open-source tools used to generate test cases and obtain coverage measurements. Static analysis, including theoretical foundations, applications, and tools. PREREQ: CS 471.
CS 475 SOFTWARE SECURITY (3-0-3)(S)(Even years). Principles, techniques, and best practices for developing secure software. Emphasizes the security ramifications for different activities of software development processes. Topics include security policies, security requirements analysis, threat modeling, secure design, secure programming, and security testing and verification. PREREQ: CS 321.
CS 481 SENIOR DESIGN PROJECT (0-6-3)(F,S)(FF). Capstone experience designing, implementing, and testing an assigned software artifact. Students report progress via documentation, meetings and demos. Class concludes with a presentation and demonstration of the completed product to students, faculty and project sponsors. Topics include teamwork, communication, ethics, project management, tools, design, verification and validation. PREREQ: CS 230 and CS 471.
CS 488 SENIOR OUTCOME ASSESSMENT (0-0-0)(F,S). Required to graduate. In their last semester, senior students will take an outcome-assessment examination. (Pass/Fail.) PREREQ: Senior Standing.