# Computer Science

A pioneer in the field of undergraduate computer science, Mills continues this tradition by offering innovative graduate programs in interdisciplinary computer science. Designed for students with bachelor's degrees in other areas of study, our programs enable you to prepare for a variety of positions across industries. Combining the breadth of a liberal arts education with the focus of a computer science degree offers students a powerful combination that supports career success.

The master of arts in interdisciplinary computer science provides students from diverse backgrounds with a solid foundation in computer science and a unique perspective on how computers interact with other disciplines. You will discover the strengths and limitations of computers and what technological advances are needed to solve theoretical problems in a variety of fields. You will also be at the forefront of examining the relationship between computers and other disciplines including art, biology, business, education, health, music, and psychology and the dynamic ways in which these disciplines intersect with technology. Graduates of our program have found employment across disciplines in various corporations, nonprofit organizations, and educational institutions. High-profile companies recently hiring our graduates include Apple, Google, Intuit, Mozilla, PayPal, SpaceX, and Twitter.

Students can enter our master's degree program either after earning their bachelor's degree at another institution or by entering the Mills BA/MA Accelerated Degree Program in Interdisciplinary Computer Science.

Mills also offers two post-baccalaureate computer science certificate programs: one for students planning to enter industry directly, and one for students who wish to earn doctorates in computer science or a closely related field. Our graduates have been admitted to PhD programs at CMU, University of Washington, University of Virginia, and University of California, San Diego.

For information about our graduation rates, the median debt of students who completed the program and other important information, please refer to the Federal Gainful Employment Disclosure Statement.

## Program Goals

- Design and write a correct computer program.
- Understand how computer systems (including architecture, operating systems, networks, and compilers) work.
- Understand and apply the mathematical concepts underlying computer science.
- Form interdisciplinary connections and apply computer science to meeting human needs.

**CS 200: Data, Apps, and Analytics in the Cloud (4 Credits)**

Students will create a cloud-based application with an underlying object database. Students will begin by analyzing the required functionality of the application. Based on that analysis they will design and implement an object oriented data model. They will customize their applications based on processes identified as supporting the required functionality. These customizations will require students to write code in an object-oriented language, to customize the interface using a tag-based language, and to run analytics on the data.

**Prerequisite(s):** CS 064

**Program Goals:**

Data Science Program Goals

- Collect and manage data to devise solutions to data science tasks. (Introduced)
- Evaluate data in terms of source, volume, frequency, and flow.
- Collect, clean, and prepare data.
- Select, apply, and evaluate models to devise solutions to data science tasks. (Introduced)
- Identify and classify relevant variables for data science tasks.
- Choose and apply tools and methodologies to solve data science tasks.
- Assess the methods, tools, and models used in the analysis.
- Develop capacity to learn new analysis methods and tools. (Practiced, Mastered)
- Develop a rigorous computational foundation for practical programming.
- Interpret data analysis outcomes. (Practiced)
- Evaluate the limitations of data science findings.
- Interpret data, extract meaningful information, and assess findings.
- Effectively communicate data science-related information to a variety of audiences. (Practiced)
- Communicate technical materials in written, visual, and oral forms.
- Help non-technical professionals understand and act on data science findings.
- Facilitate data-informed discussions through listening, questioning, and presenting.

**CS 214: Programming Languages (4 Credits)**

Theory, design, and implementation of programming languages. Topics include different programming paradigms, such as declarative, functional, imperative, object-oriented, and concurrent; specification of a language's syntax and semantics; definitions, implementation, and inferences of types; and automatic memory management.

**Prerequisite(s):** CS 124

**Program Goals:**

Interdisc Computer Science Program Goals

- Design and write a correct computer program. (Practiced)
- Writing programs both in and implementing new programming languages.
- Understand how computer systems (including architecture, operating systems, networks, and compilers) work. (Practiced)
- Adding languages features to an interpreter.

**CS 215: Mobile Application Development (4 Credits)**

Design and development of mobile device applications, culminating in the team-based development of a Java application for Android devices (which will be provided). Topics will include advanced Java programming techniques, including design patterns; the Java Android software development kit (SDK); multi-threaded programming techniques; human factors issues; and techniques for developing large, robust applications, such as design documents, source repositories, code reviews, and unit testing.

**Prerequisite(s):** CS 124

**Note(s):** Concurrent lab required. Prerequisites may be waived by demonstrating comparable experience to the instructor. Limit 20 students. Open to graduate students only.

**Program Goals:**

Computer Science Program Goals

- Design and write computer systems to solve real-world problems (Practiced, Mastered)
- Individual labs and team projects will require students to understand synchronization, network communication, the application life cycle, and other key computing concepts.
- Design and write a correct computer program. (Practiced, Mastered)
- There is a team project in which each student implements a component of a mobile device application.
- There are multiple lab assignments in which students must write computer programs, which are reviewed line-by-line by the instructor.
- Understand and apply the mathematical concepts underlying computer science. (Practiced)
- Students will use efficient and correct algorithms in the programs that they write.
- Understand how computer systems (including architecture, operating systems, network, security and compilers) work (Practiced, Mastered)
- Students will design and implement a mobile device application.

**CS 225: Theory of Algorithms (4 Credits)**

An introduction to general algorithmic techniques including divide-and-conquer, dynamic programming, and greedy algorithms. Construction and analysis of some important classes of algorithms such as graph algorithms and string algorithms. An introduction to the complexity classes P, NP, and NP-complete (tractable versus intractable problems). If time allows, special topics, such as approximate algorithms, parallel algorithms, computability, and undecidability, may be included.

**Prerequisite(s):** MATH 006 and CS 124

**Note(s):** Concurrent workshop required. Limit 25 students. Open to graduate students only.

**Program Goals:**

Interdisc Computer Science Program Goals

- Understand and apply the mathematical concepts underlying computer science. (Practiced, Mastered)
- Understand and appreciate the close connection between mathematical induction and recursion (e.g. mathematical induction is used to prove the correctness of recursive algorithms).
- Understand the notions of asymptotic analysis of algorithms; use functions in conjunction with asymptotic notations to estimate the running time and space usage of algorithms – perform complexity analysis.
- Apply recurrence relations to derive the running time of recursive algorithms.

**CS 227: Linear Optimization (4 Credits)**

Introduction to linear optimization, optimizing a linear function subject to a set of linear constraints, emphasizing quantitative modeling, methodology, and the underlying mathematical structures and geometrical ideas. Topics include problem formulation, simplex method, sensitivity analysis, and duality theory.

**Prerequisite(s):** MATH 004 or MATH 047 or ECON 081

**Note(s):** Concurrent workshop required. Prerequisite of MATH 004 or MATH 047 or ECON 081 may be waived by instructor. Open to graduate students only.

**Program Goals:**

Interdisc Computer Science Program Goals

- Understand and apply the mathematical concepts underlying computer science. (Practiced, Mastered)
- Understand the time efficiency of the Simplex algorithm.
- Understand the mathematical concepts – systems of linear inequalities, sensitivity analysis, duality theory – underlying the Simplex algorithm.
- Form interdisciplinary connections and apply computer science to meeting human needs. (Practiced, Mastered)
- Use mathematical models, and in particular linear models, to guide effective decision making in real-world problems.

**CS 228: Theory of Computation (4 Credits)**

An introduction to the mathematical basis for the study of computability and to the formal theory behind compiler design. Topics include the formal models of computation such as finite state automata, pushdown automata, and Turing machines; languages and grammars, such as regular languages and grammars, context-free languages and grammars, and recursively enumerable languages and grammars; and the problems that a machine can and cannot solve.

**Prerequisite(s):** MATH 006 or MATH 048

**Note(s):** Concurrent workshop required. Prerequisite of MATH 006 or MATH 048 may be waived by the instructor. Limit 25 students. Open to graduate students only.

**Crosslisted with:** CS 228

**Program Goals:**

Interdisc Computer Science Program Goals

- Understand and apply the mathematical concepts underlying computer science. (Practiced, Mastered)
- Understand Turing machines as a model of computation and use the model to show the capabilities and limitations of computation.
- Develop ability to solve computational problems such as finding patterns in texts, parsing a programming language, or computing algebraic functions, using automata.
- Understand the theory of formal languages, in particular context-free languages, and apply it to the definition and design of programming languages.

**CS 231: Computer Networks (4 Credits)**

In this course students will learn the different types of computer networks, and their many components, protocols and technologies. The students will study many important issues of networks, such as congestion control, flow control, routing and security. Students will conduct small-scale research, where they will identify a problem, execute network research, and write up the results.

**Prerequisite(s):** CS 064

**Note(s):** Open to graduate students only.

**Program Goals:**

Interdisc Computer Science Program Goals

- Design and write a correct computer program. (Practiced)
- Students will design and implement a client server application in Java using UDP sockets.
- Understand how computer systems (including architecture, operating systems, networks, and compilers) work. (Practiced, Mastered)
- Students will study the protocols and technologies involved in data communication over the Internet. With this knowledge, they will be able to design new protocols, or technologies, and to improve existing ones.

**CS 232: The Interdisciplinary Computer Science Research Process (4 Credits)**

This course teaches the research process in the Interdisciplinary Computer Science Program at Mills College. The students will learn to find research topics, critically read research papers, and write and communicate research results effectively. Other topics include intellectual property, publishing, funding, performance evaluation, and statistical techniques. During the course, students will work toward their research thesis proposal or their final thesis write-up.

**Prerequisite(s):** CS 064

**Note(s):** Course is intended primarily for graduate students in the first year of the ICS Program. Open to graduate students only.

**Program Goals:**

Interdisc Computer Science Program Goals

- Form interdisciplinary connections and apply computer science to meeting human needs. (Practiced, Mastered)

**CS 233: Cryptography and Network Security (4 Credits)**

This course teaches cryptography, explores threats against computer networks and teaches the various techniques used to provide network security. It covers basic relevant background in number theory and statistics, some networking principles, classic ciphers, and the most important current security fundamentals such as confidentiality, authentication, integrity, and non-repudiation. Undergraduate students learn and present case studies, while graduate students conduct small-scale research where they identify a problem, execute research, and write and present the results.

**Prerequisite(s):** CS 063 and MATH 004

**Program Goals:**

Computer Science Program Goals

- Design and write computer systems to solve real-world problems (Introduced, Practiced, Mastered)
- In order to discuss security vulnerabilities and attacks, students will need to learn and understand many aspect of computer networks, such as the protocol TCP.
- Design and write a correct computer program. (Practiced)
- Students will design and implement cryptographic algorithms using the Python programming language.
- Understand and apply the mathematical concepts underlying computer science. (Introduced, Practiced, Mastered)
- Cryptography is a mathematical disciple. Students will learn and practice modular arithmetic, finite fields and basic number theory.
- Understand how computer systems (including architecture, operating systems, network, security and compilers) work (Introduced, Practiced)
- Students will learn some of the vulnerabilities associated with identity theft attacks and the countermeasures.

**CS 241: Machine Learning (4 Credits)**

This course provides a broad introduction to machine learning and statistical pattern recognition including both supervised and unsupervised learning from a computational perspective. Topics include generative/discriminative learning, parametric/non-parametric learning, neural networks, support vector machines, clustering, dimensionality reduction, and kernel methods. Additional topics as time allows.

**Prerequisite(s):** CS 064 and CS 124 and MATH 050

**Program Goals:**

Data Science Program Goals

- Collect and manage data to devise solutions to data science tasks. (Practiced)
- Evaluate data in terms of source, volume, frequency, and flow.
- Collect, clean, and prepare data.
- Select, apply, and evaluate models to devise solutions to data science tasks. (Practiced)
- Identify and classify relevant variables for data science tasks.
- Choose and apply tools and methodologies to solve data science tasks.
- Assess the methods, tools, and models used in the analysis.
- Develop capacity to learn new analysis methods and tools. (Mastered)
- Develop a rigorous computational foundation for practical programming.
- Interpret data analysis outcomes. (Practiced)
- Evaluate the limitations of data science findings.
- Interpret data, extract meaningful information, and assess findings.
- Effectively communicate data science-related information to a variety of audiences. (Practiced)
- Communicate technical materials in written, visual, and oral forms.
- Help non-technical professionals understand and act on data science findings.
- Facilitate data-informed discussions through listening, questioning, and presenting.

**CS 250: Thesis for Degree of Master of Arts in Interdisciplinary Computer Science (2-4 Credits)**

Before commencing work on the thesis project, the student must submit a thesis proposal for review and acceptance by the director of the ICS Program and the faculty members of the student's thesis advisory committee. Only upon completion of a successful review process may the student proceed with the thesis.

**Note(s):** Open to graduate students only.

**Program Goals:**

Interdisc Computer Science Program Goals

- Design and write a correct computer program. (Practiced)
- Design, develop, and implement a program that correctly solves a problem according to specifications with appropriate testing plan and documentation.
- Optimize code to use computing resources, such as CPM time and memory, more efficiently.
- Convert a description of a problem into a set of specifications appropriate for a computing environment.
- Understand how computer systems (including architecture, operating systems, networks, and compilers) work. (Practiced)
- Build or simulate some aspect of a working computer system.
- Demonstrate understanding of computer systems by various means, such as debugging and modifying computer systems, designing components of computer systems, analysis of computer systems, prediction of behavior or outcomes of computer systems.
- Understand and apply the mathematical concepts underlying computer science. (Practiced)
- Analyze the efficiency of algorithms in terms of time and space complexity.
- Apply logic and use appropriate proof techniques to mathematically analyze algorithms.
- Understand the mathematical concepts underlying various fields in computer science, for example, computer architecture, theory of computation, and theory of algorithms.
- Form interdisciplinary connections and apply computer science to meeting human needs. (Mastered)
- Analyze a real-world problem, form interdisciplinary connections, and identify the computing requirements appropriate to its solution.
- Formulate and solve real-world problems in a computing environment.
- Consider the social consequences of technology.

**CS 270: Software Engineering (4 Credits)**

A course designed to help students transform themselves into skilled software engineers, able to apply their knowledge of coding, algorithms, and systems to write elegant, efficient, and correct programs. Topics include techniques and tools for design, documentation, collaboration, development, building, testing, debugging, and maintenance, primarily using the extreme programming methodology.

**Prerequisite(s):** CS 124 and CS 122

**Note(s):** Prerequisite CS 222 (122). May be taken concurrently. Limit 25 students. Open to graduate students only.

**Program Goals:**

Interdisc Computer Science Program Goals

- Design and write a correct computer program. (Practiced, Mastered)
- Students will work as a team to select a complex computer application and then work through the entire software development lifecycle including the following milestones: (a) high-level specifications, (b) detailed specifications, (c) prototyping with "thin vertical slice" across all components and "broad horizontal slice" demonstrating extensive UI development, (d) beta release with usability test and QA test plan, and (e) final demonstration with hard copy documentation package.
- Form interdisciplinary connections and apply computer science to meeting human needs. (Practiced, Mastered)
- Students will work as a group emulating a development team in a small software start-up. They will design and implement a complex software application and will need to consider business and marketing needs in terms of design specifications and priorities.
- Students will select, design and develop a software application designed to meet a specific market need.
- Students will development management skills working as leaders and helpers designing and developing specific major software components.

**CS 280: Topics in Computer Science (4 Credits)**

Offers topics that are not offered in the regular curriculum. Topics may include neural networks and other specialized topics in artificial intelligence, networking, very large-scale integrated systems, multimedia design and development, parallel and distributed computing, and information retrieval.

**Note(s):** Only open to graduate students or undergraduates in the BA/MA ICS program. Limit 20 students. Open to graduate students only. Open to seniors only.

**CS 280K: Design and Queries with SQL (4 Credits)**

This course introduces concepts and methods fundamental to database development and use including data analysis and modeling, defining relationships, selecting keys, and normalization, with emphasis on the relational model. Structured query language (SQL) will be used to create and populate tables, as well as develop queries to retrieve specific data sets.

**Note(s):** Open to graduate students only.

**CS 286: Web Programming (4 Credits)**

This course studies the design and implementation of Web applications. Students will learn HTML, JavaScripts, CSS, XML, PHP, MySQL, and contemporary Web technologies. There will be several programming assignments and a final project, where each student will build a Web application with components covered during the semester.

**Prerequisite(s):** CS 064

**Note(s):** Open to graduate students only.

**Program Goals:**

Interdisc Computer Science Program Goals

- Design and write a correct computer program. (Practiced)
- Students will write computer programs, using PHP, to process data entered through web forms from web users, and to create and manipulate MySQL databases.
- Form interdisciplinary connections and apply computer science to meeting human needs. (Practiced)
- Students will develop interactive web sites targeted to solve human needs.