Term: Spring 2022
Subject: Computer Science
Fundamental concepts and tools utilized by cybersecurity professionals to assess and detect software and network vulnerabilities; best practices in physical and data security through the use of appropriate risk management methodologies. No credit if taken after CS 166 or 266.
Provides a strong foundation in HTML, CSS, images, beginning web programming, and web design so that the student can create a complete functional web site in a team based final project.
Introduction to algorithmic problem solving and computer programming. Designed to provide a foundation for further studies in computer science.
Introduction to analytic and formal methods of computer science with practical examples, including analysis or data structures, recursion relations, proof methods, and logic programming. Credit not given for more than one of CS 064, MATH 052 or MATH 054. Prerequisites: CS 020 or CS 021 or CS 110; MATH 021 or MATH 023.
Basic techniques of data harvesting and cleaning; association rules, classification and clustering; analyze, manipulate, and visualize data using programming languages. Basic principles of probability and statistical modeling/inference to make meaning out of large datasets. Cross-listed with: STAT 087.
Assist in instruction of undergraduate computer science courses under the direct supervision of a faculty member. Duties may include grading, office hours, laboratory and/or recitation instruction, or other related activities. Instructor permission required. Prerequisite: Instructor Permission.
Intermediate programming concepts including common data structures, algorithms, style, design, documentation, testing and debugging techniques, and an introduction to object-oriented programming. Prerequisite: One of CS 020 or CS 021 with a grade of C- or better.
Build programming maturity and proficiency through significant projects with spiral development, including program specification, design, implementation, debugging, testing, validation, internal and external documentation. Focus on advanced topics including efficiency, profiling, modularity, extensibility, programming paradigms, design patterns, memory management, and generics. Prerequisite: CS 124.
Introduction to computer system organization including performance, assembly language, machine-level data representation, arithmetic for computers, processor datapath control, memory, and input/output. Includes significant semester project. Prerequisite: CS 110.
Design and implementation of linear structures, trees and graphs. Examples of common algorithmic paradigms. Theoretical and empirical complexity analysis. Sorting, searching, and basic graph algorithms. Prerequisites: CS 110 with a grade of C- or better; minimum Sophomore standing.
Formal languages and expressiveness. Turing completeness and Church's Thesis. Decidability and tractability. Complexity classes and theory of NP completeness. Prerequisites: CS 064 or MATH 052. Co-requisite: CS 124.
Design and implementation of a relational database model using SQL and PHP. Open ended final team based project, examples: ecommerce site, blogging site, members only site, learning site. Prerequisites: CS 008; CS 020 or CS 021.
Cyber defense policy, privacy, ethics; network threat defense, intrusion detection systems, intro to penetration testing, OS security principles, system/network admin, cloud, mobile and IoT security; overview of security planning, management and incident response. Prerequisite: CS 166 or CS 266.
Basic data science techniques, from import to cleaning to visualizing and modeling, using the R language. Machine learning methods include regression, classification and clustering algorithms. Programming methods include user-defined functions. Prerequisite: STAT 111 or STAT 141 or STAT 143 or STAT 211. Cross-listed with: STAT 187.
Service learning experience that benefits the University or the Community under the direction of a CS faculty member. Prerequisite: Instructor permission.
Supervisory and control software for multiprogrammed computer systems. Processes, threads, synchronization, interprocess communication, scheduling, memory management, resource allocation, performance evaluation, secondary storage, case studies. Prerequisites: CS 120 and CS 121.
Covers the design and construction of compilers and translation of high-level programming languages to assembly language. Topics include code representation, register allocation, optimization, static analysis, mutable data, garbage collection, and compilation of higher-order language features. Prerequisites: CS 124, CS 125.
Techniques for processing very large collections of data. Secondary storage. Database design and management. Query languages and optimization. Database recovery. Prerequisite: CS 124.
Treatment of software engineering problems and principles, with a focus on iterative software development. A significant part of the course is devoted to two multi-week team projects. Prerequisite: CS 120.
Exploration of the automated design of autonomous machines using evolutionary algorithms. Coursework involves reading of research papers, programming assignments and a final project. Prerequisites: Junior standing and programming experience, or Instructor permission.
Architecture of computing systems. Control unit logic, input/output processors and devices, asynchronous processing, concurrency, parallelism, and memory hierarchies. Prerequisite: CS 121.
Comprehensive study of algorithms including greedy algorithms, divide and conquer, dynamic programming, graph algorithms and network flow. Computational intractability. Approximation, local search and randomization. Prerequisite: CS 124. Pre/co-requisites: Recommended: CS 125; STAT 143, STAT 151, or CS 128.
Introduction to machine learning algorithms, theory, and implementation, including supervised and unsupervised learning; topics typically include linear and logistic regression, learning theory, support vector machines, decision trees, backpropagation artificial neural networks, and an introduction to deep learning. Includes a team-based project. Prerequisites: STAT 151 or STAT 251; MATH 122 or MATH 124.
Introduction to the theoretical and pragmatic principles and practices of computer networking. Topics include: the Internet; wired and wireless communications protocols; network security protocols. Prerequisites: CS 110; CS 121.
See description of Honors Thesis Program in the College of EM section of this catalog.
Data harvesting, cleaning, and summarizing. Working with non-traditional, non-numeric data (social network, natural language textual data, etc.). Scientific visualization using static and interactive "infographics." A practical focus on real datasets, and developing good habits for rigorous and reproducible computational science. Project-based. Prerequisites: CS 020 or CS 021; STAT 141 or STAT 143 or STAT 211. Pre/co-requisites: Recommended: CS 110; Math 122 or Math 124. Cross-listed with: STAT 287.
Oral presentations that pertain to the ethical practice of computer science in government, industry, and academia. Topics may include computer security, copyright, and patent law. Prerequisite: Senior standing in Computer Science.
Seminar to help students develop necessary skills for becoming computing professionals and exposes them to different computing careers. Topics include job search strategies, preparation for technical interviews, networking, and developing soft skills. Several guest lectures by computing professionals and alumni. Prerequisite: CS 124.
Undergraduate student work on individual or small team research projects under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.
See Schedule of Courses for specific titles. Subject will vary from year to year. May be repeated for credit with instructor permission.
Introduction to Deep Learning algorithms and applications, including basic neural networks, convolutional neural networks, recurrent neural networks, deep unsupervised learning, generative adversarial networks and deep reinforcement learning. Includes a semester team-based project. Prerequisite: CS 254. Cross-listed with: CSYS 354.
Advanced data analysis, collection, and filtering. Statistical modeling, monte carlo statistical methods, and in particular Bayesian data analysis, including necessary probabilistic background material. A practical focus on real datasets and developing good habits for rigorous and reproducible computational science. Prerequisite: STAT 287 or CS 287 or Instructor permission. Cross-listed with: STAT 387.
Prerequisite: Department permission.
Subject will vary from year to year. May be repeated for credit with Instructor permission.
Credit as arranged.