112: An introduction to computer programming that provides the tools necessary for
students to use computers effectively in scientific work, including in the natural and
physical sciences, biological sciences, medicine, mathematics, psychology and economics.
Students learn to write software to solve problems, visualize and analyze data,
perform computer simulations, and implement and test computational models that arise in
a wide range of scientific disciplines. The course introduces MATLAB, an extensive and
widely used technical computing environment with advanced graphics, visualization and
analysis tools, and a rich high-level programming language.
115: In this intensive course, students are introduced to engineering principles as
they design and assemble robots out of LEGO parts, sensors, motors, and
tiny computers. Fundamental robotics skills are learned in the context of studying
and modifying a simple robot known as SciBorg. Then, working in small teams,
students design and build their own robots for display at a Robot Exhibition.
These projects tie together aspects of a surprisingly wide range of disciplines,
including cs, physics, math, biology, psychology, engineering, and art.
111: An introduction to problem solving through computer programming. Using the
Java programming language, students learn how to read, modify, design, debug, and test
algorithms that solve problems. Programming concepts include control structures,
data structures, abstraction, recursion, modularity, and object-oriented design.
Students explore these concepts in the context of interactive programs involving graphics
and user interfaces.
231: An introduction to the design and analysis of fundamental algorithms. General
techniques covered: divide-and-conquer algorithms, dynamic programming, greediness,
probabilistic algorithms. Topics include: sorting, searching, graph algorithms, compression,
cryptography, computational geometry, and NP-completeness.
235: An introduction to the concepts of languages and automata. Topics include languages,
regular expressions, finite automata, grammars, pushdown automata, and Turing machines.
The first half of the semester covers the Chomsky hierarchy of languages and
their associated computational models. The second half of the semester focuses on
decidability issues and unsolvable problems. The course closes with a brief introduction
to complexity theory. The course includes a programming component investigating the
application of automata theory to the scanning and parsing of programming languages.
242: A systems-oriented approach to data networks, including a theoretical discussion
of common networking problems and an examination of modern networks and protocols.
Topics include point-to-point links, packet switching, internetworking, end-to-end
protocols, congestion control, and security. Projects may include client-server applications
and network measurement tools.
249a: An introduction to systems programming. Topics include linking, loading,
memory management, file systems, concurrency, and device drivers. Students will
explore these topics in the context of programming assignments involving the
C programming language and the Linux operating system.
303: A multidisciplinary course exploring the origins, present and future applications,
and challenges of the intersection of biological and computer sciences. The field of
bioinformatics generated in response to the era of genomics, encompasses all aspects of
biological data acquisition, storage, processing, analysis and interpretation with a view to
generating in silico models of cellular function.
331: This course is an introduction to parallel and distributed computing that studies
problem solving using a large number of interconnected processors. It is divided into
three parts. First, it discusses the need for parallel computation and describes some of the
fundamental algorithmic techniques. The second part surveys some of the popular
interconnection networks employed or simulated by parallel and distributed computers.
In the third part, several parallel algorithms are being designed and implemented in MPI.
310: When is a cryptographic system secure and how will we ever know? This course
introduces the computational models and theory computer scientists use to address
these issues. Topics include one-way functions, trapdoor functions,
probabilistic complexity classes, pseudorandom generators, interactive proof systems,
zero-knowledge proofs, and the application of these theories to modern cryptology.
332: An introduction to algorithms for deriving symbolic information about the
three-dimensional environment from visual images. Aspects of models for
computer vision systems will be related to perceptual and physiological
observations on biological vision systems. Assignments will use computer vision
software written in Java. Topics include: edge detection, stereopsis, motion
analysis, shape from shading, color, visual reasoning, and object recognition.
251: An introduction to the dimensions of modern programming languages. Covers
major programming paradigms: function-oriented, imperative, object-oriented, and
logic-oriented. Dimensions include syntax, naming, state, data, control, concurrency,
non-determinism, and types. These dimensions are explored via mini-language interpreters
written in OCaml, Scheme, and Haskell that students experiment with and extend.
307: A survey of topics in computer graphics with an emphasis on fundamental techniques.
Topics include: graphics hardware, fundamentals of three-dimensional graphics including
projection, coordinate transformation, synthetic camera specification, color, shading,
hidden surface removal, animation, and texture-mapping. We also cover the mathematical
representation and programming specification of lines, planes, curves, and surfaces.
304: A study of the design of file systems and databases, including file organization
and access methods, concepts of database management, and database querying using SQL.
We will look at the entity-relationship model as a way of structuring data, and we will use
relational algebra and relational calculus as a formal system for operating on data.
We will investigate how databases are represented, including B+ trees and and hash indexes.
We will briefly discuss sorting methods for databases. Finally, we will create dynamic
web documents driven by database entries.
342: An introduction to the broad area of computer security. Topics include ethics, privacy,
authentication, access control, information flow, operating system security (with a focus
on Linux), cryptography, security protocols, intrusion prevention and detection, firewalls,
viruses, network security, web security, programming language security. Assignments
include hands-on exercises with security exploits and tools in a Linux environment.
Participants will independently research, present, and lead discussions on security-related topics.
343: This course explores advanced computer organization and design. The interaction
of hardware and software at a variety of levels is studied to provide a framework on how
to design a computer. These ideas will also be applied to understand how a computer system
works and why it performs as it does. Examples and measurements based on commercial
systems are used to create realistic design experiences. Integral to the course is a three-hour
weekly laboratory. In the laboratory, students will engage in an intensive, semester-long
project in which they design a simple RISC-style microprocessor. The lectures complement
the labs. In addition, RISC architectures for current desktop, server and embedded computers
will also be surveyed. Students required to attend one three-hour digital laboratory weekly.
232: An introduction to Artificial Intelligence (AI), the design of computer systems that
possess and acquire knowledge and can reason with that knowledge. Topics include
knowledge representation, problem solving and search, planning, vision, language
comprehension and production, learning, common sense reasoning, and expert systems.
To attain a realistic and concrete understanding of these problems, CommonLisp,
an AI programming language, will be taught and used to implement the algorithms of the course.
230: An introduction to techniques and building blocks for organizing large programs.
Topics include: modules, abstract data types, recursion, algorithmic efficiency,
and the use and implementation of standard data structures and algorithms such as lists,
trees, graphs, stacks, queues, priority queues, tables, sorting, and searching.
Students become familiar with these concepts through weekly programming assignments
using the Java programming language.
240: An introduction to machine organization and assembly language programming.
Topics include an overview of computer organization, introduction to digital logic
and microprogramming, the conventional machine level and assembly language
programming, and introduction to operating systems.
ARTS 105: An introduction to the fundamentals of drawing with attention to
the articulation of line, shape, form, gesture, perspective, and value.
ARTS 108: An introductory course which explores photography as a means
of visual communication by producing and analyzing photographic images.
ARTS 109: This introductory studio course focuses on the issue of composition in
two-dimensional imagery. It introduces the fundamental elements of design
(e.g. line, shape, value, space, color) and their function in the process of composition.
110: This course explains the basics of how the Internet works and how to build a Web site.
Topics include client-server architecture, structuring Web pages with HTML,
the representation of colors, images, and sound on the computer, file compression,
encryption, cookies, and copyright, intellectual property issues, and critical thinking in
the context of the Internet. The required project also models most phases of the standard
software lifecycle. Students are introduced to programming by building an interactive Web site using JavaScript.
215: The purpose of this course is to give students a broad foundation in issues related to
creating multimedia and hypermedia applications. Topics to be covered include history and
philosophy of hypermedia; principles of human-computer interaction;
multimedia programming; optimizing for CD-ROMs and the WWW; digital representation
and editing of media (audio, graphics, video); media compression and transmission;
and delivery of multimedia applications.
MATH225: Combinatorics is the art of counting possibilities: for instance,
how many different ways are there to distribute 20 apples to 10 kids?
Graph theory is the study of connected networks of objects. Both have important
applications to many areas of mathematics and computer science. The course
will be taught emphasizing creative problem-solving, as well as methods of
proof, such as proof by contradiction and induction. Topics include:
selections and arrangements, generating functions, recurrence relations,
graph coloring, Hamiltonian and Eulerian circuits, trees.
249b: This course will give an overview of the theory and practice of
complex networks.We will introduce basic concepts in network theory
(graph and probability theory), analyze scaling phenomena and power laws,
discuss metrics, models, processes and algorithms, and use software analysis tools
to experiment with real-world network data. Models of networks include
random graphs, the small-world model, preferential attachment, Pennock models
and hierarchical networks. Real world networks we will study may include
social/friendship networks, networks of the internet (routers and WWW),
comic book characters networks, transportation, and ecological networks.
| |
CS Course Dependencies Diagram
Mouse over a course to see its description. Click on a course to go to its website.
|
 |
Created by: Christina Pong'09 & Ewelina Oleszek'10|Modified by: Rita Purcell x3147
|Date Created:6/07 |Date Modified:
8/7/07
|Expires:8/07 |