Department of Computer Science
Last updated: December 1, 2023 at 3:14 PM
Programs of Study
- Minor
- Major (BA/BS)
- Combined BA/MA
- Master of Science
- Doctor of Philosophy
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 computer programming-intensive, and is concerned with the scientific study and processing of language from a computational perspective. It is an interdisciplinary field, which draws on linguistics (phonology, syntax, semantics, and pragmatics), computer science (artificial intelligence, theory of computation, and programming methods), and mathematics (probability, calculus, and linear algebra).
Learning Goals
Undergraduate Major and Minor
The Association for Computing Machinery (ACM) 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 and 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.
Graduate Program in Computer Science
Master of Science in Computer Science or Bachelor of Science/Master of Science in Computer Science
Students graduating from the Master's program in Computer Science are expected to:
- Attain programing and software engineering skills sufficient for building large scale applications and web-based applications.
- Have a foundational understanding of abstraction in computing, data structures, algorithms, and operating systems.
- Demonstrate a graduate-level understanding of at least two of the following areas of computer science: systems, artificial intelligence, machine learning, computational linguistics, applied interdisciplinary computer science, and theory.
- Attain the skills needed to allow further learning and growth in areas of knowledge and skills used within Computer Science.
- Attain competency and familiarity with advanced elements of computational thinking.
- Understand the trade-offs involved in software design choices.
- Be prepared to enter the job market in Computer Science, or to begin PhD studies in Computer Science, or closely related fields.
Doctor of Philosophy in Computer Science
Students graduating with a PhD in Computer Science are expected to:
- Attain research expertise and complete a significant body of original research that advances a specific field of computer science.
- Communicate fundamental knowledge of their field of research, as well as details of their own research, in both written and oral form, to expert and non-expert audiences.
- Teach computer science topics effectively, for those interested in teaching careers.
- Be competitive for appropriate positions in industry and academia.
Graduate Program in Computational Linguistics
Master of Science in Computational Linguistics
Students who graduate with the MS in Computational Linguistics (CL) are expected to:
- Attain programming competency and familiarity with theory and algorithms sufficient for carrying out work in the research and development of modern CL/Natural Language Processing (NLP) applications.
- Have a foundational understanding of data structures, discrete mathematics, and probability and statistics, within computer science (CS).
- Have foundational competency in and knowledge of the techniques used within theoretical syntactic and formal semantic analysis and investigation, within linguistics.
- Attain competency and familiarity with corpus creation and analytics, as well as the design and implementation of the machine learning algorithms and techniques used in CL/NLP.
- Attain the skills needed to allow further learning and growth in areas of knowledge and skills used within CL/NLP, CS, and linguistics.
- Understand the ethics of appropriate behavior of the field and its practice.
- Be prepared to enter the job market in CL/NLP, or to begin PhD studies in CL/NLP, CS, or (for students with prior study of the field) linguistics.
How to Become a Major or a Minor
It is recommended that students have completed the courses COSI 10a and COSI 12b by the end of their sophomore year since they are prerequisites for advanced courses in the major.
In order to declare the major or minor students must have completed COSI 12b and COSI 21a with a passing grade. Upon completion of these courses, students must fill out the form declaration (see https://www.brandeis.edu/computer-science/undergraduate/advising-faqs.html) and schedule a meeting with the Undergraduate Advising Head (UAH).
The requirements are listed below and include many options. Students can schedule an appointment with the UAH for further information.
How to Be Admitted to the Graduate Programs
Please see the Graduate School of Arts and Sciences Admissions section of the Bulletin for information on Admission to the program. For information about the program’s specific requirements and decision criteria, please visit the department website.
Faculty
Timothy Hickey, Chair
Scientific visualization. Groupware. Interval arithmetic and constraints. Programming languages.
Richard Alterman
Computer-supported cooperation. Learning and technology. Cognitive engineering and modeling. Communication and discourse. Intelligent user interfaces.
Mitch Cherniack (on leave fall 2022)
Databases. Software engineering. Programming languages.
Lotus Goldberg, Acting Chair of Computational Linguistics and Linguistics, fall 2022 (on leave spring 2023)
Theoretical syntax and the syntax-semantics interface. E, ellipsis and null anaphora. C, corpus methods in linguistics.
Pengyu Hong
Computational biology. Image processing. Statistical machine learning.
Constantine Lignos
Computational linguistics. Natural language processing. Language acquisition and change. Psycholinguistics.
Hongfu Liu
Data mining. Machine learning and related applications in social media. Computer vision and bioinformatics.
Harry Mairson
Logic in computer science. Lambda calculus, type theory, and functional programming. Algorithms and complexity.
Sophia Malamud, Computational Linguistics Director of Graduate Studies
Linguistics. Formal semantics and pragmatics of natural languages.
Olga Papaemmanouil
Distributed data management. Databases. Large-scale networked systems.
Phonological theory. Historical linguistics. Morphology. Heritage linguistics.
Jordan Pollack
Artificial intelligence. Evolutionary computation. Artificial life.
James Pustejovsky, Chair of Computational Linguistics and Linguistics (on leave fall 2022)
Artificial intelligence. Computational linguistics. Qualitative spatiotemporal reasoning. Lexical semantics. Corpus linguistics.
Pito Salas, Undergraduate Advising Head
Applied Computer Science. Software Engineering, architecture and design. Development methodology, Scalability. Software Entrepreneurship. Robotics.
Liuba Shrira
Operating systems. Distributed systems. Long-lived storage systems.
James Storer (on leave spring 2023)
Data compression and image processing. Computational geometry. Parallel computing. Algorithms.
Computer vision, multiple-view and video-based 3-D reconstruction.
Nianwen Xue, Vice-Chair (on leave spring 2023)
Linguistic structures. Language processing. Natural computational linguistics.
Machine learning, data mining, graph mining and learning, healthcare, cybersecurity, social and information networks, recommendation.
Requirements for the Minor
The minimum requirements for the computer science minor are six courses:
- COSI 12b and 21a.
- Four additional computer science courses. Only one cross-listed course may be counted toward the elective requirement. COSI 98a may only be used once as an elective. No COSI course numbered 10 or lower may be used toward the minor.
- No course with a final grade below C- can count toward fulfilling the requirements for the minor in computer science.
- No course taken pass/fail may count toward requirements for the minor.
Students with no prior programming experience must satisfactorily complete COSI 10a prior to enrolling in COSI 12b. Students may be exempted from COSI 10a if they either: 1) received a score of 5 on the AP Computer Science A exam (AP Computer Science Principles test does not currently replace any COSI courses), or 2) successfully complete the online placement exam.
Requirements for the Major
Required of All Majors
Foundational Literacies: As part of completing the Computer Science major, students must:
- Fulfill the writing intensive requirement by successfully completing one of the following: COSI 12b or any COSI-subject course with the WI-designation.
- Fulfill the oral communication requirement by successfully completing: 2-credit practicum COSI 45a in the fall or spring of senior year.
- Fulfill the digital literacy requirement by successfully completing one of the following: COSI 12b, COSI 21a, COSI 114a, COSI 114b, or COSI 131a.
Degree of Bachelor of Arts
The minimum requirements for the Computer Science major include 9.5 courses:
- Four core courses: COSI 12b, 21a , 29a, and 131a.
- Electives: At least five additional COSI courses. Only one cross-listed course may be counted toward the elective requirement. COSI 98a may only be used once as an elective. COSI 99d and COSI courses numbered 10 or lower may not be used toward the major.
- 2-credit practicum COSI 45a taken in the fall or spring of senior year to fulfill the oral communication requirement.
- No course with a final grade below C- can count toward fulfilling the requirements for the major in computer science.
- No course taken pass/fail may count toward requirements for the major.
Students with no prior programming experience must satisfactorily complete COSI 10a prior to enrolling in COSI 12b. Students may be exempted from COSI 10a if they either: 1) received a score of 5 on the AP Computer Science A exam (AP Computer Science Principles test does not currently replace any COSI courses), or 2) successfully complete the online placement exam.
Degree of Bachelor of Science
The minimum requirements for the Computer Science major include 14.5 courses:
- Six core courses: COSI 12b, 21a, 29a, 121b, 130a and 131a.
- Mathematics courses: Math 8a (MATH 36a, ECON 83a, BIOL 51a, or PSYC 51a may substitute for MATH 8a) and MATH 10a.
- 2-credit practicum COSI 45a taken in the fall or spring of senior year to fulfill the oral communication requirement.
- Electives: at least six additional COSI courses. Only two cross-listed courses may be counted toward the elective requirement. COSI 98a may only be used once as an elective. COSI 99d and COSI courses numbered 10 or lower may not be used toward the major.
- No course with a final grade below C- can count toward fulfilling the requirements for the major in computer science.
- No course taken pass/fail may count toward requirements for the major.
Students with no prior programming experience must satisfactorily complete COSI 10a prior to enrolling in COSI 12b. Students may be exempted from COSI 10a if they either: 1) received a score of 5 on the AP Computer Science A exam (AP Computer Science Principles test does not currently replace any COSI courses), or 2) successfully complete the online placement exam.
Honors
Graduation with honors in computer science requires completion and defense of a senior honors thesis. Students interested in senior thesis should contact prospective faculty mentors by the spring of their junior year and should take note of the prerequisites for enrollment in COSI 99d (Senior Research). To initiate Honors research, the students must have their Senior Thesis Application form signed by the faculty mentor, the Undergraduate Advising Head; and submit the signed form to the Computer Science Office no later than the end of the spring semester of their junior year.
Combined BA/MS or BS/MS Program in Computer Science
Available only to Brandeis students who have completed all requirements for the undergraduate Bachelors degree and have performed well in the computer science major and have completed three 100-level COSI electives in addition to those required for their undergraduate degree. Students should apply for the program through the Graduate School of Arts and Sciences and in consultation with their Undergraduate Advising Head 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 at most three may be chosen from the following courses: COSI 210a and COSI 293g. Note: COSI 210a can be repeated at most once for credit.
Combined BA/MS or BS/MS Program in Computational Linguistics
The five-year BA/MS or BS/MS degree program in Computational Linguistics is designed for outstanding undergraduate students who will have completed all requirements for the undergraduate BA or BS degree within four years at Brandeis, with a major in Linguistics and/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, and who will have completed at least the following courses before finishing their undergraduate degree:
- COSI 10a
- COSI 12b
- COSI 114a
- COSI 115b
For information on the other application requirements and timeline, please see the Computational Linguistics MS program’s admissions page.
The Objectives, Learning Goals, and final degree earned for the Combined BA/MS or BS/MS Program in Computational Linguistics are the same as those for the Master of Science in Computational Linguistics.
In this program, students complete the MS in Computational Linguistics by completing the first year courses for the two-year version of the MS in Computational Linguistics at any time during their undergraduate studies, and then completing the two-year degree’s second year courses in one additional (fifth) year of study. The MS degree provides a solid foundation for professional work in the field of computational linguistics or for additional graduate study in computational linguistics, computer science and/or theoretical linguistics. Interested students should consult with Computational Linguistics advising faculty as early as possible during their undergraduate studies, to make sure that all requirements can be planned for and completed on time.
Program of Study
Students admitted to the program must fulfill the following requirements, in addition to completing their undergraduate degree: a schedule of course work designed in conjunction with and approved by the director of graduate studies consisting of a minimum of 24 credits, standardly taken as six four-credit courses. Among these six courses, all students are required to complete the following:
- COSI 231a, taken in the fall term
- COSI 232b, taken in the spring term
- At least one exit requirement course, which cannot be taken until the final semester of the program, unless permission is granted for a two-semester exit requirement (in which case the first of the two semesters in which the exit requirement course is taken will be the first semester of this two-semester program). The exit requirement course is chosen from among:
- the computational linguistics internship course COSI 293b
- the computational linguistics capstone project course COSI 295a
- the computational linguistics master's thesis course COSI 299a. Students must electronically deposit their thesis to ProQuest ETD. For instructions on how to do this, visit the Thesis and Dissertation Guide.
- Students should try to complete all of the following foundational background courses during their undergraduate studies. For any of these courses that were not completed before completing the undergraduate degree, at the determination of the director of graduate studies, students are also required to take the course during the MS year:
- COSI 21a, which if required is taken in the fall term
- COSI 230b, which if required is taken in the spring term
- LING 120b, which if required is taken in the fall term
- LING 130a, which if required is taken in the spring term
- LING 160b, which if required is taken in the fall term
Students who are required to take less than three of these foundational background courses during the MS year must also take the number of computer science, linguistics, and/or mathematics elective courses of their choice needed to reach the six total four-credit courses required for the degree. Students in the program may choose to take additional electives beyond the degree requirements if they wish.
Residence Requirement
The minimum in-person residence requirement is one year after completing the BA or BS 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.
Students pursuing the Environmental Studies major can petition for ENVS 110a to be counted toward their COSI electives requirement.
Requirements for the Degree of Master of Science (including Computer Science and Computational Linguistics)
Master of Science in Computer Science
Program of Study
The MS program in computer science is a two-track program, Master of Science (3 semesters) and Master of Science for Non-Majors (4 semesters), 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 4-credit COSI courses numbered 100 or above. Note: COSI 210a can be repeated at most once for credit.
- Students who have not successfully completed an Operating Systems course in their undergraduate studies must include COSI 131a in their nine electives.
In addition to the above requirements, students with an undergraduate degree in a field other than Computer Science must satisfactorily complete or be exempted from three undergraduate core courses:
- COSI 12b
- COSI 21a
- COSI 29a
At most two core courses can be taken a semester. Students must maintain a minimum average of a B+ in the three undergraduate courses required.
Students with no prior programming experience must satisfactorily complete COSI 10a prior to enrolling in COSI 12b. Students will be exempted from COSI 10a if they successfully complete the online placement exam.
Students can enroll in either the MS Coursework-only track, or the MS Project track. The latter requires them to successfully complete the Masters Project course (COSI 300a or COSI 300b) in the semester after they have completed all of their other coursework.
Students can take up to three (3) 100-level cross listed courses.
Residence Requirement
The minimum in-person residency requirement is three semesters.
Master of Science in Computer Science with a Specialization in Quantitative Biology
Program of Study
Students wishing to obtain the specialization in Quantitative Biology (QB) must first gain approval of the Computer Science representative for the QB program (listed online on the Brandeis QB website). This should be done as early as possible in the program. In order to receive the MS in Computer Science with specialization in QB, candidates must complete (a) the requirements for the MS described above and (b) the course requirements for the QB specialization described in the QB section of this Bulletin.
Any alteration to the QB course requirements must be approved by both the Computer Science Program Chair and the QB Program Chair.
Master of Science in Computational Linguistics
Program of Study
The two-year MS program in computational linguistics is designed for outstanding students, preferably with an undergraduate degree in one or more of linguistics or computer science. The MS provides a solid foundation for professional work in the field of computational linguistics, computer science, or (especially for students who enter with prior study of the field) theoretical linguistics.
Students must complete a schedule of course work designed in conjunction with and approved by the director of graduate studies consisting of a minimum of 48 credits, standardly taken as 12 four-credit courses. Among these 12 courses, all students are required to complete:
- COSI 114a, taken in fall of the first year
- COSI 115b, taken in spring of the first year
- COSI 230b, taken in spring of the first year
- COSI 231a, taken in fall of the second year
- COSI 232b, taken in spring of the second year
- At least one exit requirement course, which cannot be taken until the final semester of the program, unless permission is granted for a two-semester exit requirement (in which case the first of the two semesters in which the exit requirement course is taken will be the second-to-last semester of the program). The exit requirement course is chosen from among:
- the computational linguistics internship course COSI 293b
- the computational linguistics capstone project course COSI 295a
- the computational linguistics master's thesis course COSI 299a. Students must electronically deposit their thesis to ProQuest ETD. For instructions on how to do this, visit the Thesis and Dissertation Guide.
At the determination of the director of graduate studies, students are also required to take any of the following foundational background courses for which the student lacks equivalent course background from studies completed prior to entering the program. The director of graduate studies will determine whether the student’s prior course background is sufficient in each particular content area. Depending on this student background, a student may be required to take between none and all six of the following courses:
- COSI 10a, which if required is taken in fall of the first year
- COSI 12b, which if required is taken as soon as the prerequisites are met, and otherwise in fall of the first year
- COSI 21a, which if required is taken as soon as the prerequisites are met, and otherwise in fall of the first year
- LING 120b, which if required is taken in fall of the first year
- LING 130a, which if required is taken in spring of the first year
- LING 160b, which if required is taken in fall of the first year
Students who are not required to take all six foundational background courses must also take the number of computer science, linguistics, and/or mathematics elective courses of their choice needed to reach the 12 total four-credit courses required for the degree. Students in the program may choose to take additional electives beyond the degree requirements if they wish.
Residence Requirement
The minimum in-person residence requirement is two years.
Special Notes Relating to the Graduate Program
International Master's students need to complete two academic semesters in F1 status to be eligible to take COSI 293g, which counts for one academic credit. In the case that a student coming from another university in the U.S. with a year on an F1 visa is legally able to engage in practical training before the two semesters are up, such training must be approved by the Computer Science department as well as gain CPT authorization and is expected to be a continuation of a summer job or internship in a computer science oriented position. Please note that students may only take COSI 293g classes twice during their degree at Brandeis, and may want to delay until they have more computer science experience. For more information regarding Curricular Practical Experience, please refer to the ISSO CPT page.
Requirements for the Degree of Doctor of Philosophy
Requirements for the Degree of Doctor of Philosophy in Computer Science
Adviser
PhD 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:
A. Nine computer science courses numbered 100 or above, of which a maximum of two may be chosen from the following courses:
- COSI 210a
- COSI 293g
Note COSI 400D courses do not count toward the nine required courses.
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 Master’s degree in Computer Science may petition to reduce their course requirements by a maximum of 6 courses. This reduction in course requirements does not affect the three-year in-person residency requirement.
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 CONT 250 and COSI 393g. Registration for Graduate Summer Term does not count toward the residency requirement. The summer registration fee will be waived each summer.
Teaching Requirement
Teaching is a critical skill required in both academic and industrial careers that follow graduation. All PhD students are required to participate in undergraduate teaching during the course of their studies. Every graduate teaching assistant (TA) is supervised by a member of the faculty, who serves as a mentor to improve the quality of the TA's teaching. Please see the GSAS section on Teaching Requirements and the program handbook for more details.
Dissertation Committee, Proposal and Defense
The advisor and the director of graduate studies will establish a thesis committee, in accordance with the GSAS requirements in this Bulletin. The candidate must submit an approved, written thesis proposal along with an oral presentation to the thesis committee. A public defense of the completed dissertation is required.Residence Requirement
The minimum in-person 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 Director of Graduate Studies. 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 Director of Graduate Studies and by the quantitative biology program faculty advisory committee.
Annual Academic Performance Review and Progress to the Graduate Degree
Courses of Instruction
(1-99) Primarily for Undergraduate Students
COSI
10a
Introduction to Problem Solving in Python
[
dl
sn
]
Open only to students with no previous programming background. Students may not take COSI 10a if they have received a satisfactory grade in COSI 12b or COSI 21a. May not be taken for credit by students who took COSI 11a in prior years. Does not meet the requirements for the major or minor in Computer Science.
Introduces computer programming and related computer science principles. Through programming, students will develop fundamental skills such as abstract reasoning and problem solving. Students will master programming techniques using the Python programming language and will develop good program design methodology resulting in correct, robust, and maintainable programs. Usually offered every semester.
Staff
COSI
12b
Advanced Programming Techniques in Java
[
dl
sn
wi
]
Prerequisite: COSI 10a or successful completion of the COSI online placement exam.
Studies advanced programming concepts and techniques utilizing the Java programming language. The course covers software engineering concepts, object-oriented design, design patterns and professional best practices. This is a required foundation course that will prepare you for more advanced courses, new programming languages, and frameworks. Usually offered every year.
Staff
COSI
21a
Data Structures and the Fundamentals of Computing
[
dl
sn
]
Prerequisite: COSI 12b. Graduate students may take this course concurrently with COSI 12b with permission of the Director of Graduate Studies.
Focuses on the design and analysis of algorithms and the use of data structures. Through the introduction of the most widely used data structures employed in solving commonly encountered problems. Students will learn different ways to organize data for easy access and efficient manipulation. The course also covers algorithms to solve classic problems, as well as algorithm design strategies; and computational complexity theory for studying the efficiency of the algorithms. Usually offered every year.
Staff
COSI
29a
Discrete Structures
[
qr
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.
Staff
COSI
45a
Effective Communication for Computer Scientists
[
oc
]
Prerequisite: One 100-level COSI elective. Yields half-course credit.
Teaches the basics of good oral communication and presentation, such as structuring a presentation, body language, eye contact, pace and appropriateness for the audience. It will cover, with practice, a range of speaking engagements majors might meet in academia and industry including: presentation of a research paper, software architecture proposal, business elevator pitch, research funding proposal, and so on. Students will present a project already created for a 100-level COSI elective. They will give the presentation in class, receive feedback based on the practices taught and then have a chance to give the presentation a second time. Usually offered every semester.
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
97a
Senior Field Project
Structured around a real-world Applied Computer Science problem, we work with an outside partner company, government agency or non-profit on a project that is important to them. 2-4 students form an agile team representing applications, networks, mobile, database, UX, design, and user requirements to create and deliver a solution. Each offering of the course is with a different partner. Usually offered every third year.
Pito Salas
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
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 and approved by the Undergraduate Advising Head.
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.
Pengyu Hong or Jordan Pollack
COSI
102a
Software Entrepreneurship
[
sn
]
Prerequisite: Sophomore standing. May not be taken for credit by students who took COSI 165a in prior years.
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.
Pito Salas
COSI
103a
Fundamentals of Software Engineering
[
sn
]
Prerequisite: COSI 12b
In this course, you will learn (and practice) the design and construction of large bodies of software using modern software engineering practices, including object oriented design, test driven development, working data, and project management. You will be challenged to solve different kinds of problems, using different approaches and different tools. The course also aims to teach the basic and expected knowledge and practice within industry for entry level developers. Usually offered every year.
Tim Hickey
COSI
105b
Software Engineering for Scalability
[
sn
]
Prerequisite: COSI 21a, COSI 166b, and a 100-level programming intensive course, or instructor permission.
Covers some of the "big ideas" that come in to play when building large, complex, and highly scaled software systems. We will look at both research and practice scaling architecture and software design. How do you design and architect large scale web based systems? What are the classic algorithms and patterns used to achieve massive scale? We will look at caching, database partitioning, queueing, messaging and more. And we apply this learning working in teams of students to design and implement their own version of the Twitter backend from the ground up, and then stress test and measure it's scalability using real world tools and technologies. Usually offered every year.
Pito Salas
COSI
107a
Introduction to Computer Security
Prerequisite: COSI 21a.
Introduces students to foundational concepts in computer and network security. Focuses on topics essential in many areas of contemporary software development, including security for application software, uses of cryptography, secure communications in the World-Wide Web, and issues in data privacy. Across these areas students will learn from real-world systems analyzing systems for threats and vulnerabilities, mechanisms of attack, and methods to design and implement defenses against attack. Course assignments will include techniques for both attack and defense as well as written and oral presentations about security issues, design, and implementation. Usually offered every year.
Win Treese
COSI
112a
Modal, Temporal, and Spatial Logic for Language
[
sn
]
Prerequisites: COSI 29a, COSI 121b, LING 130a, or PHIL 6a.
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.
James Pustejovsky
COSI
114a
Fundamentals of Natural Language Processing I
[
dl
sn
]
Prerequisite: COSI 12b or enrollment in the Master of Science in Computational Linguistics program. LING 100a is recommended but not required.
Explores the computational properties of natural language and the foundations of the algorithms used to process it. Students will develop an understanding of basic statistical natural language processing (NLP) methods by implementing language analysis and classification algorithms in Python. Topics include corpus statistics, text classification, language modeling, and the computational techniques needed to support these tasks, with a focus on generative models (e.g., naive Bayes, hidden Markov models). Usually offered every year.
Constantine Lignos
COSI
115b
Fundamentals of Natural Language Processing II
[
dl
sn
]
Prerequisites: COSI 114a, plus at least one of LING 160b, MATH 10a, MATH 10b, MATH 15a, MATH 20a, MATH 22a, or equivalent knowledge.
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.
James Pustejovsky
COSI
116a
Information Visualization
Prerequisite: COSI 12b.
Introduces foundational principles, methods, and techniques of visualization to enable creation of effective visual representations of information. Covers the design and evaluation of novel visual encodings for diverse and heterogeneous data, including numerical, ordinal, nominal, and temporal data, network data, and multimedia data. Provides an overview of relevant principles of human vision, perception, and psychology related to the derivation of insights from visual analysis. Create visualizations in Tableau, Python, and JavaScript. Requires programming in Python, JavaScript, HTML, and CSS. Requires extensive writing including documentation, explanations, and discussions of findings from data analyses. Students will choose from datasets across diverse topics such as climate science, sustainability, urban planning, and healthcare data to develop their own visual analyses. Students will analyze data in groups and present their findings both in slide-form and in a writeup that will be publishable in an online setting. Usually offered every year.
Dylan Cashman
COSI
119a
Autonomous Robotics
[
sn
]
Prerequisites: COSI 21a and one additional 100-level programming intensive course, or instructor permission.
Become part of the team developing 'Campus Rover', our long term project. Explore the fundamental 'big questions' in robotics: How do robots know what to do? How do they see the world? How do they know where they are? How do they know where to go? How do they control their bodies? How should robots behave around people? How can we get them to work together? Learn and understand Robot Operating System (ROS) and how software for robots is built. Solve gradually more advanced robotic problems, work with real robots in our Robotics Lab. This is a hands-on course, emphasizing real world implementations. Usually offered every year.
Pito Salas
COSI
120a
Topics in Computer Systems
[
sn
]
Prerequisite: COSI 21a.
Content will vary from year to year. May be repeated for credit. Prerequisites may vary with the topic area; check with instructor for details. Usually offered every third year.
Staff
COSI
121b
Structure and Interpretation of Computer Programs
[
sn
]
Prerequisites: COSI 21a and COSI 29a.
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.
Harry Mairson
COSI
123a
Statistical Machine Learning
[
qr
sn
]
Prerequisite: COSI 21a, MATH 8a, and either MATH 22a or the combination of MATH 15a and MATH 20a.
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.
Pengyu Hong
COSI
126a
Unsupervised Learning and Data Mining
[
sn
]
Prerequisites: COSI 21a and either MATH 15a or MATH 22a. MATH 124a or knowledge of optimization is recommended.
Focuses on unsupervised learning and introduces the basic concepts of cluster analysis, feature selection, outlier detection for large-scale and big data analysis. Some advanced unsupervised topics, such as ranking, auto-encoder, generative adversarial network, and self-supervised learning will be introduced as well. Usually offered every second year.
Hongfu Liu
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.
Staff
COSI
130a
Introduction to the Theory of Computation
[
sn
]
Prerequisite: COSI 29a or the equivalent.
Introduces topics in the theory of computation, including: finite automata and regular languages, pushdown automata and context-free languages, context-sensitive languages and Type 0 languages, Turing machines and Church's thesis, the halting problem and undecidability, and introduction to NP and PSPACE complete problems. Usually offered every year.
James Storer
COSI
131a
Operating Systems
[
dl
sn
]
Prerequisites: COSI 21a.
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.
Mitch Cherniack, Olga Papaemmanouil, or Liuba Shrira
COSI
132a
Information Retrieval
[
sn
]
Prerequisites: COSI 21a and COSI 114a, LING 131a, or strong Python programming skills.
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 year.
Peter Anick
COSI
132b
Distributed Data Management
[
ss
]
Prerequisite: COSI 131a.
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.
Olga Papaemmanouil
COSI
133a
Graph Mining
[
sn
]
Prerequisite: COSI 123a, proficiency in Python programming.
Graphs and networks are a fundamental tool for modeling complex social, technological, and biological systems. This course covers the core methodologies and algorithms of graph and network mining techniques. Students learn methods and algorithms of graph and network mining, apply graph and network mining tools, and work on related homework and course projects. Usually offered every second year.
Chuxu Zhang
COSI
135b
Computational Semantics
[
sn
]
Prerequisites: COSI 10A or COSI 12b or equivalent, and COSI 121b or LING 130a, or permission of the instructor.
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 second year.
James Pustejovsky
COSI
136a
Automated Speech Recognition
[
sn
]
Prerequisite: COSI 12b or permission of the instructor.
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.
Staff
COSI
138a
Computational Linguistics Second Year Seminar
[
sn
]
Open to students in the final term of the MS program in Computational Linguistics. Also open to PhD students in Computational Linguistics.
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.
Lotus Goldberg, Marie Meteer, or Keith Plaster
COSI
143b
Data Management for Data Science
[
sn
]
Prerequisite: COSI 21a.
This experiential class will study techniques and systems for ingesting, processing, analyzing, and visualizing large data sets. The end goal of the class is to familiarize students with the data management tools and concepts that can support the full-stack of data science pipelines. Usually offered every second year.
Olga Papaemmanouil
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 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.
Liuba 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, fault tolerance and replication, scalability and performance. The assigned readings for the course are from current literature. Usually offered every second year.
Liuba Shrira
COSI
149b
Practical Machine Learning with Big Data
[
sn
]
Prerequisites: COSI 21a, MATH 8a, and MATH 15a.
In this experiential learning course, students will learn and practice machine learning techniques (such as regression, clustering, decision trees, support vector machines, assemble techniques, and deep-learning) to tackle real problems in industry and/or interdisciplinary research. Usually offered every second year.
Pengyu Hong
COSI
152a
Web Application Development
[
sn
]
Prerequisites: COSI 12b.
Introduces 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. Usually offered every second year.
Staff
COSI
153a
Mobile Application Development
[
sn
]
Recommended prerequisite: COSI 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
159a
Computer Vision
[
oc
sn
wi
]
Prerequisites: COSI 12b, COSI 21a, and MATH 15a or MATH 22a.
Designed for undergraduate and graduate students majoring/minoring in computer science, the course covers core topics in image/video understanding, such as, object detection/recognition/tracking (with applications in face detection, gesture detection, pose detection), image segmentation (saliency detection, semantic segmentation, co-segmentation), image enhancement (super resolution, image recovery), visual relationship mining (spatial relationship, kinship), 3D reconstruction, image generation, optical flow, and video segmentation. It will also touch several advanced computer vision topics, such as, multi-view image clustering, image captioning, image generation from text, and visual question and answering. Usually offered every second year.
Hongfu Liu
COSI
164a
Introduction to 3-D Animation
[
dl
sn
]
May not be taken for credit by students who took COSI 65a in prior years.
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.
Timothy Hickey
COSI
165b
Deep Learning
[
sn
]
Prerequisites: COSI 21a, MATH 8a, MATH 10a, (MATH 15a or MATH 22a), and proficiency in Python programming
Due to its powerful capability and excellent performance in solving real-world problems, deep learning has become one of the most important machine learning techniques. This course covers the core methods and algorithms of deep learning techniques. Students learn models and algorithms of deep learning, apply deep learning tools, and work on related homework and course projects. Usually offered every year.
Chuxu Zhang
COSI
166b
Capstone Project for Software Engineering
[
sn
]
Prerequisites: COSI 21a and one additional 100-level programming intensive course, or instructor permission.
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.
Pito Salas
COSI
175a
Multimedia Processing
[
sn
]
Prerequisites: COSI 129a and COSI 131a with B+ or higher.
A seminar studying current research papers relating to: multi-media representation and compression, information extraction and understanding from images and video, object recognition and content based image and video retrieval, related applications of machine learning. Usually offered every second year.
James Storer
COSI
177a
Scientific Data Processing in Matlab
[
sn
]
Prerequisite: COSI 12b. 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.
Staff
COSI
178a
Computational Molecular Biology
[
dl
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.
Pengyu Hong
COSI
180a
Algorithms
[
sn
]
Prerequisites for undergraduates and combined BA/MA students: COSI 21a and COSI 29a. Graduate students with the appropriate background may request an override for some or all of the prerequisites.
Basic concepts in the design and analysis of algorithms. Usually offered every second year.
James Storer
COSI
190a
Introduction to Programming Language Theory
[
sn
]
Prerequisite: COSI 121b 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.
Staff
(200 and above) Primarily for Graduate Students
COSI
210a
Independent Study
Usually offered every year. May be repeated once for credit.
Staff
COSI
216a
Topics in Natural Language Processing
Prerequisites vary by topic. The course can be repeated for credit with the approval of the instructor if the student has not previously taken the course covering the same topic.
Reviews recent trends in computational approaches to linguistics, semantics, knowledge representation for language, and issues in parsing and inferences. Topics vary by year. Usually offered every second year.
Constantine Lignos, James Pustejovsky, or Nianwen Xue
COSI
217a
Topics in Adaptive Systems
Prerequisite: COSI 101a or COSI 123a. The course can be repeated for credit with the approval of the instructor if the student has not previously taken the course covering the same topic.
In nature, systems with greater complexity than any designed by humans arise without a designer. The central question explored is: How can complex modular organization arise without an intelligent designer? The class reads about theories of organization in different settings and scales (cells, brains, minds, behavior, society, economies), and studies papers, models, and algorithms from a variety of fields that might shed light on the issue. Usually offered every third year.
Jordan Pollack
COSI
217b
Natural Language Processing Systems
Prerequisites vary by topic.
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.
Constantine Lignos, James Pustejovsky, or Nianwen Xue
COSI
230b
Natural Language Annotation for Machine Learning
[
sn
]
Prerequisite: COSI 115b or either LING 131a or COSI 114a with concurrent enrollment in COSI 115b.
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.
James Pustejovsky or Nianwen Xue
COSI
231a
Advanced Machine Learning Methods for Natural Language Processing
[
sn
]
Prerequisite: COSI 115b.
An introductory graduate-level course covering fundamental concepts in statistical Natural Language Processing (NLP). Provides an in-depth view of linear and neural machine learning methods used in NLP, including supervised and unsupervised methods used in text classification, sequence labeling, sequence-to-sequence transduction, and parsing of syntactic and semantic structures. Usually offered every year.
Benjamin Wellner or Nianwen Xue
COSI
232b
Information Extraction
[
sn
]
Prerequisite: COSI 231a.
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.
Benjamin Wellner or Nianwen Xue
COSI
233a
Discourse and Dialog
Prerequisite: COSI 231a.
A critical element of interactive systems is managing the dialog between the system and the user. This course will explore multiple approaches to implementing dialog management components, both symbolic and statistical, including what contextual information must be represented in the dialog states and the decision processes to move from one state to another. Students will implement a dialog manager using industry standards. Usually offered every second year.
James Pustejovsky
COSI
241a
Advanced Topics in Graph Mining
Prerequisite: COSI 21a.
Covers many recent techniques and advances in graph mining research. Students read and discuss literature, make presentations, and work on related research projects. Usually offered every second year.
Chuxu Zhang
COSI
293b
Computational Linguistics Research Internship
Permission of the graduate advising head required.
Offers graduate students an 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 Director of Graduate Studies 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
295a
Computational Linguistics Capstone Project
Permission of the graduate advising head required.
Offers graduate students an opportunity to develop an independent project of original research as an active member of a computational linguistics research laboratory. Usually offered every year.
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
393g
Graduate Research Internship
Permission of the Director of Graduate Studies 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
COSI Digital Literacy
COSI
12b
Advanced Programming Techniques in Java
[
dl
sn
wi
]
Prerequisite: COSI 10a or successful completion of the COSI online placement exam.
Studies advanced programming concepts and techniques utilizing the Java programming language. The course covers software engineering concepts, object-oriented design, design patterns and professional best practices. This is a required foundation course that will prepare you for more advanced courses, new programming languages, and frameworks. Usually offered every year.
Staff
COSI
21a
Data Structures and the Fundamentals of Computing
[
dl
sn
]
Prerequisite: COSI 12b. Graduate students may take this course concurrently with COSI 12b with permission of the Director of Graduate Studies.
Focuses on the design and analysis of algorithms and the use of data structures. Through the introduction of the most widely used data structures employed in solving commonly encountered problems. Students will learn different ways to organize data for easy access and efficient manipulation. The course also covers algorithms to solve classic problems, as well as algorithm design strategies; and computational complexity theory for studying the efficiency of the algorithms. Usually offered every year.
Staff
COSI
114a
Fundamentals of Natural Language Processing I
[
dl
sn
]
Prerequisite: COSI 12b or enrollment in the Master of Science in Computational Linguistics program. LING 100a is recommended but not required.
Explores the computational properties of natural language and the foundations of the algorithms used to process it. Students will develop an understanding of basic statistical natural language processing (NLP) methods by implementing language analysis and classification algorithms in Python. Topics include corpus statistics, text classification, language modeling, and the computational techniques needed to support these tasks, with a focus on generative models (e.g., naive Bayes, hidden Markov models). Usually offered every year.
Constantine Lignos
COSI
115b
Fundamentals of Natural Language Processing II
[
dl
sn
]
Prerequisites: COSI 114a, plus at least one of LING 160b, MATH 10a, MATH 10b, MATH 15a, MATH 20a, MATH 22a, or equivalent knowledge.
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.
James Pustejovsky
COSI
131a
Operating Systems
[
dl
sn
]
Prerequisites: COSI 21a.
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.
Mitch Cherniack, Olga Papaemmanouil, or Liuba Shrira
COSI
164a
Introduction to 3-D Animation
[
dl
sn
]
May not be taken for credit by students who took COSI 65a in prior years.
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.
Timothy Hickey
COSI
178a
Computational Molecular Biology
[
dl
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.
Pengyu Hong
COSI Oral Communication
COSI
45a
Effective Communication for Computer Scientists
[
oc
]
Prerequisite: One 100-level COSI elective. Yields half-course credit.
Teaches the basics of good oral communication and presentation, such as structuring a presentation, body language, eye contact, pace and appropriateness for the audience. It will cover, with practice, a range of speaking engagements majors might meet in academia and industry including: presentation of a research paper, software architecture proposal, business elevator pitch, research funding proposal, and so on. Students will present a project already created for a 100-level COSI elective. They will give the presentation in class, receive feedback based on the practices taught and then have a chance to give the presentation a second time. Usually offered every semester.
COSI Writing Intensive
COSI
12b
Advanced Programming Techniques in Java
[
dl
sn
wi
]
Prerequisite: COSI 10a or successful completion of the COSI online placement exam.
Studies advanced programming concepts and techniques utilizing the Java programming language. The course covers software engineering concepts, object-oriented design, design patterns and professional best practices. This is a required foundation course that will prepare you for more advanced courses, new programming languages, and frameworks. Usually offered every year.
Staff
COSI
159a
Computer Vision
[
oc
sn
wi
]
Prerequisites: COSI 12b, COSI 21a, and MATH 15a or MATH 22a.
Designed for undergraduate and graduate students majoring/minoring in computer science, the course covers core topics in image/video understanding, such as, object detection/recognition/tracking (with applications in face detection, gesture detection, pose detection), image segmentation (saliency detection, semantic segmentation, co-segmentation), image enhancement (super resolution, image recovery), visual relationship mining (spatial relationship, kinship), 3D reconstruction, image generation, optical flow, and video segmentation. It will also touch several advanced computer vision topics, such as, multi-view image clustering, image captioning, image generation from text, and visual question and answering. Usually offered every second year.
Hongfu Liu
COSI Cross-Listed
ANTH
138a
Digital Cultures
[
dl
ss
]
Examines the complex and often fraught relationships between digital technologies and human cultures. By thinking through digital technology’s relationships to structures like race, gender, sexuality, class, and ability, this course helps us explore the human components in the creation, circulation, and experience of digital technologies. What this class spotlights is that though digital technologies may seem materially new and technically innovative, they are built on longstanding power relations that structure both their construction and their circulation. Involves participatory research projects and group work. Usually offered every third year.
Patricia Alvarez Astacio or Brian Horton
ECON
148b
Introduction to Machine Learning with Economic Applications
[
sn
ss
]
Prerequisite: ECON 83a. Prior experience with Python recommended.
Provides an understanding of machine learning techniques, considers how to evaluate their performance, and demonstrates how they can be used to solve real-world problems in economics and business. The course involves hands-on experience applying/implementing machine learning models using Python. Usually offered every year.
Yinchu Zhu
LING
130a
Semantics I
[
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.
Sophia Malamud
MATH
15a
Linear Algebra
[
sn
]
Prerequisites: MATH 5a and permission of the instructor, placement by examination, or any mathematics course numbered 10 or above. Students may take MATH 15a or 22a for credit, but not both.
Matrices, determinants, linear equations, vector spaces, eigenvalues, quadratic forms, linear programming. Emphasis on techniques and applications. Usually offered every semester.
Staff
MATH
22a
Honors Linear Algebra
[
sn
]
Prerequisite: MATH 22a placement exam and permission of the instructor. Students may take MATH 15a or MATH 22a for credit, but not both.
MATH 22a covers linear algebra. The material is similar to MATH 15a but with some additional content, a more theoretical emphasis, and more attention to proofs. Usually offered every fall.
Staff
MATH
122a
Numerical Methods and Big Data
[
dl
sn
]
Prerequisites: MATH 15a or MATH 22a and MATH 20a or MATH 22b, and basic proficiency with a programming language such as Python or Matlab.
Introduces fundamental techniques of numerical linear algebra widely used for data science and scientific computing. The purpose of this course is to introduce methods that are useful in applications and research. Usually offered every year.
Staff
MATH
124a
Optimization
[
dl
sn
]
Prerequisites: MATH 15a or MATH 22a, MATH 20a or MATH 22b, MATH 23b, and basic proficiency with a programming language such as Python or Matlab, or permission of the instructor.
Explores the theory of mathematical optimization and its fundamental algorithms, emphasizing problems arising in machine learning, economics, and operations research. Topics include linear and integer programming, convex analysis, and duality. Usually offered every second year.
Tyler Maunu
MATH
125a
Mathematics for Machine Learning
[
sn
]
Prerequisites: MATH 10b and either MATH 15a or MATH 22a.
Serves as a first course in machine learning and general data science, with a focus on the mathematics underlying the various modern machine learning algorithms. The course covers the fundamental concepts of statistical distribution, information theory, statistical learning, optimization and matrix factorizations, as well as classic algorithms such as tree methods, kernel methods and various neural network models. A few important real world examples of current interest will be considered such as computer vision, natural language processing, search engine, recommendation systems, finance, and biology. Usually offered every second year.
Arthur Jun Zhang
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 second year.
Staff
PHYS
29a
Electronics Laboratory I
[
sn
]
Prerequisites: PHYS 11a, b or PHYS 15a, b; and PHYS 19a, b or permission of instructor. Students without a background in Physics should contact the instructor to discuss course requirements and receive permission to enroll.
Introductory laboratory in electronics. Topics to be covered are time constants, frequency response, rectification, amplification, radio reception, combinatorial logic, digital state machines, and analog-to-digital conversion. The class will solve first and second order differential equations directly and with the help of the complex exponential. Usually offered every spring.
Staff