Go to Main Content

Brown University

 

HELP | EXIT

Catalog Entries

 

Spring 2016
Mar 28, 2024
Transparent Image
  Select the Course Number to get further detail on the course. Select the desired Schedule Type to find available classes for the course.

CSCI 0020 - The Digital World
Removes the mystery surrounding computers and the ever-growing digital world. Introduces a range of topics and many aspects of multimedia, along with explanations of the underlying digital technology and its relevance to our society. Other topics include artificial intelligence, IT security, ethics and the economics of computing as well as the effects of its pervasiveness in today’s world. Introductory programming and analytic skills are developed through HTML, Photoshop, Excel and Python assignments. CSCI 0020 is a good introduction to a wide range of CS topics that have broad relevance in our society. No prerequisites.
1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

Course Attributes:
Liberal Learning

CSCI 0040 - Introduction to Scientific Computing and Problem Solving
CSCI0040 provides an introduction to using computers to solve STEM (Science, Technology, Engineering and Mathematics) data analysis, visualization and simulation problems from engineering, neuroscience, biology, mathematics and finance.

Students will access and analyze a number of "real world" data sets while becoming fluent MATLAB programmers. Other tools utilized may include Excel, Wolframalpha and Python.

By course end, students should be able to use MATLAB to solve a large variety of scientific data analysis, visualization and simulation problems.

No prior programming experience is required (MATLAB is easy and fun to use).
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours
0.000 Lab hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting
All Sections for this Course

Computer Science Department

CSCI 0060 - Computers that Hear, See and maybe Read
Pending Approval.
1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 0080 - A First Byte of Computer Science
Introduces non-CS concentrators to the academic discipline of computer science, its thought processes, and its relevance to other fields and modern life more generally. The target audience is students who are interested in learning more about what computer science is about and the ideas it has to offer tomorrow's citizens and scholars. Topics include the basics of computation and programming, a taste of theoretical computer science and algorithms, and an introduction to codes and artificial intelligence. Although students will learn to read and understand short programs, the course will not teach or require advanced programming skills.
1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

Course Attributes:
Liberal Learning

CSCI 0081 - TA Apprenticeship: Full Credit
Being an undergraduate TA is a learning experience: one not only gets a deeper understanding of the course material, but gains management and social skills that are invaluable for one's future. Students taking this course must first be selected as an undergraduate TA for a Computer Science course, a course the student has taken and done well in. Students will work with the course's instructor on a variety of course-related topics, including preparation of material and development of assignments. Whether CSCI 0081 or its half-credit version (CSCI 0082) is taken is up to the professor of the course being TA'd. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 0082 - TA Apprenticeship: Half Credit
Being an undergraduate TA is a learning experience: one not only gets a deeper understanding of the course material, but gains management and social skills that are invaluable for one's future. Students taking this course must first be selected as an undergraduate TA for a Computer Science course, a course the student has taken and done well in. Students will work with the course's instructor on a variety of course-related topics, including preparation of material and development of assignments. Whether CSCI 0082 or its full-credit version (CSCI 0081) is taken is up to the professor of the course being TA'd. Instructor permission required.
0.500 Credit hours
0.500 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 0150 - Introduction to Object-Oriented Programming and Computer Science
Emphasizes object-oriented design and programming in Java, an effective modern technique for producing modular, reusable, internet-aware programs. Also introduces interactive computer graphics, user interface design and some fundamental data structures and algorithms. A sequence of successively more complex graphics programs, including Tetris, and culminating in a significant final project, helps provide a serious introduction to the field intended for both potential concentrators and those who may take only a single course. No prerequisites, no prior knowledge of programming required.
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours
0.000 Lab hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 0160 - Introduction to Algorithms and Data Structures
Introduces fundamental techniques for problem solving by computer that are relevant to most areas of computer science, both theoretical and applied. Algorithms and data structures for sorting, searching, graph problems, and geometric problems are covered. Programming assignments conform with the object-oriented methodology introduced in CSCI 0150. Prerequisite: CSCI 0150 or written permission.
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Discussion Section/Conference, Primary Meeting
All Sections for this Course

Computer Science Department

CSCI 0170 - Computer Science: An Integrated Introduction
CSCI0170/0180 is an introductory sequence that helps students begin to develop the skills, knowledge, and confidence to solve computational problems elegantly, correctly, efficiently, and with ease. The sequence is unique in teaching both the functional and imperative programming paradigms---the first through the languages Scheme and ML in CSCI0170; the second through Java in CSCI0180. The sequence requires no previous programming experience. Indeed, few high school students are exposed to functional programming; hence even students with previous programming experience often find this sequence an invaluable part of their education.

Although students are taught to use programming languages as tools, the goal of CSCI0170/0180 is not merely to teach programming. On the contrary, the goal is to convey to students that computer science is much more than programming! All of the following fundamental computer science techniques are integrated into the course material: algorithms, data structures, analysis, problem solving, abstract reasoning, and collaboration. Concrete examples are drawn from different subareas of computer science: in 0170, from arbitrary-precision arithmetic, natural language processing, databases, and strategic games; in 0180, from discrete-event simulation, data compression, and client/server architectures.

0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 0180 - Computer Science: An Integrated Introduction
A continuation of CSCI 0170. Students learn to program in Java while continuing to develop their algorithmic and analytic skills. Emphasis is placed on object-oriented design, imperative programming, and the implementation and use of data structures. Examples are drawn from such areas as databases, strategy games, web programming, graphical user interfaces, route finding, and data compression. Lab work done with the assistance of TAs. Prerequisite: CSCI 0170.
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours
0.000 Lab hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 0190 - Accelerated Introduction to Computer Science
This is a one-semester introduction to computer science covering core data structures, algorithms, and analysis techniques similar to those of the two-course introductory sequences (CSCI 0150-0160 and CSCI 0170-0180), integrated with programming. Students who wish to take CSCI 0190 must begin in CSCI 0170 and complete additional work in that course. CSCI 0190 will branch off from CSCI 0170 after a month. Whether or not you come in with a computer science background, you can gently determine your level of ability and pick the course that is best for you. See http://cs.brown.edu/courses/csci0190/2015/AFQ.html for more information.
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours
0.000 Lab hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 0220 - Introduction to Discrete Structures and Probability
Seeks to place on solid foundations the most common structures of computer science, to illustrate proof techniques, to provide the background for an introductory course in computational theory, and to introduce basic concepts of probability theory. Introduces Boolean algebras, logic, set theory, elements of algebraic structures, graph theory, combinatorics, and probability. No prerequisites.
1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 0310 - Introduction to Computer Systems
Basic principles of computer organization. Begins with machine representation of data types and logic design, then explores architecture and operations of computer systems, including I/O, pipelining, and memory hierarchies. Uses assembly language as an intermediate abstraction to study introductory operating system and compiler concepts. Prerequisite: CSCI 0150 or CSCI 0180 or CSCI 0190.
1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 0320 - Introduction to Software Engineering
Advanced programming techniques including Java, threads, web-applications, user interfaces and XML. Covers software design including object-oriented design, systems design, web application design and user interface design. Software engineering including modeling, analysis, testing, debugger reuse, the software lifecycle, tools and project management. Prerequisite: CSCI 0160, CSCI 0180 or CSCI 0190. CSCI 0220 is recommended.
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 0330 - Introduction to Computer Systems
High-level computer architecture and systems programming. The course covers the organization of computer systems (in terms of storage units, caches, processors, and I/O controllers) and teaches students assembly-language programming and C-language programming. Extensive programming exercises introduce students to systems-level programming on Unix systems, as well as to multi-threaded programming with POSIX threads. Students will learn the basics of how computers work and will be introduced to the functions of operating systems. Prerequisite: CSCI 0150, 0180, or 0190.
1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 0510 - Models of Computation
The course introduces basic models of computation including languages, finite-state automata and Turing machines. Proves fundamental limits on computation (incomputability, the halting problem). Provides the tools to compare the hardness of computational problems (reductions). Introduces computational complexity classes (P, NP, PSPACE and others). Prerequisite: CSCI 0220 or 0450.
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 0530 - Directions: The Matrix in Computer Science
Introduces vectors, matrices and their role in computer science in three components: (1) concepts, theorems, and proofs, (2) procedures and programs, (3) applications and working with data. Weekly lab sessions where students apply concepts to a real task with real data. Example labs: transformations in 2-d graphics, error-correcting codes, image compression using wavelets, synthesizing a new perspective in a photo, face recognition, news story categorization, cancer diagnosis using machine learning, matching airplanes to destinations, Google's PageRank method. Other topics as time allows. Skills in programming and prior exposure to reading and writing mathematical proofs required.
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours
0.000 Lab hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 0931 - Introduction to Computation for the Humanities and Social Sciences
Introduces students to the use of computation for solving problems in the social sciences and the humanities. We will investigate a series of real-world problems taken from the news, from books such as Freakonomics, and from current research. Topics covered include data gathering, analysis, and visualization; web-based interfaces; algorithms; and scripting. Enrollment limited to 20. Instructor permission required.

Please go to https://docs.google.com/a/brown.edu/forms/d/1qiv9SC_KmB_yeP5SWbdYLciyJx_nCzz7bXb3-J9U-W4/viewform to be added to the waitlist. You must use your Brown login to access the waitlist; requests to give access to non-Brown addresses will be ignored.

1.000 Credit hours
1.000 Lecture hours

Levels: Extra Credit Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

Course Attributes:
Liberal Learning

CSCI 1230 - Introduction to Computer Graphics
Fundamental concepts in 2D and 3D computer graphics, e.g., 2D raster graphics techniques, simple image processing, and user interface design. Focuses on geometric transformations, and 3D modeling, viewing and rendering. A sequence of assignments in C++ culminates in a simple geometric modeler and ray tracer. Prerequisite: CSCI 0160, CSCI 0180, or CSCI 0190. Some knowledge of basic linear algebra is helpful but not required. Strong object-oriented programming ability (e.g., in C++, Java or Python) is required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1234 - Computer Graphics Lab
CSCI 1234 is a half-credit course intended to be taken concurrently with CSCI 1230 and provides students with a greater understanding of the material by having them extend each of 1230's assignments to greater depth.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1250 - Introduction to Computer Animation
Introduction to 3D computer animation production including story writing, production planning, modeling, shading, animation, lighting, and compositing. Students work independently to learn basic skills, then in groups to create a polished short animation. Emphasis is on in-class critique of ongoing work, which is essential for learning the cycle of evaluating work, determining improvements, and implementing them for further evaluation. Students should attend first class to receive instructor's written permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1260 - Compilers and Program Analysis
Lexical analysis, syntactic analysis, semantic analysis, code generation, code optimization, translator writing systems. Prerequisites: CSCI 0220 and 0320; 0510 is recommended.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1270 - Database Management Systems
Introduction to database structure, organization, languages, and implementation. Relational model, query languages, query processing, query optimization, normalization, file structures, concurrency control and recovery algorithms, and distributed databases. Coverage of modern applications such as the Web, but with emphasis on Database Management Systems internals. Prerequisites: CSCI 0160, CSCI 0180, or CSCI 0190. One of CSCI 0330 or CSCI 0320 is strongly recommended.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1280 - Intermediate 3D Computer Animation
Continues work begun in CSCI 1250 with deeper exploration of technical and artistic aspects of 3D computer animation including more sophisticated shading and lighting methods and character modeling, rigging, animation, and dynamics. After a series of individual exercises, students pursue an independent topic and then, working alone or in pairs, create a polished demonstration. Emphasis is on in-class critique of ongoing work. Prerequisite: CSCI 1250. Students may contact the instructor in December for permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1290 - Computational Photography
Describes the convergence of computer graphics and computer vision with photography. Its goal is to overcome the limitations of traditional photography using computational techniques to enhance the way we capture, manipulate, and interact with visual media. Topics covered: cameras, human visual perception, image processing and manipulation, image based lighting and rendering, high dynamic range, single view reconstruction, photo quality assessment, non photorealistic rendering, the use of Internet-scale data, and more. Students are encouraged to capture and process their own data. Prerequisites: previous programming experience, basic linear algebra, calculus, and probability; previous knowledge of computer graphics or computer vision. Strongly recommended: CSCI 1230, CSCI 1430, ENGN 1610.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1300 - Designing, Developing and Evaluating User Interfaces
Covers fundamental concepts in human-computer interaction that focus on designing user interfaces. Topics include understanding when to use different interfaces, modeling and representing user interaction, principles of user experience design, eliciting requirements and feedback from users, methods for designing and prototyping interfaces, and user interface evaluation. Classroom time will be spent on lectures and hands-on activities; students will complete assignments, design labs, and readings outside the classroom.

Students interested in learning the theoretical underpinnings of user interfaces, and the process behind designing, prototyping, and evaluating a user interface should take this course. You will see user interfaces everywhere differently after this course!
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours
0.000 Lab hours

Levels: Graduate, Undergraduate
Schedule Types: Lab, Primary Meeting

Computer Science Department

CSCI 1310 - Fundamentals of Computer Systems
Covers the fundamental concepts, principles, and abstractions that underlie the design and engineering of computer systems. Topics include computer systems organization, modularity, virtualization, communications, atomicity, fault tolerance, security, and performance. Combined lectures and presentation and discussion of case studies. Several hands-on labs and written assignments, as well as a semester-long project that is incrementally worked on throughout the semester. Prerequisites: CSCI 0160, 0180, or 0190, or permission of the instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1320 - Creating Modern Web Applications
This course covers all aspects of web application development, including the initial concept, user-centric design, development methodologies, front and back end development, databases, security, testing, load testing, accessibility, and deployment. There will be a substantial team project. The course is designed for students with a programming background (equiv CSCI 0320/CSCI 0330) who want to learn how to build web applications, and for students with a background in web design, including HTML and Javascript, who are interested in learning how to extend design techniques to incorporate the technologies needed in modern web applications. Project teams will consist of students with both backgrounds.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1340 - Innovating Game Development
What technologies will shape the next generation of videos? This project-centered course focuses on computational innovations for game development. Students examine innovative game technology through case studies of existing games and talks by industrial and academic game professionals. In teams, students propose and implement a project demonstrating a novel technology for gaming. Recommended: strong computational or engineering background.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1370 - Virtual Reality Design for Science
Explores the visual and human-computer interaction design process for scientific applications in Brown's immersive virtual reality Cave. Joint with RISD. Computer Science and design students learn how to work together effectively; study the process of design; learn about scientific problems; create designs applications; critique, evaluate, realize and iterate designs; and demonstrate final projects. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1380 - Distributed Computer Systems
Explores the fundamental principles and practice underlying networked information systems, first we cover basic distributed computing mechanisms (e.g., naming, replication, security, etc.) and enabling middleware technologies. We then discuss how these mechanisms and technologies fit together to realize distributed databases and file systems, web-based and mobile information systems. Prerequisite: CSCI 0320 or CSCI 0330.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1410 - Applied Artificial Intelligence
Practical approaches to designing intelligent systems. Topics include search and optimization, uncertainty, learning, and decision making. Application areas include natural language processing, machine vision, machine learning, and robotics. Prerequisites: CSCI 0160, CSCI 0180 or CSCI 0190; and either CSCI 0220 or one of CSCI 0450 or CSCI 1450.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1420 - Machine Learning
We explore the theory and practice of statistical machine learning, focusing on computational methods for supervised and unsupervised data analysis. Specific topics include Bayesian and maximum likelihood parameter estimation, regularization and sparsity-promoting priors, kernel methods, the expectation maximization algorithm, and models for data with temporal or hierarchical structure. Applications to regression, categorization, clustering, and dimensionality reduction problems are illustrated by examples from vision, language, bioinformatics, and information retrieval. Prerequisites: CSCI 0040 or 0150 or 0180 or 0190; and CSCI 0450 or CSCI 1450 or APMA 1650 or MATH 1610; and CSCI 0530 or MATH 0520 or 0540; or instructor permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1430 - Computer Vision
How can we program computers to understand the visual world? This course treats vision as inference from noisy and uncertain data and emphasizes probabilistic and statistical approaches. Topics may include perception of 3D scene structure from stereo, motion, and shading; segmentation and grouping; texture analysis; learning, object recognition; tracking and motion estimation. Strongly recommended: basic linear algebra, calculus, and probability.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1450 - Probability and Computing
Probability and statistics have become indispensable tools in computer science. Probabilistic methods and statistical reasoning play major roles in machine learning, cryptography, network security, communication protocols, web search engines, robotics, program verification, and more. This course introduces the basic concepts of probability and statistics, focusing on topics that are most useful in computer science applications. Topics include: modeling and solution in sample space, random variables, simple random processes and their probability distributions, Markov processes, limit theorems, and basic elements of statistical inference.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1460 - Computational Linguistics
Introduction to computational linguistics (also known as natural-language processing) including the related mathematics and several programming projects. Particular topics include: language modeling (as used in e.g., speech recognition, machine translation), machine translation, part-of-speech labeling, syntactic parsing, and pronoun resolution. Mathematical techniques include basic probability, noisy channel models, the EM (Expectation-Maximization) algorithm, hidden Markov models, probabilistic context-free grammars, and the forward-backward algorithm. Not open to first year students.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1480 - Building Intelligent Robots
How do robots function autonomously in dynamic, unpredictable environments? This course focuses on programming mobile robots, such as the iRobot Roomba, to perceive and act autonomously in real-world environments. The major paradigms for autonomous control and robot perception are examined and compared with robotic notions in science fiction. Prerequisite: CSCI 0150, CSCI 0170 or CSCI 0190. Recommended: CSCI 1410 or CSCI 1230.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1490 - Introduction to Combinatorial Optimization
This course covers the algorithmic aspects of optimizing decisions in fully observable, non-changing environments. Students are introduced to state-of-the-art optimization methods such as linear programming, integer programming, local search, and constraint programming. Strongly recommended: CSCI 0160, CSCI 0180 or CSCI 0190; CSCI 0510; and CSCI 0530 or MATH 0520 or MATH 0540.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1510 - Introduction to Cryptography and Computer Security
This course studies the tools for guaranteeing safe communication and computation in an adversarial setting. We develop notions of security and give provably secure constructions for such cryptographic objects as cryptosystems, signature schemes and pseudorandom generators. We also review the principles for secure system design. Prerequisites: CSCI 0220 and CSCI 0510.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1550 - Probability and Computing: Randomized Algorithms and Probabilistic Analysis
This course introduces students to applications of probabilistic and statistical methods to the design and analysis of algorithms, in particular randomized algorithms and probabilistic analysis of algorithms. The course covers basic probabilistic techniques such as tail bounds, martingales, coupling, etc., and presents applications of randomized and probabilistic analysis techniques in areas such as graph algorithms, data structures, communication, and Monte Carlo simulations. No prior knowledge of probability theory is assumed. CSCI 1570 recommended but not required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1570 - Design and Analysis of Algorithms
A single algorithmic improvement can have a greater impact on our ability to solve a problem than ten years of incremental improvements in CPU speed. We study techniques for designing and analyzing algorithms. Typical problem areas addressed include hashing, searching, dynamic programming, graph algorithms, network flow, and optimization algorithms including linear programming. Prerequisites: CSCI 0160, CSCI 0180, or CSCI 0190, and one of CSCI 0220 or CSCI 1450.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1580 - Information Retrieval and Web Search
Covers traditional material as well as recent advances in information retrieval (IR), the study of indexing, processing, and querying of textual data. The focus will be on newer techniques geared to hypertext documents available on the World Wide Web. Topics include efficient text indexing; Boolean and vector space retrieval models; evaluation and interface issues; Web crawling, link-based algorithms, and Web metadata; text/Web clustering, classification; text mining.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1590 - Introduction to Computational Complexity
Introduction to serial and parallel models of computation; time and space complexity classes on these models; the circuit model of computation and its relation to serial and parallel time complexity; space-time tradeoffs on serial computers; area-time tradeoffs on the VLSI computational model; interactive and probabilistically checkable proofs; the definition of NP in terms of probabilistically checkable proofs; hardness of approximations to solutions to NP-hard problems. Prerequisite: CSCI 0510.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1600 - Real-Time and Embedded Software
Comprehensive introduction to the design and implementation of software for programmable embedded computing systems, those enclosed in devices such as cellular phones, game consoles, and car engines. Includes the overall embedded real-time software design and development processes, as well as aspects of embedded hardware and real-time, small-footprint operating systems. Major project component. Prerequisites: CSCI 0320 or 0360.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1610 - Building High-Performance Servers
In depth study of modern server design. Considers architectures for building high-performance, robust, scalable, and secure network servers. We will consider all aspects of "mission-critical" servers. Topics include multithreaded and asynchronous programming techniques, database access, performance profiling, security, and redundancy. Teams will build significant projects. Prerequisite: CSCI 0320 or 0360. CSCI 1670 or 1680 is recommended.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1620 - Computer Systems Security Lab
CSCI 1620 is a half-credit laboratory course intended to be taken concurrently with CSCI 1660 and provides students with a deeper understanding of the material by doing additional assignments, which include extensions of the 1660's assignments. Instructor permission required.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1660 - Introduction to Computer Systems Security
This course teaches principles of computer security from an applied viewpoint and provides hands-on experience on security threats and countermeasures. Topics include code execution vulnerabilities (buffer overflow, sandboxing, mobile code), malware (trojans, viruses, and worms), access control (users, roles, policies), cryptosystems (hashing, signatures, certificates), network security (firewalls, TLS, intrusion detection, VPN), and human and social issues. Prerequisites: one of CSCI 0160 or CSCI 0180 or CSCI 0190; and CSCI 0330.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1670 - Operating Systems
Covers not just the principles of operating systems but the intricacies of how they work. Topics include multithreaded programming, managing threads and interrupts, managing storage, processor scheduling, operating-system structure, virtualization, security, and the design of file systems (both local and distributed). Extensive examples are taken from actual systems, including Linux and Windows. Students are expected to complete both problem sets and programming assignments (in C). Prerequisite: CSCI 0310 or 0330.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1680 - Computer Networks
Covers the technologies supporting the Internet, from Ethernet and WiFi through the routing protocols that govern the flow of traffic and the web technologies that are generating most of it. A major concern is understanding the protocols used on the Internet: what the issues are, how they work, their shortcomings, and what improvements are on the horizon. Prerequisite: CSCI 0330 or consent of instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1690 - Operating Systems Laboratory
Half-credit course intended to be taken with CSCI 1670. Students individually write a simple operating system in C. Serves to reinforce the concepts learned in 1670 and provides valuable experience in systems programming. Corequisite: CSCI 1670.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1729 - Programming Languages Lab
Half-credit course intended to be taken concurrently with CSCI 1730. Students individually implement a full programming language chosen by the course. Reinforces the concepts learned in CSCI 1730 and provides valuable experience in implementing programming languages. Corequisite: CSCI 1730
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1730 - Design and Implementation of Programming Languages
Explores the principles of modern programming languages by implementation. Examines linguistic features, especially control operators such as first-class functions, exceptions, and continuations. Studies data and their types, including polymorphism, type inference, and type soundness. Examines compiler and run-time system topics: continuation-passing style and garbage collection. Prerequisite: CSCI 0160, CSCI 0180 or CSCI 0190. Preferred: CSCI 0220, either CSCI 0320 or CSCI 0330, and CSCI 0510.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1760 - Multiprocessor Synchronization
This course examines the theory and practice of multiprocessor synchronization. Subjects covered include multiprocessor architecture, mutual exclusion, wait-free and lock-free synchronization, spin locks, monitors, load balancing, concurrent data structures, and transactional synchronization. Prerequisites: CSCI 0330
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1780 - Parallel and Distributed Programming
Covers the practical aspects involved in designing, writing, tuning, and debugging software designed to run on parallel and distributed systems. Topics might include client-server computation, threads, networks of workstations, message passing, shared memory, partitioning strategies, load balancing, algorithms, remote procedure call, and synchronization techniques. Prerequisites: CSCI 0220 and either 0320 or 0360; 0510 recommended.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1800 - Cybersecurity and International Relations
The global Internet shortens distances, makes businesses more efficient and facilitates greater social interaction. At the same time, it exposes vital national resources to exploitation and makes it easier for the international criminal element to prey on innocent Internet users. Cybersecurity is concerned with making the Internet a more secure and trustworthy environment. In this course we study this topic from the technological and policy points of view. The goal is to facilitate communication across the divide that normally characterizes the technological and policy communities. WRIT
0.000 OR 1.000 Credit hours
0.000 OR 1.000 Lecture hours
0.000 Lab hours

Levels: Graduate, Undergraduate
Schedule Types: Discussion Section/Conference, Primary Meeting

Computer Science Department

Course Attributes:
Liberal Learning, Writing - Designated Courses

CSCI 1810 - Computational Molecular Biology
High-throughput experimental approaches now allow molecular biologists to make large-scale measurements of DNA, RNA, and protein, the three fundamental molecules of the cell. The resulting datasets are often too large for manual analysis and demand computational techniques. This course introduces algorithms for sequence comparison and alignment; molecular evolution and phylogenetics; DNA/RNA sequencing and assembly; recognition of genes and regulatory elements; and RNA and protein structure. The course demonstrates how to model biological problems in terms of computer science.

Prerequisites: CSCI 0160, CSCI 0180 or CSCI 0190, or consent of instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1820 - Algorithmic Foundations of Computational Biology
The course is devoted to computational and statistical methods as well as software tools for DNA, RNA, and protein sequence analysis. The focus is on understanding the algorithmic and mathematical foundations of the methods, the design of associated genomics software tools, as well as on their applications. Topics include: sequence alignment, genome assembly, gene prediction, regulatory genomics, and SNP's variation. The course is open to computer and mathematical sciences students as well as biological and medical students.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1830 - Group Research Project
No description available.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Do not Schedule

Computer Science Department

CSCI 1840 - Group Research Project
No description available.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Do not Schedule

Computer Science Department

CSCI 1900 - csciStartup
In csciStartup, you will incorporate and run a startup. Apply as a team to be part of a prototype class to remove the mystery from starting a company and to focus entirely on a product you're passionate about. Teams will incorporate, build a product for real customers, advertise their product, and improve it week after week. We'll spend half our class meetings with individual attention to each group's progress and how to improve your offerings. Assignments will be designed to apply to any company, with enough flexibility to ensure you're always working on things that make sense for your business.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950 - Special Topics in Computer Science
First-semester course in various branches of computer science. Specific topics to be determined at the beginning of each semester.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Do not Schedule

Computer Science Department

CSCI 1950A - Computational Modeling and Algorithmic Thinking
In this course you will learn how to apply tools from statistics and computer science to build computational models of physical and biological systems. Example applications include modeling and then simulating the behavior of a collection of genes, the spread of disease in a population, a single neuron in isolation or the complex of neurons comprising the primate visual cortex.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950B - Computational Topology and Discrete Geometry
This course will investigate (through a mixture od lectures and student presentations of recent papers) topics in computational topology, including Morse theory and discrete differential geometry. Other possible topics are knot polyonmials, simplicial homology, and geometric probability theory. Some mathematical sophistication and programming skills required. No prerequisites.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950C - Advanced Programming for Digital Art & Literature
This workshop will explore advanced tools and techniques for the creation of innovative and expressive works of digital art. Lectures will address the application of best practices from the software design community to the context of artistic practice. In the first section of the course, students will exercise their aesthetic, conceptual, and technical skills on a set of 'mini-projects' exploring the analysis, generation and presentation of computationally-augmented literary texts. Assignments will include web-text mining, feature extraction, grammars, generative algorithms, and statistical techniques. During the second half of the course, students will focus on a larger work of their own design, participating in regular critiques throughout the development cycle. Though assignments will focus on digital literature, a wide range of artistic media will be explored, including sound, image, video, 3D and installation. Collaboration is encouraged. Instructor permission required. Enrollment limited to 18.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950H - Computational Topology
We will study various algorithmic problems that arise in the study of topological phenomena, such as winding number, turning number, knot polynomials, topology of covering spaces (especially Riemann surfaces), and discrete Morse theory. The mathematical topics will be briefly introduced before we move to computations, but some a priori mathematical sophistication will make the course more valuable to the student. Prerequisite: CSCI 0160, 0180, or 0190.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950J - Introduction to Computational Geometry
Geometric algorithms in two and three dimensions. Algorithmic and geometric fundamentals. Point location, convex hulls, proximity (Voronoi diagrams, Delaunay triangulations), intersections, the geometry of rectangles. Prerequisites: CSCI 0160, 0170, or 0190; and CSCI 0220.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950K - Innovating Game Development
A project-centered course focused on technological, paradigm, and design innovations for game development. As teams, students will propose and implement a project demonstrating a novel technology for gaming. Examines the current state and future of game development through a seminar of speakers active in game development and research. A strong computer science or engineering background is recommended.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950M - Advanced Practical Combinatorial Algorithms
We review recent as well as well-established advanced techniques in combinatorial optimization and constraint satisfaction. Students will study and individually present research papers and work on challenging software projects in small teams. Prerequisites: CSCI 0160, 0180, or 0190; and CSCI 0510; and CSCI 1490 or 2580, or instructor permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950N - 2D Game Engines
2D Game Engines covers core techniques used in the development of the software that drives computer games and other interactive software. Projects involve building different varieties of 2D game engines as well as games that require use of the features implemented in the engines. Topics include high-level engine design, vector and raster graphics, animation, collision detection, physics, content management, and game AI. Prerequisite: CSCI 0160, 0180, or 0190.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950Q - Programming for the Humanities and Social Sciences
A principled introduction to programming for students whose primary interest lies in the humanities and social sciences. Students will propose a substantial project related to their concentrations. They will learn sufficient programming skills to carry out the project, presenting it at the end of the course. The course is a continuation of CSCI 0931, "Introduction to Computation for the Humanities and Social Sciences." Prerequisite: CSCI 0931. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950R - Compiler Practice
This class covers the practice of compiler writing, including lexical analysis, parsing, semantic analysis, code generation, and code optimization. Students design and implement a full compiler modularly for a modern functional language using a modern intermediate representation and modular backend. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950T - Advanced Animation Production
Students will apply knowledge and skills gained in previous animation courses to produce a high quality short animated film as a group. Production will follow the industry standard pipeline that includes modeling, texturing, lighting, animating, rendering, and post production. Interested students will perform preproduction story and concept design prior to beginning of course. Prerequisite: CSCI 1250. Enrollment limited to 15. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950U - Topics in 3D Game Engine Development
Covers core techniques in 3D game development with an emphasis on engine architecture. Students independently develop their own engines using C++, OpenGL, and the Qt framework, then work in groups to create a polished game. Topics include: spatial subdivision, player representation, collision detection and response, game networking, GPUs, and OpenGL. Prerequisites: CSCI 1230 and one of CSCI 0320 or CSCI 1950N. Enrollment limited to 25.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950X - Software Foundations
Software Foundations will be a project-based course focusing on the challenges and techniques involved in proving non-trivial properties about real-world systems. We will base our exploration around formal development in a proof environment. Roughly half of the course will be a guided tutorial of proof techniques using one or more theorem provers; in the remainder, students will apply this knowledge to existing systems. No prior experience with theorem provers or proof assistants is necessary, but familiarity with and aptitude for functional programming will be a huge bonus. Prerequisite: CSCI 1730 or equivalent; mathematical maturity.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950Y - Logic for Systems
The course will focus on proving properties about systems and programs. We will study the distinction between programs and specifications, and check for whether the former obey the latter. We will work with tools that have extensive automation such as model constructors, model checkers, and proof assistants. Problems and projects will apply to real-world systems. Prerequisite: CSCI 0160, CSCI 0180, or CSCI 0190. Preferred but not required: CSCI 0220 and CSCI 0510, or instructor's permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1950Z - Computational Methods for Biology
This course will introduce algorithms from machine learning and combinatorial optimization with a focus on their application to biological data. Topics will include problems in phylogenetic inference, population genetics, and biological interaction networks.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1951A - Data Science
Mastering big data requires skills spanning a variety of disciplines: distributed systems over statistics, machine learning, and a deep understanding of a complex ecosystem of tools and platforms. Data Science refers to the intersection of these skills and how to transform data into actionable knowledge. This course provides an overview of techniques and tools involved and how they work together: SQL and NoSQL solutions for massive data management, basic algorithms for data mining and machine learning, information retrieval techniques, and visualization methods.

Prerequisites: CSCI 0160, CSCI 0180, or CSCI 0190. One of CSCI 0330 or CSCI 0320 strongly recommended.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1951B - Virtual Citizens or Subjects? The Global Battle Over Governing Your Internet
The Internet began as a U.S. government research project, progressed to an open network run by free-spirited geeks, and transitioned in the late 1990’s to a unique governance model in which nations, corporations, and civil society were supposed to all have a voice. Where are the real decisions being made? Who is making them? How can you and citizens of other nations influence these decisions? The global battle to run the Internet, brewing for years, has broken wide open with revelations of American spying on a massive scale.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1951C - Designing Humanity Centered Robots
Offered by Brown’s Computer Science department under the auspices of the Humanity Centered Robotics Initiative. It is focused on the iterative design process and how it can be used to develop robots for solving tasks that help people. It will expose students to a suite of fabrication and prototyping technologies sufficient for creating a functioning robotic system.

https://www.youtube.com/watch?v=Dbvis_j_b78

The course has two tracks, one intended for CS concentrators, and one intended for non-concentrators with previous design experience. The non-concentrator track cannot be used toward fulfilling a Computer Science concentration requirement.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1951F - Computers, Freedom and Privacy: Current Topics in Law and Policy
Who is the Big Brother that we most fear? NSA -- or is it Google and Facebook? Privacy is an intensely personal value that complicates efforts to define it. Increasingly broad surveillance and rapidly changing social mores have led many to argue that privacy is dead. New laws, institutions and organizations have been created to protect privacy. The EU has a comprehensive data protection regime. The United States has a growing list of statutory and regulatory privacy rules. This course will involve all aspects of privacy, including comparative models for privacy protection and discussions of current controversies and possible reforms. WRIT
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

Course Attributes:
Writing - Designated Courses

CSCI 1951G - Optimization Methods in Finance
Optimization plays an important role in financial decisions. Many computational finance problems ranging from asset allocation to risk management, from option pricing to model calibration can be solved efficiently using modern optimization techniques. This course discusses several classes of optimization problems (including linear, quadratic, integer, dynamic, stochastic, conic, and robust programming) encountered in financial models. For each problem class, after introducing the relevant theory and efficient solution methods, we discuss problems of mathematical finance that can be modeled within this problem class. Prerequisites: CSCI 1450 or APMA 1650, and CSCI 1570.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 1970 - Individual Independent Study
Independent study in various branches of Computer Science. Section numbers vary by instructor. Please check Banner for the correct section number and CRN to use when registering for this course.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Independent Study/Research

Computer Science Department

CSCI 1971 - Independent Study in 2D Game Engines
2D Game Engines covers core techniques used in the development 2D game engines. Projects involve building different varieties of 2D game engines as well as games that require use of the features implemented in the engines. Topics include high-level engine design, vector and raster graphics, animation, collision detection, physics, content management, and game AI. Prerequisite: CSCI 0160, 0180, or 0190.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Independent Study/Research

Computer Science Department

CSCI 1972 - Topics in 3D Game Engine Development
Covers core techniques in 3D game development with an emphasis on engine architecture. Students independently develop their own engines using C++, OpenGL, and the Qt framework, then work in groups to create a polished game. Topics include: spatial subdivision, player representation, collision detection and response, game networking, GPUs, and OpenGL. Prerequisite: CSCI 1230 and one of the following CSCI 0320, CSCI 0330, CSCI 1950N, OR CSCI 1971.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Independent Study/Research

Computer Science Department

CSCI 1973 - Independent Study: Introduction to Computer Systems

1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Independent Study/Research

Computer Science Department

CSCI 2240 - Interactive Computer Graphics
Important current topics in computer graphics. Course includes reading and discussing current research papers, multiple assignments and preliminary projects in which students implement recent papers, and a demanding final integrative project done in small groups. Prerequisite: Instructor's permission or both CSCI 0320 AND CSCI 1230.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2270 - Topics in Database Management
In-depth treatment of advanced issues in database management systems. Topics vary from year to year and may include distributed databases, mobile data management, data stream processing and web-based data management. Prerequisite: CSCI 1270.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2310 - Human Factors and User Interface Design
Covers current research issues involving the implementation, evaluation and design of user interfaces, while also providing a basic background in the fundamentals of user interface evaluation, programming, tools, and techniques. A possible topic is programming and designing device-independent interfaces. Previous topics have included the development of pervasive internet-based interfaces and software visualization. Prerequisite: Consent of instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2330 - Programming Environments
Programming tools; control and data integration; software understanding and debugging; environments for parallel and distributed programming; reverse engineering; configuration management and version control and debugging. Emphasis on current research areas. Prerequisite: consent of instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2340 - Software Engineering
Topics in the design, specification, construction and validation of programs. Focus will be on tools to support each of these stages. Course will pay special attention to the concerns raised by the properties of modern software systems including distribution, security, component-based decomposition and implicit control. Recommended: CSCI 1900 or other upper-level systems coursework.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2370 - Interdisciplinary Scientific Visualization
How to do research on using computer graphics, visualization, and interaction applied to scientific problems. Working in small multidisciplinary groups, students identify scientific problems, propose solutions involving computational modeling and visualization, design and implement the solutions, apply them to the problems, and evaluate their success. For 2014, immersive CAVE applications will be a focus, but other interaction or visualization projects are possibles. Prerequisites: all: programming experience; CS students: graphics experience; others: problem ideas. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2410 - Statistical Models in Natural-Language Understanding
Various topics in computer understanding of natural language, primarily from a statistical point of view. Topics include: hidden Markov models, word-tagging models, probabilistic context-free grammars, syntactic disambiguation, semantic word clustering, word-sense disambiguation, machine translation and lexical semantics. Prerequisite: CSCI 1410.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2430 - Topics in Machine Learning
Machine learning from the artificial intelligence perspective, with emphasis on empirical validation of learning algorithms. Different learning problems are considered, including concept learning, clustering, speed-up learning, and behavior learning. For each problem a variety of solutions are investigated, including those from symbolic AI, neural and genetic algorithms, and standard statistical methods. Prerequisite: CSCI 1410 or familiarity with basic logic and probability theory.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2440 - Game-Theoretic Artificial Intelligence
This course surveys recent developments in an emerging area known as game-theoretic artificial intelligence (AI), which incorporates fundamental principles of game theory into AI. Research in this area is motivated by game-theoretic applications, such as auction design and voting, as well as AI application areas, such as multiagent systems. Students will conduct theoretical, empirical, and experimental investigations, asking fundamental questions such as: can the behavior of computational learning agents converge to game-theoretic equilibria? Prerequisite: Consent of instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2450 - Exchange Scholar Program

0.000 Credit hours
0.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Graduate Thesis Prep

Computer Science Department

CSCI 2500 - Topics in Advanced Algorithms
Typically, an algorithm solves one problem, whereas a well-designed data structure can help implement algorithms for a wide variety of problems. We will study the design, analysis and implementation of advanced data structures. Focus is on data structures that are fast, both theoretically and empirically. Prerequisite: CSCI 1570 or the equivalent.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Do not Schedule

Computer Science Department

CSCI 2500A - Advanced Algorithms
Typically, an algorithm solves one problem, whereas a well-designed data structure can help implement algorithms for a wide variety of problems. We will study the design, analysis and implementation of advanced data structures. Focus is on data structures that are fast, both theoretically and empirically. Prerequisite: CSCI 1570 or the equivalent.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2500B - Optimization Algorithms for Planar Graphs
Planar graphs arise in applications such as road map navigation and logistics, graph drawing and image processing. We will study graph algorithms and data structures that exploit planarity. Our focus will be on recent research results in optimization. Prerequisite: CSCI 1570 or the equivalent.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2510 - Approximation Algorithms
Approximation Algorithms deal with NP-hard combinatorial optimization problems by efficiently constructing a suboptimal solution with some specified quality guarantees. We study techniques such as linear programming and semidefinite programming relaxations, and apply them to problems such as facility location, scheduling, bin packing, maximum satifiability or vertex cover. Prerequisite - one of the following: CSCI 1510, 1550, 1810, 1950J, 1950L, any graduate-level course on algorithms (including 2500A, 2500B, 2580).
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2520 - Computational Geometry
Algorithms and data structures for fundamental geometric problems in two and three dimensions. Topics include point location, range searching, convex hull, intersection, Voronoi diagrams, and graph drawing. Applications to computer graphics, circuit layout, information visualization, and computer-aided design are also discussed. Prerequisite: CSCI 1570 or instructor permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2530 - Design and Analysis of Communication Networks
A theory seminar focusing on algorithmic and combinatorial issues related to the design and analysis of communication networks for parallel and distributed systems. Topics include packet routing, circuit switching, distributed shared memory, fault tolerance, and more. Prerequisites: CSCI 1550, 1570, or equivalent.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2531 - Internet and Web Algorithms
This advanced graduate course/seminar focuses on the mathematical foundations of algorithms for handling large amounts of data over networks. We'll read and discuss recent papers in information retrieval, search engines, link analysis, probabilistic modeling of the web and social networks, and more. Recommended: CSCI 1550 and CSCI 1570, or equivalent courses.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2540 - Advanced Probabilistic Methods in Computer Science
Advanced topics in applications of probabilistic methods in design and analysis of algorithms, in particular to randomized algorithms and probabilistic analysis of algorithms. Topics include the Markov chains Monte Carlo method, martingales, entropy as a measure for information and randomness, and more. Prerequisite: CSCI 1550. Recommended but not required: CSCI 1570.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2550 - Parallel Computation: Models, Algorithms, Limits
The theoretical foundations of parallel algorithmics. Analysis of the most important models of parallel computation, such as directed-acyclic computation graphs, shared memory and networks, and standard data-exchange schemes (common address space and message-passing). Algorithmic techniques with numerous examples are cast mostly in the data-parallel framework. Finally, limitations to parallelizability (P-completeness) are analyzed. The content of the course is likely to change as technology evolves.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2560 - Advanced Complexity
Advanced topics in computational complexity, such as: the polynomial hierarchy, interactive proofs, pseudorandomness, derandomization, probabilistically checkable proofs.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2570 - Introduction to Nanocomputing
Nanoscale technologies employing materials whose smallest dimension is on the order of a few nanometers are expected to replace lithography in the design of chips. We give an introduction to computational nanotechnologies and explore problems presented by their stochastic nature. Nanotechnologies based on the use of DNA and semiconducting materials will be explored. Prerequisite: CSCI 0510.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2580 - Solving Hard Problems in Combinatorial Optimization: Theory and Systems
The theory of combinatorial optimization and how it is embodied in practical systems. Explores issues encountered in implementing such systems. Emphasizes the wide variety of techniques and methodologies available, including integer programming, local search, constraint programming, and approximation algorithms. Problems addressed may include: scheduling, coloring, traveling salesman tours, and resource allocation. Prerequisites: CSCI 0320 and basic knowledge of linear algebra.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2590 - Advanced Topics in Cryptography
Seminar-style course on advanced topics in cryptography. Example topics are zero-knowledge proofs, multi-party computation, extractors in cryptography, universal composability, anonymous credentials and ecash, interplay of cryptography and game theory. May be repeated for credit. Prerequisite: CSCI 1510 or permission of the instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2730 - Programming Language Theory
Theoretical models for the semantics of programming languages and the verification of programs. Topics will be drawn from operational semantics, denotational semantics, type theory and static analyses. Recommended prerequisite: CSCI 1730, CSCI 1950Y or instructor permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2750 - Topics in Parallel and Distributed Computing
CSCI 2750 is a graduate seminar that will consider an advanced topic (to be determined) in distributed computing. May be repeated for credit.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2820 - Medical Bioinformatics
Devoted to computational problems and methods in the emerging field of Medical Bioinformatics where genomics, computational biology and bioinformatics impact medical research. We will present challenging problems and solutions in three areas: Disease Associations, Protein Folding and Immunogenomics. This course is open to graduate students and advanced undergraduates with Computational or Life Science backgrounds. Prior background in Biology is not required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2890 - Comprehensive Examination Preparation
For graduate students who have met the tuition requirement and are paying the registration fee to continue active enrollment while preparing for a preliminary examination.
0.000 Credit hours
0.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Graduate Thesis Prep

Computer Science Department

CSCI 2950 - Special Topics in Computer Science
No description available.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Do not Schedule

Computer Science Department

CSCI 2950C - Topics in Computational Biology
This course will investigate active and emerging research areas in computational biology. Topics include cancer genomics; genome rearrangements and assembly; and protein and regulatory interaction networks. The course will be a mixture of lectures and student presentations of recent conference and journal papers.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950D - Sensor Data Management
Sensor networks combine sensing, computing, actuation, and communication in a single infrastructure that allows us to observe and respond to phenomena in the physical and cyber world. The sensors range from tiny "smart dusts" to dime-sized RFID tags and large-scale weather sensors. This course will cover the state-of-the art in designing and building sensor networks, focusing on issues that revolve around data and resource management. No prerequisites.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950E - Stochastic Optimization
This advanced graduate course/seminar will focus on optimization under uncertainty, or optimization problems where some of the constrains include random (stochastic) components. Most practical optimization problems are stochastic (subject to future market conditions, weather, faults, etc.), and there has been substantial research (both theoretical and experimental) in efficient solution for such problems. We'll read and discuss some of the recent works in this area.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950F - Implementing Web-Based Software Systems

1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950G - Large-Scale Networked Systems
Explores widely-distributed systems that take advantage of resources throughtout the Internet. The systems leverage their large size and geographic diversity to provide bandwidth scalability, rapid responses, fault-tolerance, high-availability and diverse data collection. Topics include overlay networks, peer-to-peer systems, content distribution networks, distributed file systems and wide-scale measurement systems.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950H - Advanced Cryptography

1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950I - Computational Models of the Neocortex
This course addresses the problem of modeling the perceptual neocortex using probabilistic graphical models, including Bayesian and Markov networks, and extensions to model time and change such as hidden Markov models and dynamic Bayesian networks. The emphasis is on problems of learning, inference, and attention. Sources include the literature in computational and cognitive neuroscience, machine learning, and other fields that bear on how biological and engineered systems make sense of the world. Prerequisites: basic probability theory, algorithms and statistics.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950J - Cognition, Human-Computer Interaction and Visual Analysis
In this graduate seminar we will learn about models of human cognition and perception, and explore potential implications of the models on how computers and humans can interact effectively when performing scientific analyses. Participants will be responsible for reading assigned materials, taking turns guiding discussions of the readings, and preparing a final paper and presentation. It is recommended that participants have some background in at least one of the areas of study.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950K - Special Topics in Computational Linguistics
Every year will cover a different topic in computational linguistics, from a statistical point of view, including parsing, machine translation, conference, summarization, etc. Prerequisites: CSCI 1460 or permission of the instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950M - Computer Science, Algorithms and Economics
Course investigates the interplay of economic theory and computer science. It is suitable for advanced senior undergraduates and for graduate students. We will study topics such as: algorithms for selfish routing; competitive combinatorial auctions; Multicast cost sharing and cooperative games; graphical models for games; and related topics. This course will be organized around the presentation of recent research papers. Prerequisite: CSCI 1570 or equivalent.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950N - Special Topics in Autonomous Robotics
No description available.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950O - Topics in Brain-Computer Interfaces
Introduces the mathematical and computational foundations of brain-computer interfaces. Statistical learning, Bayesian inference, dimensionality reduction, information theory, and other topics are presented in the context of brain interfaces based on neural implants and EEG recordings. Prerequisites: Basic knowledge of probability, statistics and linear algebra (e.g., CSCI 1550, APMA 1650, APMA 1690, or APMA 2640). Enrollment limited to 20 students.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950P - Special Topics in Machine Learning
This seminar course explores current research topics in statistical machine learning. Focus varies by year, and may include Bayesian nonparametrics; models for spatial, temporal, or structured data; and variational or Monte Carlo approximations. Course meetings combine lectures with presentation and discussion of classical and contemporary research papers. Students will apply some this material to a project, ideally drawn from their own research interests.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950Q - Topics in Computer Vision
This course will cover current topics in computer vision by focusing on a single real problem in computer vision. Recent courses have focused on forensic video analysis of an unsolved murder and three-dimensional object recognition for a mobile robot. Readings from the literature are integrated with group projects to solve problems beyond the state of the art. Strong mathematical skills (probability, linear algebra, calculus) and previous exposure to computer vision (e.g. CSCI 1430) are essential.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950R - Special Topics in Advanced Algorithms
We will study an advanced topic in the design and analysis of algorithms. Prerequisite: CSCI 1570 or the equivalent.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950S - Advanced Practical Combinatorial Algorithms
We review recent as well as well-established advanced techniques in combinatorial optimization and constraint satisfaction. Students will study and individually present research papers and work on challenging software projects in small teams. Prerequisites: CSCI 0160, 0180, or 0190; and CSCI 0510; and CSCI 1490 or 2580, or instructor permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950T - Topics in Distributed Databases and Systems
This course explores data and resource management issues that arise in the design, implementation, and deployment of distributed computing systems by covering the state of the art in research and industry. Typical topics include cloud computing and sensor networks. Strongly recommended: CSCI 0320, CSCI 1270, or CSCI 1951A.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950U - Special Topics on Networking and Distributed Systems
Explores current research topics in networking, distributed and operating systems. Specific topics may include wireless and sensor networking, Internet-scale distributed systems, cloud computing, as well as the core problems, concepts, and techniques underlying these systems. The course has two components: reading and discussion of current and classical research papers, and a research project related to the topic but ideally drawn from students' own research interests. This is a graduate-level course, undergrads can join with the consent of the instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950W - Online Algorithms
Decisions must often be made before the entire data is available. Online algorithms solve problems in which commitments must be made as the data is arriving. Choosing which items to evict from a cache before knowing future requests, which advertisers to consider for displaying ads alongside the result of a search, or which most representative data to store when computing statistics about a huge stream of information. We will discuss the worst-case model, which hinges against the worst possible future data, and some stochastic and game-theoretic models.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950X - Topics in Programming Languages and Systems
Examines contemporary research topics in software construction from the perspectives of programming languages, software engineering and computer-aided verification. The primary goals are to understand which theory applies to which problems and to convert that theory into tools. Topics include security, modularity, and new paradigms in software composition. Prerequisite: CSCI 1730 or written permission of the instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950Y - Theorem Proving
This course explores computer-assisted theorem proving with the Coq Proof Assistant. The course will teach students to formally specify software and model mathematical theories. We will then study techniques for mechanically proving theorems about these Coq. Prerequisites: CSCI 1730 or CSCI 0170 and permission of the instructor.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2950Z - Robot Learning and Autonomy
This seminar course will cover current research topics related to perceiving and acting in the real world. These topics will be pursued through independent reading, class discussion, and project implementations. Papers covered will be drawn from robotics, computer vision, animation, machine learning, and neuroscience. Special emphasis will be given to developing autonomous control from human performance. No prerequisites.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951A - Robots for Education
This seminar will explore the potential for robotics to engage future generations of scientists and engineers, with a particular focus on broadening participation in computing across society. Academic papers describing existing models, systems, courses, and evaluation for teaching robotics at undergraduate and secondary levels will be covered through students presentations. A group project will be conducted to find viable and accessible "off-the-shelf" technology solutions suited to teaching robotics without requiring a technical background. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951B - Data-Driven Vision and Graphics
Investigates current research topics in image-based graphics and vision. We will examine data sources, features, and algorithms for understanding and manipulating visual data. We will pay special attention to methods that use crowd-sourcing or Internet-derived data. Vision topics such as scene understanding and object detection will be linked to graphics applications such as photo editing and image-based rendering. These topics will be pursued through independent reading, class discussion and presentations, and a semester long research project. Strong mathematical skills and previous imaging (vision or computational photography) courses are essential.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951C - Autonomous Agents and Computational Market Design
An important area of research in artificial intelligence is how to effectively automate decision making in time-critical, information-rich environments. Electronic markets are a prime example of such environments. In this course students will create their own simulated electronic market as well as autonomous agents that trade in their market simulation. Application domains will include supply chain management, the Dutch flower auctions, and ad auctions, such as those run by Google and Facebook. Enrollment limited to 40 graduate students.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951E - Topics in Computer Systems Security
This course explores advanced topics and highlights current research in computer security from a systems perspective. Topics include vulnerabilities and defenses for automotive, computing, medical, and industrial control devices, intrusion detection, botnets, secure network protocols, web spam, tracking of web users, JavaScript sandboxing, attacks and defenses for web applications, and security and privacy issues in cloud computing. Research papers and industry reports will be presented and discussed. Also, hands-on experiments and system demonstrations will be performed. CSCI 1660 or equivalent background is essential. Enrollment limited to 12. Instructor permission required.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951F - Learning and Sequential Decision Making
The course explores automated decision making from a computer-science perspective. It examines efficient algorithms, where they exist, for single agent and multiagent planning as well as approaches to learning near-optimal decisions from experience. Topics will include Markov decision processes, stochastic and repeated games, partially observable Markov decision processes, and reinforcement learning. Of particular interest will be issues of generalization, exploration, and representation. Each student will be expected to present a published research paper and will participate in a group programming project. Prerequisite: a graduate-level computer science course and some exposure to reinforcement learning from a previous computer-science class or seminar.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951K - Topics in Grounded Language for Robotics
Practical approaches to designing intelligent systems. Topics include search and optimization, uncertainty, learning, and decision making. Application areas include natural language processing, machine vision, machine learning, and robotics. Prerequisite: CSCI 1420, 1460, 1480, or 1950F; or instructor permission.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951M - Advanced Algorithms Seminar
Students in this course will read, present, and discuss recent breakthrough papers on the topic of algorithms, and the related areas needed to analyze algorithms. This course is aimed at current and potential future graduate students who want to gain technical depth and perspective on the field of algorithms. Suggested prerequisites: CSCI 1570 and mathematical maturity
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951N - Advanced Algorithms in Computational Biology
This is a full-lecture, graduate course on algorithms and biomedical applications. The Foundations lectures are an introduction to the biological and medical genomics application areas. Each Algorithm section is devoted to an algorithmic method presented in rigorous depth, followed by an important open problem in the application area, together with the current most effective algorithmic solutions to the problem. Graduate students and advanced undergraduates in computational and mathematical sciences and engineering are welcome. Biological, life sciences and medical students and faculty are welcome as well and will be able to participate more in the applications areas.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951R - Personal Informatics Seminar
Data science for data about you. This seminar covers personal informatics, the collection of data from daily activities for reflection and self-experimentation. We will cover methods for knowing more about yourself through using technology to track different types of data (location, sleep, health/wellness, social, activity, time spent) and how to interpret them, and run controlled experiments on yourself. These topics will be pursued through readings, exercises, class discussion, and a self-tracking and experimentation project. Students should already be comfortable working programmatically with data. The seminar will have limited enrollment. See http://cs.brown.edu/courses/csci2951-r/ for details, and fill out http://goo.gl/forms/3pejazvbo6 to apply.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951S - Distributed Computing through Combinatorial Topology
Although computer science itself is based on discrete mathematics, combinatorial topology and its applications may still be unfamiliar to many computer scientists. For this reason, this course provides a self-contained, elementary introduction to the concepts from combinatorial topology needed to analyze distributed computing. Conversely, while the systems and models used here are standard in computer science, they may be unfamiliar to students with a background in pure or applied mathematics. For this reason, this course also provides a self-contained, elementary description of standard notions of distributed computing. CSCI 0220 required, CSCI 1760 recommended
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951T - Data-Driven Computer Vision
Investigates current research topics in data-driven object detection, scene recognition, and image-based graphics. We will examine data sources, features, and algorithms useful for understanding and manipulating visual data. We will pay special attention to methods that harness large-scale or Internet-derived data. There will be an overview of the current crowdsourcing techniques used to acquire massive image datasets. Vision topics such as scene understanding and object detection will be linked to graphics applications such as photo editing. These topics will be pursued through independent reading, class discussion and presentations, and projects involving current research problems in Computer Vision.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2951U - Topics in Software Security
This is a seminar where students jointly present research papers to their peers. Beginning with a summary of the most prevalent software defects, such as stack/heap buffer overflows, NULL pointer and pointer arithmetic errors, use-after-free and format string bugs, etc., which are typically found in applications written in type and memory unsafe languages, we will then survey what we are up against: traditional and modern exploitation techniques, ranging from classical code injection and code-reuse attacks, up to the newest goodies. We will primarily focus on the latest advances in protection mechanisms, mitigation techniques, and tools. Familiarity with topics covered in 'Computer Systems Security' (CSCI1660), and 'Introduction to Computer Systems' (CSCI0330) or 'Operating Systems' (CSCI1670) is essential.
1.000 Credit hours
1.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2955 - The Design and Analysis of Trading Agents
The Dutch Flower Auctions (DFA) clear over 100,000 auctions per day, each lasting on average between 3 and 5 seconds! This semester, we'll study the mechanism through which the DFA distribute 2/3 of the world's flowers, focusing on both the sellers' and buyers' decision-making processes. More generally, we'll research ways to automate and optimize decision-making in time-critical, information-rich environments, like the DFA. Undergraduate students require instructor permission, and should have already completed CSCI 0190, or CSCI 0150 and CSCI 0160, or CSCI 0170 and CSCI 0180.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2956 - Special Topics in Computer Science
Half-credit courses offered on current topics in computer science. Content will change each time a particular section of the course is offered.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Do not Schedule

Computer Science Department

CSCI 2956A - Design of Agents for Bidding in Sponsored Search Autions
This course investigates the new field of sponsored search auctions. Although students will be exposed to the field from the point of view of both the search engine and the advertiser, the course's focus is on advertiser's bidding algorithms. The students will implement novel bidding agents, and the course will culminate in a competition among the students' agents. Undergraduate students who obtained permission from the instructor or completed CSCI 0910, or CSCI 0150 and CSCI 0160, or CSCI 0170 and CSCI 0180 can register for the course. CSCI 1410 is a co-requisite.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2956F - Topics in Machine Learning
This half-credit, graduate-level seminar course covers current and emerging topics in machine learning. Topics may include kernel learning, learning using graphs, learning in high dimensions, and more. Topics will change by semester. Readings will be from recently published research papers. Prerequisite: CSCI 1550 or instructor approval.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2956R - Multiplicative-Weights/Packing-Covering Method for Approximating Linear and Semidefinite Programs
We will study the method called, variously, multiplicative weights and packing-covering. We will in particular investigate the use of this method for finding approximately optimal solutions to linear programs and semidefinite programs. Prerequisite: A graduate-level course on algorithms. Enrollment limited to 10. Instructor permission required.
0.500 Credit hours
0.500 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Primary Meeting

Computer Science Department

CSCI 2980 - Reading and Research
Section numbers vary by instructor. Please check Banner for the correct section number and CRN to use when registering for this course.
1.000 TO 5.000 Credit hours
1.000 TO 5.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Independent Study/Research

Computer Science Department

CSCI 2990 - Thesis Preparation
For graduate students who have met the tuition requirement and are paying the registration fee to continue active enrollment while preparing a thesis.
0.000 Credit hours
0.000 Lecture hours

Levels: Graduate, Undergraduate
Schedule Types: Graduate Thesis Prep

Computer Science Department


Return to Previous New Search XML Extract
Transparent Image
Skip to top of page
Release: 8.7.2.4