A minor in computer science requires completion of CS 143, CS 221N, and three computer science courses numbered 300 or above. ES 341N can also count as one of these three courses. These courses must not duplicate courses used by students to satisfy major or concentration requirements.
CS 110M: Survey of Computing
Introduction to history of computing, operating systems, problem solving and writing computer programs, basic computer architecture, networks and the Internet, theoretical concepts such as binary numbers, applications such as FTP, SSH, spreadsheets, and basic web site construction.
CS 120M: Computer Programming Concepts
Basic problem solving and algorithm development using the Java 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 143: Introduction to Computer Science
A course in Java programming with a focus on object-oriented programming, component interactions, and software development; classes and methods, dependencies, data collections, runtime exceptions, logic and problem solving. Prerequisites: Mathematics placement at the calculus ready level or equivalent, and prior programming experience in an object-oriented language.
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 or CS 143M.
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: Ability to express logical procedures (by algorithmic pseudocode or in a computer programming language) and a basic level of mathematical maturity.
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 143.
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 143.
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. Prerequisite: CS 301
CS 430: GPU Computing
Overview of the structure of graphics cards and integration with the central processing unit, developing solutions to interdisciplinary problems using graphics processing units (GPUs), and designing applications using parallelism and multithreading to maximize performance.
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 143.
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 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.