 |
Undergraduate Courses Graduate Courses
CIS 100 Level Courses CIS 500 Level Courses MCIT Courses
CIS 200 Level Courses CIS 600 Level Courses
CIS 300 Level Courses CIS 700, 800 & 900 Level Courses
CIS 400 Level Courses
CIS UNDERGRADUATE COURSES |
|
|
| |
|
|
CIS 99 - Undergraduate Research/Independent
Study |
|
An opportunity for the student to become
closely associated with a professor (1) in a research effort
to develop research skills and techniques and/or (2) to
develop a program of independent in-depth study in a subject
area in which the professor and student have a common interest.
The challenge of the task undertaken must be consistent
with the student's academic level. To register for this
course, the student must submit a detailed proposal, signed
by the independent study supervisor, to the SEAS Office
of Academic Programs (111 Towne Building) no later than
the end of the "add" period. |
| |
| CIS
101 - Introduction to Computer Science: Principles of
Information and Computation |
(Corequisite:
Math 104 or 150.)
This course is an introduction to the basic principles
and great ideas of computer science intended for non-engineering
students. It covers some of the essential topics of contemporary
computer science from a mathematical perspective. No programming
experience necessary. Open to all non-SEAS students. SEAS
students my not take for credit toward engineering degree.
Not offered in 2008-2009. May not be counted in the Engineering category.
|
CIS
105 - Introduction to Scientific Computing |
(Crosslisted
with MEAM 105)
This course
will provide an introduction to computation and data analysis
using MATLAB - an industry standard programming and visualization
environment. The course will cover the fundamentals
of computing including; variables, functions, flow control,
iteration and recursion. These concepts will be
illustrated through examples and assignments which show
how computing is applied to various scientific and engineering
problems. Examples will be drawn from the simulation
of physical and chemical systems, the analysis of experimental
data, Monte Carlo numerical experiments, image and audio
processing, and control of sensors and actuators.
This course does not assume any prior programming experience
but will make use of basic concepts from calculus and
Newtonian physics.
Not offered in 2008-2009.
|
| |
CIS
110 - Introduction
to Computer Programming (with Java, for Beginners) |
|
How do you program computers to accomplish complex tasks?
How do you break down a complex task into simpler ones?
CIS 110 is a "Java lite" course that covers the
fundamentals of object-oriented programming such as objects,
classes, state, methods, loops, arrays, and inheritance using the Java programming language.
Offered Fall 2008 and Spring 2009.
|
| |
|
CIS
112 -
Networked Life |
|
What kind of science is appropriate for understanding the Facebook?
How does Google find what you're looking for... and exactly how do they make money doing so?
What properties might we expect any social network to reliably have, and are there simple explanations for them?
How does your position in an economic network (dis)advantage you?
How are individual and collective behavior related in complex networks?
What might we mean by the economics of spam?
What do game theory and the Paris subway have to do with Internet routing?
Networked Life looks at how our world is connected -- socially, economically, strategically and technologically -- and why it matters
Offered Spring 2009.
|
| |
|
CIS
120 - Programming
Languages and Techniques I |
|
This will be
a fast-paced introduction to the fundamental concepts of
programming, with Java as the main experimental vehicle.
We assume some previous programming experience at the level of a high school computer science class. If you got at least 4 in the AP Computer Science A or AB
exam, you will do great. However, we do not assume
you know Java. Basic experience with any programming language
(for instance C, C++, VB, PHP, Perl, or Scheme) will
be sufficient. A quiz will be given in the second
week of class to test your programming knowledge so that
you can decide whether the class is for you. If you
have never programmed before, you should take CIS 110 first.
We will mainly use Java and the DrJava programming
environment, but we will also experiment with Python, a higher-level language.
Offered Fall 2008 and Spring 2009.
|
| |
|
CIS
121 - Programming
Languages and Techniques II |
|
(Prerequisite:
CIS 120. CIS 260 is a pre or co-requisite for CIS121).
This is a course about Algorithms and Data Structures using the JAVA programming language. We introduce the basic concepts about complexity of an algorithm and methods on how to compute the running time of algorithms. Then, we describe data structures like stacks, queues, maps, trees, and graphs, and we construct efficient algorithms based on these representations. The course builds upon existing implementations of basic data structures in JAVA and extends them for the structures like trees, studying the performance of operations on such structures, and their efficiency when used in real-world applications. A large project introducing students to the challenges of software engineering concludes the course.
Offered Fall 2008 and Spring 2009.
|
| |
| CIS
125 - Technology and Policy |
Have
you ever wondered why sharing music and video generates
such political and legal controversies? Is information
on your PC safe and should law enforcement be able to access
information you enter on the Web? Will new devices
allow tracking of your every move and every purchase?
CIS 125 is focused
on developing an understanding of existing and emerging
technologies, along with the political, societal and economic
impacts of those technologies. The technologies are
spread across a number of engineering areas and each of
them raise issues that are of current concern or are likely
to be a future issue.
Offered Spring 2009. Offerings after Spring 2008 may not be counted in the Engineering category. |
| |
|
CIS
140 - Introduction
to Cognitive Science |
|
(Crosslisted with: Phil044, Ling105,
Psych107)
How do minds work? This course surveys a wide range of answers
to this question from disciplines ranging from philosophy
to neuroscience. The course devotes special attention to
the use of simple computational and mathematical models.
Topics include perception, action, thought, learning, memory
and social interaction.
Offered Fall 2008.
|
|
|
CIS
240 - Introduction
to Computer Architecture |
|
(Prerequisite(s): CIS 110, CIS 120,
or significant programming experience.)
You know how to program, but do you know how computers really
work? How do millions of transistors come together to form
a complete computing system? This bottom-up course begins
with transistors and simple computer hardware structures,
continues with low-level programming using primitive machine
instructions, and finishes with an introduction to the C
programming language. This course is a broad introduction
to all aspects of computer systems architecture and serves
as the foundation for subsequent computer systems courses,
such as Digital Systems Organization and Design (CIS 371),
Computer Operating Systems (CIS 380), and Compilers and
Interpreters (CIS 341).
Offered Spring 2009.
|
| |
|
CIS
260 - Mathematical
Foundations of Computer Science I |
|
What are the basic mathematical concepts
and techniques needed in computer science? This course provides
an introduction to
proof principles and logic, combinatorics, graph theory
and probability theory as well as a rigorous grounding in
writing and reading mathematical proofs.
Offered Fall 2008 and Spring 2009.
|
| |
|
CIS
261 - Discrete
Probability, Stochastic Processes, and Statistical Inference |
|
(Prerequisite(s):
CIS 260)
The purpose
of this course is to provide a 1 CU educational experience
which tightly integrates the theory and applications of
discrete probability, discrete stochastic processes, and
discrete statistical inference in the study of computer
science.
The intended audience for this class is both those students
who are CS majors as well as those intending to be CS
majors. Specifically, it will be assumed that the students
will know: Set Theory, Mathematical Induction, Number
Theory, Functions, Equivalence Relations, Partial-Order
Relations, Combinatorics, and Graph Theory at the level
currently covered in CIS 260. This course could be taken
immediately following CIS 260. Computation and Programming
will play an essential role in this course. The students
will be expected to use the Maple programming environment
in homework exercises which will include: numerical and
symbolic computations, simulations, and graphical displays.
Offered Spring 2009.
|
| |
|
CIS
262 - Automata,
Computability, and Complexity |
|
(Prerequisite(s): CIS 260)
This course explores questions fundamental to computer science such as which problems cannot be solved by computers, can we formalize computing as a mathematical concept without relying upon the specifics of programming languages and computing platforms, and which problems can be solved efficiently. The topics include finite automata and regular languages, context-free grammars and pushdown automata, Turing machines and undecidability, tractability and NP-completeness. The course emphasizes rigorous mathematical reasoning as well as connections to practical computing problems such as text processing, parsing, XML query languages, and program verification.
Offered Fall 2008.
|
| |
|
CIS 277 - Introduction to Computer
Graphics Techniques |
|
(Prerequisite:
CIS 120. CIS 240, ESE 116, or the CIS399 minicourse on C++ may also be useful for background on C/C++ programming.)
This course is
focused on programming the essential geometric and mathematical
concepts underlying modern computer graphics. Using
2D and 3D implementations, it covers fundamental topics on scene graphs,
computational geometry, graphics
algorithms, and user interface design. Programming languages introduced include C++, OpenGL, FLTK and Python.
Offered Spring 2009.
|
| |
|
CIS 298 - Study Abroad |
|
|
CIS 320 - Introduction to Algorithms |
(Prerequisites:
CIS 120,121,260,262.)
How do you optimally encode a text file? How do you find
shortest paths in a map? How do you design a communication
network? How do you route data in a network? What are
the limits of efficient computation? This course gives
a comprehensive introduction to design and analysis of
algorithms, and answers along the way these and many other
interesting computational questions. You will learn about
problem-solving; advanced data structures such as universal
hashing and red-black trees; advanced design and analysis
techniques such as dynamic programming and amortized analysis;
graph algorithms such as minimum spanning trees
and network flows; NP-completeness theory; and approximation
algorithms.
Offered Spring 2009.
|
| |
|
CIS
330 - Design
Principles of Information Systems |
|
(Prerequisite(s):CIS 121 and CIS 260.)
Introduction to database management systems and principles
of design. The Entity-Relationship model as a modeling tool.
The relational model: formal languages, the industry standard
SQL, relational design theory, query optimization. Storing and querying XML data. Datalog and recursive queries. Views and data integration. Overview of system level issues:
physical data organization, indexing techniques, and transactions.
Connecting databases to the Web. Course work requires programming
in several different query languages, several written homeworks
and a team project.
Offered Fall 2008.
|
| |
|
CIS 334 - Advanced Topics in Algorithms |
(Prerequisite(s):
CIS 320.)
Can you check if two large documents are identical by
examining a small number of bits? Can you verify that
a program has correctly computed a function without ever
computing the function? Can students compute the average
score on an exam without ever revealing their scores to
each other? Can you be convinced of the correctness of
an assertion without ever seeing the proof? The answer
to all these questions is in the affirmative provided
we allow the use of randomization. Over the past few decades,
randomization has emerged as a powerful resource in algorithm
design. This course would focus on powerful general techniques
for designing randomized algorithms as well as specific
representative applications in various domains, including
approximation algorithms, cryptography and number
theory, data structure design, online algorithms, and
parallel and distributed computation.
Offered Fall 2008.
|
| |
|
CIS 340 - Principles of Programming Languages |
(Prerequisite(s): CIS 120,121,260)
This course is about the principles of programming languages.
It studies programming language concepts by implementing
a sequence of interpreters, compilers, and type checkers,
each one introducing a new language concept. The goal of
this course is threefold: By studying the concepts and abstractions
of high-level programming languages, students should be
able to use them more effectively. Second, by learning how
the features of high-level programming languages are implemented,
students should be able to program more expressively in
low-level languages. Finally, by understanding the principles
behind programming language design, students should be able
to create, evaluate and compare programming languages.
Not currently rostered. Interested students should take CIS500 instead.
|
| |
|
CIS 341 - Compilers and Interpreters |
(Prerequisite(s): Two semesters of
programming courses, e.g., CIS 120-121, and CIS 240.)
Compilation principles and techniques for high-level languages.
Topics include: lexical analysis, grammars, top-down parsing,
bottom-up parsing, symbol-table management, syntax-directed
translation, code generation, and optimization. The course
involves a substantial programming project to develop a
compiler.
Offered Fall 2009. Normally offered every two years.
|
|
|
|
CIS 350 - Software Design/Engineering |
(Prerequisite(s): CIS 240.)
Large systems versus small programs. Problems of scale.
Software life-cycle: design phase, implementation phase,
testing, maintenance. Software re-use. Tools/Toolkits/Libraries.
Programming as a group activity. Support tools, e.g., SCCS
and RCS. Standards. Software readability and structure.
Reading code. Style sheets. Software Testing: role in process,
test cases, testers. Documentation. Embedded documentation
and external documentation.
Offered Spring 2009.
|
| |
|
CIS 371
- Computer Organization and Design |
|
(Prerequisite(s):
CIS 240, knowledge of at least one programming language
(preferably C)).
This
is the second computer organization course and focuses on
computer hardware design. Topics covered are: (1) basic
digital system design including finite state machines, (2)
instruction set design and simple RISC assembly programming,
(3) quantitative evaluation of computer performance, (4)
circuits for integer and floating-point arithmetic, (5)
datapath and control, (6) micro-programming, (7) pipelining,
(8) storage hierarchy and virtual memory, (9) input/output,
(10) different forms of parallelism including instruction
level parallelism, data-level parallelism using both vectors
and message-passing multi-processors, and thread-level parallelism
using shared memory multiprocessors. Basic cache coherence
and synchronization.
Offered Spring 2009.
|
| |
|
CIS 372
- Computer Organization and Design Lab |
|
(Corequisite(s):
CIS 371).
Laboratory
for CIS 371. In this laboratory section, students gain experience
with digital design techniques by designing and implementing
actual ciruits using Verilog HDL and FPGAs. Five assignments
culminate in the design and simulation of a complete 16-bit
integer pipelined CPU.
Offered Spring 2009. |
| |
|
CIS
380 - Computer Operating Systems |
|
(Prerequisite(s): CIS 240 or EE 300.)
This course surveys methods and algorithms used in operating
systems. Concurrent distributed operation is emphasized.
The main topics covered are as follows: process sychronization;
interprocess communications; concurrent/distributed programming
languages; resource allocation and deadlock; virtual memory;
protection and security; distributed operation; distributed
data; performance evaluation.
Offered Fall 2008.
|
| |
|
CIS
381
- Computer Operating Systems Lab |
|
(Corequisite(s): CIS 380)
This course is a semester long project to design and implement
your own operating system. Typical components include a
process management system, a commond interpreter, and a
file management system.
Offered Fall 2008.
|
| |
|
CIS
390 - Robotics |
|
(Prerequisite(s): Math 240, PHYS 150.)
Today's robots replace, assist, or entertain humans in many
tasks. Recent examples of robots are planetary rovers, robot
pets, medical surgical assistive devices, and semi-autonomous
ground vehicles for search and rescue operations. The goal
of this class is to introduce the students to the common
kinematic and computational principles of the above examples
and to provide them with hands-on experience with state
of the art mobile robots and manipulators. The three main
topics are coordinate system transformations and kinematics,
visual sensing for localization, and computational geometry
for motion planning. Laboratories involve building and programming
Lego Mindstorms as well as using a manipulator and a haptic
device.
Offered Fall 2008.
|
| |
|
CIS 391 - Introduction to Artificial Intelligence |
|
(Prerequisite(s): CIS 121)
Artificial Intelligence is considered from the point of
view of a resource--limited knowledge-based agent who must
reason and act in the world. Topics include logic, automatic
theorem proving, search, knowledge representation and reasoning,
natural language processing, probabilistic reasoning, and
machine learning. Programming assignments in Prolog and
C++ or Java.
Offered Fall 2008.
|
| |
|
CIS 398 - Quantum Computer and Information
Science |
| (Prerequisite(s):
CIS 260, CIS 262, and Math 240. Enrollment by permission of the instructor.)
The purpose of this course is to introduce undergraduate
students in computer science and engineering to quantum
computers (QC) and quantum information science (QIS). This
course is meant primarily for juniors and seniors in CSE.
No prior knowledge of quantum mechanics (QM) is assumed.
Offered Spring 2009. |
| |
| CIS
399-002: Special Topics - C++ Programming |
| This
course will provide an introduction to programming in C++
and is intended for students who already have some exposure
to programming in another language such as Java. C++ provides
the programmer with a greater level of control over machine
resources and are commonly used in situations where low
level access or performance are important. This course will
illuminate the issues associated with programming at this
level and will cover issues such as explicit memory management,
pointers, the compilation process and debugging. The course
will involve several programming projects which will provide
students with the experience they need to program effectively
in these languages. This course assumes programming experience
equivalent to CIS 110, CIS 120 or ESE 112 as a prerequisite.
Rostering TBA. |
| |
| CIS
399-003: Special Topics - Linux/Unix in the 21st Century |
This
half-credit introductory course provides a solid background
in the Unix/linux environment. Topics covered include the
the Unix shell, the emacs editor, scripting, a number of
important applications (e.g., revision control systems and
latex), and user-level package installation. For each topic,
we will discuss the basic concepts as well as how to use
online resources (man and web pages) to
accomplish more advanced tasks
. In addition, we will compare each Unix/linux application
with the corresponding application (if one exists) on more
familiar environments such as Windows or Mac OS X. The skills
learned are applicable in the following classes: CIS 240,
CIS 331, CIS 341, CIS 371/372, and CIS 380/381.
Rostering TBA.
|
| |
| CIS
399-004: Special Topics - Python Programming |
Python
is an interpreted, object-oriented, extensible programming
language. It combines remarkable power with a clear syntax
and has become one of the most popular scripting languages
in use today. This course will provide an introduction to
this remarkable language and will revolve around programming
assignments that are designed to give students a command
of the language and an exposure to the wide range of modules
and libraries that are currently available. This course
assumes programming experience equivalent to CIS 110, CIS
120 or ESE 112 as a prerequisite.
Rostering TBA.
|
| |
| CIS
399-005: Special Topics - C# Programming |
Prerequisite: object-oriented
programming in Java, equivalent to having earned a B+ or
better in CIS 110, CIS 120 or ESE 112 (or permission of
instructor).
The C# language is a strongly typed, object oriented, garbage-collected
language which is designed to expose the full power of the
.NET programming platform. The course will provide a thorough
introduction to the features of this language and is intended
for students who have had some prior exposure to object-oriented
Java programming. It will revolve around programming assignments
which are designed to provide students with the experience
they need to program effectively in this language.
Students are expected to work about 10 hours per week including
classtime, with projects due every 1-2 weeks.
Rostering TBA.
|
| |
| CIS 399-006: Special Topics - User Interfaces and the Web |
(Prerequisite(s): CIS 110, CIS 120, CIS 121, CIS 277
This course will teach the fundamentals of Human-Computer Interaction (theory, design, implementation, experimentation, evaluation) in the context of current web interaction mechanisms, technologies, and applications. The course content will emphasize and leverage open source technologies to design, prototype, implement, and test user-interfaces and functionality in the context of today's most intriguing web trend, social networking.
Rostering TBA. |
|
|
CIS
400 - Senior
Project |
|
(Prerequisite(s): Senior standing or
permission of instructor.)
Design and implementation of a significant piece of work:
software, hardware or theory. In addition, emphasis on technical
writing and oral communication skills. Students must have
an abstract of their Senior Project, which is approved and
signed by a Project Adviser, at the end of the second week
of Fall classes. The project continues during two semesters;
students must enroll in CIS 401 during the second semester.
At the end of the first semester, students are required
to submit an intermediate report and give a class presentation
describing their project and progress. Grades are based
on technical writing skills (as per submitted report), oral
presentation skills (as per class presentation) and progress
on the project. These are evaluated by the Project Adviser
and the Course Instructor.
Offered Fall 2008.
|
| |
|
CIS
401 - Senior
Project |
|
Prerequisite(s): CIS 400, senior standing
or permission of instructor.)
Continuation of CIS 400. Design and implementation of a
significant piece of work: software, hardware or theory.
Students are required to submit a final written report and
give a final presentation and demonstration of their project.
Grades are based on the report, the presentation and the
satisfactory completion of the project. These are evaluated
by the Project Advisor and the Course Instructor.
Offered Spring 2009.
|
| |
|
CIS
410 - Intro
to Geometric Methods in Computer Science |
|
(Prerequisite(s):
Basic knowledge of linear algebra, calculus, and elementary
geometry (CIS 560 not required.)
The course is about mathematical and algorithmic techniques
used for geometric modeling and geometric design, using
curves and surfaces. There are many applications in computer
graphics as well as in robotics, vision, and computational
geometry. Such techniques are used in 2D and 3D drawing
and plot, object silhouettes, animating positions, product
design (cars, planes, buildings), topographic data, medical
imagery, active surfaces of proteins, attribute maps (color,
texture, roughness), weather data, art, etc. Three broad
classes of problems will be considered: Approximating curved
shapes, using smooth curves or surfaces; Interpolating curved
shapes, using smooth curves or surfaces; Rendering smooth
curves or surfaces.
Not rostered in 2008-2009. |
| |
CIS 430 - Intro to Human Language Technology*** |
|
Prerequisites: CIS 121
This course is an automatic summarization that can help alleviate the information overload problem caused by the unprecedented amount of online textual information. The building of a summarization system requires good understanding of the properties of human language and the use of various natural language tools. In this course we will build several summarization systems of increasing complexity and sophistication. In the process we will learn about various natural language processing tools and resources such as part of speech tagging, chunking, parsing, Wordnet, and machine learning toolkits. We will also cover probability and statistics concepts used in summarization, but also applicable to a wide range of other language-related tasks.
Offered Fall 2008. |
| |
|
CIS 434 - Intro to Parallel and Distributed
Programming |
| Prerequisite(s):
Software design experience and programming proficiency in
C/C++ or Java is required. Students will undertake
a real software design project and be expected to deliver
a working product.
This
course is a pragmatic
introduction to parallel and distributed programming. It
prepares students for developing and optimizing the performance
of parallel programs. Topics include widely used programming
paradigms such as multi-threading, message passing and remote
procedure call. In addition, the course covers enough
information on synchronization, resource management and
security so that students can analyze the correctness of
their program and optimize their performance.
Not offered 2008-2009. |
| |
|
CIS
455
- Internet and Web Systems |
|
(Prerequisites: Knowledge
of Java programming; CIS 330 & CIS 380 recommended.)
This course focuses on Internet and Web technologies and
the underlying principles of distributed systems, information
retrieval, and data management. The material covered will
include web and applications server architectures, XML and
semistructured data, schema mediation, document indexing
and retrieval, peer-to-peer systems, distributed transactions
and remote procedure calls. The course has a substantial
group implementation project.
Offered Spring 2009.
|
| |
|
CIS
460
- Computer Graphics |
|
(Prerequisite:
One year programming experience (C, JAVA, C++)).
A thorough introduction to computer graphics techniques,
covering primarily 3D modeling and image synthesis. Topics
cover: geometric transformations, geometric algorithms,
software systems (OpenGL), 3D object models (surface and
volume), visible surface algorithms, image synthesis, shading
and mapping, ray tracing, radiosity, global illumination,
photon mapping, anti-aliasing and compositing.
Offered Fall 2008.
|
CIS
461 - Computer Modeling & Animation Applications |
Prerequisite(s):
CIS 120-121 or equivalent experience and concurrent or past
enrollment in CIS 460 or CIS 560.
This project-based course is designed to provide a comprehensive
introduction to the application of computer graphics in
a laboratory setting. Course materials and labs will facilitate
understanding issues and trends in 3D computer graphics.
Students will develop a facility with fundamental 3-D models
and modeling software through a series of projects. The
course will offer students a technical understanding of
Polygonal and Spline based modeling, alternative and standard
methods of 3-D model import and export, and model conversion.
It will also cover procedural and scripting methods, techniques,
and conventions for creating models and shaders that will
function properly for rendering and animation. Practical
application of topics covered in CIS 460/CIS 560 include:
geometric transformations, hierarchies, articulation, modeling,
blend shapes, vertex weighting, and animation. Experiments
with various animation methods include: dynamics, forward
and inverse kinematics, surface deformations, keyframe interpolation,
motion capture, procedural animation, and facial animation.
The course will be laboratory based and will use industry
standard software.
Not offered 2008-2009.
|
CIS
462 - Computer Animation
|
|
Prerequisite:
Previous exposure to major concepts in linear algebra (i.e.
vector matrix math), curves and surfaces, dynamical systems
(e.g. 2nd order mass-spring-damper systems) and 3D computer
graphics has also been assumed in the preparation of the
course materials.
This course covers core subject matter common to the fields
of robotics, character animation and embodied intelligent
agents. The intent of the course is to provide the student
with a solid technical foundation for developing, animating
and controlling articulated systems used in interactive
computer games, virtual reality simulations and high-end
animation applications. The course balances theory with
practice by "looking under the hood" of current
animation systems and authoring tools and exams the technologies
and techniques used from both a computer science and engineering
perspective. Topics covered include: geometric coordinate
systems and transformations; quaternions; parametric curves
and surfaces; forward and inverse kinematics; dynamic systems
and control; computer simulation; keyframe, motion capture
and procedural animation; behavior-based animation and control;
facial animation; smart characters and intelligent agents.
Offered Fall 2008.
|
|
CIS 477
- Mathematical Methods/Techniques for Linguistics and Natural
Language Processing |
|
(Prerequisite(s): Phil 006 or instructor's
permission. Cross listed with: Ling 477.)
Basic concepts of set theory, relations and functions, properties
of relations. Basic concepts of algebra. Grammars, languages,
and automata, finite state grammars, regular expressions,
context-free and context-sensitive grammars, midly context-sensitive
grammars, unrestricted grammars, finite automata, pushdown
automata and other related automata, Turing machines. Syntax
and semantics of grammar formalisms. Strong generative capacity
of grammars, Grammers as deductive systems, parsing as deduction.
Relevance of formal grammars to modeling biological sequences.
The course will deal with these topics in a very basic and
introductory manner--ideas of proofs and not detailed proofs,
and more importantly with plenty of linguistic examples
to bring out the linguistic relevance of these topics.
Offered Fall 2008.
|
| CIS 480 - Distributed Systems |
more info.. |
Prerequisite(s): CSE 380, some network programming experience is desirable.
Ever increasing availability of inexpensive processors connected by a communication network has motivated the development of numerous concepts and paradigms for distributed systems. The primary objectives of this course are to study the principles and concepts of distributed computing and to provide students hands-on experience in developing distributed applications. The students will learn about the nature of distributed systems including their problems and solutions, as well as theoretical foundations for the design and implementation of distributed systems. Topics to be covered are: models of distributed systems, distributed algorithms and protocols, operating systems support, programming paradigms, and case studies of experimental and commercial systems.
Offered Spring 2009 |
| CIS
482 - Logic In Computer Science |
|
(Pre-requisite(s):
CIS 260.)
Logic has been called the calculus of computer science
as it plays a fundamental role in computer science, similar
to that played by calculus in the physical sciences and
traditional engineering disciplines. Indeed, logic is
useful in areas of computer science as disparate as architecture
(logic gates), software engineering (specification
and verification), programming languages (semantics, logic
programming), databases (relational algebra and SQL),
artificial intelligence (automatic theorem proving), algorithms
(complexity and expressiveness), and theory of computation
(general notions of computability). CIS 482 provides
the students with a thorough introduction to mathematical
logic, covering in depth the topics of syntax, semantics,
decision procedures, formal proof systems, and soundnessand
completeness for both propositional and first-order logic.
The material is taught from a computer science perspective,
with an emphasis on algorithms, computational complexity,
and tools. Projects will focus on problems
in circuit design, specification and analysis of protocols,
and query evaluation in databases.
Not offered 2008-2009.
|
| |
CIS GRADUATE COURSES |
|
|
| |
|
| CIS 500 - SOFTWARE FOUNDATIONS |
more info |
Prerequisite: Undergraduate-level course in programming languages or compilers; significant programming experience.
This course introduces basic concepts and techniques in the foundational study of programming languages. The central theme is the view of individual programs and whole languages as mathematical objects about which precise claims may be made and proved. Particular topics include operational techniques for formal definition of language features, type systems and type safety properties, polymorphism and subtyping, foundations of object-oriented programming, and mechanisms supporting information hiding and programming in the large.
|
| Offered Spring 2009 |
|
| CIS 501 - COMPUTER ARCHITECTURE |
more info |
Prerequisite: Knowledge of computer organization and basic programming skills.
This course is an introductory graduate course on computer architecture with an emphasis on a quantitative approach to cost/performance design tradeoffs. The course covers the fundamentals of classical and modern uniprocessor design: performance and cost issues, instruction sets, pipelining, superscalar, out-of-order, and speculative execution mechanisms, caches, physical memory, virtual memory, and I/O. Other topics include: static scheduling, VLIW and EPIC, software speculation, long (SIMD) and short (multimedia) vector execution, multithreading, and an introduction to shared memory multiprocessors.
|
| Offered Fall 2008 |
| CIS 502 - ANALYSIS OF ALGORITHMS |
more info |
Prerequisite: CIT 594 or equivalent.
An investigation of several major algorithms and their uses in areas including list manipulation, sorting, searching, and graph manipulation. Efficiency and complexity of algorithms. Complexity classes. |
| Offered Fall 2008 |
| CIS 505 - SOFTWARE SYSTEMS |
more info |
Prerequisite: Undergraduate-level knowledge of Operating Systems and Networking, programming experience (CIT 594 or equivalent).
This course introduces basic concepts and techniques in advanced software systems for first year graduate students in computer science. It provides the students with a background in the design, the implementation and the analysis of experimental systems. The course will focus on distributed systems - systems that distribute state and computation across networked elements. The first part of the course introduces the basics of network and kernel support for building distributed systems. The second part of the course covers the key concepts of interprocess communication and coordination, such as logical clocks and remote procedure call. The third part of the course covers case studies of distributed systems. Students will be expected to design,program and analyze software systems. |
| Offered Spring 2009 |
| CIS 510 - CURVES AND SURFACES: THEORY AND APPLICATIONS |
more info |
Prerequisite: Basic knowledge of linear algebra, calculus, and elementary geometry (CIS 560 not required.)
The course is about mathematical and algorithmic techniques used for geometric modeling and geometric design, using curves and surfaces. There are many applications in computer graphics as well as in robotics, vision, and computational geometry. Such techniques are used in 2D and 3D drawing and plot, object silhouettes, animating positions, product design (cars, planes, buildings), topographic data, medical imagery, active surfaces of proteins, attribute maps (color, texture, roughness), weather data, art, etc. Three broad classes of problems will be considered: Approximating curved shapes, using smooth curves or surfaces; Interpolating curved shapes, using smooth curves or surfaces; Rendering smooth curves or surfaces. |
| Not scheduled to be offered 2008-2009. |
| CIS 511 - THEORY OF COMPUTATION |
more info |
Prerequisite: Basic notions of discrete algebra.
Finite automata (deterministic and nondeterministic) regular graphs, regular expressions, regular grammars, (Nerode congruence), the ``pumping lemma'', closure properties. Context-free languages. Standard forms: removal of e-rules, chain rules, reduced grammars. Chomsky Normal Form. Context-free languages as fixed points (Ginsburg and Rose's Theorem). Greibach Normal Form (using Rosenkrantz matrix method). Ogden's Lemma and the``pumping lemma.'' Pushdown automata (PDA's). Equivalence of PDA's and context-free grammars. Brief sketch of top-down and bottom-up (nondeterministic) parsing. Deterministic PDA's. Closure properties. Partial recursive functions. Turing machines and RAM programs. Primitive recursion. Minimization. Equivalence of the models. Church/Turing's thesis. Acceptable Codings. A Universal RAM program. Undecidability of the halting problem. Recursively enumerable sets (RE sets). |
| Offered Summer 2008 & Spring 2009 |
| CIS 518 - TOPICS IN LOGIC: FINITE MODEL THEORY AND DESCRIPTIVE COMPLEXITY |
|
| The course will examine the expressive power of various logical languages over the class of finite structures. The course begins with an exposition of some of the fundamental theorems about the behavior of first--order logic in the context of finite structures, in particular, the Ehrenfeucht--Fraisse Theorem and the Trahktenbrot Theorem. The first of these results is used to show limitations on the expressive power of first--order logic over finite structures while the second result demonstrates that the problem of reasoning about finite structures using first--order logic is surprisingly complex. The course then proceeds to consider various extensions of first--order logic including fixed--point operators, generalized quantifiers, infinitary languages, and higher--order languages. The expressive power of these extensions will be studied in detail and will be connected to various problems in the theory of computational complexity. This last motif, namely the relation between descriptive and computational complexity, will be one of the main themes of the course. |
| Not scheduled to be offered 2008-2009 |
| CIS 520 - MACHINE LEARNING |
more info |
Prerequisite(s): Elementary probability, calculus, and linear algebra. Basic programming experience.
This course covers the foundations of statistical machine learning. The focus is on probabilistic and statistical methods for prediction and clustering in high dimensions. Other topics covered include graphical models, dimensionality reduction, neural networks, and reinforcement learning. |
| Offered Fall 2008 |
| CIS 521 - FUNDAMENTALS OF AI |
more info |
Prerequisites: Students are expected to have the following background: Basic algorithms, data structures and complexity (dynamic programming, queues, stacks, graphs, big-O, P/NP) ; Basic probability and statistics (random variables, standard distributions, simple regression); Basic linear algebra (matrices, vectors, norms, inverses); Reasonable programming skills.
Modern AI uses a collection of techniques from a number of fields in the design of intelligent systems:probability, statistics, logic, operations research, optimal control and economics, to name a few. This course covers basic modeling and algorithmic tools from these fields underlying current research and highlights their applications in computer vision, robotics, and natural language processing. |
| Not scheduled to be offered 2008-2009 |
| CIS 530 - COMPUTATIONAL LINGUISTICS |
|
| Computational approaches to the problem of understanding and producing natural language text and speech, including speech processing, syntactic parsing, semantic interpretation, discourse meaning, and the role of pragmatics and world knowledge. The course will examine both rule-based and corpus-based techniques. It is recommended that students have some knowledge of logic, basic linguistics, and/or programming. |
| Not scheduled to be offered 2008-2009 |
| CIS 534 - INTRODUCTION TO PARALLEL PROCESSING |
|
| This course is a pragmatic introduction to parallel programming. It is intended for graduate students in computer science, as well as all science and engineering students with an interest in parallel programming. This course prepares the students for parallelizing sequential programs or optimizing the performance of existing parallel codes. After a brief discussion of the basic notions of parallelism, we will discuss several popular models of parallel programming, including Pthreads, MPI, OpenMP, HPF,Linda, and object-oriented parallel programming. We will also study techniques to improve the efficiency of parallel applications on various platforms. The students are required to carry out a major programming project that often originates from their discipline. Assessment will be determined by some combination of projects and exams. |
| Not scheduled to be offered 2008-2009 |
| CIS 535 -INTRODUCTION TO BIOINFORMATICS (GCB 535) |
|
The course covers methods used in computational biology, including the statistical models and algorithms used and the biological problems which they address. Students will learn how tools such as BLAST work, and will use them to address real problems. The course will focus on sequence analysis problems such as exon, motif and gene finding, and on comparative methods but will also cover gene expression and proteomics. |
| Offered Fall 2008 |
| CIS 536 - COMPUTATIONAL BIOLOGY (GCB 536) |
|
Prerequisite: MATH 104/114 or equivalent, BIOL 221 or equivalent or permission of instructor.
Computational problems in molecular biology, including sequence search and analysis, informatics, phylogenetic reconstruction, genetic mapping and optimization. |
| Not scheduled to be offered 2008-2009 |
| CIS 537 - BIOMEDICAL IMAGE ANALYSIS |
more info |
Prerequisites: Mathematics through multivariate calculus (Math 241), programming experience, as well as some familiarity with linear algebra, basic physics, and statistics.
This course covers the fundamentals of advanced quantitative image analysis that apply to all of the major and emerging modalities in biological/biomaterials imaging and in vivo biomedical imaging. While traditional image processing techniques will be discussed to provide context, the emphasis will be on cutting edge aspects of all areas of image
analysis (including registration, segmentation, and high-dimensional statistical analysis). Significant coverage of state-of-the-art biomedical research and clinical applications will be incorporated to reinforce the theoretical basis of the analysis methods. |
| Offered Spring 2009 |
| CIS 550 - DATABASE AND INFORMATION SYSTEMS |
more info |
Prerequisite: CIT 591 or equivalent.
Introduction to the theory and practice of database management systems. The Entity-Relationship approach as a modeling tool. The relational model, algebra and calculus. Commercial systems: SQL, Quel and Ingres. Database design and relational normalization. Physical data organization and indexing structures. Updates and integrity: transaction management, concurrency control and recovery techniques. Logic as a data model: Datalog and evaluation techniques. The network model and object oriented approaches. |
| Offered Fall 2008 |
| CIS 551 - COMPUTER AND NETWORK SECURITY (TCOM 551) |
more info |
Prerequisite; TCOM 512 or equivalent is required; CIS 500 is recommended.
This is an introduction to topics in the security of computer systems and communication on networks of computers. The course covers four major areas: fundamentals of cryptography, security for communication protocols, security for operating systems and mobile programs, and security for electronic commerce. Sample specific topics include: passwords and offline attacks, DES, RSA, DSA, SHA, SSL, CBC, IPSec, SET, DDoS attacks, biometric authentication, PKI, smart cards, S/MIME, privacy on the Web, viruses, security models, wireless security, and sandboxing. Students will be expected to display knowledge of both theory and practice through written examinations and programming assignments. |
| Offered Spring 2009 |
| CIS 552 - ADVANCED PROGRAMMING |
more info |
Prerequisite: Four courses involving significant programming and a discrete mathematics or modern algebra course. Enrollment by permission of the instructor only.
The goals of this course are twofold: (1) to take good programmers and turn them into excellent ones, and (2) to introduce them to a range of modern software engineering practices, in particular those embodied in advanced functional programming languages.
|
| Not scheduled to be offered 2008-2009 |
| CIS 553 - NETWORKED SYSTEMS |
more info |
Prerequisites; CSE 121 (Programming Languages and Techniques II), or equivalent, or permission of the instructor.
This course provides an introduction to fundamental concepts in the design and implementation of networked systems, their protocols, and applications.
Topics to be covered include: Internet architecture, network applications, addressing, routing, transport protocols, network security, and peer-to-peer networks. The course will involve written assignments, examinations, and programming assignments.. Students will work in teams to design and implement networked systems in layers, from routing protocols, transport protocols, to peer-to-peer networks.
|
| Offered Fall 2008 |
|
| CIS 555 - INTERNET AND WEB SYSTEMS |
more info |
Prerequisites: CSE 380 (Operating Systems), CIS 505 (Software systems), or equivalent; CSE 330 (Database Management Systems), CIS 550 (Database and Information Systems), or equivalent; proficiency in Java programming.
This course will require a significant amount of programming and will require the ability to work with your classmates in teams. This course focuses on the issues encountered in building Internet and web systems: scalability, interoperability (of data and code), atomicity and consistency models, replication, and location of resources, services, and data. We will examine how XML standards enable information exchange; how web services and other communications schemes support cross-platform interoperability; how caching, replication, and hierarchy are used in distributed environments; and how agreement and transactions are addressed in the distributed context. We will study techniques for locating machines, resources, and data (including ranked web search, publish/subscribe systems, directories, and peer-to-peer protocols). We will also examine the ideas that have been proposed for tomorrow's Web, including the "Semantic Web," and see some of the challenges, research directions, and potential pitfalls. This project has a significant project-based component, in order to provide hands-on experience with the ideas and algorithms discussed. Students will construct and validate a large-scale distributed system. |
| Offered Spring 2009 |
| CIS 558 - COMPUTER ANALYSIS AND MODELING OF BIOLOGICAL SIGNALS AND SYSTEMS (LING 525) |
more info |
Prerequisite: Undergraduate-level knowledge of linear algebra.
A graduate course intended to introduce the use of signal and image processing tools for analyzing and modeling biological systems. We present a series of fundamental examples drawn from areas of speech analysis/synthesis, computer vision, and modeling of biological perceptual systems. Students learn the material through lectures and via a set of computer exercises developed in MATLAB. |
| Not scheduled to be offered 2008-2009 |
| CIS 560 - COMPUTER GRAPHICS |
more info |
Prerequisite: One year programming experience (C, JAVA, C++).
A thorough introduction to computer graphics techniques, covering primarily 3D modeling and image synthesis. Topics cover: geometric transformations, geometric algorithms, software systems (OpenGL), 3D object models (surface and volume), visible surface algorithms, image synthesis, shading and mapping, ray tracing, radiosity, global illumination, photon mapping, anti-aliasing and compositing. |
| Offered Fall 2008 |
| CIS 561 - COMPUTER MODELING & ANIMATION APPLICATIONS |
|
Prerequisite(s): CSE 120-121 or equivalent experience and concurrent or past enrollment in CSE 460 or CIS 560
This project-based course is designed to provide a comprehensive introduction to the application of computer graphics in a laboratory setting. Course materials and labs will facilitate understanding issues and trends in 3D computer graphics. Students will develop a facility with fundamental 3-D models and modeling software through a series of projects. The course will offer students a technical understanding of Polygonal and Spline based modeling, alternative and standard methods of 3-D model import and export, and model conversion. It will also cover procedural and scripting methods, techniques, and conventions for creating models and shaders that will function properly for rendering and animation. Practical application of topics covered in CSE 460/CIS 560 include: geometric transformations, hierarchies, articulation, modeling, blend shapes, vertex weighting, and animation. Experiments with various animation methods include: dynamics, forward and inverse kinematics, surface deformations, keyframe interpolation, motion capture, procedural animation, and facial animation. The course will be laboratory based and will use industry standard software. |
| Not scheduled to be offered 2008-2009 |
| CIS 562 - COMPUTER ANIMATION |
more info |
Prerequisite: Previous exposure to major concepts in linear algebra (i.e. vector matrix math), curves and surfaces, dynamical systems (e.g. 2nd order mass-spring-damper systems) and 3D computer graphics has also been assumed in the preparation of the course materials.
This course covers core subject matter common to the fields of robotics, character animation and embodied intelligent agents. The intent of the course is to provide the student with a solid technical foundation for developing, animating and controlling articulated systems used in interactive computer games, virtual reality simulations and high-end animation applications. The course balances theory with practice by "looking under the hood" of current animation systems and authoring tools and exams the technologies and techniques used from both a computer science and engineering perspective. Topics covered include: geometric coordinate systems and transformations; quaternions; parametric curves and surfaces; forward and inverse kinematics; dynamic systems and control; computer simulation; keyframe, motion capture and procedural animation; behavior-based animation and control; facial animation; smart characters and intelligent agents. |
| Offered Fall 2008 |
| CIS 563 - PHYSICALLY BASED ANIMATION |
more info |
Prerequisite: CIS 460/560; CIS 462/562 or instructor's permission. Students should have a good knowledge of C++, OpenGL and basic familiarity with linear algebra and physics.
This course introduces students to common physically based modeling techniques for animation of virtual characters, fluids and gases, rigid and deformable solids, cloth, explosions and other systems. To gain hands-on experience, students implement basicsimulators for several systems. Topics include - Simulating Deformable Objects: Particle Systems, Mass spring systems, Deformable Solids & Fracture, Cloth, Explosions & Fire, Smoke, Fluids, Deformable active characters, Simulating Rigid bodies, Rigid bodies dynamics, Collision detection and handling, Controlling rigid bodies simulation;
Simulating Articulated Bodies: Simulated characters in games, Optimization for character animation, Data driven approaches, Dynamic Response for Games. The course is appropriate for both upper level undergraduate and graduate students. |
|