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.
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.
349:
Topic for 2008-09: Web Search and Mining. Locating information on the web seems
very easy, while determining the quality of information can be tricky. This course is for
students who want to know why search engines can answer your queries fast and (mostly)
accurately, why other times they seem to be missing the point and provide untrustworthy
information, and how one can design a website that acquires high visibility on the web.
We will cover traditional information retrieval methods and web search algorithms such as
crawlers, with a focus on methods that can detect web spam. We will also cover some
basic understanding of text mining and data clustering. We will examine other relevant
issues of the information explosion era, such as the shape and structure of the web,
epistemology of information.
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.
249: Topic for 2008-09: Human-Computer Interaction. Human-Computer Interaction
is one of the areas that have transformed the way we use computers in the last
30 years. Topics include methodology for designing and testing user interfaces,
interaction styles (command line, menus, graphical user interfaces, virtual reality,
tangible user interfaces), interaction techniques (including use of voice, gesture,
eye movements), design guidelines, and user interface software tools. Students
will design a user interface, program a prototype, and test the result for usability.
|
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: 8/07 | Date Modified: 8/11 | Expires: 8/12
|