Department of Computer Science

Last updated: August 14, 2014 at 4:29 p.m.

Objectives

Undergraduate Major and Minor
The undergraduate program in computer science teaches the theoretical fundamentals and practical aspects of computing, preparing students for creative jobs in the computer industry and/or for graduate school. In addition, our curriculum is a stimulating and useful preparation for a number of indirectly related professions, such as law, medicine, and economics.

Graduate Program in Computer Science
The graduate program in computer science is concerned with the fundamental concepts arising in the development and use of computing systems, including the study of computational complexity and information theory, the design and analysis of serial and parallel algorithms, the design of programming languages, systems, and artificial intelligence.

Graduate Program in Computational Linguistics
The graduate program in computational linguistics is concerned with the scientific study of language from a computational perspective. It is an interdisciplinary field, which draws on linguistic theory (phonology, syntax, semantics, and pragmatics) and computer science (artificial intelligence, theory of computation, and programming methods).

Learning Goals

The Association for Computing Machinery has developed a curriculum for computer science that is published annually. Much of the attached text is copied and reworded from the text for Computer Science Curriculum 2008.

Objectives
Computing is a broad field that extends well beyond the boundaries of computer science, drawing its foundations from a wide variety of disciplines. Computer science increasingly plays a methodological role in other disciplines and the impact of technology is a significant subject of study in fields like political science and journalism.

Majors in computer science learn to utilize concepts from many different fields, integrate theory and practice, and appreciate the value of good engineering design. They develop a high-level understanding of systems as a whole and an appreciation for the structure of computer systems,and the processes involved in their construction and analysis, that transcends the implementation details of the various components. They attain an understanding of the theoretical underpinnings of the discipline and how that theory influences practice. Many recurring themes such as abstraction, complexity, and evolutionary change are encountered during their course of study. Students are also educated as engineers, learning how to design, develop and maintain, large complex software systems and applications, integrating them into workplaces, and developing interfaces to them that support human use. Given the rapid continuous development of the field, majors are educated to be lifelong learners.

In recognition of the increasing significance of computer science as an important discipline for many students throughout the university, the department also offers a selection of courses relevant to students majoring in other disciplines or students double majoring in computer science and another concentration. Several courses enable students to develop skills and understanding of web technology and the impact of the Internet on society. Other courses provide students with the relevant skills and knowledge for assessing the adoption of new technology within an organization. Non-majors can learn the computing and modeling skills that support their work in their core discipline. Students in the social sciences can learn how the skills and methods from their core discipline are relevant for the development of user friendly technology, or the introduction of technology into the workplace.

Skills
Majors in computer science will develop a number of skills.

  • Understanding the elements of computational thinking.
  • Understanding the trade-off involved in design choices.
  • Identifying and analyzing criteria and specifications appropriate to specific problems, and planning strategies for their solution. Analyzing the extent to which a computer-based system meets the criteria defined for its current use and future development.
  • Deploying appropriate theory, practices, and tools for the specification, design, implementation, and maintenance as well as the evaluation of computer-based systems.
  • Specifying, designing, and implementing computer-based systems.
  • Evaluating systems in terms of general quality attributes and possible tradeoffs presented within the given problem.
  • Applying the principles of effective information management, information organization, and information-retrieval skills to information of various kinds, including text, images, sound, and video.
  • Awareness of security issues. Exposure to issues associated with access, encryption, and networking.
  • Applying the principles of human-computer interaction to the evaluation and construction of a wide range of materials including user interfaces, web pages, multimedia systems and mobile systems.
  • Learning to deploy effectively the tools used for the construction and documentation of software, with particular emphasis on understanding the whole process involved in using computers to solve practical problems.
  • Awareness of the existence of publicly available software (such as APIs or open source materials). Effective engagement in open-source projects. Exposure to effective software reuse.
  • Operating computing equipment and software systems effectively.

    Additional skills prepare the majors for success as professionals:
  • Communication. Making succinct presentations to a range of audiences about technical problems and their solutions. This may involve face-to-face, written, or electronic communication.
  • Teamwork. Learning to work effectively as a member of a disciplinary or interdisciplinary development team.
  • Numeracy. Understanding and explaining the quantitative dimensions of a problem.
  • Self-management. Managing one’s own learning and development, including time management and organizational skills
  • Professional development. Learning the skills necessary to continue one’s own professional development after graduation.

Knowledge

  • Discrete structures
  • Programming fundamentals
  • Graphics and visual computing
  • Algorithms and complexity.
  • Intelligent systems and Machine Learning
  • Data Compression
  • Computational Linguistics
  • Architecture and organization Bioinformatics
  • Operating systems, concurrency, and security.
  • Artificial life
  • Distributed Computing and Networking Data management
  • Programming languages Software engineering(exposure to different programming paradigms)
  • Numerical methods, simulation and modeling
  • Human-Computer Interaction
  • Entrepreneurial Computer Science
  • Computer Supported Cooperative Work Internet & Society

Social Justice
The department does not currently offer a specific course to cover social and professional issues. However, many of these issues are distributed throughout the curriculum. Lifelong learning is a common theme of many of the elective courses. There are many opportunities for experiential learning and the development of oral communication and teamwork skills. Open software, freedom of information, patent and copyright law, software pirating, social inclusion and the digital divide, and the effect of the Internet on political discourse and free speech, are among the topics covered in the Internet & Society course.

Upon Graduating
The BS curriculum is intended for students who want to work as computer scientists in a technical firm or plan to attend graduate school in computer science. The BS requires more rigorous training in the analytic and engineering foundations of computer science. It includes a breadth component that exposes students to a range of topics within computer science, and it also includes a depth component that requires students to explore a sequence of courses in one area of computer science.

The BA requirement reduces the ACM curriculum to the basic set of skills and knowledge. Students graduating with the BA will be prepared to work as application programmers or in secondary areas related to computation like informatics or library science. The BA curriculum is also ideal for students who plan to use their degree in computer science as a basis for graduate study in a professional school or graduate programs in other areas of science or social science.

How to Become a Major or a Minor

Previous experience in computer programming is not required. Students that have previous experience and can demonstrate their ability to program in Java or a similar language, can be exempted from the first programming course of the major: COSI 11a (Programming in Java and C).

How to Be Admitted to the Graduate Program

The general requirements for admission to the Graduate School, given in an earlier section of the Bulletin, apply here. Applicants for admission to the computer science program must submit three letters of recommendation and are encouraged to take the Graduate Record Examination. Funds from research grants and fellowships are available to provide financial support for well-qualified students. GREs are required for Computer Science graduate students.

Faculty

Jordan Pollack, Chair
Artificial intelligence. Evolutionary computation. Artificial life.

Richard Alterman
Computer-supported cooperation. Learning and technology. Cognitive engineering and modeling. Communication and discourse. Intelligent user interfaces.

Mitch Cherniack
Databases. Software engineering. Programming languages.

Antonella DiLillo
Image analysis. Scientific computing.

Timothy Hickey, Undergraduate Advising Head
Scientific visualization. Groupware. Interval arithmetic and constraints. Programming languages.

Pengyu Hong
Computational biology. Image processing. Statistical machine learning.

Harry Mairson (on leave fall 2014)
Logic in computer science. Lambda calculus, type theory, and functional programming. Algorithms and complexity.

Sophia Malamud (on leave fall 2014)
Linguistics. Formal semantics and pragmatics of natural languages.

Olga Papaemmanouil
Distributed data management. Databases. Large-scale networked systems.

James Pustejovsky
Artificial intelligence. Computational linguistics. Qualitative spatiotemporal reasoning. Lexical semantics. Corpus linguistics.

Liuba Shrira, Graduate Program Director
Operating systems. Distributed systems. Long-lived storage systems.

James Storer (on leave spring 2015)
Data compression and image processing. Computational geometry. Parallel computing. Algorithms.

Nianwen Xue
Linguistic structures. Language processing. Natural computational linguistics.

Requirements for the Minor

The minimum requirements for the computer science minor are six courses:

A. COSI 11a, 12b, and 21a.

B. Three additional computer science courses, one of which may be a cross-listed course or another course approved by the undergraduate advising head.

C. No course with a final grade below C- can count toward fulfilling the requirements for the minor in computer science.

D. No course taken pass/fail may count toward requirements for the minor.

Requirements for the Major

Degree of Bachelor of Arts
The minimum requirements for the computer science major are nine courses:

A. Five core courses: COSI 11a, 12b, 21a , 29a, and 131a.

B. Electives: At least four additional COSI courses, excluding 99d, and one may be cross-listed.

Degree of Bachelor of Science
The minimum requirement for the computer science major are fourteen courses:

A. Seven core courses: COSI 11a, 12b, 21a , 21b , 29a, 30a, and 131a.

B. Mathematics courses: Math 8a and 10a.

C. Electives: at least five additional COSI courses, excluding 99d, and up to two courses can be cross-listed.

D. No course with a final grade below C- can count toward fulfilling the requirements for the major in computer science.

E. No course taken pass/fail may count toward requirements for the major.

Honors
Graduation with honors in computer science requires completion and defense of a senior honors thesis; students considering this option should take note of the prerequisites for enrollment in COSI 99d (Senior Research).

Combined BA/MA Program in Computer Science

Available only to Brandeis students who have completed all requirements for the undergraduate BA degree and have performed well in the computer science major and have completed three COSI electives in addition to those required for the BA Students should apply in their senior year, at which time they should propose a course of study for the fifth year that typically consists of six graduate-level courses of which three may be chosen from the following courses: COSI 152aj, COSI 152bj, COSI 153aj, COSI 153bj, COSI 154aj, COSI 293aj, COSI 210aj, COSI 200a,b and COSI 210a.

Combined BA/MA Program in Computational Linguistics

The five-year BA/MA degree program in computational linguistics is designed for outstanding undergraduate students who will have completed all requirements for the undergraduate BA degree within four years at Brandeis, with a major preferably in either language and linguistics or computer science. Eligibility for the program is normally limited to students who have maintained a minimum 3.500 GPA in all linguistics and computer science courses taken. Students complete the MA in computational linguistics by taking computational linguistics courses in the senior (fourth) year and in one additional (fifth) year of study. The MA degree provides a solid foundation for professional work in the field of computational linguistics or for additional graduate study in computational linguistics and theoretical linguistics. An application should be submitted no later than May 1 of the student's junior year.

Program of Study
Students admitted to the program must fulfill the following requirements, in addition to completing their BA: a schedule of course work designed in conjunction with and approved by the director of graduate studies consisting of nine courses, which includes: four to five core courses, three to four electives, and either an internship in computational linguistics or a master's thesis. The specific course work will vary according to the student’s background in computer science and/or linguistics; however all students will be required to complete LING 131a, COSI 114b, and COSI 134a. Depending on the student's preparation for the program, additional courses beyond the nine may be required.

Residence Requirement
The minimum residence requirement is one year after completing the BA degree.

Special Notes Relating to Undergraduates

Students may submit a written request to count a course from another department to satisfy one of the required computer science electives. Approval of such a request is based on the relationship of this course to the student's other computer science electives.

Requirements for the Degree of Master of Arts (including Computer Science and Computational Linguistics)


Master of Arts in Computer Science


Program of Study
The MA program in computer science is a two-track program designed for outstanding students with undergraduate degrees in any field. Admitted students with an undergraduate degree in Computer Science must satisfactorily complete an approved schedule of nine courses, which includes:
A. Elective courses: At least nine COSI courses numbered 100 or greater of which at most three may be chosen from the following courses: COSI 152aj, COSI 152bj, COSI 153aj, COSI 153bj, COSI 154aj, COSI 293aj, COSI 210aj, COSI 200ab and COSI 210a.

Admitted students with an undergraduate degree in a field other than Computer Science must satisfactorily complete an approved schedule of twelve courses, which includes:
A. Four core courses providing fundamental background in Computer Science: COSI 11a, COSI 12b, COSI 21a, and COSI 29a. At most two core courses can be taken a semester.
B. Elective courses: At least eight additional COSI courses numbered 100 or greater of which one must be COSI 131a, one may be chosen from the following courses: COSI 152aj, COSI 152bj, COSI 153aj, COSI 153bj, COSI 154aj, COSI 293aj, COSI 210aj, COSI 200ab and COSI 210a. Students who have previously taken the equivalent of any core course may petition the Graduate Program Director for an exemption allowing them to substitute an additional COSI course numbered 100 or greater.

Residence Requirement
The minimum residency requirement is three semesters.


Master of Arts in Computational Linguistics


Program of Study
The two-year MA program in computational linguistics is designed for outstanding students, preferably with an undergraduate degree in either language and linguistics or computer science. The MA provides a solid foundation for professional work in the field of computational linguistics or pursuit of a PhD in computational linguistics and theoretical linguistics.

Students must complete a schedule of course work designed in conjunction with and approved by the director of graduate studies consisting of nine courses, which includes: four to five core courses, three to four electives, and either an internship in computational linguistics or a master’s thesis. The master’s thesis must be deposited electronically to the Robert D. Farber University Archives at Brandeis.

The specific course work will vary according to the student’s background in computer science and/or linguistics; however all students will be required to complete LING 131a, COSI 114b, and COSI 134a. Depending on the student’s preparation for the program, additional courses beyond the nine may be required.

Residence Requirement
The minimum residence requirement is two years.

Requirements for the Degree of Doctor of Philosophy

Adviser
Ph.D. students are expected to work closely with faculty on research projects of mutual interest. By the end of the second year, the student must obtain the consent of a computer science faculty member to serve as adviser and dissertation committee chair.

Course Requirements
Satisfactory completion of an approved schedule of nine computer science courses numbered 100 or above of which two may be chosen from the following courses: COSI 152aj, COSI 152bj, COSI 153aj, COSI 153bj, COSI 154aj, COSI 293aj, COSI 210aj, COSI 200a,b and COSI 210a. Students may petition the director of graduate studies to substitute courses from other departments that are relevant to their research area. Students who have obtained a Masters degree in Computer Science may petition to reduce their course requirements by a maximum of 6 courses.

Each summer, full-time PhD students are required to do work related to their research area under the supervision of a faculty member. The work can take the form of dissertation research, or can involve an industrial internship. Students doing dissertation research over the summer should register for CONT 250. Students doing an industrial internship must have the consent of their advisor and should register for COSI 393g.

Teaching Requirement
Teaching is a critical skill required in both academic and industrial careers that follow graduation. To prepare students for this role, students normally serve as teaching interns for one course per year. Teaching internship responsibilities may include assisting with course design and lecture preparation, giving an occasional class lecture, assignment formulation and grading.

Thesis Committee and Proposal
1. Establishment by the adviser and the director of graduate studies of a thesis committee consisting of the adviser, two other Brandeis faculty, and one or more appropriate external members from outside Brandeis.

2. An approved, written thesis proposal by the candidate that surveys the relevant literature and states the goals of the dissertation and topics to be investigated (including aspects already completed or underway), along with an oral presentation to the thesis committee that is open to computer science faculty who wish to attend.

Thesis Defense
Public defense of a completed dissertation will be announced three weeks in advance. Copies of the complete thesis will be available to the faculty during these three weeks.

Residence Requirement
The minimum residency requirement is three years.


Requirements for the Degree of Doctor of Philosophy in Computer Science with an Additional Specialization in Quantitative Biology


Program of Study
Students wishing to obtain the specialization must first gain approval of the graduate program director. This should be done as early as possible, ideally during the first year of graduate studies. In order to receive the PhD in Computer Science with additional specialization in Quantitative Biology, candidates must complete (a) the requirements for the PhD described above and (b) the course requirements for the quantitative biology specialization that are described in the quantitative biology section of this Bulletin.

Any alteration to the quantitative biology course requirements must be approved by the graduate program director and by the quantitative biology program faculty advisory committee.

Courses of Instruction

(1-99) Primarily for Undergraduate Students

COSI 2a Introduction to Computers
[ sn ]
Introduces the basic principles underlying computer hardware and software and to the implications of the wider use of computers in society. Topics will include hardware, software, Web page design, applet and servlet programming, the Internet, privacy and security issues, as well as a survey of current research directions, including artificial intelligence and parallel computing. Usually offered every year.
Mr. Hickey

COSI 11a Programming in Java and C
[ sn ]
Open only to students with no previous programing background.
A general introduction to structured programming and problem solving using C and Java in the context of the World Wide Web. Students also learn GUI programming and advanced HTML authoring. There are weekly programming assignments. Usually offered every semester.
Staff

COSI 12b Advanced Programming Techniques
[ sn ]
Prerequisite: COSI 11a or programming facility in C.
An introduction to fundamental programming techniques covering basic software engineering, object oriented programming, interfaces, APIs and abstract classes, with applications to Graphical User Interfaces, web programming, graphics, and other topics. Usually offered every year.
Staff

COSI 21a Data Structures and the Fundamentals of Computing
[ sn ]
Prerequisite: COSI 11a or programming facility in C.
An introduction to the fundamental concepts of computation: discrete structures (sets, relations, functions, sequences, graphs), the fundamental data structures and algorithms for sorting and searching (lists, queues, dequeues, heaps, hashing, binary trees, tries), and the analysis of algorithms (predicate logic, termination and correctness proofs, computational complexity). Usually offered every year.
Mr. Storer

COSI 21b Structure and Interpretation of Computer Programs
[ sn ]
Prerequisites: COSI 11a or programming facility in C.
An introduction to idioms of programming methodology, and to how programming languages work. Principles of functional programming, data structures and data abstraction; state, imperative and object-oriented programming; lazy data structures; how an interpreter works; metalinguistic abstraction and programming language design; syntax analysis, lexical addressing, continuations and explicit control; continuation-passing style, metacircular and register-machine compilers. Usually offered every year.
Mr. Mairson

COSI 29a Discrete Structures
[ sn ]
Covers topics in discrete mathematics with applications within computer science. Some of the topics to be covered include graphs and matrices; principles of logic and induction; number theory; counting, summation, and recurrence relations; discrete probability. Usually offered every year.
Mr. Gessel

COSI 30a Introduction to the Theory of Computation
[ sn ]
Prerequisite: COSI 29a.
Formal treatment of models of computation: finite automata and regular languages, pushdown automata and context-free languages, Turing machines, and recursive enumerability. Church's thesis and the invariance thesis. Halting problem and undecidability, Rice's theorem, recursion theorem. Usually offered every year.
Mr. Mairson

COSI 65a Introduction to 3-D Animation
[ sn ]
Covers the fundamental concepts of 3-D animation and teaches both the theory underlying 3-D animation as well as the skills needed to create 3-D movies. Students demonstrate their understanding of the concepts by creating several short animated movies. Usually offered every third year.
Mr. Hickey

COSI 89aj Research Internship
Full-time internship with at least 300 hours from August to December. Students blog about their internship, comment on classmates blog entries and write papers about their internship and its role in the world. Offered as part of JBS program.
Staff

COSI 93a Research Internship and Analysis
Provides students with an opportunity to work in a computer science research lab for one semester, pursuing a project that has the potential to produce new scientific results. Students and the faculty member mutually design a project for the semester that supports the research agenda of the group. Students must attend all research group meetings and present their findings in oral and written form at the end of the semester. The project typically includes background research, some lab work, and collaboration with other group members. Course requires signature of the instructor, is subject to the availability of undergraduate research positions, and is typically open only to juniors and seniors.
Staff

COSI 98a Independent Study
Open to exceptional students who wish to study an area of computer science not covered in the standard curriculum. Usually offered every year.
Staff

COSI 98aj Independent Study
Read scholarly articles related to web services, mobile applications, and cloud computing. Requires a final paper ideally related to student's internship. Offered as part of JBS program.
Staff

COSI 98b Independent Study
Open to exceptional students who wish to study an area of computer science not covered in the standard curriculum. Usually offered every year.
Staff

COSI 99d Senior Research
Prerequisites: Open only to seniors. Submission of a thesis proposal during the spring semester of the junior year. This proposal must be signed by a faculty member who has agreed to supervise the thesis.
Research assignments and preparation of a report under the direction of an instructor. Usually offered every year.
Staff

(100-199) For Both Undergraduate and Graduate Students

COSI 101a Fundamentals of Artificial Intelligence
[ sn ]
Prerequisites: COSI 21a.
Survey course in artificial intelligence. Introduction to Lisp and heuristic programming techniques. Topics include problem solving, planning natural language processing, knowledge representation, and computer vision. Usually offered every year.
Mr. Pollack

COSI 112a Modal, Temporal, and Spatial Logic for Language
[ sn ]
Prerequisites: COSI 21b or 29a.
Examines the formal and computational properties of logical systems that are used in AI and linguistics. This includes (briefly) propositional logic and first order logic, and then an in-depth study of modal logic, temporal logic, spatial logic, and dynamic logic. Throughout the analyses of these systems, focuses on how they are used in the modeling of linguistic data. Usually offered every second year.
Mr. Pustejovsky

COSI 113b Artificial Life
[ sn ]
Prerequisite: COSI 21a.
Explores genetic algorithms, genetic programming, evolutionary programming, blind watchmaking, and related topics, ultimately focusing on co-evolutionary spirals and the automatic construction of agents with complex strategies for games. Usually offered every second year.
Mr. Pollack

COSI 114b Fundamentals of Computational Linguistics
[ sn ]
Prerequisites: COSI 11a and LING 131a, or permission of the instructor.
Provides a fundamental understanding of the problems in natural language understanding by computers, and the theory and practice of current computational linguistic systems. Of interest to students of artificial intelligence, algorithms, and the computational processes of comprehension and understanding. Usually offered every year.
Ms. Meteer and Mr. Pustejovsky

COSI 115bj Spoken Dialog Design
[ sn ]
Prerequisites: COSI 11a and COSI 12b or the equivalent.
Explores fundamental concepts underlying spoken dialog applications. Topics include principles of human dialog, speech recognition and synthesis, and VUI design. Students will use industry standard tools in speech recognition, natural language, and dialog design to build interactive applications. Offered as part of JBS program.
Ms. Meteer

COSI 118a Computer-Supported Cooperation
[ sn ]
Covers basic theory and concepts of computer-supported collaborative work and learning. Laboratory work enables the student to practice a set of basic techniques as they apply to the development of computer-mediated collaboration. The content and work of the course are specifically designed for an interdisciplinary class of students from computer science and the social sciences. Usually offered every second year.
Mr. Alterman

COSI 123a Statistical Machine Learning
[ qr sn ]
Prerequisite: COSI 29a and MATH 10a
Focuses on learning from data using statistical analysis tools and deals with the issues of designing algorithms and systems that automatically improve with experience. This course is designed to give students a thorough grounding in the methodologies, technologies, mathematics, and algorithms currently needed by research in learning with data. Usually offered every year.
Mr. Hong

COSI 125a Human-Computer Interaction
[ sn ]
Prerequisite: sophomore standing.
Covers the basic theory and concepts of human-computer interaction. Topics include methodology for designing and testing user interfaces, interaction styles and techniques, design guidelines, and adaptive systems. The laboratory work is designed to give the student practice in a set of basic techniques used in the area of human-computer interaction. Usually offered every second year.
Mr. Alterman

COSI 127b Database Management Systems
[ sn ]
Prerequisites: COSI 12b or 21a and COSI 29a.
Introduces database structure, organization, and languages. Studies relational and object-oriented models, query languages, optimization, normalization, file structures and indexes, concurrency control and recovery algorithms, and distributed databases. Usually offered every second year.
Mr. Cherniack

COSI 128a Modern Database Systems
[ sn ]
Prerequisite: COSI 127b or permission of the instructor.
Covers advanced topics in database systems such as concurrency control, recovery, security, and data mining. Usually offered every fourth year.
Mr. Cherniack

COSI 129a Introduction to Big Data Analysis
[ sn ]
Prerequisite: COSI 12b.
Provides the knowledge to use Big Data tools and learn ways of collecting, processing and analyzing massive amounts of unstructured data. This is an interdisciplinary course that will combine techniques from system design, distributed processing, machine learning and natural language processing to address big data analytic tasks. Usually offered every year.
Ms. Papaemmanoil

COSI 131a Operating Systems
[ sn ]
Prerequisites: COSI 12b or 21a. May not be taken for credit by students who took COSI 31a in prior years.
Fundamental structures of a computer system from hardware abstractions through machine and assembly language, to the overall structure of an operating system and key resource management abstractions. Usually offered every year.
Ms. Shrira

COSI 132a Information Retrieval
[ sn ]
Prerequisite: COSI 21a, COSI 101a or COSI 114b.
Explores the theory and practice of textual information retrieval, including text indexing; Boolean, vector space and probabilistic retrieval models; evaluation; interfaces; linguistic issues; web search; QA and text classification. Students will implement algorithms and design and build a search-based application. Usually offered every second year.
Mr. Anick

COSI 132b Networked Information Systems
[ ss ]
Prerequisite: COSI 131a. May not be taken for credit by students who took COSI 130a in prior years.
Explores the fundamental concepts in design and implementation of networked information systems, with an emphasis on data management. In addition to distributed information systems, we will also study modern applications involving the web, cloud computing, peer-to-peer systems, etc. Usually offered every second year.
Ms. Papaemmanouil

COSI 133b Internet and Society
[ sn ]
Prerequisite: sophomore standing.
An interdisciplinary survey of the Internet. Taught by a team of professors from several different departments, the course content will vary from year to year. Some particular topics to be covered are the architecture of the Internet (and the implications this has on its regulation), intellectual property, privacy, censorship, e-commerce, online education, and research. Usually offered every year.
Mr. Hickey

COSI 134a Statistical Approaches to Natural Language Processing
[ sn ]
Prerequisite: COSI 101a or COSI 114b. This course may be taken concurrently with COSI 114b.
An introductory graduate-level course covering fundamental concepts in statistical Natural Language Processing (NLP). Provides an in-depth view of the statistical models and machine-learning methods used in NLP, including methods used in morphological, syntactic, and semantic analysis. Usually offered every year.
Mr. Wellner

COSI 135b Computational Semantics
[ sn ]
Prerequisites: COSI 11a or permission of the instructor. Open to advanced undergraduate students and first-year graduate students.
A study of the computational treatment of core semantic phenomena in language. After a review of first-order logic and the lambda calculus, the course focuses on three core topics: interrogative structures, including semantics of questions, question-answering systems, dialogue, entailment, commonsense knowledge; meaning update and revision; and computational lexical semantics. Usually offered every year.
Mr. Pustejovsky

COSI 136a Automated Speech Recognition
[ sn ]
Prerequisite: COSI 114b, or COSI 12b and 21b, or permission of the instructor. May not be taken for credit by students who took COSI 216a in Spring 2010, Fall 2010, or Fall 2011.
Explores speech recognizer core components and their underlying algorithms, surveying real applications. Covers phonetics, HMMs, finite state grammars, statistical language models, and industry standards for implementing applications, like VXML. Students build and analyze simple applications using a variety of toolkits. Usually offered every year.
Ms. Meteer

COSI 137b Information Extraction
[ sn ]
Prerequisites: COSI 21b, COSI 101a, COSI 134a or permission of the instructor.
Examines the major issues and techniques in extracting semantically meaningful information from unstructured data, putting the information into a structured database for easy access and manipulation. Teaches students to design and implement a working natural language system. Usually offered every year.
Mr. Xue

COSI 138a Computational Linguistics Second Year Seminar
[ sn ]
Open to students in the final term of the MA program in Computational Linguistics. Also open to PhD students in Computational Linguistics. Students in Computer Science MA or PhD programs may enroll with permission of the instructor.
A seminar on research methods, writing, and presentations, and in abstract writing. Aims to help students learn to prepare and deliver oral presentations and written papers of their research work, according to the standards used and expected in this field—both in industry job and academic settings. This will be useful to students applying for jobs in industry or for further graduate work at the Ph.D. level, as well as for the work carried out in such jobs and academic study. Usually offered every year.
Ms. Goldberg

COSI 139a Machine Translation
[ sn ]
Prerequisite: COSI 114b (COSI 134a and COSI 127b are recommended).
Provides a grounding in the theory and practice of machine translation of human languages, focusing on modern statistical approaches. Students will gain familiarity and practical experience with algorithms, toolsets, and resources for the domain, and complete a research project. Usually offered every second year.
Mr. Tresner-Kirsch

COSI 140b Natural Language Annotation for Machine Learning
[ sn ]
Prerequisite: COSI 114b or LING 131a and concurrent enrollment in COSI 114b.
Studies corpus linguistics, the computational study of any naturally occurring fragment of language, a key area for data mining, information extraction, and machine learning. Students model, annotate, train, test, evaluate, and revise their own corpus for machine learning. Usually offered every second year.
Mr. Pustejovsky

COSI 146a Principles of Computer System Design
[ sn ]
Prerequisites: COSI 131a and MATH 10a (MATH 10b recommended).
Topics on the design and engineering of computer systems: techniques for controlling complexity; strong modularity using client-server design; layering; naming; networks; security and privacy; fault-tolerant systems, atomicity and and recovery; performance; impact of computer systems on society. Case studies of working systems and readings from the current literature provide comparisons and contrast. Usually offered every second year.
Ms. Shrira

COSI 147a Distributed Systems
[ sn ]
Prerequisite: COSI 131a and C/C++/UNIX programming skills.
This course covers abstractions and implementation techniques for the design of distributed systems. Topics include: distributed state sharing, coherence, storage systems, naming systems, security, faulttolerance and replication, scalability and performance. The assigned readings for the course are from current literature. Usually offered every second year.
Ms. Shrira

COSI 152aj Web Application Programming
[ sn ]
Prerequisites: COSI 11a, 12b, and 21a.
An introduction to web programming that covers the fundamental languages and tools, including HTML/CSS for page layout, javascript/ajax for client-side integration, and server-side programming in Java, Ruby, and SQL. The course also discusses security, scaling/optimization, and multi-tier architectures. Offered as part of JBS program.
Mr. Hickey

COSI 152bj Web App Development for Social Networks
[ sn ]
Prerequisites: COSI 11a and 12b.
Covers advanced topics in web architecture, such as system security, scaling and deployment, advanced REST concepts and others. We will also create a taxonomy of social networking systems to determine the role of each facet of such systems in their design and operation. Usually offered every second year. Offered as part of JBS program.
Mr. Hickey

COSI 153a Mobile Application Development
[ sn ]
Prerequisites: COSI 11a and 12b.
Introduces the design and analysis of mobile applications that covers the architecture of mobile devices, APIs for graphical user interfaces on mobile devices, location-aware computing, social networking. Also covers the theory and practice of space and time optimization for these relatively small and slow devices. Usually offered every second year.
Staff

COSI 153aj Mobile Application Development
[ sn ]
Prerequisites: COSI 11a and 12b.
An introduction to the design and analysis of mobile applications that covers the architecture of mobile devices, APIs for graphical user interfaces on mobile devices, location-aware computing, social networking. Also covers the theory and practice of space and time optimization for these relatively small and slow devices. Offered as part of JBS program.
Mr. Hickey

COSI 153bj Mobile Game Design
[ sn ]
Prerequisites: COSI 11a and 12b.
An introduction to the design, implementation, testing and analysis of mobile games including the architecture of 2D and 3D games, interaction with mobile input/output devices, networking for multi-person games, and mechanisms for marketing, distributing, and maintaining mobile games. Usually offered every second year. Offered as part of JBS program.
Mr. Hickey

COSI 154aj The JBS Incubator
[ sn ]
Prerequisite: COSI 11a.
An introduction to software engineering for web and mobile applications. Covers agile programming techniques, rapid prototyping, source control paradigms, effective software documentation, design of effective APIs, software testing and analysis, software licensing, with an introduction to business plans for software entrepreneurs. Offered as part of JBS program.
Mr. Hickey

COSI 155b Computer Graphics
[ sn ]
Prerequisite: COSI 11a.
An introduction to the art of displaying computer-generated images and to the design of graphical user interfaces. Topics include graphic primitives; representations of curves, surfaces, and solids; and the mathematics of two- and three-dimensional transformations. Usually offered every third year.
Mr. Hickey

COSI 157a Component-based Software Development
[ sn ]
Prerequisites: COSI 11a, 12b, and 21a.
An introduction to component-based software development. Students learn to develop elegant, flexible, scalable, well-organized applications that interact with existing software; this includes plug-in architectures, APIs, mash-ups, as well as techniques for reuse and modification of large well-documented third-party code bases. Usually offered every second year.
Mr. Larusson

COSI 162b Computer Architecture A Quantitative Look
[ sn ]
Prerequisite: COSI 131a.
Teaches the student the art and science of such fundamental analysis of computer architectures, while at the same time providing a tour of the major architectural innovations of the last 60 years. Topics to be covered include concepts of von Neumann architectures, methods of evaluating CPU performance, instruction-set design and examples, compiler issues, instruction pipelining, superscalar processors, methods for reduction of branch penalty, memory hierarchies, I/O systems, floating-point arithmetic, and current issues in parallel processing. Usually offered every second year.
Mr. Colon-Osorio

COSI 165a IT Entrepreneurship
[ sn ]
Prerequisite: COSI 12b.
Covers the fundamental concepts needed to transform an idea for a software application into a viable IT business. The focus of the course is on software-based IT enterprises and the specific challenges and opportunities they present. Learn the "Lean Startup" process in this course with a significant hands-on focus. Usually offered every year.
Mr. Salas

COSI 166b Software Engineering for IT Entrepreneurs
[ sn ]
Prerequisite: COSI 21a. Corequisite: COSI 167b.
Builds on COSI 165a and teaches modern software engineering concepts, emphasizing rapid prototyping, unit testing, usability testing, and collaborative software development principles. Students apply these concepts by building a complex software system in small teams of programmers/developers using current platforms and technologies. Usually offered every year.
Mr. Salas

COSI 167b Software Engineering Laboratory
[ sn ]
Prerequisite: COSI 21a with a B+ or higher. Yields half-course credit.
Lab session with significant programming component. Usually offered every year.
Mr. Salas

COSI 175a Data Compression and Multimedia Processing
[ sn ]
Prerequisites: Undergraduates and combined BA/MA students must complete COSI 21a, 29a, and 131a and received a B+ or better. Graduate students should have a background in basic data structures and algorithms, discrete mathematics, and computer architecture. Graduate students may not take this course concurrently with COSI 21a or COSI 29a or COSI 131a.
Selected topics in data compression and image and video processing, including adaptive lossless compression, lossy image and video compression, transformations on image and video, multimedia retrieval problems, parallel algorithms. Usually offered every second year.
Mr. Storer

COSI 177a Scientific Data Processing in Matlab
[ sn ]
Prerequisite: COSI 11a. MATH 15a is recommended.
Introduces scientific computing using Matlab. Programming concepts such as data types, vectors, conditional execution, loops, procedural abstraction, modules, APIs are presented. The course will present scientific techniques relevant to computational science, with an emphasis on image processing. Usually offered every second year.
Ms. DiLillo

COSI 178a Computational Molecular Biology
[ sn ]
Open to advanced undergraduate students and graduate students.
Information and computing technologies are becoming indispensable to modern biological research due to significant advances of high-throughput experimental technologies in recent years. This course presents an overview of the systemic development and application of computing systems and computational algorithms/techniques to the analysis of biological data, such as sequences, gene expression, protein expression, and biological networks. Hands-on training will be provided. Usually offered every other year.
Mr. Hong

COSI 180a Algorithms
[ sn ]
Prerequisites: Undergraduates and combined BA/MA students must complete COSI 21a, 29a, and 131a and received a B+ or better. Graduate students should have a background in basic data structures and algorithms, discrete mathematics, and computer architecture. Graduate students may not take this course concurrently with COSI 21a or COSI 29a or COSI 131a.
Basic concepts in the theory of algorithm design and analysis, including advanced data structures and algorithms, parallel algorithms, and specialized topics. Usually offered every second year.
Staff

COSI 190a Introduction to Programming Language Theory
[ sn ]
Prerequisite: COSI 21b or familiarity with a functional programming language, set theory and logic.
An introduction to the mathematical semantics of functional programming languages. Principles of denotational semantics; lambda calculus and its programming idiom; Church-Rosser theorem and Böhm's theorem; simply typed lambda calculus and its model theory: completeness for the full type frame, Statman's 1-section theorem and completeness of beta-eta reasoning; PCF and full abstraction with parallel operations; linear logic, proofnets, context semantics and geometry of interaction, game semantics, and full abstraction. Usually offered every second year.
Mr. Mairson

(200 and above) Primarily for Graduate Students

COSI 200a Readings
Specific sections for individual faculty members as requested.
Staff

COSI 200b Readings
Specific sections for individual faculty members as requested.
Staff

COSI 210a Independent Study
Usually offered every year. May be repeated once for credit.
Staff

COSI 210aj Independent Study
May be repeated once for credit.
Read scholarly articles related to web services, mobile applications, and cloud computing. Requires a final paper ideally related to student's internship.
Staff

COSI 215a Advanced Topics in Computer Supported Cooperation
Topics vary from year to year. The course may be repeated with the approval of the instructor. Usually offered every second year.
Staff

COSI 216a Topics in Natural Language Processing
Prerequisite: COSI 101a or 112a or 114b.
Reviews recent trends in computational approaches to linguistics, semantics, knowledge representation for language, and issues in parsing and inferences. Usually offered every fourth year.
Mr. Pustejovksy

COSI 217b Natural Language Processing Systems
Prerequisite: COSI 101a or 112a.
This course looks at building coherent systems designed to tackle real applications in computational linguistics. Particular topics will vary from year to year, but each call will consider some of the following: machine (aided) translation, speech interfaces, information retrieval/extraction, natural language question answering systems, dialogue systems, summarization, computer-assisted language learning, language documentation/linguistics hypothesis testing, and handwriting recognition. Usually offered every year.
Mr. Pustejovsky and Mr. Xue

COSI 228a Topics in Distributed Systems
Advanced topics in networked information systems and internet-scale data management. Usually offered every third year.
Ms. Papaemmauouil

COSI 293b Computational Linguistics Research Internship
Permission of the graduate advising head required.
Offers graduate students a opportunity to engage in industrial research in computational linguistics by completing a paid or unpaid internship of at least ten weeks duration approved and monitored by a faculty member.
Staff

COSI 293g Master's Research Internship
Permission of the graduate program director required. Yields quarter-course credit. May be repeated for credit. Intended for Master's students.
Offers graduate students an opportunity to engage in industrial research in computer science by completing a paid or unpaid internship of at least ten weeks duration approved and monitored by a faculty member. Usually offered every semester.
Staff

COSI 299a Computational Linguistics Master's Thesis
Permission of the graduate advising head required. May be repeated once for credit.
Staff

COSI 300a Master's Project
Usually offered every year.
Staff

COSI 300b Master's Project
Usually offered every year.
Staff

COSI 320a IT Entrepreneurship Practicum I
Prerequisites: COSI 235a, 236b, and permission of the faculty advisor.
This course guides students through the process of developing a marketable prototype of an original software application and helps them prepare a business plan for that application. Usually offered every year.
Staff

COSI 320b IT Entrepreneurship Practicum II
Prerequisite: COSI 320a.
Staff

COSI 393g Graduate Research Internship
Permission of the graduate program director required. Yields quarter-course credit. May be repeated for credit. For Ph.D. students only.
Offers Ph.D students an opportunity to engage in industrial research in computer science by completing a paid or unpaid internship of at least ten weeks duration and forty hours per week, approved and monitored by a faculty member. Usually offered every summer.
Staff

COSI 400d Dissertation Research
Specific sections for individual faculty members as requested.
Staff

Cross-Listed in Computer Science

BIOL 135b The Principles of Biological Modeling
[ qr sn ]
Prerequisite: MATH 10a or 10b.
With examples from neuroscience, cell biology, ecology, evolution, and physiology, dynamical concepts of significance throughout the biological world are discussed. Simple computational and mathematical models are used to demonstrate important roles of the exponential function, feedback, stability, oscillations, and randomness. Usually offered every second year.
Mr. Miller

LING 130a Formal Semantics: Truth, Meaning, and Language
[ hum qr ss ]
Prerequisite: LING 100a or permission of the instructor. LING 120b recommended.
Explores the semantic structure of language in terms of the current linguistic theory of model-theoretic semantics. Topics include the nature of word meanings, categorization, compositionality, and plurals and mass terms. Usually offered every year.
Ms. Malamud

MATH 36a Probability
[ qr sn ]
Prerequisite: MATH 20a or 22b.
Sample spaces and probability measures, elementary combinatorial examples. Random variables, expectations, variance, characteristic, and distribution functions. Independence and correlation. Chebychev's inequality and the weak law of large numbers. Central limit theorem. Markov and Poisson processes. Usually offered every year.
Mr. Merrill (fall)

MATH 39a Introduction to Combinatorics
[ sn ]
Prerequisites: COSI 29a or MATH 23b.
Topics include graph theory (trees, planarity, coloring, Eulerian and Hamiltonian cycles), combinatorial optimization (network flows, matching theory), enumeration (permutations and combinations, generating functions, inclusion-exclusion), and extremal combinatorics (pigeonhole principle, Ramsey's theorem). Usually offered every second year.
Mr. Bernardi (fall)

MATH 100a Introduction to Algebra, Part I
[ sn ]
Prerequisite: MATH 23b and MATH 22a, or permission of the instructor. May not be taken for credit by students who took MATH 30a in prior years.
An introduction to the basic notions of modern algebra—rings, fields, and linear algebra. Usually offered every year.
Mr. Lippsett (fall)

MATH 100b Introduction to Algebra, Part II
[ sn ]
Prerequisite: MATH 100a or permission of the instructor. May not be taken for credit by students who took MATH 30b in prior years.
A continuation of MATH 100a, culminating in Galois theory. Usually offered every second year.
Ms. Ray (spring)

MATH 108b Number Theory
[ sn ]
Prerequisites: MATH 23b and either MATH 22a or permission of the instructor. May not be taken for credit by students who took MATH 38b in prior years.
Congruences, finite fields, the Gaussian integers, and other rings of numbers. Quadratic reciprocity. Such topics as quadratic forms or elliptic curves will be covered as time permits. Usually offered every second year.
Staff

PHIL 106b Mathematical Logic
[ hum sn ]
Covers in detail several of the following proofs: the Gödel Incompleteness Results, Tarski's Undefinability of Truth Theorem, Church's Theorem on the Undecidability of Predicate Logic, and Elementary Recursive Function Theory. Usually offered every year.
Mr. Berger

PHYS 29a Electronics Laboratory I
[ sn ]
Prerequisites: PHYS 11a, b or PHYS 15a, b; and PHYS 19a, b or permission of instructor.
Introductory laboratory in analog electronics. Topics to be covered are DC circuits, AC circuits, complex impedance analysis, diodes, transistors, and amplifiers. Usually offered every year.
Mr. Bensinger