CIS Homeline
   
Programs
 

Doctoral
MSE
CGGT
MCIT
Robotics
Embedded Systems

Research
  Seminars and colloquia
People
  Faculty
Staff
Students
Courses
 

Descriptions and prerequisites
Time and room roster
Penn in Touch
Written Preliminary Exam I

 

Fall Course Schedule
Spring Course Schedule
Summer Course Schedule

Application
  Procedures and forms
Funding
Costs
Graduate handbook
Administrative resources
Other resources
  For women
For international students
English language courses
Recent graduates
Penn and Philadelphia
General Resources
arrow Employment

 

CIS Home divider Penn Engineering divider PENN   spacer
 

 
 CIS Departmental Course Descriptions  

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


 
 
CIS Home divider Penn Engineering divider PENN   spacer