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.
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.
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.
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.
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.
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.
COSI
98b
Independent Study
Yields half-course credit. Open to exceptional students who wish to study an area of computer science not covered in the standard curriculum. Usually offered every year.
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.
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.
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.
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.
COSI
104a
Introduction to Machine Learning
[
sn
]
Prerequisites: COSI 12b. Cannot be taken by students who completed COSI/ECON 148b or ECON 148b.
Machine learning is essential to gaining insights into large-scale data and making decisions in a wide spectrum of real world applications. This course will provide you a basic understanding of machine learning techniques (e.g., linear regression, logistic regression, decision trees, neural networks, clustering, state machines and Markov decision processes, etc.), how to evaluate their performance, and demonstrating how these models can be used to solve real-world problems. In addition, this course will give you hands-on experience utilizing these machine learning models. Usually offered every year.
COSI
105b
Software Engineering for Scalability
[
sn
]
Prerequisite: COSI 21a, 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.
COSI
107a
Introduction to Computer Security
Prerequisite: COSI 12b.
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.
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.
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.
Introduces the computational properties of natural language and the algorithms and machine learning methods used to process it. Students will develop an understanding of natural language processing (NLP) by implementing statistical NLP algorithms and building NLP tools in Python. Topics include statistical properties of natural language, text classification, language modeling, and machine learning and programming techniques for NLP. Usually offered every year.
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.
COSI
116a
Information Visualization
Prerequisite: COSI 12b. Only MS4 students without COSI 12b can register with approval of the instructor.
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.
COSI
119a
Autonomous Robotics
[
sn
]
Prerequisites: COSI 21a, 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.
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.
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.
COSI
123a
Statistical Machine Learning
[
qr
sn
]
Prerequisite: COSI 21a, COSI 104a, 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.
COSI
125a
Human-Computer Interaction
[
sn
]
Prerequisite: COSI 12b.
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.
COSI
126a
Unsupervised Learning and Data Mining
[
sn
]
Prerequisites: COSI 21a, COSI 104a, 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.
COSI
127b
Database Management Systems
[
sn
]
Prerequisites: COSI 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.
COSI
128a
Introduction to Computer Networking
[
sn
]
Prerequisite: COSI 21a.
Provides a comprehensive introduction to the principles and practices of computer networking. Students will engage with the principles of data communication, network architectures, and protocols, including state-of-the-art networking technologies. Usually offered every year.
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.
COSI
131a
Fundamentals of Computer 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.
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.
COSI
133a
Graph Mining
[
sn
]
Prerequisite: COSI 165b, 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.
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.
COSI
136a
Automatic Speech Recognition
[
sn
]
Prerequisite: COSI 114a 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.
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.
COSI
142a
Embedded Systems Development
[
sn
]
Prerequisites: COSI 10a and COSI 131a.
A project-based course that teaches the foundational aspects of embedded systems and the development process utilizing Raspberry Pi. Students will will create prototypes of embedded systems, including applications for IoT devices. Usually offered every year.
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.
COSI
146a
Principles of Computer System Design
[
sn
]
Prerequisites: COSI 131a.
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.
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.
COSI
149b
Practical Machine Learning with Big Data
[
sn
]
Prerequisites: COSI 165b.
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.
COSI
150a
Compiler Design
[
sn
]
Prerequisites: COSI 21a and COSI 29a.
The goal of this course is to provide an overview of the theory and practice of Compiler Design. This course will cover the fundamental components of Compiler Design including scanning, lexical analysis, parsing, semantic analysis, static analysis, and code generation. Usually offered every second year.
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.
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.
COSI
159a
Computer Vision
[
oc
sn
wi
]
Prerequisites: COSI 165b.
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.
COSI
165b
Deep Learning
[
sn
]
Prerequisites: COSI 21a, COSI 104a, MATH 8a, MATH 10a, and either 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.
COSI
166b
Capstone Project for Software Engineering
[
sn
]
Prerequisites: COSI 21a, 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.
COSI
167a
Advanced Data Systems
[
sn
]
Prerequisite: COSI 127b.
Explores the principles of designing data systems tackling challenges such as optimizing the use of ever-evolving hardware (storage, computation, network), ensuring efficient collection of incoming data, querying dynamic data collections, parallelizing query processing, and more. Students will gain a comprehensive understanding of the key drivers of innovation in data systems: hardware and workloads, delving into the detailed analysis of recent and anticipated trends in both areas. Usually offered every year.
COSI
180a
Algorithms
[
sn
]
Prerequisites: COSI 21a and COSI 29a.
Explores a wide range of algorithms for various computational problems, focusing on their fundamental design principles. Usually offered every second year.
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.
COSI
210a
Independent Study
Usually offered every year. May be repeated once for credit.
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.
COSI
217a
Topics in Adaptive Systems
Prerequisite: COSI 21a. COSI 101a or COSI 123a are recommended but not required. 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.
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.
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.
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
Advanced Machine Learning Methods for Natural Language Processing II
[
sn
]
Prerequisite: COSI 231a.
An advanced graduate-level core course exploring state-of-the-art techniques and applications in natural language processing. Covers recent NLP advancements, focusing on large language models, pretrained model fine-tuning, transfer learning, and few-shot learning, and their applications in current NLP tasks such as knowledge extraction, text generation, and dialogue systems. Usually offered every year.
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.
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.
COSI
293a
Computer Science Graduate Internship
Permission of the graduate advising head required.
Provides graduate students with the opportunity to participate in industrial experiences in computer science through the completion of a paid or an unpaid internship lasting a minimum of ten weeks. This internship must be approved and monitored by a faculty member.
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.
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.
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.
COSI
299a
Computational Linguistics Master's Thesis
Permission of the graduate advising head required. May be repeated once for credit.
COSI
300a
Master's Project
Usually offered every year.
COSI
300b
Master's Project
Usually offered every year.
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.
COSI
400d
Dissertation Research
Specific sections for individual faculty members as requested.
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.
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.
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.
Introduces the computational properties of natural language and the algorithms and machine learning methods used to process it. Students will develop an understanding of natural language processing (NLP) by implementing statistical NLP algorithms and building NLP tools in Python. Topics include statistical properties of natural language, text classification, language modeling, and machine learning and programming techniques for NLP. Usually offered every year.
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.
COSI
131a
Fundamentals of Computer 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.
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
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.
COSI
159a
Computer Vision
[
oc
sn
wi
]
Prerequisites: COSI 165b.
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.
ECON
148b
Introduction to Machine Learning with Economic Applications
[
oc
ss
]
Prerequisite: ECON 83a. Prior experience with Python recommended. Cannot be taken by students who completed COSI/ECON 148b or COSI 104a.
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.
LING
130a
Semantics I
[
hum
qr
ss
]
Prerequisite: LING 100a. 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.
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.
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.
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.
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.
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.
PHIL
106b
Mathematical Logic
[
hum
sn
]
We continue our rigorous investigation of logic that we began in Phil6A by studying the metatheory of formal systems. We begin with an introduction to sets, relations, and functions, after which we prove the Soundness, Completeness, and Löwenheim-Skolem Theorems for First-Order Logic. We end by examining Turing machines in order to introduce students to the notions of computability and undecidability, and to prepare them for the more advanced study of Gödel's Incompleteness Theorems. Usually offered every second year.
PHIL
115a
The Philosophy and Ethics of Technology
[
hum
wi
]
From TikTok to Meta, and from CRISPR to ChatGPT, gamification, Extended Reality, and the struggle against climate change, dramatic advances in technology are shaping our world and our lives like never before. This course investigates the moral, social, and political implications of these and other new technologies. How should we understand privacy and surveillance in the age of metadata? Will emerging biotechnologies and life-tracking metrics allow us to re-engineer humanity? Should we edit our genes or those of our children to extend human lives and enhance human abilities? Can geoengineering resolve the climate crisis? How will AI and robotics change the work world? Can machines be “conscious” and what would it mean if they can? Will AI help us reduce bias and combat bigotry, or make things worse? What does the explosion of social media mean for human agency? How can we live an act in meaningful ways in a world increasingly dominated by technological and capital forces?
This course will explore how technology and our attitudes towards it are transforming who we are, what we do, how we make friends, care for our health, and conduct our social and political lives. In doing so, we will also investigate fundamental philosophical and ethical questions about agency, integrity, virtue, “the good,” and what it means to be human in an uncertain and shifting world. Special one-time offering, spring 2024.
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.