Mathematics and Computer Science

Faculty

Enrique Trevino

Associate Professor of Mathematics and Computer Science
Chair of Mathematics and Computer Science

Sugata Banerji

Associate Professor of Computer Science

Arthur Bousquet

Associate Professor of Mathematics

Suha Dajani

Visiting Assistant Professor of Mathematics

Andrew Gard

Assistant Professor of Mathematics

Cristina Haidau

Visiting Assistant Professor of Computer Science

Sara Jamshidi

Assistant Professor of Computer Science and Mathematics

Craig Knuckles

Professor of Mathematics and Computer Science

Tung Nguyen

Visiting Assistant Professor of Computer Science

DeJuran Richardson

Ernest H. Volwiler Professor of Mathematics

Requirements

The Department of Mathematics & Computer Science is a joint department that offers 3 majors and 3 minors – a major and minor in data science, a major and minor in mathematics, and a major and minor in computer science. 

The Major and Minor in Mathematics and the Major and Minor in Computer Science were redesigned in 2019. The new requirements will apply to all students who matriculate in Fall Semester 2019 and thereafter (see previous college catalogs for requirements before Fall 2019). 

Required courses at the 200-level or higher may count towards the major or minor in data science, mathematics and computer science only if the grade earned in the class is “C-” or better and may be taken Pass-NoPass, as long as the grade originally earned in the class is “C-” or better. Required courses at the 100-level have no minimum grade requirement and may be taken Pass-NoPass.

Requirements for the Major in Mathematics:   

At least 12 credits

  • Computer Science 112: Computer Science I
  • Mathematics 110: Calculus I or Mathematics 109: Calculus Ib
  • Mathematics 111: Calculus II
  • Mathematics 210: Multivariable Calculus
  • Mathematics 230: Abstract and Discrete Mathematics
  • Mathematics 231: Linear Algebra
  • Mathematics 311: Introduction Real Analysis
  • Mathematics 330: Abstract Algebra
  • Three additional Mathematics courses (MATH prefix) at the 300-level or higher (can substitute no more than one MATH course at the 200-level)
  • The Senior Studies requirement, which can be met in one of the following ways:
    • MATH 411: Advanced Topics in Analysis
    • MATH 430: Advanced Topics in Algebra
    • MATH 450: Mathematical Statistics
    • a senior thesis

Internship credit may not be counted toward the major.

Requirements for the Minor in Mathematics:

At least 7 credits

  • Computer Science 112: Computer Science I
  • Mathematics 110: Calculus I or MATH 109: Calculus Ib
  • Mathematics 111: Calculus II
  • Mathematics 210: Multivariable Calculus
  • Mathematics 230: Abstract and Discrete Mathematics
  • Mathematics 311: Introduction Real Analysis or Mathematics 330: Abstract Algebra
  • One elective, chosen from among: MATH 214, MATH 231, MATH/CSCI 240, or any MATH course at the 300-level or higher

Required courses at the 200-level or higher may count towards the major or minor in data science, mathematics and computer science only if the grade earned in the class is “C-” or better and may be taken Pass-NoPass, as long as the grade originally earned in the class is “C-” or better. Required courses at the 100-level have no minimum grade requirement and may be taken Pass-NoPass.

Requirements for the Major in Computer Science:   

At least 10 credits

  • Mathematics 110: Calculus I or Mathematics 109: Calculus Ib
  • Mathematics 230: Abstract and Discrete Mathematics
  • Computer Science 112: Computer Science I
  • Computer Science 212: Computer Science II
  • Computer Science 317: Data Structures and Algorithms
  • Computer Science 327: Introduction to Database Systems
  • Computer Science 417: Algorithms and Algorithm Analysis
  • Two additional Computer Science courses (CSCI prefix) at the 300-level or higher (can substitute one CSCI 200-level course) 
  • The Senior Studies requirement, which can be met in one of the following ways:
    • CSCI 450: Computer Vision & Machine Learning
    • CSCI 461: Compiler Design
    • CSCI 488: Software Engineering for Web Applications
    • CSCI 489: Advanced Topics in Computer Science
    • a senior thesis

Internship credit may not be counted toward the major.

Requirements for the Minor in Computer Science:

At least 6 credits

  • One course chosen from the following:
    • Mathematics 110: Calculus I
    • Mathematics 108: Calculus Ia
    • Mathematics 160: Mathematical Methods with Applications
  • Computer Science 107: Introduction to Web Programming
  • Computer Science 112: Computer Science I
  • Computer Science 212: Computer Science II
  • Computer Science 317: Data Structures and Algorithms
  • One additional Computer Science course (CSCI prefix) at the 200-level or higher

Learning Outcomes

The expected Student Learning Outcomes for the Data Science Department are:

1. Effectively use statistics, computing technology, and computational methods to summarize and analyze various types of data.

2. Communicate the rationale and results of their data analytic work in a clear and effective manner.


The expected Student Learning Outcomes for the Mathematics Department are:

1. A mathematics major will be able to use mathematics as a tool to describe and solve real-world problems.

2. A mathematics major will demonstrate proficiency with the fundamental rules of logic and proof technique as well as the basic tenets of calculus, linear algebra, abstract algebra, and real analysis.


The expected Student Learning Outcomes for the Computer Science Department are:

1. A computer science major will be able to demonstrate both the practical and theoretical aspects of computing.

2. A computer science major will demonstrate proficiency with computer programming, problem solving, and design and analysis of computational algorithms, while utilizing current technologies and methodologies.

Mathematics courses

MATH 104: Elem Math from Advanced Standpoint

(Elementary Math from an Advanced Standpoint) This course presents a critical examination of several topics from elementary mathematics. The course stresses three themes: mathematics in the liberal arts, mathematics from a historical perspective, and mathematics as a problem-solving activity. Topics to be covered include college algebra, numeration systems, non-base-10 representations, and elementary number theory including primes and factorizations, rationals as terminating and repeating decimals, irrationals, simple probability experiments, elementary set theory, and mathematical reasoning. Cross-listed as: EDUC 104; No prerequisites. (This course satisfies Quantitative Reasoning.)
cross listed: EDUC 104


MATH 105: Elementary Functions

Properties of functions with emphasis on polynomial, exponential, logarithmic, and trigonometric functions. Analytic geometry. (Not open to students who have completed Math 110 with a grade of C- or better.) (This course satisfies Quantitative Reasoning.)


MATH 108: Calculus Ia

(Calculus Ia: Introduction to Calculus.) The calculus of rational functions of one variable. Limits, continuity, differentiation, and applications; a brief introduction to integration. Related topics in college algebra also are reviewed, including pertinent aspects of functions, polynomials, and rational expressions. This courses is a required skills-building course for students desiring to complete Math 109. (Credit cannot be earned in Math 108 after satisfactory completion of Math 110.) Prerequisite: By placement only. Not open to students who have completed Math 110 with a grade of C- or better. (This course satisfies Quantitative Reasoning.)


MATH 109: Calculus Ib

(Calculus Ib: Transcendental Calculus.) This course is a continuation of Math 108 that further develops the concepts of calculus, such as differentiation and integration, to exponential, logarithm and trigonometric functions. Related topics in exponentiation and analytic geometry are covered as needed. Satisfactory completion of both Math 108 and Math 109 is equivalent to the satisfactory completion of Math 110. (Credit cannot be earned in both Math 109 and Math 110.) Prerequisite: Completion of Math 108 with a grade of C- or better, or permission of the instructor. This course is being offered on a pilot basis for the 2019-2020 academic year. (This course satisfies Quantitative Reasoning.)


MATH 110: Calculus I

The calculus of functions of one variable. Limits, continuity, differentiation, and applications; a brief introduction to integration. Prerequisite: 3.5 years of high school mathematics (to include trigonometry) or Mathematics 105. (This course satisfies Quantitative Reasoning.)


MATH 111: Calculus II

The calculus of functions of one variable. Integration, applications of integration, sequences, and series. Prerequisite: Mathematics 110. (This course satisfies Quantitative Reasoning.)


MATH 115: Honors Calculus I

Theory and applications of the calculus of functions of one variable, including trigonometric and exponential functions. Limits, continuity, differentiation, integration, and applications. (This course satisfies Quantitative Reasoning.)


MATH 116: Honors Calculus II

Continuation of Mathematics 115. Integration and applications, sequences, infinite series. Prerequisite: permission of the instructor. (This course satisfies Quantitative Reasoning.)


MATH 150: Intro Probability & Statistics

Designed for students in the social and life sciences. Discrete probability theory, distributions, sampling, correlation, and regression, Chi square and other tests of significance. Emphasis on the use of the computer as a tool and on applications to a variety of disciplines. Not open to students who have taken ECON/BUSN 180 or ECON/BUSN/FIN 130. (This course satisfies Quantitative Reasoning.)


MATH 160: Math Methods with Applications

(Mathematical Methods with Applications) Topics from applied mathematics, including equations, inequalities, functions and graphs, and basic properties of logarithmic and exponential functions. Introduction to limits, derivatives and antiderivatives. Applications to business, the social sciences, and the life sciences. (Not open to students who have completed Math 110 with a grade of C- or better.) (This course satisfies Quantitative Reasoning.)


MATH 161: Mathematical Modeling

Mathematical topics as needed to build and solve mathematical models of situations in the life, environmental, and economic sciences. Topics covered include discrete dynamical systems, difference equations, linear, quadratic, and exponential growth models, the logistic model, and examples of chaos in dynamical systems. (This course satisfies Quantitative Reasoning.)


MATH 210: Multivariable Calculus

Partial differentiation, the algebra and calculus of vectors, curves and their parameterization, multiple integration, Stokes's and Green's theorem, and applications. Prerequisite: Mathematics 111. (This course satisfies Quantitative Reasoning.)


MATH 214: Differential Equations

Differential equation models, analytic solution techniques, qualitative solution concepts, and computer visualization for single equations and systems. Applications of differential equations. Prerequisite: Mathematics 210 or permission of the instructor. (This course satisfies Quantitative Reasoning.)


MATH 230: Abstract & Discrete Mathematics

Topics covered include logic and proofs, set theory, relations, cardinal numbers, countable and uncountable sets, permutations and combinations, graph theory, and group theory. Prerequisite: Mathematics 110. (This course satisfies Quantitative Reasoning.)


MATH 231: Linear Algebra

This course is designed to provide students with knowledge of linear algebra concepts while emphasizing the practical implementation of these concepts through programming. Topics include matrices, determinants, eigenvalues, eigenvectors, vector spaces, linear independence, applications to linear systems, and data analysis. Prerequisite: CS 112 and MATH 230 or permission of the instructor. (This course satisfies Quantitative Reasoning.)
cross listed: CSCI 231


MATH 240: Intro to Computational Math

(Introduction to Computational Mathematics.) This course provides a survey of computational techniques and methods that are rooted in mathematics and computing. Topics covered include numerical differentiation and integration, numerical solutions to ordinary differential equations, non-linear equations in one variable, and classification methods. Applications of the techniques to "real-life" problems encountered in economics, physics, and/or the life sciences is emphasized. Constructing computer programs to implement the techniques presented also is emphasized. Prerequisites: MATH 110 and CSCI 112. (This course satisfies Technology Intensive.)
cross listed: CSCI 240


MATH 250: Intro to Statistical Programming

(Introduction to Statistical Programming.) Introduction to data analysis programming using R. Topics include: data cleaning, data visualization, hypothesis testing, simple and multiple regression, time series analysis, analysis of variance, nonparametrics, and categorical data analysis. No previous programming experience required. Prerequisite: Math 150: Introduction to Probability & Statistics, E/B/F 130: Applied Statistics, PSYC 222: Research Methods & Statistics II, or permission of the instructor. (This course satisfies Technology Intensive.)


MATH 310: Complex Analysis

Study of functions of one complex variable. Analytic functions, complex integration, Cauchy's theorem, complex power series, and special functions. Applications to other areas of mathematics and to mathematical physics. Prerequisites: Mathematics 210 and 230 or permission of the instructor.


MATH 311: Introduction Real Analysis

A rigorous course covering the following introductory real analysis topics: axioms for the real numbers, sequences, boundedness, limits, monotone functions, continuity, uniform continuity, Cauchy criterion for convergence, cluster points, compactness, differentiability, integration, and infinite series. Prerequisites: Mathematics 210 and 230.


MATH 323: Cryptography

An introduction to cryptology and cryptanalysis, the making of codes and the breaking of codes. History and basic concepts. Classical ciphers and attacks on classical ciphers. One-time Pad. Modern ciphers including DES, AES. Public key ciphers including RSA and Diffie-Hellman. Digital signatures. Additional topics may include Elliptic Curve systems, knapsack systems, and other cryptographic systems. Prerequisites: Mathematics 230 and Computer Science 212, or permission of the instructor.
cross listed: CSCI 323


MATH 329: Number Theory

Mathematical induction, divisibility properties of integers, prime numbers, and congruences. Prerequisite: Mathematics 230 or permission of the instructor.


MATH 330: Abstract Algebra

A study of algebraic structures with emphasis on groups, rings, and fields. Prerequisite: Mathematics 230.


MATH 334: Theory of Computation

This course covers fundamental ideas in the theory of computation, including formal languages, computability, complexity, and reducibility among computational problems. Topics include formal languages, finite state automata, Kleene's theorem, formal grammars, pushdown automata, context-free languages, Turing machines, computability, Church's Thesis, decidability, unsolvability, and NP- completeness. Prerequisites: CSCI 212 and Mathematics 230.
cross listed: CSCI 334


MATH 340: Geometry

Selected topics from affine, Euclidean, non-Euclidean, projective, and differential geometry. Prerequisite: Mathematics 230 or permission of the instructor.


MATH 350: Mathematical Probability

Discrete and continuous probability. Distributions, the law of large numbers, the central limit theorem, random variables, and generating functions. Prerequisites: Mathematics 210 and 230 or permission of the instructor.


MATH 360: Mathematical Modeling

Introduction to the process and techniques of modeling physical problems, including computing strategies and analysis of results. Python programming will be emphasized. Numerical methods covered include solutions to linear and non-linear equations, solutions to ordinary and partial differential equations, finite elements, linear programming, and optimization algorithms. Prerequistes: MATH 210 and CSCI 112.
cross listed: CSCI 360


MATH 375: Combinatorics & Graph Theory

Enumeration techniques with emphasis on permutations and combinations, generating functions, recurrence relations, inclusion and exclusion, and the pigeonhole principle. Graph theory with emphasis on trees, circuits, cut sets, planar graphs, chromatic numbers, and transportation networks. Additional topics from designs with emphasis on Latin squares, finite projective and affine geometries, block designs, and design of experiments. Prerequisite: Mathematics 230.
cross listed: CSCI 375


MATH 410: Topology

Point set topology. Such topics as topological spaces, separation axioms, covering properties, metrization, convergence and completeness, and homotopy theory. Prerequisite: Mathematics 311.


MATH 411: Advanced Topics in Analysis

Introductory notions of functional analysis. Banach spaces, integration and measure, Hilbert spaces, and commutative Banach algebras. Prerequisite: Mathematics 311. (This course satisfies Senior Studies.)


MATH 430: Advanced Topics in Algebra

Additional topics in modern or linear algebra such as field extensions, Galois Theory, group conjugacy, modules, eigenvalue theory, dual spaces, and unitary spaces. Prerequisite: Mathematics 330 or permission of the instructor. (This course satisfies Senior Studies.)


MATH 450: Mathematical Statistics

A mathematical study of such topics as estimation of parameters, confidence intervals and tests of hypotheses, decision theory, regression, analysis of variance, and nonparametric methods. Prerequisite: Mathematics 350. (This course satisfies Senior Studies.)


MATH 499: Great Theorems of Mathematics

Seminar course to introduce students to various masterpieces in the development of mathematics. Some of the most historically important proofs and ingenious logical arguments from mathematics will be presented and discussed. An emphasis will be placed on the interconnectedness among various subject areas within mathematics. Prerequisite: permission of the instructor.

Computer Science Courses

CSCI 107: Introduction to Web Programming

A broad introduction to World Wide Web programming and related technologies. Topics include Internet history and its architecture, managing an account on a Web server, HTML markup, use of style sheets (CSS), page layout design, introduction to interactive programming with JavaScript, the document object model (DOM), and HTML forms. This is a general audience course suitable for those with no prior programming experience. (This course satisfies Quantitative Reasoning and Technology Intensive.)


CSCI 112: Computer Science I

Introduction to computer science. Topics include the basic building blocks of problem solving (sequence, selection, repetition), object-oriented programming, basic data structures and algorithms. A prior knowledge of computer science is not required, although a good background in high school Mathematics is recommended. Students may receive credit for this course based on the AP computer science exam. (This course satisfies Quantitative Reasoning and Technology Intensive.)


CSCI 212: Computer Science II

Continuation of Computer Science I. Emphasis on advanced data structures, algorithms, and object-oriented design. Topics include linked data structures, recursion, algorithm analysis, interfaces, and inheritance. Prerequisite: Computer Science 112 with a grade of C or better. (This course satisfies Quantitative Reasoning and Technology Intensive.)


CSCI 213: Intro to Computer Architecture

Computer architecture, including digital logic, modern CPU design, memory layout, assembly language programming, addressing techniques, input/output design, and interfacing with high-level languages. Prerequisite: Computer Science 112. (This course satisfies Quantitative Reasoning and Technology Intensive.)


CSCI 214: Principles of Digital Logic

Basic logic, digital electronics, microcomputer architecture, and interfacing, with hands-on laboratory activity. Prerequisite: Computer Science 213. (This course satisfies Quantitative Reasoning.)


CSCI 231: Linear Algebra

This course is designed to provide students with knowledge of linear algebra concepts while emphasizing the practical implementation of these concepts through programming. Topics include matrices, determinants, eigenvalues, eigenvectors, vector spaces, linear independence, applications to linear systems, and data analysis. Prerequisite: CS 112 and MATH 230 or permission of the instructor. (This course satisfies Quantitative Reasoning.)
cross listed: MATH 231


CSCI 240: Intro to Computational Math

(Introduction to Computational Mathematics.) This course provides a survey of computational techniques and methods that are rooted in mathematics and computing. Topics covered include numerical differentiation and integration, numerical solutions to ordinary differential equations, non-linear equations in one variable, and classification methods. Applications of the techniques to "real-life" problems encountered in economics, physics, and/or the life sciences is emphasized. Constructing computer programs to implement the techniques presented also is emphasized. Prerequisites: MATH 110 and CSCI 112.
cross listed: MATH 240


CSCI 250: Programming for Data Applications

Introduction to data-oriented Python packages, decision trees, support vector machines (SVM), neural networks, and machine learning. Prerequisite: CSCI 112: Computer Science I.


CSCI 270: Web Development

This course builds upon Web programming fundamentals. It includes a review of HTML and CSS fundamentals and detailed coverage of CSS topics including selectors, cascade, positioning, page layout techniques, CSS media queries, and responsive/mobile design techniques. The course provides an introduction to server-side scripting and server side includes, advanced CSS/JavaScript frameworks, responsive grid design, and user interface tools. Prerequisites: CSCI 107 and Art 142. (This course satisfies Quantitative Reasoning and Technology Intensive.)


CSCI 317: Data Structures and Algorithms

The study of advanced data structures and algorithm analysis. Topics include trees, hash tables, heaps, sorting algorithms, and graph algorithms. The emphasis will be on applying data structures to design and implement efficient algorithms. Additional topics may include dynamic programming and computational complexity. Prerequisite: Mathematics 230 and Computer Science 212 with a grade of C or better.


CSCI 318: Programming Languages

A study of different problem solving paradigms, and representative programming languages. Topics include imperative vs. functional vs. event-driven vs. declarative paradigms, markup vs. computation, typing, memory organization, scope, and lifetime management. Lab exercises focus on working in the various paradigms, and the trade-offs involved. Prerequisite: Computer Science 212.


CSCI 320: AI Governance

This course introduces key components of Artificial Intelligence (AI) governance, focusing on oversight mechanisms that both address risks such as unethical bias, discrimination, and privacy infringement, and promote trust through accountability and transparency. We explore these issues from the perspectives of various stakeholders—users, AI developers, investors, entrepreneurs, policymakers, and the broader public—highlighting the need to align AI systems with societal values and ethical standards. Students learn methods to analyze ethical considerations throughout the AI lifecycle, from development and deployment to ongoing oversight and sunsetting. The course also reviews important regulations, such as the EU AI Act, and guidelines from organizations like NIST, IEEE, and Microsoft. Through real-world and hypothetical case studies, we examine how AI governance models can be implemented across sectors such as healthcare, finance, and autonomous systems. By the end of the course, students are equipped to review, assess, and draft governance frameworks for AI and data management systems. Prerequisite: MATH 150 or permission of instructor (This course satisfies Writing Intensive.)


CSCI 323: Cryptography

An introduction to cryptology and cryptanalysis, the making of codes and the breaking of codes. History and basic concepts. Classical ciphers and attacks on classical ciphers. One-time Pad. Modern ciphers including DES, AES. Public key ciphers including RSA and Diffie-Hellman. Digital signatures. Additional topics may include Elliptic Curve systems, knapsack systems, and other cryptographic systems. Prerequisites: Mathematics 230 and Computer Science 212, or permission of the instructor.
cross listed: MATH 323


CSCI 325: Artificial Intelligence

This course is an introduction to AI via various techniques and theory including, but not limited to, state space search strategies; deterministic and nondeterministic finite automata and Turing machines; neural networks and deep learning; natural language processing (NLP); computer vision; reinforcement learning; and large language models (LLMs). Prerequisite: Computer Science 212.
cross listed: NEUR 325


CSCI 327: Introduction to Database Systems

An in-depth study of proper methods of design for database systems, with an emphasis on the relational model. Topics include relational design, query languages, and transactional processing. Lab exercises focus on GUI-driven, SQL-based access as well as modern, multi-tier styles of design. Prerequisite: Computer Science 212.


CSCI 334: Theory of Computation

This course covers fundamental ideas in the theory of computation, including formal languages, computability, complexity, and reducibility among computational problems. Topics include formal languages, finite state automata, Kleene's theorem, formal grammars, pushdown automata, context-free languages, Turing machines, computability, Church's Thesis, decidability, unsolvability, and NP- completeness. Prerequisites: CSCI 212 and Mathematics 230.
cross listed: MATH 334


CSCI 336: Operating Systems

An introduction to modern operating systems and their most important features. Topics include multiprocessing, virtual memory, multithreading, concurrency, I/O, networking, security, and distributed computing. Students construct a major component of an operating system in C or C++. Prerequisites: Computer Science 317.


CSCI 360: Mathematical Modeling

Introduction to the process and techniques of modeling physical problems, including computing strategies and analysis of results. Python programming will be emphasized. Numerical methods covered include solutions to linear and non-linear equations, solutions to ordinary and partial differential equations, finite elements, linear programming, and optimization algorithms. Prerequistes: MATH 210 and CSCI 112.
cross listed: MATH 360


CSCI 375: Combinatorics & Graph Theory

Enumeration techniques with emphasis on permutations and combinations, generating functions, recurrence relations, inclusion and exclusion, and the pigeonhole principle. Graph theory with emphasis on trees, circuits, cut sets, planar graphs, chromatic numbers, and transportation networks. Additional topics from designs with emphasis on Latin squares, finite projective and affine geometries, block designs, and design of experiments. Prerequisite: Mathematics 230.
cross listed: MATH 375


CSCI 417: Algorithms and Algorithm Analysis

The study of algorithms and their mathematical analysis. Divide-and-conquer, greedy, brute-force, dynamic programming, backtracking, advanced tree and graph algorithms, big-O notation, case and amortized analysis. Prerequisites: Mathematics 230 and Computer Science 317.


CSCI 450: Computer Vision & Machine Learning

This course introduces the fields of Computer Vision and Machine Learning. Computer Vision concepts covered include histrogram normalization, color transformation and filtering, and extraction techniques such as HOG, LBP and SIFT. Machine Learning concepts such as clustering and deep neural networks are also introduced. Prerequisite: CSCI 212 and CSCI 250. (This course satisfies Senior Studies and Technology Intensive.)


CSCI 461: Compiler Design

An introduction to the design and construction of compilers for modern programming languages. Topics include grammars, formal language definition, abstract syntax trees, symbol tables, syntax and semantic checking, code generation, and optimization. Students construct a modern compiler for an object-oriented programming language. Prerequisites: Mathematics 230 and Computer Science 317. (This course satisfies Senior Studies.)


CSCI 488: Software Engineering for Web Apps

(Software Engineering for Web Applications.) A project-oriented course in Software Engineering for Database-Driven Web Applications. Topics include JavaScript, DHTML, JQuery, AJAX, PHP, MySQL, CRUD operations, ORM/AR Techniques, Application Design, Unit Testing, Web Sockets, and the GIT protocol. Prerequisites: Computer Science 317 and 327.


CSCI 489: Advanced Topics in Computer Science

Special topics and projects in computer science, including but not limited to distributed systems, secure computing, Web development, user-interface design, and software engineering. Prerequisites: Computer Science 317.