CS 120M: Computer Programming Concepts
Basic problem solving and algorithm development using an object-oriented computer programming language as a tool to implement solutions for numeric and non-numeric applications. For students in all majors who want to acquire programming and computer skills.

CS 130: Python for Biology & Life Sci
Uses the Python programming language in problem solving and algorithm development for biologically-based problems. For science majors (but open to other majors) who want to acquire Python programming skills and address problems relevant to their major. Requires sophomore standing.

CS 150M: Discrete Structures
Concepts from discrete structures such as set theory, logic, basics of counting, graphs and trees, elementary number theory, and combinatorics. Implementation of these theoretical concepts in software.

CS 170A: Videographics
The growth and merging of computing, electronic communication and video technologies are providing exciting new ways of communication, presentation, and persuasion. Major topics include physics of sound, light, and image collection; video technology; video editing systems and video technologies. Prerequisite: permission of instructor.

CS 221N: Data Structures
Continuation of program design and algorithm analysis. Identification and evaluation of classes of problems solvable through well-defined data structures, object oriented programming, and algorithms including stacks, recursion, lists, linked lists, trees, searching and sorting. Prerequisite: CS 143.

CS 301: Theory of Computing
Abstract basis of computing machines and languages; introduction to formal languages, finite automata, grammars, turing machines, and complexity theory. Prerequisites: CS 143 and CS 150M.

CS 310: Computer Architecture
Architectural and hardware elements of computing machines; central processing unit, registers, data paths, arithmetic logic unit, microprogramming; memory; virtual memory, content addressable memory, cache; input/output including disks, serial communications and networks. Includes a programming laboratory. Prerequisite: CS 143

CS 320: Programming Languages
Nature and implementation of programming languages including qualities and characteristics of languages, methods of implementation, execution models and environments; survey of programming languages. Prerequisite: CS 221N.

CS 321: Software Engineering
Properties of software systems; software system design and development principles; specifications; models; software tools, monitoring methods; group programming project for a large software system. Prerequisite: CS 221N.

CS 330: Analysis of Algorithms
Theoretical and mathematical basis of algorithm design and analysis. Prerequisites: CS 150M and CS 221N.

CS 334: Bioinformatics
Bioinformatics is the application of computational and analytical methods to biological problems. This course provides a survey of fundamental topics in bioinformatics such as algorithms for sequence analysis, phylogenetic methods, pattern recognition and microarray analysis. Prerequisites:CS 221N

CS 350: Graphical User Interface Design
Analysis and design of user interface features including screen configuration and software communication mechanisms such as menus, dialog boxes, toolbars and error messaging. Exploration of visual and cultural design issues. Prerequisite: CS 221N

CS 360: Database Systems
Conceptual modeling of database systems; organization of database systems; storage and retrieval of data in the database, relational databases, SQL, and database design and administration. Prerequisite: CS 221N.

CS 370: Data Science Fundamentals
Introduction to the methods, processes, algorithms, and tools used in data science. Students will use data science to explore contemporary problems in science, business, and public policy. Prerequisite: CS120 or CS143.

CS1 410: Computer Science Seminar - 1st semester
For Junior and Senior computer science majors. One course credit on satisfactory completion of two years of participation. Continuation in seminar contingent on satisfactory progress in upper division courses.

CS2 410: Computer Science Seminar - 2nd semester
Continuation of Computer Science Seminar. Four semesters required for one course credit. Prerequisite: CS1 410.

CS3 410: Computer Science Seminar - 3rd semester
Continuation of Computer Science Seminar. Four semesters required for one course credit. Prerequisites: CS1 410 and CS2 410.

CS4 410: Computer Science Seminar - 4th semester
Continuation of Computer Science Seminar. Four semesters required for one course credit. Prerequisites: CS1 410, CS2 410, and CS3 410.

CS 411: Operating Systems
Organization, operation, and implementation including processor management, memory management, virtual systems, interprocess communication, scheduling algorithms, protection and security, deadlocks; case studies of operating systems. Prerequisite: CS 221N.

CS 415: Computer Networks
Abstract view of computer and communications networks. Topology, protocols, and operation of computer networks; ISO's OSI, TCP/IP, LAN, WAN. Performance issues related to networks. Prerequisite: CS 221N.

CS 420: Translators and Compilers
Theory and implementation of high-level language virtual machines including assemblers, macro expansion, compilers and interpreters; syntactic and semantic models. Prerequisites: CS 221N and CS 301

CS 450: Computer Graphics
Theory and programming involved in rendering graphic images. Topics include viewing transformations and projections, surface illumination models, texture mapping and animation. Prerequisites: CS 221N and MA 131M.

CS 455: Digital Image Processing
Introduces various techniques for the enhancement and analysis of digital imagery. Topics include the interpretation of image statistics, image enhancement based on histogram transformations, spatial filtering, and image transforms. Prerequisite: CS 221N.

CS 460: Artificial Intelligence
Problem solving and heuristic search, knowledge representation, expert systems, fuzzy logic, logic and theorem proving, planning. Machine learning, neural networks, evolutionary computation, hybrid systems. Introduction to the AI languages LISP and PROLOG. Prerequisite: CS 221N.

CS 470: Evolutionary Computation
This course is a biologically-inspired approach to the design of computationally intelligent systems. Covers genetic algorithms, genetic programming, evolution strategies, design of problem representations, selection methods, mutation and recombination operators, applications to real-world problems. Prerequisite: CS221N.

CS 480: Machine Learning
Introduction to the mathematics, algorithms, and tools used to create machine learning systems. Case studies of successful machine learning applications are presented, along with the ethical issues posed by machine learning. Prerequisite: CS 370

CS 497: Software Capstone
Capstone course in computer science that involves participation in a real-world software project. Students will discuss and apply modern software development principles, methodologies, and tools.

CS 498: Software Capstone
Capstone course in computer science that involves participation in a real-world software project. Students will discuss and apply modern software development principles, methodologies, and tools. This course will also encompass the comprehensive examination requirement for graduation.

CS 499: Senior Thesis
Research and write a thesis under the direction of a member of the Computer Science faculty. Satisfies the comprehensive examination requirement for graduation. Prerequisites: excellence in computer science courses through the Junior year and invitation by the faculty.