Computer Science

COS 126/EGR 126: Computer Science: An Interdisciplinary ApproachAn introduction to computer science in the context of scientific, engineering, and commercial applications. The goal of the course is to teach basic principles and practical issues, while at the same time preparing students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. Topics include: hardware and software systems; programming in Java; algorithms and data structures; fundamental principles of computation; and scientific computing, including simulation, optimization, and data analysis. Video lectures, one or two classes, two preceptorials.

COS 217: Introduction to Programming SystemsIntroduction to programing systems, including modular program design, testing, debugging and performance tuning, using system calls, programming style, and assembly language and machine languages.

COS 226: Algorithms and Data StructuresThis course surveys the most important algorithms and data structures in use on computers today. Particular emphasis is given to algorithms for sorting, searching, and string processing. Fundamental algorithms in a number of other areas are covered as well, including geometric algorithms, graph algorithms, and some numerical algorithms. The course will concentrate on developing implementations, understanding their performance characteristics, and estimating their potential effectiveness in applications.

ISC 233/CHM 233/COS 233/MOL 233/PHY 233: An Integrated, Quantitative Introduction to the Natural Sciences IIAn integrated, mathematically and computationally sophisticated introduction to physics and chemistry, drawing on examples from biological systems. This year long, four course sequence is a multidisciplinary course taught across multiple departments with the following faculty: T. Gregor, J. Shaevitz (PHY); O. Troyanskaya (COS); J. Akey (EEB); E. Wieschaus, M. Wuhr (MOL); B. Bratton, J. Gadd, A. Mayer, Q. Wang (LSI). Five hours of lecture, one threehour lab, one threehour precept, one required evening problem session.

ISC 234/CHM 234/COS 234/MOL 234/PHY 234: An Integrated, Quantitative Introduction to the Natural Sciences IIAn integrated, mathematically and computationally sophisticated introduction to physics and chemistry, drawing on examples from biological systems. This year long, four course sequence is a multidisciplinary course taught across multiple departments with the following faculty: T. Gregor, J. Shaevitz (PHY); O. Troyanskaya (COS); J. Akey (EEB); E. Wieschaus, M. Wuhr (MOL); B. Bratton, J. Gadd, A. Mayer, Q. Wang (LSI). Five hours of lecture, one threehour lab, one threehour precept, one required evening problem session.

TRA 301/COS 401/LIN 304: Introduction to Machine TranslationThis course will provide an indepth study of the Machine Translation paradigms (direct, transfer, statistical/example, interlingua and neural network) used in stateoftheart speechtospeech and textbased MT systems, from computational and linguistic perspectives. Techniques for processing human languages (morphological analysis, tagging, syntactic and semantic parsing, and language generation) will be discussed. Linguistic variation across languages and its impact on computational models will be presented. Projects will involve implementing speech/text translation components, identifying their limitations and suggesting improvements.

COS 302/SML 305: Mathematics for Numerical Computing and Machine LearningThis course provides a comprehensive and practical background for students interested in continuous mathematics for computer science. The goal is to prepare students for higherlevel subjects in artificial intelligence, machine learning, computer vision, natural language processing, graphics, and other topics that require numerical computation. This course is intended students who wish to pursue these more advanced topics, but who have not taken (or do not feel comfortable) with universitylevel multivariable calculus (e.g., MAT 201/203) and probability (e.g., ORF 245 or ORF 309). See "Other Information"

COS 320: Compiling TechniquesUnderstand the design and construction of compilers. Concepts include syntax analysis, semantics, code generation, and optimization. Translation of imperative languages (such as C), functional languages (such as ML), and objectoriented languages (such as Java) will be studied. Students will implement a complete compiler for a small language.

COS 324: Introduction to Machine LearningProvides a broad introduction to different machine learning paradigms and algorithms, providing a foundation for further study or independent work in machine learning, artificial intelligence, and data science. Topics include linear models for classification and regression, support vector machines, neural networks, clustering, principal components analysis, Markov decision processed, planning, and reinforcement learning.

COS 333: Advanced Programming TechniquesThis is a course about the practice of programming. Programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves & others. At the same time, they must be concerned with compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop these skills by working on their own code and in group projects.

COS 340: Reasoning about ComputationAn introduction to mathematical topics relevant to computer science. Combinatorics, probability and graph theory will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling. Students will be introduced to fundamental concepts in theoretical computer science, such as NPcompleteness and cryptography that arise from the world view of efficient computation.

COS 343: Algorithms for Computational BiologyThis course introduces algorithms for analyzing DNA, RNA, and protein, the three fundamental molecules in the cell. Students will learn algorithms on strings, trees, and graphs and their applications in: sequence comparison and alignment; molecular evolution and comparative genomics; DNA sequencing and assembly; recognition of genes and regulatory elements; and RNA structure and protein interaction networks. Students will also implement algorithms and apply them to biological data.

COS 375/ELE 375: Computer Architecture and OrganizationAn introduction to computer architecture and organization. Instruction set design; basic processor implementation techniques; performance measurement; caches and virtual memory; pipelined processor design; design tradeoffs among cost, performance, and complexity.

MAT 375/COS 342: Introduction to Graph TheoryThe fundamental theorems and algorithms of graph theory. Topics include: connectivity, matchings, graph coloring, planarity, the fourcolor theorem, extremal problems, network flows, and related algorithms.

COS 398: Junior Independent Work (B.S.E. candidates only)Provides an opportunity for a student to concentrate on a "stateoftheart" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. The final choice must be approved by the faculty advisor.

COS 423: Theory of AlgorithmsDesign and analysis of efficient data structures and algorithms. General techniques for building and analyzing algorithms. Introduction to NPcompleteness.

COS 426: Computer GraphicsThis course will study topics in computer graphics, covering methods in image processing, 3D modeling, rendering, and animation. The course is mainly project based and encourages handson programming experience.

COS 433/MAT 473: CryptographyAn introduction to the theory and practice of modern cryptography, with an emphasis on the fundamental ideas. Topics covered include private key and public key encryption schemes, digital signatures, pseudorandom generators and functions, chosen ciphertext security, and some advanced topics.

COS 445: Economics and ComputingComputation and other aspects of our lives are becoming increasingly intertwined. We will study topics on the cusp between economics and computation. The focus will be on the mathematical and computational tools involved in the interaction of economics and computation. Topics: games on networks, auctions, mechanism and market design, computational social choice. The aim of the course is: (1) to understand the gametheoretic issues behind systems involving computation such as online networks, (2) to learn how algorithms and algorithmic thinking can help with designing better decision and allocation mechanisms in an offline world.

COS 448/EGR 448: Innovating Across Technology, Business, and MarketplacesCourse teaches engineering students about issues tackled by leading Chief Technology Officers: the technical visionaries and/or managers who innovate at the boundaries of technology and business by understanding both deeply, and who are true partners to the CEO, not just implementers of business goals. Focus will be on thinking like a CTO (of a startup and a large company) from technology and business perspectives, and on software and Internetbased businesses. Industryleading guest speakers provide perspectives too.

COS 461: Computer NetworksThis course studies computer networks and protocols, the services built on top of them, and some topics relating to Internet policy. Topics include: packet switching, routing, congestion control, qualityofservice, network security, network measurement, network mgmt., and network applications. Students will learn:* Internet protocols used in Internet access networks, local area networks, widearea networks (see "other info.")

COS 485: Neural Networks: Theory and ApplicationsOrganization of synaptic connectivity as the basis of neural computation and learning. Multilayer perceptrons, convolutional networks, and recurrent networks. Backpropagation and Hebbian learning. Models of perception, language, memory, and neural development.

COS 488/MAT 474: Introduction to Analytic CombinatoricsAnalytic Combinatorics aims to enable precise quantitative predictions of the properties of large combinatorial structures. The theory has emerged over recent decades as essential both for the scientific analysis of algorithms in computer science and for the study of scientific models in many other disciplines. This course combines motivation for the study of the field with an introduction to underlying techniques, by covering as applications the analysis of numerous fundamental algorithms from computer science. The second half of the course introduces Analytic Combinatorics, starting from basic principles.

COS 498: Senior Independent Work (B.S.E. candidates only)Provides an opportunity for a student to concentrate on a "stateoftheart" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. The final choice must be approved by the faculty advisor.

COS 510: Programming LanguagesLogic and formal reasoning about software, treating programs and programming languages as mathematical objects about which precise claims can be made. Basic concepts and techniques such as operational semantics and axiomatic semantics for specifying programming languages; structure, definition and properties of type systems; invariants and assertions for specifying programs. Use of automated tools such as interactive proof assistants, model checkers, and/or satisfiabilitymodulotheories solvers.

COS 522/MAT 578: Computational ComplexityComputational complexity theory is a mathematical discipline that studies efficient computation. The course covers some of the truly beautiful ideas of modern complexity theory such as: approaches to the famous P vs NP question and why they are stuck; complexity classes and their relationship; circuit lower bounds; proof systems such as zero knowledge proofs, interactive proofs and probabilistically checkable proofs; hardness of approximation; derandomization and the hardness vs randomness paradigm; quantum computing.

COS 529: Advanced Computer VisionAdvanced topics in computer vision, with a focus on recent methods and current research. Topics include 3D vision, recognition, and the intersection of computer vision and other fields. Appropriate for students who have taken COS 429 or equivalent and would like further exposure to computer vision.

WWS 586F/COS 586: Topics in STEP: Technology Policy and LawThis course examines a range of infotech policy issues, including privacy, intellectual property, free speech, competition, regulation of broadcasting and telecommunications, crossborder and jurisdictional questions, broadband policy, spectrum policy, management of the Internet, computer security, education and workforce development, and research funding. Assignments consist of weekly reading, weekly writing assignments, and a final project. This course is suitable for students without any special technical background.

COS 590: Extramural Research InternshipOneterm full time research internship at a host institution to perform scholarly research directly relevant to a student's dissertation work. Research objectives are determined by the student's advisor in consultation with the outside host. Monthly progress reports and a final paper are required. Enrollment limited to postgenerals students. Students are permitted to enroll in this onesemester course at most twice. Participation is considered exceptional.

COS 598A: Advanced Topics in Computer Science: Advanced Topics in Complexity TheoryLocally Decodable Codes (LDCs) are special kinds of error correcting codes in which the receiver can decode a single bit of a message from a few queries to a corrupted encoding. In the past two decades LDCs (and their many variants, such as locally correctable/testable codes) have found many applications in theoretical computer science including in complexity theory, cryptography, privacy and data storage. The purpose of this course is to cover the fundamental results/constructions in this area and some of the (many) applications.

COS 598B: Advanced Topics in Computer Science: Advances in Automated ReasoningThis seminar explores recent research advances in automated reasoning that tackle logicbased problems beyond satisfiability  model counting, optimization modulo theories, and automated synthesis. We study recent papers that cover core techniques and their applications in reasoning about quantitative properties (e.g., in security, fairness, optimization for resources).

COS 598C: Advanced Topics in Computer Science: Deep Learning for Natural Language ProcessingThis course aims to cover cuttingedge deep learning techniques for natural language processing. The topics include question answering, information extraction, machine translation, summarization, semantic parsing/semantic role labeling, dialogue systems, discourse & coreference etc. We cover each topic in depth and discuss recent important papers on each topic, including background, approaches, evaluation, current limitations & promising future directions. Students are expected to routinely read and present research papers and complete a research project at the end.

COS 598D: Advanced Topics in Computer Science: Systems and Machine LearningIn this graduate seminar, we plan to read and discuss recent research papers in the intersection between systems and machine learning (ML). We plan to focus on two types of research papers: systems for ML and ML for systems. The first category includes papers about building efficient hardware (e.g. CPU, GPU, FPGA, ASICs) and software (parallel, distributed, secure, privacypreserving) systems for ML. The second category includes papers about how to use ML in systems software and hardware designs including new data structures and optimization methods.

COS 90: Topics in Machine LearningNo description available

COS 981: Junior Independent WorkNo Description Available