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 areas of study other than computer science, 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 both theoretical and practical 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. Highprofile 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 in areas of study other than computer science at another institution or by entering the Mills BA/MA Accelerated Degree Program in Interdisciplinary Computer Science. Prerequisites for the program–one year of programming and one year of discrete mathematics–can be fulfilled by courses taken during undergraduate studies or by earning the Mills postbaccalaureate Computer Science Certificate in Computer Programming.
In addition to the Computer Programming certificate, Mills offers postbaccalaureate computer science certificates in Foundations of Computer Science, Software Engineering, and Networks and Security. These certificates are designed for students who plan to enter industry directly or for those 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.
Learning Outcomes

Students will be able to create efficient and correct computer applications that meet human needs.

Students will be able to evaluate algorithms, protocols, computational solutions, and their performance.

Students will be able to apply mathematical and theoretical computer science concepts to solve computing problems.

Students will be able to communicate technical information clearly.
CS 200: Data, Apps, and Analytics in the Cloud (4 Credits)
Students will create a cloudbased 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 objectoriented language, to customize the interface using a tagbased 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)
 Collect, clean, and prepare data.
 Evaluate data in terms of source, volume, frequency, and flow.
 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)
 Interpret data, extract meaningful information, and assess findings.
 Evaluate the limitations of data science findings.
 Effectively communicate data sciencerelated information to a variety of audiences. (Practiced)
 Communicate technical materials in written, visual, and oral forms.
 Help nontechnical professionals understand and act on data science findings.
 Facilitate datainformed discussions through listening, questioning, and presenting.
CS 211: Computer Architecture (4 Credits)
An introduction to computer architecture, digital logic, and simulation. Students gain an understanding of computers by building simple circuits, learning MIPS assembly language, and designing and simulating parts of the MIPS architecture on FPGAs. The following topics are covered: Boolean algebra, binary number representation and arithmetic, assembly language, hardware description languages, data paths, pipelining, memory hierarchies, lowlevel operating systems fundamentals, and reading and writing computer history.
Prerequisite(s): CS 064
CS 214: Programming Languages (4 Credits)
Theory, design, and implementation of programming languages. Topics include different programming paradigms, such as declarative, functional, imperative, objectoriented, 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 teambased 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); multithreaded 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): Prerequisites may be waived by demonstrating comparable experience to the instructor. Limit 30 students.
Program Goals:
Computer Science Program Goals
 Design and write computer systems to solve realworld 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 are multiple lab assignments in which students must write computer programs, which are reviewed linebyline by the instructor.
 There is a team project in which each student implements a component of a mobile device application.
 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 224: Data Structures and Algorithms (5 Credits)
The study of fundamental data structures such as lists, queues, stacks, heaps, hash tables, and trees. An introduction to computational complexity in terms of time and space. The implementation and analysis of sorting and searching algorithms, and as time permits, some graph algorithms.
Prerequisite(s): CS 064 and MATH 004
Note(s): Open to graduate students only.
Program Goals:
Interdisc Computer Science Program Goals
 Design and write a correct computer program. (Practiced)
 Implement operations associated with data structures.
Data Science Program Goals
 Collect and manage data to devise solutions to data science tasks. (Practiced)
 Collect, clean, and prepare data.
 Evaluate data in terms of source, volume, frequency, and flow.
Interdisc Computer Science Program Goals
 Design and write a correct computer program. (Practiced)
 Analyze algorithms in terms of computational resources (e.g. through time/space complexity analysis).
 Utilize various data structures and make appropriate choices based on design tradeoffs to solve problems and maximize the efficiency of programs.
Computer Science Program Goals
 Design and write a correct computer program. (Practiced, Mastered)
 Students use software engineering principles, specific computer languages and computer technologies to develop correct applications such as graphical user interfaces, databases, clientserver, multithreading, assembly language programs, and web applications.
 Students take a problem statement, clarify it, and analyze it in order to create a set of specifications appropriate for a computing environment. Students then create an algorithm that provides a solution, encode it in a formal computing language, and finally test and debug the program.
 Students analyze and study algorithms in terms of computational resources (e.g. through time/space complexity analysis).
 Students study and utilize data structures and make appropriate choices based on design tradeoffs to solve problems and maximize the efficiency of programs.
Interdisc Computer Science Program Goals
 Understand and apply the mathematical concepts underlying computer science. (Practiced)
 Apply recurrence relations to derive the running time 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.
Data Science Program Goals
 Develop capacity to learn new analysis methods and tools. (Practiced)
 Develop a rigorous computational foundation for practical programming.
Interdisc Computer Science Program Goals
 Understand and apply the mathematical concepts underlying computer science. (Practiced)
 Understand and appreciate the close connection between mathematical induction and recursion (e.g. mathematical induction is used to prove the correctness of recursive algorithms).
Computer Science Program Goals
 Understand and apply the mathematical concepts underlying computer science. (Practiced, Mastered)
 Students apply recurrence relations to derive the running time of recursive algorithms, and appreciate the close connection between mathematical induction and recursion (e.g. mathematical induction is used to prove the correctness of recursive algorithms).
 Students apply math concepts such as Boolean algebra (in computer Architecture), set theory (in Databases), formal proofs, graph theory (computer networks), finitestate automata (computer networks). Students understand system of linear equality, sensitivity analysis, duality theory  underlying the Simplex algorithm.
 Students learn and write direct and indirect proofs and develop ability to show the correctness of operations performed in algorithms
 Students develop and apply logic reasoning skills to model computational systems.
 Develop ability to solve computational problems such as finding patterns in texts, parsing a programming language, or computing algebraic functions, using automata.
CS 225: Theory of Algorithms (4 Credits)
An introduction to general algorithmic techniques including divideandconquer, 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 NPcomplete (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 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.
 Understand and appreciate the close connection between mathematical induction and recursion (e.g. mathematical induction is used to prove the correctness of recursive algorithms).
 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 mathematical concepts – systems of linear inequalities, sensitivity analysis, duality theory – underlying the Simplex algorithm.
 Understand the time efficiency of 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 realworld 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, contextfree 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)
 Develop ability to solve computational problems such as finding patterns in texts, parsing a programming language, or computing algebraic functions, using automata.
 Understand Turing machines as a model of computation and use the model to show the capabilities and limitations of computation.
 Understand the theory of formal languages, in particular contextfree 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 smallscale 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 (3 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 writeup.
Prerequisite(s): CS 064
Note(s): Course is intended primarily for graduate students in the first year of the ICS Program. Limit 30 students. 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 nonrepudiation. Undergraduate students learn and present case studies, while graduate students conduct smallscale 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 realworld 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/nonparametric 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)
 Collect, clean, and prepare data.
 Evaluate data in terms of source, volume, frequency, and flow.
 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)
 Interpret data, extract meaningful information, and assess findings.
 Evaluate the limitations of data science findings.
 Effectively communicate data sciencerelated information to a variety of audiences. (Practiced)
 Communicate technical materials in written, visual, and oral forms.
 Help nontechnical professionals understand and act on data science findings.
 Facilitate datainformed discussions through listening, questioning, and presenting.
CS 250: Thesis for Degree of Master of Arts in Interdisciplinary Computer Science (24 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)
 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.
 Design, develop, and implement a program that correctly solves a problem according to specifications with appropriate testing plan and documentation.
 Understand how computer systems (including architecture, operating systems, networks, and compilers) work. (Practiced)
 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.
 Build or simulate some aspect of a working computer system.
 Understand and apply the mathematical concepts underlying computer science. (Practiced)
 Analyze the efficiency of algorithms in terms of time and space complexity.
 Understand the mathematical concepts underlying various fields in computer science, for example, computer architecture, theory of computation, and theory of algorithms.
 Apply logic and use appropriate proof techniques to mathematically analyze algorithms.
 Form interdisciplinary connections and apply computer science to meeting human needs. (Mastered)
 Formulate and solve realworld problems in a computing environment.
 Analyze a realworld problem, form interdisciplinary connections, and identify the computing requirements appropriate to its solution.
 Consider the social consequences of technology.
CS 270: Software Engineering (5 Credits)
A course designed to help students transform themselves into skilled Agile software engineers, able to apply their knowledge of coding, algorithms, and systems to write elegant, efficient, and correct programs. Topics include Ruby on Rails (RoR) or Django, Cloud Computing, Test Driven Development (TDD), Behavior Driven Design (BDD), Databases and many other fundamental software tools critical for the development of SaaS applications.
Prerequisite(s): CS 064
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) highlevel 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 development management skills working as leaders and helpers designing and developing specific major software components.
 Students will select, design and develop a software application designed to meet a specific market need.
 Students will work as a group emulating a development team in a small software startup. 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.
CS 277: Teaching Practicum (14 Credits)
Teaching Practicum
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 largescale 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 280A: Production Java (4 Credits)
This course covers creating and modifying productionquality Java programs that are robust, efficient, and maintainable. Topics include annotations, API usage, best practices, code reviews, debugging, design, design patterns, enumerated types, error handling, internal documentation, performance measurement, reading code, refactoring, style guides, testdriven development, unit testing (including mocking), and version control (git & GitHub). Students in the graduate version of the course will contribute to existing open source projects.
Prerequisite(s): CS 064
Note(s): Open to graduate students only.
CS 280B: Game Development  Critique and Technique (3 Credits)
This course offers an alternative lens on gaming and game design, surveying the world beyond mainstream games and dominant game genres. Students will inhabit the intersecting roles of player, critic, and creator, examining how games can reflect larger structures and power relations as well as elevating marginalized narratives and sharing distinctive voices. The course surveys a wide variety of platforms, developing students' introductory skills and examining key works. Platforms will include a selection from conventional video games, narrative gaming, visual novels, and socialimpact games.
Note(s): Open to graduate students only.
CS 280C: Web Application Development (4 Credits)
Design and development of web applications, focused on clientside programming with HTML, CSS and Javascript, along with contemporary Javascript libraries such as React and Vue. Topics include structure and styling of web content, user interface components, DOM manipulation, design patterns and data modeling and persistence. Students’ work will culminate in an individual or smallteam project, designing and implementing an application to address an area of personal and/or community need.
Prerequisite(s): CS 063
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.