
CPSC
035b
, Music Outside the Box: 21st Century Electronic and Computer Music Techniques
.

TTh 2.303.45

Scott Petersen 
Permission of instructor required

Learn how computers have both changed and challenged the analysis, composition, production, and appreciation of music over the last 50 years, and dive into the world of 21st century electronic and computer music by exploring the diverse subjects and issues at the intersection of technology and new music. 
There are no course prerequisites, however knowledge of basic music theory and the ability to read Western musical notation is assumed. 

CPSC
078b
, See it, Change it, Make it
.

M 2.304.20 DL 120

Julie Dorsey 
QR (0)
Permission of instructor required

Handson introduction to the theory and practice of digital capture, modeling, and fabrication. Topics include digital representations of shape, 3D scanning, shape modeling and editing, and physical production, including 3D printing, milling, and laser cutting. Architectural forms at a variety of scales used as vehicles for exploration and experimentation. 
There are no course prerequisites. Students are expected to be proficient in high schoollevel algebra, trigonometry, and geometry. No prior knowledge of architecture is expected. Enrollment limited to freshmen. Preregistration required; see under Freshman Seminar Program. 

CPSC
079b
, Digital Photorealism
.

TTh 1.002.15 AKW 500

Julie Dorsey 
QR (0)
Permission of instructor required

Basic methods used to define shapes, materials, and lighting when creating computergenerated images. Mathematical models for shape, texture models, and lighting techniques. Principles are applied through the use of modeling/rendering/animation software. Proficiency in high schoollevel mathematics is assumed. No previous programming experience necessary. Enrollment limited to freshmen. Preregistration required; see under Freshman Seminar Program.


CPSC
079a
, Digital Photorealism
.

TTh 2.303.45 AKW 400

Julie Dorsey 
QR (0)
Permission of instructor required

Basic methods used to define shapes, materials, and lighting when creating computergenerated images. Mathematical models for shape, texture models, and lighting techniques. Principles are applied through the use of modeling/rendering/animation software.

Proficiency in high school?level mathematics is assumed. No previous programming experience necessary. Enrollment limited to freshmen. Preregistration required; see under Freshman Seminar Program. 

CPSC
079b
, Digital Photorealism
.

MW 2.303.45 AKW 400

Julie Dorsey 
QR (0)
Permission of instructor required

Basic methods used to define shapes, materials, and lighting when creating computergenerated images. Mathematical models for shape, texture models, and lighting techniques. Principles are applied through the use of modeling/rendering/animation software.

Proficiency in high school?level mathematics is assumed. No previous programming experience necessary. Enrollment limited to freshmen. Preregistration required; see under Freshman Seminar Program. 

CPSC
079b
, Digital Photorealism
.

T 9.2511.15 DL 120

Julie Dorsey 
QR (0)
Permission of instructor required

Basic methods used to define shapes, materials, and lighting when creating computergenerated images. Mathematical models for shape, texture models, and lighting techniques. Principles are applied through the use of modeling/rendering/animation software.

Proficiency in high school?level mathematics is assumed. No previous programming experience necessary. Enrollment limited to freshmen. Preregistration required; see under Freshman Seminar Program. 

CPSC
079b
, Digital Photorealism
.

M 2.304.20

Julie Dorsey 
QR
Permission of instructor required

Basic methods used to define shapes, materials, and lighting when creating computergenerated images. Mathematical models for shape, texture models, and lighting techniques. Principles are applied through the use of modeling/rendering/animation software.

Proficiency in high school?level mathematics is assumed. No previous programming experience necessary. Enrollment limited to freshmen. Preregistration required; see under Freshman Seminar Program. 

CPSC
100a
, Introduction to Computing and Programming
.

MW 1.002.20 SLB AUD; 2 HTBA

Brian Scassellati 
TTh 2.303.50 SSS 114; 2 HTBA

Brian Scassellati 
QR (0)

Introduction to the intellectual enterprises of computer science and to the art of programming, with attention to algorithmic thinking and efficient problem solving. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and Web development. Programming in the languages C, PHP, and JavaScript, as well as SQL, CSS, and HTML. Applications in biology, cryptography, finance, forensics, and gaming. Students view most course lectures on line; all sections, office hours, and related events are held locally. 
No previous programming experience required. Open to students of all levels and majors. 

CPSC
100a
, Introduction to Computing and Programming
.

Th 4.005.15 SSS 114; 3 HTBA

Patrick Rebeschini, Jason Hirschhorn 
QR (0)

Introduction to the intellectual enterprises of computer science and to the art of programming. Students learn how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript, plus CSS and HTML. Problem sets inspired by realworld domains of biology, cryptography, finance, forensics, and gaming. See CS50's website, https://cs50.yale.edu, for additional information. 
No previous programming experience required. Open to students of all levels and majors. 

CPSC
112a
, Introduction to Programming
.

MWF 10.3011.20 DL 220

Daniel Abadi 
QR (33)

Development on the computer of programming skills, problemsolving methods, and selected applications. No previous experience with computers necessary.


CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25 WLH 119

Drew McDermott 
QR (34)

Development on the computer of programming skills, problemsolving methods, and selected applications. No previous experience with computers necessary.


CPSC
112a
, Introduction to Programming
.

MWF 10.3011.20 DL 220

Drew McDermott 
QR (33)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25 BCT 102; MWF 11.3512.25 GR109 ROSENFELD; F 11.3512.25 BCT 105

Yang Yang 
QR (34)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112a
, Introduction to Programming
.

MWF 10.3011.20 DL 220

Daniel Abadi 
QR (33)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25 DL 220

Zhong Shao 
QR (34)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112a
, Introduction to Programming
.

MWF 10.3011.20 DAVIES AUD

Daniel Abadi 
QR (33)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25 DAVIES AUD

Yang Yang 
QR (34)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112a
, Introduction to Programming
.

MWF 10.3011.20 WLH 116

Drew McDermott 
QR (33)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25 DAVIES AUD

Yang Yang 
QR (0)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112a
, Introduction to Programming
.

MWF 10.3011.20 DAVIES AUD

Daniel Abadi 
QR (33)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25 DAVIES AUD

Bryan Ford 
QR (34)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25 DAVIES AUD

Yang Yang 
QR (34)

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
112b
, Introduction to Programming
.

MWF 11.3512.25

Yang Yang 
QR

Development on the computer of programming skills, problemsolving methods, and selected applications.

No previous experience with computers necessary. 

CPSC
113b
, Programming and Entrepreneurship
.

TTh 1.002.15 DAVIES AUD

Daniel Abadi, Kyle Jensen 
(0)

Advanced software development, management, and entrepreneurship techniques used to build successful software startups. 
Prerequisite: CPSC 100 or 112 or equivalent programming experience. 

CPSC
113b
, Programming and Entrepreneurship
.

TTh 1.002.15 HLH17 101

Kyle Jensen 
(0)

Advanced software development, management, and entrepreneurship techniques used to build successful software startups. 
Prerequisite: CPSC 100 or 112 or equivalent programming experience. 

CPSC
134a
, Programming Musical Applications
.

MW 9.0010.15 AKW 200

Donya Quick 
QR (32)

Topics in computer music, including musical representations for computing, automated music analysis and composition, interactive systems, and virtual instrument design. Use of domainspecific programming languages and libraries to explore how the principles of computer science can be applied to music to create new interfaces, instruments, and tools. 
Recommended preparation: the ability to read music or play an instrument. 

CPSC
134a
, Programming Musical Applications
.

MW 9.0010.15 AKW

Scott Petersen 
QR (32)

Topics in computer music, including musical representations for computing, automated music analysis and composition, interactive systems, and virtual instrument design. Use of domainspecific programming languages and libraries to explore how the principles of computer science can be applied to music to create new interfaces, instruments, and tools. 
Recommended preparation: the ability to read music or play an instrument. 

CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 500

David Gelernter 
WR (34)

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind. No previous experience with computers necessary. Enrollment limited to 25.


CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 500

David Gelernter 
Hu WR (34)

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind.

No previous experience with computers necessary. Enrollment limited to 25. 

CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 400

David Gelernter 
Hu WR (34)

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind.

No previous experience with computers necessary. Enrollment limited to 25. 

CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 400

David Gelernter 
Hu WR (34)

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind.

No previous experience with computers necessary. Enrollment limited to 25. 

CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 400

David Gelernter 
Hu WR (34)
Permission of instructor required

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind.

No previous experience with computers necessary. Enrollment limited to 25. 

CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 400

David Gelernter 
Hu WR (34)
Permission of instructor required

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind.

No previous experience with computers necessary. Enrollment limited to 25. 

CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 400

David Gelernter 
Hu WR (34)
Permission of instructor required

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind.

No previous experience with computers necessary. Enrollment limited to 25. 

CPSC
150a
, Computer Science and the Modern Intellectual Agenda
.

MW 11.3512.50 AKW 400

David Gelernter 
Hu WR (34)
Permission of instructor required

Introduction to the basic ideas of computer science (computability, algorithm, virtual machine, symbol processing system), and of several ongoing relationships between computer science and other fields, particularly philosophy of mind.

No previous experience with computers necessary. Enrollment limited to 25. 

CPSC
151b
, The Graphical User Interface
.

MW 11.3512.50 AKW 500

David Gelernter 
WR (0)

The role of graphical user interfaces (GUIs) on standard platforms such as desktop PCs, laptops, and smallscreen devices. Discussion of how and why GUIs developed as they did, why they have evolved so little since the desktop computers of the 1970s, and how changing hardware and user requirements might reshape them in the future. Enrollment limited to 25.


CPSC
151b
, The Graphical User Interface
.

MW 11.3512.50 AKW 500

David Gelernter 
WR (0)

The role of graphical user interfaces (GUIs) on standard platforms such as desktop PCs, laptops, and smallscreen devices. Discussion of how and why GUIs developed as they did, why they have evolved so little since the desktop computers of the 1970s, and how changing hardware and user requirements might reshape them in the future.

Enrollment limited to 25. 

CPSC
151b
, The Graphical User Interface
.

MW 11.3512.50 AKW 400

David Gelernter 
WR (0)

The role of graphical user interfaces (GUIs) on standard platforms such as desktop PCs, laptops, and smallscreen devices. Discussion of how and why GUIs developed as they did, why they have evolved so little since the desktop computers of the 1970s, and how changing hardware and user requirements might reshape them in the future.

Enrollment limited to 25. 

CPSC
151b
, The Graphical User Interface
.

MW 11.3512.50 AKW 400

David Gelernter 
WR (0)
Permission of instructor required

The role of graphical user interfaces (GUIs) on standard platforms such as desktop PCs, laptops, and smallscreen devices. Discussion of how and why GUIs developed as they did, why they have evolved so little since the desktop computers of the 1970s, and how changing hardware and user requirements might reshape them in the future.

Enrollment limited to 25. 

CPSC
163b
, From Pictograph to Pixel: Changing Ways of Human Communication
.

TTh 1.002.15 YK212 004

Beatrice Gruendler, John Darnell, Michael Fischer 
Hu (26)

An exploration of the five pivotal stages in the development of human communication: pictographic and syllabic ways of writing; the consonantal or phonetic alphabet; the invention of paper; movable type; and electronic/digital media and the Internet. These technologies are considered for their innovative features, new capabilities, social and ideological implications, and the instrumental parts they played in contemporary periods of change.


CPSC
183a
, Intro to Law & Technology
.

MW 4.005.15 WLH 119

Elizabeth Stark, Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary.


CPSC
183a
, Introduction to Law and Technology
.

MW 4.005.15 WLH 119

Elizabeth Stark, Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary. 

CPSC
183a
, Introduction to Law and Technology
.

MW 4.005.15 DL 220

Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary. 

CPSC
183a
, Law, Technology, and Culture
.

MW 4.005.15 WLH 119

Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary. 

CPSC
183a
, Law, Technology, and Culture
.

MW 4.005.15 WLH 119

Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary. 

CPSC
183a
, Law, Technology, and Culture
.

MW 4.005.15 WLH 119

Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary. 

CPSC
183a
, Law, Technology, and Culture
.

MW 4.005.15 LC 102

Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary. 

CPSC
183a
, Law, Technology, and Culture
.

MW 4.005.15 LC 102

Brad Rosen 
So (0)

An exploration of the myriad ways in which law and technology intersect, with a special focus on the role of cyberspace. Topics include digital copyright, free speech, privacy and anonymity, information security, innovation, online communities, the impact of technology on society, and emerging trends.

No previous experience with computers or law necessary. 

CPSC
184b
, Intellectual Property in the Digital Age
.

W 3.305.30 WLH 011

Elizabeth Stark 
So (0)
Permission of instructor required

The future of knowledge in cyberspace explored through discussion of copyright, patent, and trademark law in the context of new technologies. Topics include fair use, remixing, P2P, free software, the public domain, DRM, software patents, biotech, and online communities and collaboration. Prerequisite: CPSC 180a or b or 183a. May not be taken after CPSC 182b.


CPSC
184b
, Intellectual Property in the Digital Age
.

W 3.305.30 WLH 001

Elizabeth Stark 
So (0)
Permission of instructor required

The future of knowledge in cyberspace explored through discussion of copyright, patent, and trademark law in the context of new technologies. Topics include fair use, remixing, P2P, free software, the public domain, digital rights management, software patents, biotechnology, and online communities and collaboration.

Prerequisite: CPSC <180a or b> or 183a. May not be taken after CPSC <182b>.


CPSC
184a
, Intellectual Property in the Digital Age
.

F 3.305.20 WLH 003

Xiyin Tang 
Hu, So (0)
Permission of instructor required

The evolving and oftentimes vexing intellectual property regime of the new digital age. Focus on copyright, fair use, remix culture, access to knowledge, technological innovations, the increasing relevance of trademarks in the new information society, the tension between creativity/creating and the intellectual property rules which either foster or inhibit it, and the new information culture of the digital age. 
Prerequisite: CPSC 183 or permission of instructor. 

CPSC
184b
, Intellectual Property in the Digital Age
.

Th 9.2511.15 WLH 204

Xiyin Tang 
Hu, So (0)
Permission of instructor required

The evolving and oftentimes vexing intellectual property regime of the new digital age. Focus on copyright, fair use, remix culture, access to knowledge, technological innovations, the increasing relevance of trademarks in the new information society, the tension between creativity/creating and the intellectual property rules which either foster or inhibit it, and the new information culture of the digital age. 
Prerequisite: CPSC 183 or permission of instructor. 

CPSC
184b
, Intellectual Property in the Digital Age
.

Th 3.305.20

Xiyin Tang 
Hu, So
Permission of instructor required

The evolving and oftentimes vexing intellectual property regime of the new digital age. Focus on copyright, fair use, remix culture, access to knowledge, technological innovations, the increasing relevance of trademarks in the new information society, the tension between creativity/creating and the intellectual property rules which either foster or inhibit it, and the new information culture of the digital age. 
Prerequisite: CPSC 183 or permission of instructor. 

CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20 BASSLB L70

Brad Rosen 
WR (0)
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologicallypermitted methods of control on the law. Special attention to case law and policy. Prerequisite: CPSC 180a or b or 183a.


CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20 WLH 204

Brad Rosen 
So WR (0)
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologically permitted methods of control on the law. Special attention to case law and policy.

Prerequisite: CPSC <180a or b> or 183a. 

CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20 AKW 400

Brad Rosen 
So WR (0)
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologically permitted methods of control on the law. Special attention to case law and policy.

After CPSC 183. 

CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20 WLH 204

Brad Rosen 
So WR (0)
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologically permitted methods of control on the law. Special attention to case law and policy.

After CPSC 183. 

CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20 WLH 204

Brad Rosen 
So WR (0)
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologically permitted methods of control on the law. Special attention to case law and policy.

After CPSC 183. 

CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20 WLH 204

Brad Rosen 
So WR (0)
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologically permitted methods of control on the law. Special attention to case law and policy.

After CPSC 183. 

CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20 WLH 204

Brad Rosen 
So WR (0)
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologically permitted methods of control on the law. Special attention to case law and policy.

After CPSC 183. 

CPSC
185b
, Control, Privacy, and Technology
.

F 3.305.20

Brad Rosen 
So WR
Permission of instructor required

The evolution of various legal doctrines with and around technological development. Topics include criminal law, privacy, search and seizure, digital rights, and the implications of technologically permitted methods of control on the law. Special attention to case law and policy.

After CPSC 183. 

CPSC
200b
, Introduction to Information Systems
.

MWF 10.3011.20 LC 101

Stephen Slade 
QR (33)

The realworld artifacts and implementations that comprise the vital computational organisms that populate our world. Hardware and software and the related issues of security, privacy, regulation, and software engineering. Examples stress practical applications of technology, as well as limitations and societal issues. 
After CPSC 100 or 112 or equivalent. 

CPSC
200b
, Introduction to Information Systems
.

MWF 10.3011.20

Stephen Slade 
QR

The realworld artifacts and implementations that comprise the vital computational organisms that populate our world. Hardware and software and the related issues of security, privacy, regulation, and software engineering. Examples stress practical applications of technology, as well as limitations and societal issues. 
After CPSC 100 or 112 or equivalent. 

CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 GR109 ROSENFELD

Dana Angluin 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods. After CPSC 112a or b or equivalent.


CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25 WLH 207

Holly Rushmeier 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods. After CPSC 112a or b or equivalent.


CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 WLH 207

Dana Angluin 
QR (33)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112a or b or equivalent. 

CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25 WLH 207

Holly Rushmeier 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112a or b or equivalent. 

CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 GR109 ROSENFELD

Holly Rushmeier 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25 GR109 ROSENFELD

Dana Angluin 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 DL 220

Dana Angluin 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25 WLH 208

Holly Rushmeier 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 DL 220

Dana Angluin 
QR (33)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25 WLH 208

Dana Angluin 
QR (34)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 LC 101

Holly Rushmeier 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25 WLH 119

Dana Angluin 
QR (34)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 DL 220

Stephen Slade 
QR (33)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25 LC 101

Stephen Slade 
QR (34)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201a
, Introduction to Computer Science
.

MWF 10.3011.20 DL 220

Holly Rushmeier 
QR (0)

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
201b
, Introduction to Computer Science
.

MWF 11.3512.25

Dana Angluin 
QR

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problemsolving methods.

After CPSC 112 or equivalent. 

CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 AKW 200

Joan Feigenbaum 
QR (0)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 GR109 ROSENFELD

James Aspnes 
QR (26)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 ML 211

Dana Angluin 
QR (26)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 DAVIES AUD

Joan Feigenbaum 
QR (0)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 LC 317

James Aspnes 
QR (0)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 LC 317

Dana Angluin 
QR (26)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 DL 220

Dana Angluin 
QR (26)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
202a
, Mathematical Tools for Computer Science
.

TTh 1.002.15 DL 220

Dana Angluin 
QR (26)

Introduction to formal methods for reasoning and to mathematical techniques basic to computer science. Topics include propositional logic, discrete mathematics, and linear algebra. Emphasis on applications to computer science: recurrences, sorting, graph traversal, Gaussian elimination.


CPSC
213b
, Apps, Software, and Entrepreneurship
.

TTh 1.002.15

Kyle Jensen 
QR

Programming, software development, management, and entrepreneurship techniques used to build successful software startups. 
After CPSC 100, CPSC 112, or the equivalent. Not to be taken before, concurrently, or after CPSC 413. 

CPSC
223b
, Data Structures and Programming Techniques
.

TTh 1.002.15 DL 220

Stanley Eisenstat 
QR (26)

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs. After CPSC 201a or b or equivalent.


CPSC
223b
, Data Structures and Programming Techniques
.

TTh 1.002.15 DL 220

Stanley Eisenstat 
QR (26)
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201a or b or equivalent. 

CPSC
223b
, Data Structures and Programming Techniques
.

TTh 1.002.15 DL 220

James Aspnes 
QR (0)
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201 or equivalent. 

CPSC
223b
, Data Structures and Programming Techniques
.

MW 1.002.15 DL 220

Stanley Eisenstat 
QR (36)
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201 or equivalent. 

CPSC
223b
, Data Structures and Programming Techniques
.

MW 1.002.15 DL 220

Stanley Eisenstat 
QR (0)
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201 or equivalent. 

CPSC
223b
, Data Structures and Programming Techniques
.

MW 1.002.15 WLH 201

James Aspnes 
QR (0)
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201 or equivalent. 

CPSC
223b
, Data Structures and Programming Techniques
.

MW 1.002.15 DL 220

Stanley Eisenstat 
QR (0)
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201 or equivalent. 

CPSC
223a
, Data Structures and Programming Techniques
.

MW 11.3512.50 LC 211

Stephen Slade 
QR (0)
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201 or equivalent. 

CPSC
223b
, Data Structures and Programming Techniques
.

MW 1.002.15

Stephen Slade 
QR
Meets during reading period

Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.

After CPSC 201 or equivalent. 

CPSC
257b
, Information Security in the Real World
.

TTh 2.303.45 WLH 208

Ewa Syta 
QR (27)

Introduction to information security, the practice of protecting information from unauthorized actions, in the context of computer systems. Topics include current securityrelated issues, basic adversarial models and threats to computer systems, potential defenses, security tools, and common security breaches and their wider impacts. 
Prerequisite: CPSC 100, 112, or equivalent programming experience, or with permission of instructor. 

CPSC
262a
, Computational Tools for Data Science
.

TTh 2.303.45 DL 220

Daniel Spielman, Sahand Negahban 
QR (0)

Introduction to the core ideas and principles that arise in modern data analysis, bridging statistics and computer science and providing students the tools to grow and adapt as methods and techniques change. Topics include principle component analysis, independent component analysis, dictionary learning, neural networks, clustering, streaming algorithms (streaming linear algebra techniques), online learning, large scale optimization, simple database manipulation, and implementations of systems on distributed computing infrastructures. Students require background in linear algebra, multivariable calculus, and programming. 
after or concurrently with MATH 222, 225, or 231; after or concurrently with MATH 120, 230, or ENAS 151; after or concurrently with CPSC 100, 112, or ENAS 130. 

CPSC
290a
, Directed Research
.

1 HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. May be taken more than once for credit.


CPSC
290b
, Directed Research
.

1 HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. May be taken more than once for credit.


CPSC
290a
, Directed Research
.


Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290b
, Directed Research
.


Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290a
, Directed Research
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290b
, Directed Research
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290a
, Directed Research
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290b
, Directed Research
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290a
, Directed Research
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290b
, Directed Research
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290a
, Directed Research
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290b
, Directed Research
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290a
, Directed Research
.

1 HTBA

Zhong Shao 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290b
, Directed Research
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290a
, Directed Research
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
290b
, Directed Research
.

1 HTBA

James Aspnes 
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 AKW 200

Stanley Eisenstat 
QR (0)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, assembly language, issues in operating systems, software engineering, prototyping in nonprogramming languages. After CPSC 223b.


CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 AKW 200

Stanley Eisenstat 
QR (0)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, assembly language, issues in operating systems, software engineering, prototyping in nonprogramming languages.

After CPSC 223b. 

CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 ML 211

Stanley Eisenstat 
QR (0)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, assembly language, issues in operating systems, software engineering, prototyping in nonprogramming languages.

After CPSC 223. 

CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 WLH 119

Stanley Eisenstat 
QR (0)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, issues in operating systems, software engineering, prototyping in nonprogramming languages.

After CPSC 223. 

CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 DL 220

Stanley Eisenstat 
QR (0)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, issues in operating systems, software engineering, prototyping in scripting languages.

After CPSC 223. 

CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 DL 220

Stanley Eisenstat 
QR (0)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, issues in operating systems, software engineering, prototyping in scripting languages.

After CPSC 223. 

CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 DL 220

Stanley Eisenstat 
QR (36)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, issues in operating systems, software engineering, prototyping in scripting languages.

After CPSC 223. 

CPSC
323a
, Introduction to Systems Programming and Computer Organization
.

MW 1.002.15 DL 220

Stanley Eisenstat 
QR (0)
Meets during reading period

Machine architecture and computer organization, systems programming in a highlevel language, issues in operating systems, software engineering, prototyping in scripting languages.

After CPSC 223. 

CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45 ML 211

Daniel Spielman 
QR (27)

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science. After CPSC 202a and 223b.


CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45 ML 211

Daniel Spielman 
QR (27)

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science.

After CPSC 202a and 223b. 

CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45 ML 211

Daniel Spielman 
QR (27)

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science.

After CPSC 202 and 223. 

CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45 ML 211

Daniel Spielman 
QR (27)

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science.

After CPSC 202 and 223. 

CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45 DL 220

Daniel Spielman 
QR (27)

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science.

After CPSC 202 and 223. 

CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45 DL 220

Daniel Spielman 
QR (27)

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science.

After CPSC 202 and 223. 

CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45 DL 220

Daniel Spielman 
QR (0)

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science.

After CPSC 202 and 223. 

CPSC
365b
, Design and Analysis of Algorithms
.

TTh 2.303.45

Daniel Spielman 
QR

Paradigms for problem solving: divide and conquer, recursion, greedy algorithms, dynamic programming, randomized and probabilistic algorithms. Techniques for analyzing the efficiency of algorithms and designing efficient algorithms and data structures. Algorithms for graph theoretic problems, network flows, and numerical linear algebra. Provides algorithmic background essential to further study of computer science.

After CPSC 202 and 223. 

CPSC
410a
, The Law and Technology of Cyber Conflict
.

W 9.2511.15 BAKER A005

Joan Feigenbaum, Oona Hathaway, Scott Shapiro 
(0)
Permission of instructor required

A crossdisciplinary seminar that addresses both technical and legal aspects of cyber conflict. Recent events, including the hacks of Sony and the U.S. Office of Personnel Management, illustrate the need for new thinking about the particular issues raised when cyber attacks originate from state or quasistate actors. Professors from Yale Law School and the Computer Science Department will lead indepth explorations of cyber conflict from both legal and technical points of view. Enrollment is limited to ten Yale College students. This is the first half of a yearlong course; the second half is CPSC 411. Students are required to make a yearlong, two term commitment. 
CPSC 201 and 223 or the equivalent and/or PLSC 233 or the equivalent, and/or GLBL 390 or the equivalent. 

CPSC
411b
, The Law and Technology of Cyber Conflict: Practicum
.

W 9.2511.15

Joan Feigenbaum, Oona Hathaway, Scott Shapiro 
(0)
Permission of instructor required

A cross?disciplinary practicum that addresses both technical and legal aspects of cyber conflict. Recent events, including the hacks of Sony and the U.S. Office of Personnel Management, illustrate the need for new thinking about the particular issues raised when cyber attacks originate from state or quasi?state actors. Professors from Yale Law School and the Computer Science Department will oversee intensive student projects on both legal and technical aspects of cyber conflict. Enrollment is limited to ten Yale College students. This is the second half of a yearlong course; the first half is CPSC 410. Students are required to make a yearlong, two term commitment. 
Prerequisite: CPSC 410. 

CPSC
412a
, Designing the Digital Economy
.

M 2.305.30 WLH 119

Eric Weyl 
So (37)
Permission of instructor required

Digitization is transforming a variety of markets from personal transportation services to advertising. This course explores the economic tools (market design, price theory, causal inference, etc.) and technical tools from computer science (machine learning, the analysis of algorithms, user interface design, etc.) students need to contribute meaningfully to this transformation. 
Prerequisites: elementary training in both economics and computer science and some intermediate/advanced training in at least one relevant field. 

CPSC
421a
, Compilers and Interpreters
.

MW 1.002.15 AKW 500

Zhong Shao 
QR (0)

Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage and address binding. The effect of languagedesign decisions on compiler construction.

After CPSC 323a. 

CPSC
421a
, Compilers and Interpreters
.

MW 1.002.15 AKW 200

Zhong Shao 
QR (0)
Permission of instructor required

Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage and address binding. The effect of languagedesign decisions on compiler construction.

After CPSC 323. 

CPSC
421b
, Compilers and Interpreters
.

TTh 1.002.15 AKW 000

Zhong Shao 
QR (0)
Permission of instructor required

Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage and address binding. The effect of languagedesign decisions on compiler construction.

After CPSC 323. 

CPSC
421b
, Compilers and Interpreters
.

MW 1.002.15 AKW 000

Zhong Shao 
QR (0)
Permission of instructor required

Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage and address binding. The effect of languagedesign decisions on compiler construction.

After CPSC 323. 

CPSC
421b
, Compilers and Interpreters
.

TTh 1.002.15

Zhong Shao 
QR
Permission of instructor required

Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage and address binding. The effect of languagedesign decisions on compiler construction.

After CPSC 323. 

CPSC
422b
, Operating Systems
.

MW 1.002.15 AKW 500

Bryan Ford 
QR (36)

The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking. After CPSC 323a.


CPSC
422b
, Operating Systems
.

MW 1.002.15 AKW 500

Bryan Ford 
QR (0)

The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking.

After CPSC 323a. 

CPSC
422b
, Operating Systems
.

MW 1.002.15 AKW 200

Bryan Ford 
QR (36)

The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking.

After CPSC 323. 

CPSC
422b
, Operating Systems
.

MW 1.002.15 AKW 200

Bryan Ford 
QR (36)

The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking.

After CPSC 323. 

CPSC
422a
, Operating Systems
.

MW 1.002.15 AKW 000

David Wolinsky 
QR (36)

The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking.

After CPSC 323. 

CPSC
422a
, Design and Implementation of Operating Systems
.

TTh 1.002.15 AKW 200

Zhong Shao 
QR (0)

The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking.

After CPSC 323. 

CPSC
422a
, Design and Implementation of Operating Systems
.

TTh 1.002.15 AKW 200

Zhong Shao 
QR (0)

The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking.

After CPSC 323. 

CPSC
423a
, Principles of Operating Systems
.

TTh 2.303.45 AKW 000

Abraham Silberschatz 
(27)
Permission of instructor required

A survey of the underlying principles of modern operating systems. Topics include process management, memory management, storage management, protection and security, distributed systems, and virtual machines. Emphasis on fundamental concepts rather than implementation.

After CPSC 323. 

CPSC
423b
, Principles of Operating Systems
.

TTh 1.002.15 AKW 200

Abraham Silberschatz 
QR (26)

A survey of the underlying principles of modern operating systems. Topics include process management, memory management, storage management, protection and security, distributed systems, and virtual machines. Emphasis on fundamental concepts rather than implementation.

After CPSC 323. 

CPSC
423b
, Principles of Operating Systems
.

TTh 9.0010.15

Abraham Silberschatz 
QR

A survey of the underlying principles of modern operating systems. Topics include process management, memory management, storage management, protection and security, distributed systems, and virtual machines. Emphasis on fundamental concepts rather than implementation.

After CPSC 323. 

CPSC
424b
, Parallel Programming Techniques
.

TTh 2.303.45 AKW 200

Andrew Sherman 
(0)

Practical introduction to high performance parallel computing, emphasizing techniques suitable for scientific and engineering applications. Aspects of processor and machine architecture. Parallel programming paradigms such as vector processing, multithreading, and message passing. Algorithmic patterns for parallel scientific/engineering computations. Performance measurement, tuning, and debugging of parallel programs. Parallel file systems and I/O. Prerequisites: CPSC 223b and MATH 222a or b or 225a or b, or equivalents.


CPSC
424b
, Parallel Programming Techniques
.

TTh 11.3512.50 AKW 000

Andrew Sherman 
QR (0)

Practical introduction to parallel programming, emphasizing techniques and algorithms suitable for scientific and engineering computations. Aspects of processor and machine architecture. Techniques such as multithreading, message passing, and data parallel computing using graphics processing units. Performance measurement, tuning, and debugging of parallel programs. Parallel file systems and I/O.

After CPSC 223 and MATH 222 or 225, or equivalents.


CPSC
424b
, Parallel Programming Techniques
.

TTh 11.3512.50 AKW 000

Andrew Sherman 
QR (24)

Practical introduction to parallel programming, emphasizing techniques and algorithms suitable for scientific and engineering computations. Aspects of processor and machine architecture. Techniques such as multithreading, message passing, and data parallel computing using graphics processing units. Performance measurement, tuning, and debugging of parallel programs. Parallel file systems and I/O.

After CPSC 223 and MATH 222 or 225, or equivalents. 

CPSC
424a
, Parallel Programming Techniques
.

TTh 11.3512.50 AKW 200

Andrew Sherman 
QR (24)

Practical introduction to parallel programming, emphasizing techniques and algorithms suitable for scientific and engineering computations. Aspects of processor and machine architecture. Techniques such as multithreading, message passing, and data parallel computing using graphics processing units. Performance measurement, tuning, and debugging of parallel programs. Parallel file systems and I/O.

After CPSC 223 and MATH 222 or 225, or equivalents. 

CPSC
424b
, Parallel Programming Techniques
.

WF 9.0010.15 AKW 200

Andrew Sherman 
QR (32)

Practical introduction to parallel programming, emphasizing techniques and algorithms suitable for scientific and engineering computations. Aspects of processor and machine architecture. Techniques such as multithreading, message passing, and data parallel computing using graphics processing units. Performance measurement, tuning, and debugging of parallel programs. Parallel file systems and I/O.

After CPSC 223 and MATH 222 or 225, or equivalents. 

CPSC
424b
, Parallel Programming Techniques
.

MW 9.0010.15

Andrew Sherman 
QR

Practical introduction to parallel programming, emphasizing techniques and algorithms suitable for scientific and engineering computations. Aspects of processor and machine architecture. Techniques such as multithreading, message passing, and data parallel computing using graphics processing units. Performance measurement, tuning, and debugging of parallel programs. Parallel file systems and I/O.

After CPSC 223 and MATH 222 or 225, or equivalents. 

CPSC
425b
, Theory of Distributed Systems
.

MWF 11.3512.25 AKW 200

James Aspnes 
QR (34)

Models of asynchronous distributed computing systems. Fundamental concepts of concurrency and synchronization, communication, reliability, topological and geometric constraints, time and space complexity, and distributed algorithms. After CPSC 323a and 365b.


CPSC
426a
, Building Decentralized Systems
.

MW 2.303.45 AKW 500

Bryan Ford 

Staff 
QR (37)

Challenges and techniques for building decentralized computing systems, in which many networked computers need to cooperate reliably despite failures and without assuming centralized management. Topics include decentralized storage systems, mobile and remote execution, hosting untrusted code, fault tolerance, naming, capabilities, information flow control, distributed shared memory, distributed hash tables, content distribution, and practical uses of cryptography. After CPSC 323a.


CPSC
426a
, Building Decentralized Systems
.

MW 2.303.45 AKW 200

Bryan Ford 
QR (37)

Challenges and techniques for building decentralized computing systems, in which many networked computers need to cooperate reliably despite failures and without assuming centralized management. Topics include decentralized storage systems, mobile and remote execution, hosting untrusted code, fault tolerance, naming, capabilities, information flow control, distributed shared memory, distributed hash tables, content distribution, and practical uses of cryptography.

After CPSC 323. 

CPSC
426a
, Building Decentralized Systems
.

MW 1.002.15 AKW 200

Bryan Ford 
QR (36)

Challenges and techniques for building decentralized computing systems, in which many networked computers need to cooperate reliably despite failures and without assuming centralized management. Topics include decentralized storage systems, mobile and remote execution, hosting untrusted code, fault tolerance, naming, capabilities, information flow control, distributed shared memory, distributed hash tables, content distribution, and practical uses of cryptography.

After CPSC 323. 

CPSC
426a
, Building Decentralized Systems
.

MW 2.303.45 WTS A51

Bryan Ford 
QR (37)

Challenges and techniques for building decentralized computing systems, in which many networked computers need to cooperate reliably despite failures and without assuming centralized management. Topics include decentralized storage systems, mobile and remote execution, hosting untrusted code, fault tolerance, naming, capabilities, information flow control, distributed shared memory, distributed hash tables, content distribution, and practical uses of cryptography.

After CPSC 323. 

CPSC
426b
, Building Decentralized Systems
.

MW 1.002.15 AKW 000

Mahesh Balakrishnan 
QR (0)

Challenges and techniques for building decentralized computing systems, in which many networked computers need to cooperate reliably despite failures and without assuming centralized management. Topics include decentralized storage systems, mobile and remote execution, hosting untrusted code, fault tolerance, naming, capabilities, information flow control, distributed shared memory, distributed hash tables, content distribution, and practical uses of cryptography.

After CPSC 323. 

CPSC
426a
, Building Distributed Systems
.

MW 1.002.15 WTS A51

Mahesh Balakrishnan 
QR (0)

Ubiquitous services such as Google, Facebook, and Amazon run on the back of massive distributed systems. This course covers the fundamental principles, abstractions, and mechanisms that inform the design of such systems, as well as the practical details of realworld implementations. Technical topics covered include properties such as consistency, availability, durability, isolation, and failure atomicity; as well as protocols such as RPC, consensus, consistent hashing, and distributed transactions. The final project involves implementing a realworld distributed service. 
After CPSC 323. 

CPSC
427a
, ObjectOriented Programming
.

TTh 1.002.15 AKW 500

Michael Fischer, Yang Yang 
(0)

Objectoriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, namehiding, exceptions, polymorphic functions, and other features of C++. After CPSC 223b.


CPSC
427a
, ObjectOriented Programming
.

TTh 1.002.15 AKW 200

Michael Fischer 
QR (0)

Objectoriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, namehiding, exceptions, polymorphic functions, and other features of C++.

After CPSC 223b. 

CPSC
427a
, ObjectOriented Programming
.

TTh 2.303.45 BCT 102

Michael Fischer 
QR (0)

Objectoriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, namehiding, exceptions, polymorphic functions, and other features of C++.

After CPSC 223. 

CPSC
427a
, ObjectOriented Programming
.

TTh 2.303.45 HLH17 05

Michael Fischer 
QR (27)

Objectoriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, namehiding, exceptions, polymorphic functions, and other features of C++.

After CPSC 223. 

CPSC
427b
, ObjectOriented Programming
.

TTh 2.303.45 AKW 200

Michael Fischer 
QR (27)

Objectoriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, namehiding, exceptions, polymorphic functions, and other features of C++.

After CPSC 223. 

CPSC
427a
, ObjectOriented Programming
.

MW 4.005.15 AKW 200

Michael Fischer 
QR (37)

Objectoriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, namehiding, exceptions, polymorphic functions, and other features of C++.

After CPSC 223. 

CPSC
428b
, LanguageBased Security
.

TTh 2.303.45 AKW 500

Zhong Shao 
QR (0)

Basic design and implementation of languagebased approaches for increasing the security and reliability of systems software. Topics include proofcarrying code, certifying compilation, typed assembly languages, runtime checking and monitoring, highconfidence embedded systems and drivers, and language support for verification of safety and liveness properties.

After CPSC 202a, 323a, and MATH 222a or b, or equivalents. 

CPSC
428a
, LanguageBased Security
.

TTh 2.303.45 AKW 000

Zhong Shao 
QR (0)

Basic design and implementation of languagebased approaches for increasing the security and reliability of systems software. Topics include proofcarrying code, certifying compilation, typed assembly languages, runtime checking and monitoring, highconfidence embedded systems and drivers, and language support for verification of safety and liveness properties. 
After CPSC 202, 323, and MATH 222, or equivalents. 

CPSC
430a
, Formal Semantics
.

MW 1.002.15 AKW 307

Zhong Shao 
QR (0)

Introduction to formal approaches to programming language design and implementation. Topics include the lambdacalculus, type theory, denotational semantics, typedirected compilation, higherorder modules, and application of formal methods to systems software and Internet programming. After CPSC 202a and 323a.


CPSC
430a
, Formal Semantics
.

MW 1.002.15 AKW 400

Zhong Shao 
QR (0)

Introduction to formal approaches to programming language design and implementation. Topics include lambda calculus, type theory, denotational semantics, typedirected compilation, higherorder modules, and application of formal methods to systems software and Internet programming.

After CPSC 202 and 323. 

CPSC
430a
, Formal Semantics
.

MW 11.3512.50 AKW 000

Zhong Shao 
QR (0)

Introduction to formal approaches to programming language design and implementation. Topics include lambda calculus, type theory, denotational semantics, typedirected compilation, higherorder modules, and application of formal methods to systems software and Internet programming.

After CPSC 202 and 323. 

CPSC
431a
, Computer Music: Algorithmic and Heuristic Composition
.

MW 2.303.45 AKW 200

Paul Hudak 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on highlevel representations of music, algorithmic and heuristic composition, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202a and 223b. 

CPSC
431b
, Computer Music: Algorithmic and Heuristic Composition
.

MW 2.303.45 WLH 207

Paul Hudak 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on highlevel representations of music, algorithmic and heuristic composition, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202 and 223. 

CPSC
431b
, Computer Music: Algorithmic and Heuristic Composition
.

MW 2.303.45 AKW

Donya Quick 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on highlevel representations of music, algorithmic and heuristic composition, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202 and 223. 

CPSC
431a
, Computer Music: Algorithmic and Heuristic Composition
.

TTh 11.3512.50 AKW 200

Scott Petersen 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on highlevel representations of music, algorithmic and heuristic composition, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202 and 223. 

CPSC
432a
, Computer Music: Sound Representation and Synthesis
.

MW 2.303.45 AKW 200

Paul Hudak 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on lowlevel sound representation, acoustics and sound synthesis, scales and tuning systems, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language. Prerequisites: ability to read music; CPSC 202a and 223b.


CPSC
432b
, Computer Music: Sound Representation and Synthesis
.

MW 2.303.45 AKW 200

Paul Hudak 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on lowlevel sound representation, acoustics and sound synthesis, scales and tuning systems, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202 and 223. 

CPSC
432b
, Computer Music: Sound Representation and Synthesis
.

MW 2.303.45 WLH 207

Paul Hudak 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on lowlevel sound representation, acoustics and sound synthesis, scales and tuning systems, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202 and 223. 

CPSC
432b
, Computer Music: Sound Representation and Synthesis
.

WF 9.0010.15 AKW

Donya Quick 
QR (0)

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on lowlevel sound representation, acoustics and sound synthesis, scales and tuning systems, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202 and 223. 

CPSC
432b
, Computer Music: Sound Representation and Synthesis
.

WF 11.3512.50

Scott Petersen 
QR

Study of the theoretical and practical fundamentals of computergenerated music, with a focus on lowlevel sound representation, acoustics and sound synthesis, scales and tuning systems, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a highlevel programming language.

Ability to read music is assumed. After CPSC 202 and 223. 

CPSC
433a
, Computer Networks
.

MW 2.303.45 WLH 208

Yang Yang 
QR (0)
Permission of instructor required

An introduction to the design, implementation, analysis, and evaluation of computer networks and their protocols. Topics include layered network architectures, applications, transport, congestion, routing, data link protocols, local area networks, performance analysis, multimedia networking, network security, and network management. Emphasis on protocols used in the Internet. After CPSC 323a.


CPSC
433b
, Computer Networks
.

TTh 1.002.15 AKW 200

Yang Yang 
QR (0)

An introduction to the design, implementation, analysis, and evaluation of computer networks and their protocols. Topics include layered network architectures, applications, transport, congestion, routing, data link protocols, local area networks, performance analysis, multimedia networking, network security, and network management. Emphasis on protocols used in the Internet.

After CPSC 323. 

CPSC
433a
, Computer Networks
.

TTh 1.002.15 HLH17 111

Yang Yang 
QR (0)

An introduction to the design, implementation, analysis, and evaluation of computer networks and their protocols. Topics include layered network architectures, applications, transport, congestion, routing, data link protocols, local area networks, performance analysis, multimedia networking, network security, and network management. Emphasis on protocols used in the Internet.

After CPSC 323. 

CPSC
433b
, Computer Networks
.

MW 4.005.15 DL 220

Yang Yang 
QR (0)

An introduction to the design, implementation, analysis, and evaluation of computer networks and their protocols. Topics include layered network architectures, applications, transport, congestion, routing, data link protocols, local area networks, performance analysis, multimedia networking, network security, and network management. Emphasis on protocols used in the Internet.

After CPSC 323. 

CPSC
434b
, Mobile Computing and Wireless Networking
.

MW 2.303.45 AKW 500

Yang Yang 
QR (37)

Introduction to the principles of mobile computing and its enabling technologies. Topics include wireless systems; information management; locationindependent and locationdependent computing models; disconnected and weaklyconnected operation models; humancomputer interactions; mobile applications and services; security; power management; and sensor networks.

After CPSC 202a and 323a. 

CPSC
434a
, Mobile Computing and Wireless Networking
.

TTh 1.002.15 HLH17 115

Yang Yang 
QR (26)

Introduction to the principles of mobile computing and its enabling technologies. Topics include wireless systems; information management; locationindependent and locationdependent computing models; disconnected and weaklyconnected operation models; humancomputer interactions; mobile applications and services; security; power management; and sensor networks.

After CPSC 202 and 323. 

CPSC
434b
, Topics in Networked Systems
.

MW 4.005.15

Yang Yang 
QR
Permission of instructor required

Study of networked systems such as the Internet and mobile networks which provide the major infrastructure components of an informationbased society. Topics include the design principles, implementation, and practical evaluation of such systems in new settings, including cloud computing, softwaredefined networking, 5G, Internet of things, and vehicular networking. 
Concurrently with or after CPSC 323. 

CPSC
435b
, InternetScale Applications
.

TTh 1.002.15 AKW 200

Yang Yang, Michael Fischer 
(0)

An introduction to the design and implementation of Internetscale applications and services. Topics include serviceoriented software design; cloud computing paradigms; infrastructure scalability and reliability; adaptive, open clients; protocol specification; performance modeling; debugging and diagnosis; and deployment and licensing. After CPSC 323a.


CPSC
436a
, Networked Embedded Systems and Sensor Networks
.

TTh 11.3512.50 BCT 508

Andreas Savvides 
(24)
Permission of instructor required

Introduction to the fundamental concepts of networked embedded systems and wireless sensor networks, presenting a crossdisciplinary approach to the design and implementation of smart wireless embedded systems. Topics include embedded systems programming concepts, lowpower and poweraware design, radio technologies, communication protocols for ubiquitous computing systems, and mathematical foundations of sensor behavior. Laboratory work includes programming assignments on lowpower wireless devices. Open to seniors in Electrical Engineering or Computer Science only. Prerequisite: CPSC 223b or equivalent programming experience in a highlevel language.


CPSC
437a
, Introduction to Databases
.

TTh 2.303.45 AKW 200

Abraham Silberschatz 
QR (0)

Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Objectoriented databases. Database data structures: files, Btrees, hash indexes. After CPSC 202a and 223b.


CPSC
437b
, Introduction to Databases
.

TTh 1.002.15 AKW 200

Abraham Silberschatz 
QR (0)

Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Objectoriented databases. Database data structures: files, Btrees, hash indexes.

After CPSC 202a and 223b. 

CPSC
437a
, Introduction to Databases
.

MW 2.303.45 WLH 117

Abraham Silberschatz 
QR (0)

Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Objectoriented databases. Database data structures: files, Btrees, hash indexes.

After CPSC 202 and 223. 

CPSC
437b
, Introduction to Databases
.

TTh 2.303.45 WLH 208

Abraham Silberschatz 
QR (0)

Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Objectoriented databases. Database data structures: files, Btrees, hash indexes.

After CPSC 202 and 223. 

CPSC
437b
, Introduction to Databases
.

TTh 2.303.45 WLH 208

Abraham Silberschatz 
QR (0)

Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Objectoriented databases. Database data structures: files, Btrees, hash indexes.

After CPSC 202 and 223. 

CPSC
437a
, Introduction to Databases
.

TTh 9.0010.15 WLH 119

Abraham Silberschatz 
QR (0)

Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Objectoriented databases. Database data structures: files, Btrees, hash indexes. 
After CPSC 223. 

CPSC
437a
, Introduction to Databases
.

TTh 9.0010.15 WLH 119

Abraham Silberschatz 
QR (0)

Introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Objectoriented databases. Database data structures: files, Btrees, hash indexes. 
After CPSC 223. 

CPSC
438b
, Database System Implementation and Architectures
.

MW 2.303.45 AKW 500

Daniel Abadi 
QR (0)

A study of systems programming techniques, with a focus on database systems. In the first half of the term, students analyze the design of a traditional DBMS and build various components of a DBMS prototype, e.g., a catalogmanager, a buffermanager, and a query execution engine. In the second half, students examine nontraditional architectures such as parallel databases, data warehouses, stream databases, and Web databases. After or concurrently with CPSC 202a and 323a.


CPSC
438b
, Database System Implementation and Architectures
.

MW 2.303.45 AKW 000

Daniel Abadi 
QR (0)

A study of systems programming techniques, with a focus on database systems. In the first half of the term, students analyze the design of a traditional DBMS and build components of a DBMS prototype, e.g., a catalogmanager, a buffermanager, and a query execution engine. In the second half, students examine nontraditional architectures such as parallel databases, data warehouses, stream databases, and Web databases.

After or concurrently with CPSC 202 and 323. 

CPSC
438b
, Database System Implementation and Architectures
.

MW 11.3512.50 WLH 117

Daniel Abadi 
QR (0)

A study of systems programming techniques, with a focus on database systems. In the first half of the term, students analyze the design of a traditional DBMS and build components of a DBMS prototype, e.g., a catalogmanager, a buffermanager, and a query execution engine. In the second half, students examine nontraditional architectures such as parallel databases, data warehouses, stream databases, and Web databases.

After or concurrently with CPSC 202 and 323. 

CPSC
438b
, Database System Implementation and Architectures
.

MW 1.002.15 AKW 200

Daniel Abadi 
QR (0)

A study of systems programming techniques, with a focus on database systems. In the first half of the term, students analyze the design of a traditional DBMS and build components of a DBMS prototype, e.g., a catalogmanager, a buffermanager, and a query execution engine. In the second half, students examine nontraditional architectures such as parallel databases, data warehouses, stream databases, and Web databases.

After or concurrently with CPSC 202 and 323. 

CPSC
439b
, Software Engineering
.

MW 11.3512.50 DL 220

Ruzica Piskac 
QR (0)
Meets during reading period

Introduction to fundamental concepts in software engineering and to the development and maintenance of large, robust software systems. The process of collecting requirements and writing specifications; project planning and system design; methods for increasing software reliability, including delta debugging and automatic testcase generation; type systems, static analysis, and model checking. Students build software in teams.

After CPSC 323. 

CPSC
439b
, Software Engineering
.

MW 11.3512.50 WLH 208

Ruzica Piskac 
QR (0)
Meets during reading period

Introduction to fundamental concepts in software engineering and to the development and maintenance of large, robust software systems. The process of collecting requirements and writing specifications; project planning and system design; methods for increasing software reliability, including delta debugging and automatic testcase generation; type systems, static analysis, and model checking. Students build software in teams.

After CPSC 323. 

CPSC
439b
, Software Engineering
.

MW 11.3512.50 WLH 208

Ruzica Piskac 
QR (0)
Meets during reading period

Introduction to fundamental concepts in software engineering and to the development and maintenance of large, robust software systems. The process of collecting requirements and writing specifications; project planning and system design; methods for increasing software reliability, including delta debugging and automatic testcase generation; type systems, static analysis, and model checking. Students build software in teams.

After CPSC 323. 

CPSC
440b
, Numerical Computation
.

TTh 1.002.15 AKW 307

Vladimir Rokhlin 
QR (26)

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization. After CPSC 112a or b or an equivalent introductory programming course; MATH 120a or b; and MATH 222a or b or 225a or b or CPSC 202a.


CPSC
440b
, Numerical Computation
.

TTh 2.303.45 AKW 200

Vladimir Rokhlin 
QR (27)

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization.

After CPSC 112a or b or an equivalent introductory programming course; MATH 120a or b; and MATH 222a or b or 225a or b or CPSC 202a. 

CPSC
440b
, Numerical Computation
.

TTh 1.002.15 AKW 000

Vladimir Rokhlin 
QR (26)

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization.

After CPSC 112 or an equivalent introductory programming course; MATH 120; and MATH 222 or 225 or CPSC 202. 

CPSC
440b
, Numerical Computation
.

TTh 1.002.15 ML 211

Vladimir Rokhlin 
QR (26)

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization.

After CPSC 112 or an equivalent introductory programming course; MATH 120; and MATH 222 or 225 or CPSC 202. 

CPSC
440b
, Numerical Computation
.

TTh 1.002.15 WLH 208

Vladimir Rokhlin 
QR (26)

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization.

After CPSC 112 or an equivalent introductory programming course; MATH 120; and MATH 222 or 225 or CPSC 202. 

CPSC
440b
, Numerical Computation
.

TTh 1.002.15 WLH 208

Vladimir Rokhlin 
QR (26)

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization.

After CPSC 112 or an equivalent introductory programming course; MATH 120; and MATH 222 or 225 or CPSC 202. 

CPSC
440b
, Numerical Computation
.

TTh 2.303.45 WLH 119

Vladimir Rokhlin 
QR (27)

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization.

After CPSC 112 or an equivalent introductory programming course; MATH 120; and MATH 222 or 225 or CPSC 202. 

CPSC
440b
, Numerical Computation
.

TTh 2.303.45

Vladimir Rokhlin 
QR

Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization.

After CPSC 112 or an equivalent introductory programming course; MATH 120; and MATH 222 or 225 or CPSC 202. 

CPSC
445a
, Introduction to Data Mining
.

TTh 1.002.15 LOM 201

Vladimir Rokhlin 
QR (0)

A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data. After CPSC 202a, 223b, and MATH 222a or b, or equivalents.


CPSC
445a
, Introduction to Data Mining
.

MW 1.002.15 AKW 307

Vladimir Rokhlin 
QR (0)

A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data.

After CPSC 202a, 223b, and MATH 222a or b, or equivalents. 

CPSC
445a
, Introduction to Data Mining
.

MW 1.002.15 AKW 000

Vladimir Rokhlin 
QR (0)

A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data.

After CPSC 202, 223, and MATH 222, or equivalents. 

CPSC
445a
, Introduction to Data Mining
.

MW 1.002.15 HLH17 05

Vladimir Rokhlin 
QR (0)

A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data.

After CPSC 202, 223, and MATH 222, or equivalents. 

CPSC
445a
, Introduction to Data Mining
.

MW 1.002.15 AKW 000

Vladimir Rokhlin 
QR (0)

A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data.

After CPSC 202, 223, and MATH 222, or equivalents. 

CPSC
445a
, Introduction to Data Mining
.

MW 1.002.15 AKW 200

Vladimir Rokhlin 
QR (0)

A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data.

After CPSC 202, 223, and MATH 222, or equivalents. 

CPSC
445a
, Introduction to Data Mining
.

MW 1.002.15 AKW 200

Vladimir Rokhlin 
QR (0)

A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data.

After CPSC 202, 223, and MATH 222, or equivalents. 

CPSC
445a
, Introduction to Data Mining
.

TTh 1.002.15 GR109 ROSENFELD

Guy Wolf 
QR (0)

Study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data. 
After CPSC 202, 223, and MATH 222, or equivalents. 

CPSC
451b
, The User Interface
.

TTh 11.3512.50 WLH 116

David Gelernter 
(24)
Permission of instructor required

The user interface (UI) in the context of modern design, where tech has been a strong and consistent influence from the Bauhaus and U.S. industrial design of the 1920s and 1930s through the IBMEames design project of the 1950s to 1970s. The UI in the context of the windowsmenusmouse desktop, as developed by Alan Kay and Xerox in the 1970s and refined by Apple in the early 1980s. Students develop a detailed design and simple implementation for a UI. 
Prerequisite: CPSC 223 or equivalent. 

CPSC
451b
, The User Interface
.

TTh 11.3512.50

David Gelernter 
Permission of instructor required

The user interface (UI) in the context of modern design, where tech has been a strong and consistent influence from the Bauhaus and U.S. industrial design of the 1920s and 1930s through the IBMEames design project of the 1950s to 1970s. The UI in the context of the windowsmenusmouse desktop, as developed by Alan Kay and Xerox in the 1970s and refined by Apple in the early 1980s. Students develop a detailed design and simple implementation for a UI. 
Prerequisite: CPSC 223 or equivalent. 

CPSC
453a
, Computational Methods for Analysis and Modeling of Biological Data
.

T 9.0010.15 SHM I116; Th 9.0010.15 AKW 200

Smita Krishnaswamy 
(22)

Applications of machine learning methods in the analysis of highthroughput biological data with focus on genomic and proteomic data. Topics include methods for denoising data; nonlinear dimensionality reduction for visualization and progression analysis; unsupervised clustering; and information theoretic analysis of gene regulatory and signaling networks. 

CPSC
454a
, Software Analysis and Verification
.

TTh 1.002.15 AKW 000

Ruzica Piskac 
(26)
Meets during reading period

Introduction to concepts, tools, and techniques used in the formal verification of software. Stateofthe art tools used for program verification; detailed insights into algorithms and paradigms on which those tools are based, including model checking, abstract interpretation, decision procedures, and SMT solvers. 
After CPSC 202 and 323 or equivalents. 

CPSC
454a
, Software Analysis and Verification
.

MW 11.3512.50 AKW 200

Ruzica Piskac 
(34)
Meets during reading period

Introduction to concepts, tools, and techniques used in the formal verification of software. Stateofthe art tools used for program verification; detailed insights into algorithms and paradigms on which those tools are based, including model checking, abstract interpretation, decision procedures, and SMT solvers. 
After CPSC 202 and 323 or equivalents. 

CPSC
455a
, Economics and Computation
.

TTh 2.303.45 AKW 200

Joan Feigenbaum 
QR (0)

A mathematically rigorous investigation of the interplay of economic theory and computer science, with an emphasis on the relationship of incentivecompatibility and algorithmic efficiency. Particular attention to the formulation and solution of mechanismdesign problems that are relevant to data networking and Internetbased commerce.

After CPSC 365 or with permission of instructor. Familiarity with basic microeconomic theory is helpful but not required. 

CPSC
456b
, Wireless Communications
.

MW 9.0010.15 HLH17 220

Wenjun Hu 
(0)
Permission of instructor required

Fundamental theory of wireless communications and its application explored against the backdrop of everyday wireless technologies such as WiFi and cellular networks. Channel fading, MIMO communication, spacetime coding, opportunistic communication, OFDM and CDMA, and the evolution and improvement of technologies over time. Emphasis on the interplay between concepts and their implementation in real systems. 
Prerequisites: 1) Introductory courses in mathematics, engineering, or computer science covering basics of the following topics: Linux skills, Matlab programming, probability, linear algebra, and Fourier transform; 2) Or by permission of the instructor. The course material will be selfcontained as much as possible. The labs and homework assignments require Linux and MatLab skills and simple statistical and matrix analysis (using bulitin Matlab functions). There will be a couple of introductory labs to refresh Linux and matlab skills if needed. 

CPSC
457a
, Sensitive Information in a Wired World
.

TTh 1.002.15 AKW 400

Joan Feigenbaum 
QR (0)

Issues of ownership, control, privacy, and accuracy of the huge amount of sensitive information about people and organizations that is collected, stored, and used by today's ubiquitous information systems. Readings consist of research papers that explore both the power and the limitations of existing privacyenhancing technologies such as encryption and "trusted platforms."

After or concurrently with CPSC 365 and 467. 

CPSC
457a
, Sensitive Information in a Wired World
.

TTh 1.002.15 AKW 400

Joan Feigenbaum 
QR (0)
Permission of instructor required

Issues of ownership, control, privacy, and accuracy of the huge amount of sensitive information about people and organizations that is collected, stored, and used by today's ubiquitous information systems. Readings consist of research papers that explore both the power and the limitations of existing privacyenhancing technologies such as encryption and "trusted platforms."

After or concurrently with CPSC 365 and 467. 

CPSC
457b
, Sensitive Information in a Connected World
.

TTh 1.002.15 AKW 400

Michael Fischer 
QR (0)
Permission of instructor required

Issues of ownership, control, privacy, and accuracy of the huge amount of sensitive information about people and organizations that is collected, stored, and used by today's ubiquitous information systems. Readings consist of research papers that explore both the power and the limitations of existing privacyenhancing technologies such as encryption and "trusted platforms."

After or concurrently with CPSC 365 and 467. 

CPSC
457b
, Sensitive Information in a Connected World
.

TTh 11.3512.50 AKW 400

Ewa Syta 
QR (0)
Permission of instructor required

Issues of ownership, control, privacy, and accuracy of the huge amount of sensitive information about people and organizations that is collected, stored, and used by today's ubiquitous information systems. Readings consist of research papers that explore both the power and the limitations of existing privacyenhancing technologies such as encryption and "trusted platforms."

After or concurrently with CPSC 365 and 467. 

CPSC
458a
, Automated Decision Systems
.

MW 4.005.15 DL 220

Stephen Slade 
QR (0)

The spectrum of automated decision models and tools, with a focus on their costs and effectiveness. Examples from a variety of fields, including finance, risk management, robotics, medicine, and politics. 
After CPSC 223 or equivalents. 

CPSC
458a
, Automated Decision Systems
.

MW 4.005.15 DL 220

Stephen Slade 
QR (0)

The spectrum of automated decision models and tools, with a focus on their costs and effectiveness. Examples from a variety of fields, including finance, risk management, robotics, medicine, and politics. 
After CPSC 223 or equivalents. 

CPSC
462a
, Graphs and Networks
.

TTh 2.303.45 ML 211

Daniel Spielman 
QR (0)

A mathematical examination of graphs and their applications in the sciences. Families of graphs include social networks, smallworld graphs, Internet graphs, planar graphs, wellshaped meshes, powerlaw graphs, and classic random graphs. Phenomena include connectivity, clustering, communication, ranking, and iterative processes.

Prerequisites: linear algebra and discrete mathematics; a course in probability is recommended. 

CPSC
462a
, Graphs and Networks
.

TTh 2.303.45 DL 220

Daniel Spielman 
QR (0)
Permission of instructor required

A mathematical examination of graphs and their applications in the sciences. Families of graphs include social networks, smallworld graphs, Internet graphs, planar graphs, wellshaped meshes, powerlaw graphs, and classic random graphs. Phenomena include connectivity, clustering, communication, ranking, and iterative processes.

Prerequisites: linear algebra and discrete mathematics; a course in probability is recommended. 

CPSC
463b
, Machine Learning
.

MW 2.303.45 AKW 200

Dana Angluin 
QR (0)

Paradigms and algorithms for learning classification rules and more complex behaviors from examples and other kinds of data. Topics may include version spaces, decision trees, artificial neural networks, Bayesian networks, instancebased learning, genetic algorithms, reinforcement learning, inductive logic programming, the MDL principle, the PAC model, VC dimension, sample bounds, boosting, support vector machines, queries, grammatical inference, and transductive and inductive inference.

After CPSC 202a and 223b, or with permission of instructor. CPSC 365b is recommended. 

CPSC
465a
, Theory of Distributed Systems
.

MWF 11.3512.25 AKW 000

James Aspnes 
QR (34)

Models of asynchronous distributed computing systems. Fundamental concepts of concurrency and synchronization, communication, reliability, topological and geometric constraints, time and space complexity, and distributed algorithms.

After CPSC 323 and 365. 

CPSC
465b
, Theory of Distributed Systems
.

MW 11.3512.50 AKW 200

James Aspnes 
QR (34)

Models of asynchronous distributed computing systems. Fundamental concepts of concurrency and synchronization, communication, reliability, topological and geometric constraints, time and space complexity, and distributed algorithms.

After CPSC 323 and 365. 

CPSC
465b
, Theory of Distributed Systems
.

MW 2.303.45 AKW 200

James Aspnes 
QR (37)

Models of asynchronous distributed computing systems. Fundamental concepts of concurrency and synchronization, communication, reliability, topological and geometric constraints, time and space complexity, and distributed algorithms.

After CPSC 323 and 365. 

CPSC
467b
, Cryptography and Computer Security
.

MW 2.303.45 AKW 200

Michael Fischer 
QR (37)

A survey of such private and public key cryptographic techniques as DES, RSA, and zeroknowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems. Some programming may be required. After CPSC 202a and 223b.


CPSC
467b
, Cryptography and Computer Security
.

MW 1.002.15 AKW 400

Michael Fischer 
QR (36)

A survey of such private and public key cryptographic techniques as DES, RSA, and zeroknowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems.

Some programming may be required. After CPSC 202 and 223. 

CPSC
467b
, Cryptography and Computer Security
.

TTh 1.002.15 AKW 000

Michael Fischer 
QR (26)

A survey of such private and public key cryptographic techniques as DES, RSA, and zeroknowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems.

Some programming may be required. After CPSC 202 and 223. 

CPSC
467a
, Cryptography and Computer Security
.

MW 2.303.45 AKW 000

Michael Fischer 
QR (37)

A survey of such private and public key cryptographic techniques as DES, RSA, and zeroknowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems.

Some programming may be required. After CPSC 202 and 223. 

CPSC
467a
, Cryptography and Computer Security
.

MW 2.303.45 AKW 000

Michael Fischer 
QR (37)

A survey of such private and public key cryptographic techniques as DES, RSA, and zeroknowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems.

Some programming may be required. After CPSC 202 and 223. 

CPSC
467a
, Cryptography and Computer Security
.

MW 2.303.45 LORIA 351

Michael Fischer 
QR (37)

A survey of such private and public key cryptographic techniques as DES, RSA, and zeroknowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems.

Some programming may be required. After CPSC 202 and 223. 

CPSC
467a
, Cryptography and Computer Security
.

TTh 2.303.45 WLH 116

Mariana Raykova 
QR (27)

A survey of such private and public key cryptographic techniques as DES, RSA, and zeroknowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems.

Some programming may be required. After CPSC 202 and 223. 

CPSC
468a
, Computational Complexity
.

TTh 2.303.45 AKW 307

Joan Feigenbaum 
QR (0)

Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation. After CPSC 365b or with permission of instructor.


CPSC
468a
, Computational Complexity
.

TTh 1.002.15 AKW 500

Joan Feigenbaum 
QR (0)

Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation.

After CPSC 365b or with permission of instructor. 

CPSC
468a
, Computational Complexity
.

TTh 2.303.45 AKW 000

Joan Feigenbaum 
QR (0)

Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation.

After CPSC 365 or with permission of instructor. 

CPSC
468b
, Computational Complexity
.

TTh 2.303.45 AKW 000

Joan Feigenbaum 
QR (0)

Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation.

After CPSC 365 or with permission of instructor. 

CPSC
468b
, Computational Complexity
.

TTh 2.303.45 AKW 000

Joan Feigenbaum 
QR (0)

Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation.

After CPSC 365 or with permission of instructor. 

CPSC
468b
, Computational Complexity
.

MW 1.002.15

James Aspnes 
QR

Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation.

After CPSC 365 or with permission of instructor. 

CPSC
469b
, Randomized Algorithms
.

TTh 1.002.15 AKW 500

James Aspnes 
QR (26)

A study of randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms. Topics include an introduction to tools from probability theory, including some inequalities such as Chernoff bounds.

After CPSC 365b; a solid background in probability is desirable. 

CPSC
469b
, Randomized Algorithms
.

MW 11.3512.50 AKW 000

James Aspnes 
QR (34)

A study of randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms. Topics include an introduction to tools from probability theory, including some inequalities such as Chernoff bounds.

After CPSC 365; a solid background in probability is desirable. 

CPSC
469a
, Randomized Algorithms
.

MW 11.3512.50 DL 220

James Aspnes 
QR (34)

A study of randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms. Topics include an introduction to tools from probability theory, including some inequalities such as Chernoff bounds.

After CPSC 365; a solid background in probability is desirable. 

CPSC
469a
, Randomized Algorithms
.

MW 11.3512.50 WTS A53

James Aspnes 
QR (34)

A study of randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms. Topics include an introduction to tools from probability theory, including some inequalities such as Chernoff bounds.

After CPSC 365; a solid background in probability is desirable. 

CPSC
470a
, Artificial Intelligence
.

MWF 10.3011.20 AKW 200

Brian Scassellati 
QR (33)

Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning. After CPSC 201a or b and 202a.


CPSC
470a
, Artificial Intelligence
.

MWF 10.3011.20 ML 211

Brian Scassellati 
QR (33)

Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning.

After CPSC 201a or b and 202a. 

CPSC
470a
, Artificial Intelligence
.

MWF 10.3011.20 WLH 208

Drew McDermott 
QR (33)

Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning.

After CPSC 201 and 202. 

CPSC
470a
, Artificial Intelligence
.

MWF 10.3011.20 ML 211

Brian Scassellati 
QR (33)

Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning.

After CPSC 201 and 202. 

CPSC
470a
, Artificial Intelligence
.

MWF 10.3011.20 WLH 120

Drew McDermott 
QR (33)

Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning.

After CPSC 201 and 202. 

CPSC
470a
, Artificial Intelligence
.

MWF 9.2510.15 WLH 120

Drew McDermott 
QR (32)

Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning.

After CPSC 201 and 202. 

CPSC
470a
, Artificial Intelligence
.

MWF 9.2510.15 WLH 120

Drew McDermott 
QR (32)

Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning.

After CPSC 201 and 202. 

CPSC
471b
, Advanced Topics in Artificial Intelligence
.

MW 2.303.45 AKW 000

Drew McDermott 
WR (0)
Permission of instructor required

An indepth study of one area of artificial intelligence. Topics vary from year to year. The topic for 2012?2013 is artificial intelligence and philosophy of mind.

After CPSC 470 or with permission of instructor. 

CPSC
471b
, Advanced Topics in Artificial Intelligence
.

MW 2.303.45 AKW 400

Drew McDermott 
WR (0)
Permission of instructor required

An indepth study of one area of artificial intelligence. Topics vary from year to year. The topic for 2013?2014 is artificial intelligence and philosophy of mind.

After CPSC 470 or with permission of instructor. 

CPSC
472a
, Intelligent Robotics
.

MWF 10.3011.20 WLH 208

Brian Scassellati 
(33)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior.

After CPSC 201 and 202 or equivalents. May not be taken after CPSC 473. 

CPSC
472b
, Intelligent Robotics
.

MWF 10.3011.20 WLH 208

Brian Scassellati 
(33)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior.

After CPSC 201 and 202 or equivalents. May not be taken after CPSC 473. 

CPSC
472a
, Intelligent Robotics
.

MWF 10.3011.20 WLH 208

Katherine Tsui 
(33)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior.

After CPSC 201 and 202 or equivalents. May not be taken after CPSC 473. 

CPSC
472a
, Intelligent Robotics
.

MWF 10.3011.20 WLH 119

Brian Scassellati 
QR (33)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior.

After CPSC 201 and 202 or equivalents. May not be taken after CPSC 473. 

CPSC
473b
, Intelligent Robotics
.

MWF 10.3011.20 BCT CO31

Brian Scassellati 
QR (0)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior. After CPSC 202a and 223b.


CPSC
473b
, Intelligent Robotics
.

MWF 10.3011.20 BCT CO31

Brian Scassellati 
QR (0)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior.

After CPSC 202a; after or concurrently with CPSC 223b. 

CPSC
473b
, Intelligent Robotics
.

MWF 10.3011.20 BCT CO31

Brian Scassellati 
QR (0)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior.

After CPSC 202; after or concurrently with CPSC 223. 

CPSC
473b
, Intelligent Robotics
.

MWF 10.3011.20 AKW 000

Brian Scassellati 
QR (0)

Introduction to the construction of intelligent, autonomous systems. Sensorymotor coordination and taskbased perception. Implementation techniques for behavior selection and arbitration, including behaviorbased design, evolutionary design, dynamical systems, and hybrid deliberativereactive systems. Situated learning and adaptive behavior.

After CPSC 202; after or concurrently with CPSC 223. 

CPSC
473b
, Intelligent Robotics Laboratory
.

MWF 10.3011.20 AKW 400

Brian Scassellati 
(0)
Permission of instructor required

Students work in small teams to construct novel research projects using one of a variety of robot architectures. Project topics may include humanrobot interaction, adaptive intelligent behavior, active perception, humanoid robotics, and socially assistive robotics.

Enrollment limited to 20. After CPSC 472. 

CPSC
473b
, Intelligent Robotics Laboratory
.

MWF 10.3011.20 AKW 400

Brian Scassellati 
QR (0)
Permission of instructor required

Students work in small teams to construct novel research projects using one of a variety of robot architectures. Project topics may include humanrobot interaction, adaptive intelligent behavior, active perception, humanoid robotics, and socially assistive robotics.

Enrollment limited to 20. After CPSC 472. 

CPSC
473b
, Intelligent Robotics Laboratory
.

MWF 10.3011.20

Brian Scassellati 
QR
Permission of instructor required

Students work in small teams to construct novel research projects using one of a variety of robot architectures. Project topics may include humanrobot interaction, adaptive intelligent behavior, active perception, humanoid robotics, and socially assistive robotics.

Enrollment limited to 20. After CPSC 472. 

CPSC
475b
, Computational Vision and Biological Perception
.

MW 1.002.15 AKW 200

Steven Zucker 
Sc QR (36)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students. After MATH 120a or b and CPSC 112a or b, or with permission of instructor.


CPSC
475b
, Computational Vision and Biological Perception
.

MW 1.002.15 AKW 200

Steven Zucker 
Sc QR (36)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students.

After MATH 120a or b and CPSC 112a or b, or with permission of instructor. 

CPSC
475a
, Computational Vision and Biological Perception
.

MW 2.303.45 AKW 000

Steven Zucker 
Sc QR (37)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students.

After MATH 120 and CPSC 112, or with permission of instructor. 

CPSC
475a
, Computational Vision and Biological Perception
.

MW 2.303.45 BCT CO31

Steven Zucker 
Sc QR (37)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students.

After CPSC 112 and MATH 120, or with permission of instructor. 

CPSC
475a
, Computational Vision and Biological Perception
.

MW 2.303.45 ML 211

Steven Zucker 
Sc QR (37)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students.

After CPSC 112 and MATH 120, or with permission of instructor. 

CPSC
475a
, Computational Vision and Biological Perception
.

MW 2.303.45 DL 220

Steven Zucker 
Sc QR (37)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students.

After CPSC 112 and MATH 120, or with permission of instructor. 

CPSC
475a
, Computational Vision and Biological Perception
.

TTh 2.303.45 ML 211

Steven Zucker 
Sc QR (27)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students.

After CPSC 112 and MATH 120, or with permission of instructor. 

CPSC
475a
, Computational Vision and Biological Perception
.

MW 2.303.45 ML 211

Steven Zucker 
Sc QR (37)
Meets during reading period

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students. 
Prerequisite: CPSC 112 and MATH 120, or with permission of instructor. 

CPSC
476b
, Advanced Computational Vision
.

TTh 2.303.45 AKW 400

Steven Zucker 
Sc QR (27)

Advanced view of vision from a mathematical, computational, and neurophysiological perspective. Emphasis on differential geometry, machine learning, visual psychophysics, and advanced neurophysiology. Topics include perceptual organization, shading, color and texture analysis, and shape description and representation.

After CPSC 475. 

CPSC
476b
, Advanced Computational Vision
.

TTh 2.303.45 AKW 400

Steven Zucker 
Sc QR (27)

Advanced view of vision from a mathematical, computational, and neurophysiological perspective. Emphasis on differential geometry, machine learning, visual psychophysics, and advanced neurophysiology. Topics include perceptual organization, shading, color and texture analysis, and shape description and representation.

After CPSC 475. 

CPSC
476b
, Advanced Computational Vision
.

MW 2.303.45 HLH17 03

Steven Zucker 
Sc QR (37)

Advanced view of vision from a mathematical, computational, and neurophysiological perspective. Emphasis on differential geometry, machine learning, visual psychophysics, and advanced neurophysiology. Topics include perceptual organization, shading, color and texture analysis, and shape description and representation.

After CPSC 475. 

CPSC
477a
, Neural Networks for Computing
.

TTh 11.3512.50 AKW 307

Willard Miranker 
QR (24)

Artificial neural networks as a computational paradigm studied with application to problems in associative memory, learning, pattern recognition, perception, robotics, and other areas. Development of models for the dynamics of neurons and methods such as learning for designing neural networks. Concepts, designs, and methods compared and tested in software simulation. Brain and consciousness studies are optional topics. Programming and knowledge of linear algebra and calculus required.


CPSC
477b
, Natural Language Processing
.

TTh 1.002.15

Dragomir Radev 
QR

Linguistic, mathematical, and computational fundamentals of natural language processing (NLP). Topics include part of speech tagging, Hidden Markov models, syntax and parsing, lexical semantics, compositional semantics, machine translation, text classification, discourse, and dialogue processing. Additional topics such as sentiment analysis, text generation, and deep learning for NLP. 
Prerequisites: CPSC 202 and CPSC 223, or permission of instructor. 

CPSC
478b
, Computer Graphics
.

TTh 2.303.45 AKW 500

Julie Dorsey 
QR (0)

Introduction to the basic concepts of two and threedimensional computer graphics. Topics include affine and projective transformations, clipping and windowing, visual perception, scene modeling and animation, algorithms for visible surface determination, reflection models, illumination algorithms, and color theory. After CPSC 202a and 223b.


CPSC
478b
, Computer Graphics
.

MW 1.002.15 AKW 000

Holly Rushmeier 
QR (0)

Introduction to the basic concepts of two and threedimensional computer graphics. Topics include affine and projective transformations, clipping and windowing, visual perception, scene modeling and animation, algorithms for visible surface determination, reflection models, illumination algorithms, and color theory.

After CPSC 202 and 223. 

CPSC
478b
, Computer Graphics
.

MW 1.002.15 AKW 000

Julie Dorsey 
QR (0)

Introduction to the basic concepts of two and threedimensional computer graphics. Topics include affine and projective transformations, clipping and windowing, visual perception, scene modeling and animation, algorithms for visible surface determination, reflection models, illumination algorithms, and color theory.

After CPSC 202 and 223. 

CPSC
478a
, Computer Graphics
.

MW 1.002.15 AKW 000

Holly Rushmeier 
QR (0)

Introduction to the basic concepts of two and threedimensional computer graphics. Topics include affine and projective transformations, clipping and windowing, visual perception, scene modeling and animation, algorithms for visible surface determination, reflection models, illumination algorithms, and color theory.

After CPSC 202 and 223. 

CPSC
478b
, Computer Graphics
.

MW 9.0010.15

Holly Rushmeier 
QR

Introduction to the basic concepts of two and threedimensional computer graphics. Topics include affine and projective transformations, clipping and windowing, visual perception, scene modeling and animation, algorithms for visible surface determination, reflection models, illumination algorithms, and color theory.

After CPSC 202 and 223. 

CPSC
479a
, Advanced Topics in Computer Graphics
.

MW 1.002.15 DL 102

Holly Rushmeier 
QR (0)

An indepth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physicallybased fluids systems, and character animation. After CPSC 202a and 223b.


CPSC
479a
, Advanced Topics in Computer Graphics
.

TTh 2.303.45 AKW 500

Julie Dorsey 
QR (0)

An indepth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physicallybased fluids systems, and character animation.

After CPSC 202a and 223b. 

CPSC
479a
, Advanced Topics in Computer Graphics
.

TTh 1.002.15 AKW 307

Julie Dorsey 
QR (0)

An indepth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physicallybased fluids systems, and character animation.

After CPSC 202 and 223. 

CPSC
479b
, Advanced Topics in Computer Graphics
.

MW 1.002.15 AKW 000

Holly Rushmeier 
QR (0)

An indepth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physicallybased fluids systems, and character animation.

After CPSC 202 and 223. 

CPSC
479b
, Advanced Topics in Computer Graphics
.

T 9.2511.15 LUCE 203

Julie Dorsey 
QR (0)
Permission of instructor required

An indepth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physicallybased fluids systems, and character animation.

After CPSC 202 and 223. 

CPSC
480a
, Directed Reading
.

1 HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies. May be taken more than once for credit.


CPSC
480b
, Directed Reading
.

1 HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies. May be taken more than once for credit.


CPSC
480a
, Directed Reading
.


Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480b
, Directed Reading
.

1 HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480a
, Directed Reading
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480b
, Directed Reading
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480a
, Directed Reading
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480b
, Directed Reading
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480a
, Directed Reading
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480b
, Directed Reading
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480a
, Directed Reading
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480b
, Directed Reading
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480a
, Directed Reading
.

1 HTBA

Zhong Shao 
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480b
, Directed Reading
.

1 HTBA

James Aspnes 
(50)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480a
, Directed Reading
.

1 HTBA

James Aspnes 
(50)
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
480b
, Directed Reading
.

1 HTBA

James Aspnes 
Permission of instructor required

Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty adviser and the director of undergraduate studies.

May be taken more than once for credit. 

CPSC
490a
, Special Projects
.

1 HTBA

Dana Angluin 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. May be taken more than once for credit.


CPSC
490b
, Special Projects
.

1 HTBA

Dana Angluin 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. May be taken more than once for credit.


CPSC
490a
, Special Projects
.

3 HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490b
, Special Projects
.


Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490a
, Special Projects
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490b
, Special Projects
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490a
, Special Projects
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490b
, Special Projects
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490a
, Special Projects
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490b
, Special Projects
.

HTBA

Stanley Eisenstat 
(0)
Permission of instructor required

Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project.

May be taken more than once for credit. 

CPSC
490a
, Special Projects
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research intended to fulfill the senior requirement. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. 

CPSC
490b
, Special Projects
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research intended to fulfill the senior requirement. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. 

CPSC
490a
, Special Projects
.

1 HTBA

Zhong Shao 
(0)
Permission of instructor required

Individual research intended to fulfill the senior requirement. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. 

CPSC
490b
, Special Projects
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research intended to fulfill the senior requirement. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. 

CPSC
490a
, Special Projects
.

1 HTBA

James Aspnes 
(0)
Permission of instructor required

Individual research intended to fulfill the senior requirement. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. 

CPSC
490b
, Special Projects
.

1 HTBA

James Aspnes 
Permission of instructor required

Individual research intended to fulfill the senior requirement. Requires a faculty supervisor and the permission of the director of undergraduate studies. The student must submit a written report about the results of the project. 