# Computer Science (CS)

**CS 062: Contemporary Computing (4 Credits)**

This course covers different aspects of computer science and teaches students fundamental programming concepts. Students learn the basics of a wide range of topics such as computer components, data representation, computer networking, HTML, JavaScript, and CSS. At the end of the course, each student designs and implements a web site using HTML, CSS and JavaScript.

**Note(s):** No previous experience with computers is required. Concurrent lab required. Limit 25 students.

**Meets the following Core requirements:** Quantitative Literacy

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 063: Introduction to Computer Science (4 Credits)**

Problem solving with computers. Problem decomposition, development of graphical user interfaces, development of simple algorithms, and the design and construction of computer programs using object-oriented techniques and the Java programming language.

**Note(s):** No previous experience with computers is required. Concurrent lab required. Limit 30 students.

**Meets the following Core requirements:** Quantitative Literacy

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 063L: Intro Computer Science (Lab) (0 Credits)**

**CS 064: Computer Concepts and Intermediate Programming (4 Credits)**

A continuation of problem solving with computers. Emphasis is placed on static and dynamic data structures. These data structures are used to implement various well-known algorithms for searching, sorting, list and string processing, etc.

**Prerequisite(s):** CS 063

**Note(s):** Concurrent lab required. Prerequisite of CS 063 may be waived by instructor. Limit 30 students.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 064L: Comp Concenpts & Int Prog. Lab (0 Credits)**

**CS 080: 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):** Open to undergraduates only.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 080AJ: Python For All (4 Credits)**

Python, a popular general purpose computer programming language, can solve a wide variety of interdisciplinary problems from big data and text processing to bioinformatics, web technologies, finances, math, education, security, computer games and many more. This course will focus mainly on applications of data exploration, and it will cover topics such as strings, files, lists, dictionaries, text parsing, regular expressions and computer games using the computer language Python.

**Meets the following Core requirements:** Quantitative Literacy

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 080J: Special Topics in Computer Sci (4 Credits)**

**CS 100: 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

**CS 111: 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, and low-level operating systems fundamentals.

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

**Note(s):** Concurrent lab required. Prerequisites of MATH 004 and CS 064 may be waived by the instructor. Limit 35 students.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 114: 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

**Note(s):** Concurrent lab required. Limit 25 students.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 115: 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.

**CS 124: Data Structures and Algorithms (4 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):** MATH 004 and CS 064

**Note(s):** Concurrent lab required. Limit 25 students.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 124L: Data Structures/Algorithms Lab (0 Credits)**

**CS 125: 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.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 127: 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.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 128: 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.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**Crosslisted with:** MATH 128

**CS 131: 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.

**Prerequisite(s):** CS 064

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 133: 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

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 141: 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.

**CS 170: 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 122 May be taken concurrently. Limit 25 students.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 180: 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):** Open to sophomores, juniors, seniors, and graduate students.

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**CS 186: 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

**Meets the following Gen Ed requirements:** Quantitative and Computational Reasoning

**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

**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

**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.

**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.

**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.

**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

**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.

**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.

**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.

**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.

**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.

**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.

**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 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.