Courses

CSCI 102: The Socio-Techno Web (Q)

This course introduces many fundamental concepts in computer science by examining the social aspects of computing. As more and more people use the technologies and services available via the Internet, online environments like Facebook, Amazon, Google, Twitter, and blogs are flourishing. However, several of the problems related to security, privacy, and trust that exist in the real world transfer and become amplified in the virtual world created by the ubiquity and pervasiveness of the Internet. In this course, we will investigate how the social, technological, and natural worlds are connected, and how the study of networks sheds light on these connections. Topics include the structure of the Social Web and networks in general; issues such as virtual identity, personal and group privacy, trust evaluation and propagation, and online security; and the technology, economics, and politics of Web information and online communities. No background in computer science or programming is required or expected. Continue reading »

CSCI 107: Creating Games [ARTS 107] (Q)

The game is unique as the only broadly–successful interactive art form. Games communicate the experience of embodying a role by manipulating the player's own decisions, abstraction, and discrete planning. Those three elements are the essence of computation, which makes computer science theory integral to game design. Video games also co–opt programming and computer graphics as new tools for the modern artist. As a result, games are collaborative interdisciplinary constructs that use computation as a medium for creative expression. Students analyze and extend contemporary video and board games using the methodology of science and the language of the arts. They explore how computational concepts like recursion, state, and complexity apply to interactive experiences. They then synthesize new game elements using mathematics, programming and both digital and traditional art tools. Emphasis is on the theory of design in modern European board games. Topics covered include experiment design, gameplay balance, minimax, color theory, pathfinding, game theory, composition, and computability. Continue reading »

CSCI 109: The Art and Science of Computer Graphics (Q)

This course provides an opportunity to develop an understanding of the theoretical and practical concepts underlying 2- and 3-dimensional computer graphics. The course will emphasize hands-on studio/laboratory experience, with student work focused around completing a series of projects. Students will experiment with modeling, color, lighting, perspective, and simple animation. As the course progresses, computer programming will be used to control the complexity of the models and their interactions. Lectures, augmented by guided viewings of state-of-the-art computer generated and enhanced images and animations, will be used to deepen understanding of the studio experience. Continue reading »

CSCI 134A: Introduction to Computer Science: Objects, Events, and Graphics (Q)

Computing is central to many aspects of our lives and the world. This course introduces fundamental ideas in computer science and builds the skills necessary to create computer programs in the Java programming language, with an emphasis on graphics and user interfaces. Students learn to design programs in a wide range of application areas, from games to spam filters and image editing to scientific simulations. Programming topics include object-oriented programming, control structures, arrays, recursion, and event-driven programming, as well as how to construct correct, understandable, and efficient programs. This course is appropriate for all students who want to create software and have little or no prior computing experience. Continue reading »

CSCI 134D: Introduction to Computer Science: Algorithmic Problem Solving with Robots

This course provides experience with one fundamental approach to problem solving and begins study of a second. The control of robots serves as an application theme as part of a solid introduction to imperative problem solving. Fundamental concepts include top-down design, common algorithms, assertions, program organization, control structures, functions, arrays, and linked lists. Using the C programming language as a vehicle for precise thinking and careful communication of problem solutions, the course explores low-level perspectives of computing, including the representation of data, pointers, and memory management. The course also introduces selected insights for the development of large-scale programs using object-oriented problem solving and the Java programming language. In addition, problem sets suggest a range of applications beyond the course's robotic application theme. This course is appropriate for all students who want to create software and have little or no prior computing experience. Continue reading »

CSCI 135: Diving into the Deluge of Data (Q)

We are surrounded by information: weather forecasts, twitter feeds, restaurant reviews, stock market tickers, music recommendations, among others. This course introduces fundamental computational concepts for representing and manipulating data. Using the programming language Python, this course explores effective ways to organize and transform information in order to solve problems. Students will learn to design algorithms to search, sort, and manipulate data in application areas like text and image processing, social networks, scientific computing, databases, and the World Wide Web. Programming topics covered include object-oriented and functional programming, control structures, types, recursion, arrays, lists, streams, and dictionaries. This course is appropriate for all students who want to create software and learn computational techniques for manipulating and analyzing data. This course covers the programming concepts from CSCI 134 in an accelerated fashion. It is designed for students who have some experience programming in any computer language, but whose background is not strong enough to enter Computer Science 136. First year students and sophomores have enrollment preference. Continue reading »

CSCI 136: Data Structures and Advanced Programming (Q)

This course builds on the programming skills acquired in Computer Science 134. It couples work on program design, analysis, and verification with an introduction to the study of data structures. Data structures capture common ways in which to store and manipulate data, and they are important in the construction of sophisticated computer programs. Students are introduced to some of the most important and frequently used data structures: lists, stacks, queues, trees, hash tables, graphs, and files. Students will be expected to write several programs, ranging from very short programs to more elaborate systems. Emphasis will be placed on the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify. Continue reading »

CSCI 205: Cinematography in Digital Age [ENGL 203/ARTH 205] (D)

In this course we study the language of modern cinema as shaped by two forces. The first is the aesthetics of cinematography, as contributed by many cultures. The second is digital film production, which has proved both empowering and constraining. The modern filmmaker succeeds only through understanding both forces. The structure of the course is similar to a writing workshop. We begin with close reading of isolated scenes from influential films, which we compare and critique in writing and discussion. We augment this with cinematic and image processing theory, solidified through experiments in Photoshop and Premiere that reveal how digital technology shapes a director's choices. We then create our own short scenes using these tools and consumer video recorders. We refine our film fragments in the context of group critique. Topics covered include: framing and composition, pace, storyboarding, blocking, lighting, transitions, perspective, sensors, quantization, compression, visual effects, Internet streaming, and color spaces. Studied films include those by Georges Méliès, Stanley Kubrick, Joris Ivens, Barbara Kopple, Martin Scorsese, Sarah Polley, Orson Welles, David Lynch, Fritz Lang, Michael Haneke, Hayao Miyazaki, Spike Lee, Sophia Coppola, and Ken Burns. This course explores diversity through comparative study of how different cultures variously render similar themes, and through a larger investigation of film's ability to make audiences identify with potentially alien points of view. Continue reading »

CSCI 237: Computer Organization (Q)

This course studies the basic instruction set architecture and organization of a modern computer. Over the semester the student learns the fundamentals of translating higher level languages into assembly language, and the interpretation of machine languages by hardware. At the same time, a model of computer hardware organization is developed from the gate level upward. Final projects focus on design of a complex control system in hardware or firmware. Continue reading »

CSCI 256: Algorithm Design and Analysis (Q)

This course explores advanced concepts in algorithm design, algorithm analysis and data structures. Areas of focus will include algorithmic complexity, randomized and approximation algorithms, geometric algorithms, and advanced data structures. Topics will include combinatorial algorithms for packing, and covering problems, algorithms for proximity and visibility problems, linear programming algorithms, approximation schemes, hardness of approximation, search, and hashing. Continue reading »

  • 1
  • 2
  • 4