|
CIS
Course Descriptions
MCIT Course Descriptions
CIS
500: SOFTWARE FOUNDATIONS
Prerequisite:
Undergraduate-level course in programming languages or compilers;
significant programming experience (CIT 591 or equivalent).
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.
CIS
501: COMPUTER ARCHITECTURE
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.
CIS
502: ANALYSIS OF ALGORITHMS
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.
CIS
505: SOFTWARE SYSTEMS
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.
CIS
510: CURVES AND SURFACES: THEORY AND APPLICATIONS
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.
CIS
511: THEORY OF COMPUTATION
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).
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.
CIS
520: MACHINE LEARNING (formerly Intro to AI)
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.
CIS 521: FUNDAMENTALS OF AI
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.
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.
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.

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.
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.
CIS
537: BIOMEDICAL IMAGE ANALYSIS
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.
CIS
550: DATABASE AND INFORMATION SYSTEMS
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.
CIS
551: COMPUTER AND NETWORK SECURITY (TCOM 551)
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.
CIS 552: ADVANCED PROGRAMMING
Prerequisite: Four courses involving significant programming and a discrete mathematics or modern algebra course, or permission of the instructor
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.
CIS 553: NETWORKED SYSTEMS
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, quality of service, transport protocols, data link protocols, network security, and application level protocols such as peer-to-peer networks and overlay networks. The course will involve written assignments, examinations, and programming assignments.
CIS
555: INTERNET AND WEB SYSTEMS
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.
CIS
558: COMPUTER ANALYSIS AND MODELING OF BIOLOGICAL SIGNALS AND
SYSTEMS (LING 525)
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.

CIS
560: COMPUTER GRAPHICS
Prerequisite:
C programming experience.
Geometric transformations, computer graphics software, three-dimensional
object representations, visible surface algorithms, image synthesis,
ray tracing, radiosity, anti-aliasing, animation techniques,
and virtual environments.
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.
CIS
562: 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.
CIS 563: PHYSICALLY BASED ANIMATION
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.
CIS
564: GAME DESIGN AND DEVELOPMENT
Prerequisites:
Basic understanding of 3D graphics and animation principles,
prior exposure to scripting and programming languages such as
Python, C and C++.
The intent of the course is to provide students with a solid
theoretical understanding of the core creative principles, concepts,
and game play structures/schemas underlying most game designs.
The course also will examine game development from an engineering
point of view, including: game play mechanics, game engine software
and hardware architectures, user interfaces, design documents,
playtesting and production methods.
CIS
570: MODERN PROGRAMMING LANGUAGE IMPLEMENTATION
Prerequisite:
CIS 500. An undergraduate course in compiler construction (CSE
341 or equivalent) is helpful but not required.
This course is a broad introduction to advanced issues in compilers
and run-time systems for several classes of programming languages,
including imperative, object-oriented, and functional. Particular
attention is paid to the structures, analyses, and transformations
used in program optimization.
CIS
571: RECURSION THEORY (PHIL 411)
This
course covers the basic theory of recursive and recursively
enumerable sets and the connection between this theory and a
variety of decision problems of interest in a computational
setting. The course proceeds to an exposition of recursion theoretic
reducibilities. Elementary results about degrees of unsolvability
are established. The theory of arithmetical, analytical, and
projective hierarchies are presented. The study of functionals
at this point provides an entry into the computationally important
subject of recursion at higher types. Basic parts of the theory
of inductive definitions and monotone operators are presented.
If time and interest permit, this theory is applied to the analysis
of the semantical paradoxes. The course concludes with an investigation
of the lower levels of the analytical and projective hierarchies.
Applications to the degrees of unsolvability of various logical
systems will be presented, connections between the hierarchies
and predicative formal systems are established, and the relation
between the theory of the projective hierarchy and topics in
classical descriptive set theory are indicated.

CIS
572: SET THEORY (PHIL 413)
This
course is an introduction to set theory. It will begin with
a study of Zermelo-Fraenkel set theory (ZF) as a partial description
of the cumulative hierarchy of sets. Elementary properties of
cardinal and ordinal numbers will be developed in ZF. The inner
model of constructible sets will be used to establish the relative
consistency of the axiom of choice and the generalized continuum
hypothesis with ZF. The method of forcing will be introduced
to establish the independence of the continuum hypothesis from
ZF and other independence results. Large cardinals and their
bearing on the resolution of questions about the continuum will
be considered.
CIS
573: SOFTWARE ENGINEERING
Prerequisite:
CIT 591 and 593; or CSE 120, 121, and 240; or equivalent coursework;
prior knowledge of Java required.
BUILDING LARGE INFORMATION SYSTEMS: This course will be a practicum
in specifying, designing and documenting, building, testing
and administering corporate-sized software projects that invariably
have a database component, security and firewall issues, a web-based
user interface, and special client programs running as applications
elsewhere on a network. The course will examine one or more
existing, commercial systems (such as the Blackboard system
in use at Penn) and will address conceptual issues surrounding
large software systems, such as ways to estimate project size,
and ways to integrate different technologies into a maintainable
system design. There will be substantial programming assignments
using Microsoft Visual Studio .NET languages such as C# to create
components of a larger system. Possible projects include a web
interface, a client (and possibly server-side programming) for
a SOAP/XML based web service, a Windows-based client with graphical
interface, and rudimentary SQL database table and view design.
The idea of using UML for code generation, and writing "built-in"
unit tests for objects to automate future retesting will be
examined.
CIS
580: MACHINE PERCEPTION
Prerequisite:
A solid grasp of the fundamentals of linear algebra. Some knowledge
of programming in C and/or Matlab.
An introduction to the problems of computer vision and other
forms of machine perception that can be solved using geometrical
approaches rather than statistical methods. Emphasis will be
placed on both analytical and computational techniques. This
course is designed to provide students with an exposure to the
fundamental mathematical and algorithmic techniques that are
used to tackle challenging image based modeling problems. The
subject matter of this course finds application in the fields
of Computer Vision, Computer Graphics and Robotics. Some of
the topics to be covered include: Projective Geometry, Camera
Calibration, Image Formation, Projective, Affine and Euclidean
Transformations, Computational Stereopsis, and the recovery
of 3D structure from multiple 2D images. This course will also
explore various approaches to object recognition that make use
of geometric techniques, these would include alignment based
methods and techniques that exploit geometric invariants. In
the assignments for this course, students will be able to apply
the techniques to actual computer vision problems.
CIS
582: LOGIC IN COMPUTER SCIENCE
Pre-requisite:
CSE 260 or CIT 592 or equivalent
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 582 provides
students with a thorough introduction to mathematical logic,
covering in depth the topics of syntax, semantics, decision
procedures, formal proof systems, and soundness and 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.

CIS
610: ADVANCED GEOMETRIC METHODS IN COMPUTER SCIENCE
Prerequisite:
CIS510 or coverage of equivalent material.
The purpose of this course is to present some of the advanced
geometric methods used in geometric modeling, computer graphics,
computer vision, etc. The topics may vary from year to year,
and will be selected among the following subjects (nonexhaustive
list): Introduction to projective geometry with applications
to rational curves and surfaces, control points for Rational
curves, rectangular and triangular rational patches, drawing
closed rational curves and surfaces; Differential geometry of
curves (curvature, torsion, osculating planes, the Frenet frame,
osculating circles, osculating spheres); Differential geometry
of surfaces (first fundamental form, normal curvature, second
fundamental form, geodesic curvature, Christoffel symbols, principal
curvatures, Gaussian curvature, mean curvature, the Gauss map
and its derivative dN, the Dupin indicatrix, the Theorema Egregium,
equations of Codazzi-Mainardi, Bonnet's theorem, lines of curvatures,
geodesic torsion, asymptotic lines, geodesic lines, local Gauss-Bonnet
theorem). Spring.
CIS
613: NONLINEAR CONTROL THEORY (MEAM 613/EE 613)
Prerequisite:
A sufficient background to linear algebra (ENM 510/511 or equivalent)
and a course in linear control theory (MEAM 513 or equivalent),
or written permission of the instructor.
This course studies issues in nonlinear control theory, with
a particular emphasis on the use of geometric principles. Topics
include: controllability, accessibility, and observability for
nonlinear systems; Forbenius' theorem; feedback and input/output
linearization for SISO and MIMO systems; dynamic extension;
zero dynamics; output tracking and regulation; model matching;
disturbance decoupling; examples will be taken from mechanical
systems, robotic systems, including those involving nonholonomic
constraints, and active control of vibrations.
CIS
620: ADVANCED TOPICS IN ARTIFICIAL INTELLIGENCE
Prerequisite:
CIS 520 or equivalent.
Discussion of problems and techniques in Artificial Intelligence
(AI). Knowledge Representation and Reasoning, Planning, Natural
Language Processing, Constraint Systems, Machine Learning; Applications
of AI.
CIS
630: ADVANCED TOPICS IN IN NATURAL LANGUAGE PROCESSING
Prerequisite:
CIS 530 or permission of instructor.
Different topics selected each offering; e.g., NL generation,
question-answering, information extraction, machine translation,
restricted grammar formalisms, computational lexical semantics,
etc.
CIS
635: ADVANCED COMPUTATIONAL BIOLOGY (BIOL 537)
Prerequisite:
Biol 536 or permission of instructor.
Discussion of special research topics.
CIS
639: STATISTICAL APPROACHES TO NATURAL LANGUAGE UNDERSTANDING
This
course examines the recent development of corpus-based techniques
in natural language processing, focusing on both statistical
and primarily symbolic learning techniques. Particular topics
vary from year to year.

CIS
640: ADVANCED TOPICS IN SOFTWARE SYSTEMS
Prerequisite:
CIS 505 or equivalent.
Different topics selected for each course offering.
CIS
650: ADVANCED TOPICS IN DATABASES
Prerequisite:
CIS 550.
Advanced topics in databases: distributed databases, integrity
constraints, failure, concurrency control, relevant relational
theory, semantics of data models, the interface between programming
of languages and databases. Object-oriented databases. New topics
are discussed each year.
CIS
660: ADVANCED TOPICS IN COMPUTER GRAPHICS & ANIMATION
Prerequisite:
CIS 560 or permission of instructor.
This course emphasizes the review and understanding of current
computer graphics, interaction, and virtual environment research
techniques and problems. Research-level topics are based on
recent ACM SIGGRAPH papers and special effects techniques, through
student-led discussions and both oral and visual presentations.
A software project is required.
CIS
665: GPU PROGRAMMING AND ARCHITECTURE
Prerequisite:
CSE 460 or CIS 560, and familiarity with computer hardware/systems.
The hardware/systems requirement may be met by CIS 501; or CIT
593 and 595; or CSE 240 (with CSE 371 recommended); or equivalent
coursework.
This
course examines the architecture and capabilities of modern
GPUs. The graphics processing unit (GPU) has grown in power
over recent years, to the point where many computations can
be performed faster on the GPU than on a traditional CPU. GPUs
have also become programmable, allowing them to be used for
a diverse set of applications far removed from traditional graphics
settings. Topics covered include architectural aspects of modern
GPUs, with a special focus on their streaming parallel nature,
writing programs on the GPU using high level languages like
Cg and BrookGPU, and using the GPU for graphics and general
purpose applications in the area of geometry modeling, physical
simulation, scientific computing and games. Students are expected
to have a basic understanding of computer architecture and graphics,
and should be proficient in OpenGL and C/C++.
CIS
670: ADVANCED TOPICS IN PROGRAMMING LANGUAGES
Prerequisite:
CIS 500.
The details of this course change from year to year, but its
purpose is to cover theoretical topics related to programming
languages. Some central topics include: denotational vs operational
semantics, domain theory and category theory, the lambda calculus,
type theory (including recursive types, generics, type inference,
and modules), logics of programs and associated completeness
and decidability problems, specification languages, and models
of concurrency. The course requires a degree of mathematical
sophistication.
CIS
673: COMPUTER-AIDED VERIFICATION
Prerequisite:
Basic knowledge of algorithms, data structures, automata theory,
propositional logic, operating systems, communication protocols,
and hardware (CSE 262, CSE 380, or permission of the instructor).
This course introduces the theory and practice of formal methods
for the design and analysis of concurrent and embedded systems.
The emphasis is on the underlying logical and automata-theoretic
concepts, the algorithmic solutions, and heuristics to cope
with the high computational complexity. Topics: Models and semantics
of reactive systems; Verification algorithms; Verification techniques.
Topics may vary depending on instructor.
CIS
677: ADVANCED TOPICS IN ALGORITHMS AND COMPLEXITY
Prerequisite:
Consent of the instructor.
This course covers various aspects of discrete algorithms. Graph-theoretic
algorithms in computational biology, and randomization and computation;
recent literature in dynamic graph algorithms, approximation
algorithms, and other areas according to student interests.
CIS
680: ADVANCED TOPICS IN MACHINE PERCEPTION
Prerequisite:
A previous course in machine perception or knowledge of image
processing, experience with an operating system and language
such as Unix and C, and aptitude for mathematics. Graduate seminar
in advanced work on machine perception as it applies to robots
as well as to the modeling of human perception. Topics vary
with each offering. Check with instructor.
CIS
682: FRIENDLY LOGICS
The use of logical
formalisms in Computer Science is dominated by a fundamental
conflict: expressiveness vs. algorithmic tractability. Database
constraint logics, temporal logics and description logics are
successful compromises in this conflict: (1) they are expressive
enough for practical specifications in certain areas, and (2)
there exist interesting algorithms for the automated use of
these specifications. Interesting connections can be made between
these logics because temporal and description logics are modal
logics, which in turn can be seen, as can database constraint
logics, as certain fragments of first-order logic. These connections
might benefit research in databases, computer-aided verification
and AI. Discussion includes other interesting connections, eg.,
with SLD-resolution, with constraint satisfaction problems,
with finite model theory and with automata theory.
CIS
700: SPECIAL TOPICS
One time course offerings
of special interest.
CIS 895: TEACHING PRACTICUM
Enrollment for students participating in Teaching Practicum.
CIS
899: INDEPENDENT STUDY
For
students studying a specific advanced subject area in computer
and information science. Involves coursework and class presentations.
A CIS 899 course unit will invariably include formally gradable
work comparable to that in a normal 500 or 600 level course.
This designation should not be used for ongoing research towards
a thesis, for which the CIS 999 designation should be used.

CIS
990: MASTERS THESIS
For
master's students who have taken ten course units and need only
to complete the writing of a thesis or finish work for incompletes
in order to graduate. CIS 990 carries full time status with
zero course units, and may be taken only once.
CIS
995: DISSERTATION
For
PhD candidates working exclusively on their dissertation research,
having completed 40 course units of credit,including credit
for successfully meeting the teaching practicum requirement.
There is no credit or grade for CIS 995.
CIS
996: RESEARCH SEMINAR
Introduction
to research being conducted in the department. Mandatory for
first year doctoral students - taken as fifth course for no
credit at no cost.
CIS
999: THESIS/DISSERTATION RESEARCH
For
students working on an advanced research program leading to
the completion of master's thesis or PhD dissertation requirements.
CIT
591: PROGRAMMING LANGUAGES AND TECHNIQUES I
Introduction
to fundamental concepts of programming and computer science.
Principles of modern object-oriented programming languages:
abstraction, types, polymorphism, encapsulation, and inheritance.
Basic algorithmic techniques and informal complexity analysis.
Graphical user interfaces. Substantial programming assignments
in Java.
CIT
592: MATHEMATICAL FOUNDATIONS OF COMPUTER SCIENCE
Foundations:
Sets, Functions, Summations, and Sequences. Introduction to
algorithms. Counting techniques: The pigeonhole principle, permutations
and combinations. Discrete probability. Selected topics from
Number theory and/or Graph Theory.
CIT
593: INTRODUCTION TO COMPUTER ARCHITECTURE
Introduction
to fundamental concepts of computer architecture. Programming
in C and at least one assembly language as a basis for understanding
machine instructions and subroutine linkage conventions. Representation
of numbers, characters and other information at machine level,
including on virtual machines. Features of current operating
systems.
CIT
594: PROGRAMMING LANGUAGES AND TECHNIQUES II
Prerequisite:
CIT 591 or consent of instructor.
Basic data structures, including lists, stacks, queues, hash
tables, trees, priority queues, and Java Collections. Algorithms,
algorithm types, and simple complexity analysis. Development
and implementation of program specifications. Software architecture
and design methods, including modular program development, correctness
arguments, and testing techniques. Concepts illustrated through
extensive programming assignments in Java.
CIT
595: DIGITAL SYSTEM ORGANIZATION AND DESIGN
Prerequisite:
CIT 593 or equivalent.
Introduction to fundamental building blocks of digital computer
hardware such as transistors, logic gates and components built
from them, as a basis for understanding how a computer operates
at the hardware level. Basic networking, security, and other
"under the hood" topics. Use of virtual machines to
simulate hardware.
CIT
596: THEORY OF COMPUTATION
Prerequisite:
CIT 592 or equivalent.
Relations. Finite automata, regular languages, regular grammars,
and applications. Pushdown automata, trees, context-free grammars,
and applications. Turing machines. Introduction to computability
and complexity theory.
CIT
597: PROGRAMMING LANGUAGES AND TECHNIQUES III
Prerequisite:
CIT 591 or equivalent.
Advanced Java programming and programming tools, with emphasis
on developing for the Internet. Java topics will include serialization,
synchronization, reflection, advanced I/O, and servlets. This
course will cover current Internet-related technologies such
as XML and JavaScript, and may include JDBC, UML, PHP, SOAP,
and others. Substantial programming assignments, many
in Java. May be taken by MCIT and CIS graduate students.

Questions? Send email to the CIS
Graduate Coordinator, Mike Felker, mfelker@cis.upenn.edu
|