Computer Science (B.A. or B.S.)
Postgraduate
In New Haven (USA)
Description
-
Type
Postgraduate
-
Location
New haven (USA)
The Department of Computer Science offers both B.S. and B.A. degree programs, as well as four combined majors in cooperation with other departments: Electrical Engineering and Computer Science, Computer Science and Economics, Computer Science and Mathematics, and Computer Science and Psychology. Each major program not only provides a solid technical education but also allows students either to take a broad range of courses in other disciplines or to complete the requirements of a second major.
Facilities
Location
Start date
Start date
About this course
The B.S. and the B.A. degree programs have the same required five core courses: CPSC 201; CPSC 202 or MATH 244; CPSC 223; CPSC 323; and CPSC 365 or 366. CPSC 480 and 490 may not be counted toward these core courses.
Reviews
Subjects
- Computational
- Humanities
- Music
- Network Training
- Programming
- Communication Training
- Engineering
- Technology
- Systems
- Law
- Web
- Driving
- Design
- Algorithms
- Network
- Computing
- Credit
- Problem Solving
- Staff
- IT Law
Course programme
Introductory Courses
* CPSC 035b / MUSI 035b, Twenty-First Century Electronic and Computer Music Techniques Scott Petersen
Exploration of twenty-first century electronic and computer music through the diverse subjects and issues at the intersection of technology and new music. How computers have changed and challenged the analysis, composition, production, and appreciation of music over the last fifty years. Knowledge of basic music theory and the ability to read Western musical notation is assumed. Enrollment limited to first-year students. Preregistration required; see under First-Year Seminar Program.
HTBA
CPSC 100a / CPSC S100, Introduction to Computing and Programming Benedict Brown
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 real-world domains of biology, cryptography, finance, forensics, and gaming. See CS50's website, for additional information. No previous programming experience required. Open to students of all levels and majors. QR
HTBA
CPSC 112b, Introduction to Programming Benedict Brown
Development on the computer of programming skills, problem-solving methods, and selected applications. No previous experience with computers necessary. QR
HTBA
* CPSC 150a, Computer Science and the Modern Intellectual Agenda David Gelernter
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. WR, HU
HTBA
CPSC 183a, Law, Technology, and Culture Brad Rosen
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. SO
HTBA
* CPSC 185b, Control, Privacy, and Technology Brad Rosen
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. WR, SO
HTBA
CPSC 200b, Introduction to Information Systems Staff
The real-world 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. QR
HTBA
CPSC 201a or b, Introduction to Computer Science Staff
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 problem-solving methods. After CPSC 112 or equivalent. QR
HTBA
CPSC 202a, Mathematical Tools for Computer Science Dana Angluin
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. QR
HTBA
CPSC 223a or b, Data Structures and Programming Techniques Staff
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. QR RP
HTBA
CPSC 235b / EENG 245b, Self-Driving Cars: Theory and Practice Man-Ki Yoon
This course explores the theory and practice of building self-driving cars using advanced computing technologies. Topics include embedded system programming, sensor fusion, control theory, and introductory planning and navigation techniques using machine learning and computer vision. Students work in small teams to design and build miniaturized self-driving cars that autonomously navigate an indoor track that resembles real road environments. The final project involves driving competitions and project report/presentation of their work. Prerequisite: CPSC 112, 201, 223, or equivalent. Instructor’s permission is required to waive the prerequisites. Enrollment limited to 18. QR
HTBA
CPSC 257a, Information Security in the Real World Staff
Introduction to information security, the practice of protecting information from unauthorized actions, in the context of computer systems. Topics include current security-related 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. QR
HTBA
CPSC 276a, Introduction to Web Application for the Digital Humanities Benedict Brown
Introduction to applications of computer and data science in the humanities, including web technologies, visualization, and database design. Students work in teams to develop a variety of applications proposed by faculty and staff from the Digital Humanities Lab, the Institute for the Preservation of Cultural Heritage, and the Computer Science department. Meets with CPSC 376. Students may earn credit for CPSC 276 or 376; not both. Prerequisite: CPSC 110, CPSC 112, equivalent programming experience, or permission of the instructor. QR
HTBA
* CPSC 290a or b, Directed Research Staff
Individual research. Requires a faculty supervisor and the permission of the director of undergraduate studies. May be taken more than once for credit.
HTBA
CPSC 310b, Technology, Power, and Security: Political Challenges of the Computer Age Joan Feigenbaum
Twenty-first century societies are faced with both threats and opportunities that combine sophisticated computation with politics and international relations in critical ways. Examples include cyber warfare; cyber espionage; cyber crime; the role of social media in democratic self-governance, authoritarian control, and election "hacking"; cryptocurrencies; and mass surveillance. This course examines the political challenges wrought by massive increases in the power of computational and communication technologies and the potential for citizens and governments to harness those technologies to solve problems. It is co-taught by one faculty member in computer science and one in political science. Programming experience and some knowledge of basic computer science is required. Meets with CPSC 210/PLSC 369. Students may earn credit for CPSC 210/PLSC 369 or for CPSC 310; not for both. Prerequisite: CPSC 223 or the equivalent. QR, SO
HTBA
CPSC 323a or b, Introduction to Systems Programming and Computer Organization Staff
Machine architecture and computer organization, systems programming in a high-level language, issues in operating systems, software engineering, prototyping in scripting languages. After CPSC 223. QR RP
HTBA
CPSC 334a, Creative Embedded Systems Scott Petersen
Ubiquitous computing is creating new canvases and opportunities for creative ideas. This class explores the use of microprocessors, distributed sensor networks, IoT, and intermedia systems for the purposes of creative expression. The course is delivered in a mixed lecture and lab format that introduces the fundamental concepts and theory behind embedded systems as well as issues particular to their creative employment. The key objective of the course is for students to conceive of and implement creative uses of computation. To this end, skills to be obtained during the course are as follows: (1) appreciate the current efforts and motivation to push the limitations of computation for creative expression, both in new application and new foundational research; (2) weigh factors such as cost, power, processing, memory, I/O capabilities, and networking capabilities when choosing a set of embedded devices and sensors; (3) contextualize unfamiliar hardware and languages through examples, documentation, and familiar design pattern; and (4) manage communication between multiple languages, devices, and protocols. Additionally, at the end of the course students will have a portfolio of their work in the form of writing, code, video, audio, and physical artifacts. Prerequisite: CPSC 223 or equivalent or by permission of instructor. QR RP
HTBA
CPSC 338b / EENG 348b, Digital Systems Staff
Development of engineering skills through the design and analysis of digital logic components and circuits. Introduction to gate-level circuit design, beginning with single gates and building up to complex systems. Hands-on experience with circuit design using computer-aided design tools and programmable logic devices. Recommended preparation: EENG 201b. RP
MW 11:35am-12:50pm
CPSC 362a / AMTH 262a / S&DS 262a, Computational Tools for Data Science Roy Lederman
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 and optimization, as well as scalable computing for large datasets. Assignments will include implementation, data analysis and theory. Students require background in linear algebra, multivariable calculus, probability and programming. Prerequisites: 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; after S&DS 100-108 or S&DS 230 or S&DS 241 or S&DS 242. QR
HTBA
CPSC 365b / ECON 365b, Algorithms James Glenn
Paradigms for algorithmic problem solving: greedy algorithms, divide and conquer, dynamic programming, and network flow. NP completeness and approximation algorithms for NP-complete problems. Algorithms for problems from economics, scheduling, network design and navigation, geometry, biology, and optimization. Provides algorithmic background essential to further study of computer science. Either CPSC 365 or CPSC 366 may be taken for credit. Prerequisites: CPSC 202 and 223. QR
HTBA
* CPSC 366b / ECON 366b, Intensive Algorithms Yang Cai
Mathematically sophisticated treatment of the design and analysis of algorithms and the theory of NP completeness. Algorithmic paradigms including greedy algorithms, divide and conquer, dynamic programming, network flow, approximation algorithms, and randomized algorithms. Problems drawn from the social sciences, Data Science, Computer Science, and engineering. For students with a flair for proofs and problem solving. Either CPSC 365 or CPSC 366 may be taken for credit. Prerequisites: MATH 244 and CPSC 223. QR
HTBA
CPSC 367a / CPSC 467, Cryptography and Security Michael Fischer
An introduction to cryptography and information security. Cryptographic algorithms and their application to security of digital data are presented. Some topics include classical, symmetric, and public key cryptography; digital signatures; cryptographic hash functions; and pseudorandom number generation. Multiparty protocols such as zero-knowledge proofs, secret sharing, anonymous communication, and secure multiparty function evaluation are introduced. Practical applications of cryptography to secure network communication, secure password authentication, and blockchains are also covered. The emphasis is on cryptographic algorithms and protocols that can be useful in providing information security. Students interested in a more mathematical and rigorous approach to these topics should take CPSC 467 instead, or in addition to this course. This course may not be taken for credit after CPSC 467. Prerequisites: Some programming required. After CPSC 202 and 223. QR
HTBA
CPSC 376a, Advanced Web Application Development in the Digital Humanities Benedict Brown
Advanced applications of computer and data science in the humanities, including web technologies, visualization, and database design. Students work in teams to develop a variety of applications proposed by faculty and staff from the Digital Humanities Lab, the Institute for the Preservation of Cultural Heritage, and the Computer Science department. Meets with CPSC 376. Students may earn credit for CPSC 276 or 376; not both. Prerequisite: CPSC 223 or equivalent, or permission of the instructor. QR
HTBA
* CPSC 421b, Compilers and Interpreters Staff
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 language-design decisions on compiler construction. After CPSC 323. QR
HTBA
CPSC 423b, Principles of Operating Systems Abraham Silberschatz
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. QR
HTBA
CPSC 424b, Parallel Programming Techniques Staff
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. Prerequisite: CPSC 323, or CPSC 223 and significant experience with C/C++ programming in another science, social science or engineering discipline, or permission of instructor. QR RP
HTBA
[ CPSC 426, Building Distributed Systems ]
CPSC 427b, Object-Oriented Programming James Glenn
Object-oriented programming as a means to efficient, reliable, modular, reusable code. Use of classes, derivation, templates, name-hiding, exceptions, polymorphic functions, and other features of C++. After CPSC 223. QR
HTBA
CPSC 428b, Language-Based Security Zhong Shao
Basic design and implementation of language-based approaches for increasing the security and reliability of systems software. Topics include proof-carrying code, certifying compilation, typed assembly languages, runtime checking and monitoring, high-confidence embedded systems and drivers, and language support for verification of safety and liveness properties. After CPSC 202, 323, and MATH 222, or equivalents. QR
HTBA
[ CPSC 430, Formal Semantics ]
CPSC 431a / MUSI 428a, Computer Music: Algorithmic and Heuristic Composition Scott Petersen
Study of the theoretical and practical fundamentals of computer-generated music, with a focus on high-level representations of music, algorithmic and heuristic composition, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a high-level programming language. Ability to read music is assumed. After CPSC 202 and 223. QR
HTBA
CPSC 432b / MUSI 427b, Computer Music: Sound Representation and Synthesis Scott Petersen
Study of the theoretical and practical fundamentals of computer-generated music, with a focus on low-level 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 high-level programming language. Ability to read music is assumed. After CPSC 202 and 223. QR
HTBA
CPSC 433a, Computer Networks Yang Yang
Computer Science (B.A. or B.S.)