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.

Meets the following Core requirements: Quantitative Literacy

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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.

Meets the following Core requirements: Quantitative Literacy

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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

View Course Goals

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

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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.

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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

View Course Goals

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

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

Crosslisted with: MATH 128

View Course Goals

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

View Course Goals

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

View Course Goals

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.

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

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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.

Meets the following Gen Ed requirements: Quantitative and Computational Reasoning

View Course Goals

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

View Course Goals

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

View Course Goals

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

View Course Goals

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.

View Course Goals

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.

View Course Goals

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.

View Course Goals

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.

Crosslisted with: CS 228

View Course Goals

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

View Course Goals

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.

View Course Goals

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

View Course Goals

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

View Course Goals

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.

View Course Goals

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.

View Course Goals

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.

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

View Course Goals