CIS Homeline
   
ABET
Note from Undergraduate Chair
Degree Programs
  CIS Minor
Submatriculation
Academic Advising
  Penn Tutoring Services
Penn Mentoring Program
CIS Courses
 

Course Descriptions
Fall Course Schedule
Spring Course Schedule
Summer Course Schedule

Research at CIS
  Undergraduate Research
Student Groups and Activities
Admissions
Financial Aid
Job and Internship Opportunities
Contacts
   

 

CIS Home divider Penn Engineering divider PENN   spacer  

 
 CIS Course Descriptions 

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 106- Visualizing the Past/Peopling the Past

Crosslisted with ANTH 258, ANTH 620

Most people’s information about the Past is drawn from coffee table picture books, popular movies, video games, documentaries about discoveries of “ancient, mysterious, and lost” civilizations, and tours often lead by guides of limited or even dubious credentials. How are these ideas presented, formed, and circulated? Who creates and selects the information presented in this diverse media? Are these presentations accurate? Do they promote or hurt scientific explanations?  Can the artistic, aesthetic, and scientific realms be bridged to effectively promote and interpret the past? How can modern technologies be applied to do a better job at presenting what is difficult to experience firsthand? This class will focus on case studies, critiques, and methods of how archaeology and the past are created, presented and used in movies, museums, games, the internet, and art.

 

Each year, the studio-seminar focuses on a project. In addition to exploring general concepts of archaeology and the media, students will work in teams to produce an interactive, digital media exhibit using the latest modeling visualization programs for presenting the sacred landscape of the Inca capital of Cuzco, Peru. Cuzco is one of the most important UNESCO World Heritage sites and visited by nearly a million tourists a year. Potential class projects include fly-throughs of architectural and landscape renderings, simulations of astronomy and cosmology, modeling of human behavior within architectural and landscape settings, and study artifacts in the Penn Museum.

Offered Fall 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 2009 and Spring 2010.

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 2010.

CIS 120 - Programming Languages and Techniques I

Prerequisite(s): Some previous programming experience

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 2009 and Spring 2010.

CIS 121 - Programming Languages and Techniques II

Prerequisite(s): CIS 120, CIS 160

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 2009 and Spring 2010.

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, Cogs 001, PPE 140

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 2009.

CIS 160 - Mathematical Foundations of Computer Science

What are the basic mathematical concepts and techniques needed in computer science? This course provides an introduction

to proof principles and logics, functions and relations, induction principles, combinatorics and graph theory, as well as a

rigorous grounding in writing and reading mathematical proofs.

Offered Fall 2009 and Spring 2010.

CIS 190 - C++ Programming

Prerequisite(s): CIS 240

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.

Offered Fall 2010.


CIS 191 - Using and Understanding Unix and Linux

Prerequisite(s): CIS 110or equivalent

Unix, in its many forms, runs much of the world's computer infrastructure, from cable modems and cellphones to the giant clusters that power Google and Amazon. This half-credit course provides a thorough introduction to Unix and Linux. Topics will range from critical basic skills such as examining and editing files, compiling programs and writing shell scripts, to higher level topics such as the architecture of Unix and its programming model.  The material learned is applicable to many classes, including CIS 240, CIS 331, CIS 341, CIS 371/372, and CIS 380. Prerequisite(s):  CIS 110

Offered Spring 2010.

CIS 192 - Python Programming

Prerequisite(s): CIS 110, CIS 120 or ESE 112

The Python programming is an amazing, concise, and powerful language that is useful for tasks large and small.  As a scripting language, it has a clear and straight forward syntax allowing for easy code reuse, but it is also object-oriented with extensive libraries which makes it surprisingly useful for large projects as well. Python's power and clear syntax has made it one of the most popular scripting languages in use today,  "a must know language." This course will provide an introduction to this remarkable language using hands-on experience, revolving around programming assignments that are designed to give students a command of the language and exposure to a wide range of library modules. 

Offered Spring 2010.

CIS 193 - C# Programming

Prerequisite(s): CIS 110


C# is the premier programming language for the .NET framework.  Over the last decade, the language has evolved to meet the needs of a variety of programming styles while supporting the ever-growing capabilities of the the .NET runtime and libraries.  This course provides a thorough introduction to the C# language and the .NET framework, building on the skills gained in the introductory programming courses (CIS 110, CIS 120, or ESE 112).  In addition to providing the student with a solid background in C#, this course also explores topics that the .NET platform exposes such as object-oriented design, .NET runtime internals, and others based on class interest.  A series of short, weekly homework assignments reinforces the concepts introduced in class and a group-based final project of the students' design allows them to apply their C# knowledge toward a substantial problem.

Offered Spring 2010 .


CIS 240 - Introduction to Computer Architecture

Prerequisite(s): CIS 110 or equivalent 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 Fall 2009.

CIS 261 - Discrete Probability, Stochastic Processes, and Statistical Inference

Prerequisite(s): CIS 160

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 Fall 2009.

CIS 262 - Automata, Computability, and Complexity

Prerequisite(s): CIS 160

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 2009.

CIS 277 -  Introduction to Computer Graphics Techniques

Prerequisite(s): 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 2010.

CIS 298 - Study Abroad
CIS 320 - Introduction to Algorithms

Prerequisite(s): CIS 120,121,160,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 2010.

CIS 330 - Design Principles of Information Systems

Prerequisite(s):CIS 121 and CIS 160

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 2009.

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 2009.

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.

 Not offered in 2009-2010.   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 368 - 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 371 - Computer Organization and Design

Prerequisite(s): CIS 240

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 2010.

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 2009.

CIS 390 - Robotics

Prerequisite(s): MATH 240, PHYS 150 or MEAM 110/147.

The rapidly evolving field of robotics includes systems designed to replace, assist, or even entertain humans in a wide variety of tasks. Recent examples include planetary rovers, robotic pets, medical surgical-assistive devices, and semi-autonomous search-and-rescue vehicles. This introductory-level course presents the fundamental kinematic, dynamic, and computational principles underlying most modern robotic systems.  The main topics of the course include:  coordinate transformations, manipulator kinematics, mobile-robot kinematics, actuation and sensing, feedback control, vision, motion planning, and learning.  The material is reinforced with hands-on lab exercises including basic robot-arm control and the programming of vision-guided mobile robots.

Offered Fall 2009.

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 Python.

Offered Fall 2010.

CIS 398 - Quantum Computer and Information Science

Prerequisite(s): CIS 160, 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 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 2009.

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 2010.

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 2009-2010.

CIS 430 - Intro to Human Language Technology

Prerequisite(s): 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 2009.

 

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

Prerequisite(s): Knowledge of Java programming; CIS 121 & 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 2010.

CIS 460 - Computer Graphics

Prerequisite(s): CIS 120 and 121

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 2009.

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(s): 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 2009.

CIS 477 - Mathematical Methods/Techniques for Linguistics and Natural Language Processing

Prerequisite(s): Phil 006 or instructor's permission. Crosslisted 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 2009.

CIS 480 - Distributed Systems more info..

Prerequisite(s): CIS 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 real-time embedded systems. The primary objectives of this course are to

study the principles and concepts of real-time embedded computing and to provide students hands-on experience in developing embedded applications. This course covers the concepts and theory necessary to understand and program embedded real-time systems. This includes concepts and theory for real-time system design, analysis, and certification; programming and operating

systems for embedded systems; and concepts, technologies, and protocols for distributed embedded real-time systems.

The course will cover a variety of existing systems and technologies, e.g., real-time kernels, virtual machines, architectural

description language, formal method tools, synchronous and logical-time programming paradigms, and certification methods. 

The course requires active student participation in-group projects.  Each group will be responsible for the design and

implementation of a life-critical embedded system such as a pacemaker. The group projects are intended to complement the

learning of principles and concepts through the application of theory in practice and the development of experimental skills in

building embedded applications.

Offered Spring 2009

CIS 482 - Logic In Computer Science

Pre-requisite(s): CIS 160

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 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.

Not offered 2008-2009.

 
CIS GRADUATE COURSES
 
   
CIS 500 - SOFTWARE FOUNDATIONS more info

Prerequisite: Substantial mathematical maturity (four undergraduate courses in math or theoretical CS).  Undergraduate-level coursework in programming languages, compilers, or logic will also be helpful.

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 2010
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 2009
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 2009
CIS 505  - SOFTWARE SYSTEMS more info
Prerequisite: Undergraduate-level knowledge of Operating Systems and Networking, programming experience (CIT 594 or equivalent).
This course provides an introduction to fundamental concepts of distributed systems, and the design principles for building large scale
computational systems. Topics covered include communication, concurrency, programming paradigms, naming, managing shared state, caching, synchronization, reaching agreement, fault tolerance, security, middleware, and distributed applications
Offered Fall 2009 - will not be offered in Spring 2010
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 2009-2010
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 Spring 2010 & Summer 2010
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.
Offered Spring 2010
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 2009
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.

Offered Spring 2010
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.
Offered Fall 2009
CIS 534 - MULTICORE PROGRAMMING & ARCHITECTURE (Intro to Paralellel Processing - this title will show in students' transcripts taking CIS 534 in Spring 2010)  

Prerequisites: CIS 371 or CIS 501, and significant programming  experience.

This course is a pragmatic examination of multicore programming and the hardware architecture of modern multicore processors. Unlike the sequential single-core processors of the past, utilizing a multicore processor requires programmers to identify parallelism and write explicitly parallel code. Topics covered include: the relevant architectural trends and aspects of multicores, approaches for writing multicore software by extracting data parallelism (vectors and SIMD), thread-level parallelism, and task-based parallelism, efficient synchronization, and program profiling and performance tuning. The course focuses primarily on mainstream shared-memory multicores with some coverage of graphics processing units (GPUs). Cluster-based supercomputing is not a focus of this course. Several programming assignments and a course project will provide students first-hand experience with programming, experimentally analyzing, and tuning multicore software. Students are expected to have a solid understanding of computer architecture and strong programming skills (including experience with C/C++).

Offered Spring 2010
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 2009
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.
Offered Spring 2010
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 2010
CIS 540  - Principles of Embedded Computation more info
Prerequisites: This course assumes mathematical maturity, commensurate with either ESE 210 (Introduction to Dynamical Systems), or CIS 262 (Introduction to Theory of Computation). It is suitable for students who have undergraduate degree in computer science, or computer engineering, or electrical engineering. It is also suitable for Penn undergraduates in CIS or CE as an upper-level elective.
This course is focused on principles underlying design and analysis of computational elements that interact with the physical environment. Increasingly, such embedded computers are everywhere, from smart cameras to medical devices to automobiles. While the classical theory of computation focuses on the function that a program computes, to understand embedded computation, we need to focus on the reactive nature of the interaction of a component with its environement via inputs and outputs, the continuous dynamics of the physical world, different ways of communication among components, and requirements concerning safety, timeliness, stability, and performance. Developing tools for approaching design, analysis, and implementation of embedded systems in a principled manner is an active research area. This course will attempt to give students a coherent introduction to this emerging area.
Offered Fall 2009
CIS 541 -Embedded and Cyber Physical Systems more info

Prerequisites: This course should be taken after Priciples of Embedded Computation course or Embedded Systems Design course.

This course is focused on cyber physical systems with emphasis on real-time issues. Cyber phsyical systems are integrations of computation and communication with physical processes. Embedded computers monitor and control physical processes in real-time. As these embedded computers are increasingly networked, it is believed that there will be a revolutionary transformation. Just as personal computers have transformed from word processors to global communications devices for information gathering and sharing, embedded computers will change from small self-contained systems to cyber-physical systems by sensing, monitoring, controlling our physical environment. The course is to study priciples, methods, and techiques for building cyber-physical systems that are safety critical. Topics will include requirements, mental models, assurance cases, hazard analysis, real-time programming and communication, vertification and validation, and evidence-based certification. The course will include a series of projects that will implement safety-critical embedded systems (e.g., pacemaker, infusion pumps).

Offered Spring 2010
CIS 550  - DATABASE AND INFORMATION SYSTEMS more info
Prerequisite: CIT 594 and CIT 592 or equivalent.
Introduction to the theory and practice of data management systems, including databases and data integration. The Entity-Relationship approach as a modeling tool. The relational model, algebra and calculus. Database design and relational normalization. Views and their role in security and integration. Physical data organization and indexing structures. Query execution and optimization. Updates and integrity: transaction management, concurrency control and recovery techniques. XML and database-backed Web sites.
Offered Fall 2009
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 2010
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 being offered 2009-2010
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 2009
CIS 555 - INTERNET AND WEB SYSTEMS more info

Prerequisites: at least one year of Java programming. Database and operating systems familiarity recommended.
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. Topics include XML-based information exchange; Web services and other remote procedure calls; caching, replication, and hierarchical structures;
distributed consensus and transactions.  Of particular focus will be techniques for locating machines, resources, and data (including ranked web search, publish/subscribe systems, directories, and peer-to-peer protocols). This course 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, with some components developed individually and some in teams.

Offered Spring 2010
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 being offered 2009-2010
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 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 2009
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.

Offered Spring 2010
CIS 564 - GAME DESIGN AND DEVELOPMENT more info
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.
Offered Fall 2009
CIS 565 (formerly 665) - GPU PROGRAMMING AND ARCHITECTURE  

Prerequisite: CIS 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++.

Offered Spring 2010
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.
Not scheduled to be offered 2009-2010
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.
Not scheduled to be offered 2009-2010
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.
Not scheduled to be offered 2009-2010
CIS 573 - SOFTWARE ENGINEERING more info
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.
Offered Summer 2009
CIS 580 - MACHINE PERCEPTION more info
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.
Offered Spring 2010
CIS 581- COMPUTER VISION & COMPUTATIONAL PHOTOGRAPHY more info
This is an introductory course to Computer Vision and Computational Photography.  This course will explore three topics: 1) image morphing, 2) image matching and stitching, and 3) image recognition.  This course is intended to provide a hands-on experience with  interesting things to do on images/videos. The world is becoming image-centric.  Cameras are now found everywhere, in our cell phones, automobiles, even in medical surgery tools. Computer vision technology has led to latest innovations in areas such as Hollywood movie production, medical diagnosis, biometrics, and digital library.  This course is suited for students from all Engineering backgrounds, who have the basic knowledge of linear algebra and programming, and a lot of imagination.
Offered Fall 2009
CIS 582 - LOGIC IN COMPUTER SCIENCE more info
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.
Not scheduled to be offered 2009-2010
CIS 610 - ADVANCED GEOMETRIC METHODS IN COMPUTER SCIENCE more info
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).
Not scheduled to be offered 2009-2010
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.
Not scheduled to be offered 2009-2010
CIS 620 - ADVANCED TOPICS IN ARTIFICIAL INTELLIGENCE more info
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.
Not scheduled to be offered 2009-2010
CIS 630 - ADVANCED TOPICS IN IN NATURAL LANGUAGE PROCESSING more info
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.
Offered Spring 2010
CIS 635 - ADVANCED COMPUTATIONAL BIOLOGY (BIOL 537)  
Prerequisite: Biol 536 or permission of instructor.
Discussion of special research topics.
Offered Fall 2009
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.
Not scheduled to be offered 2009-2010
CIS 640 - ADVANCED TOPICS IN SOFTWARE SYSTEMS more info
Prerequisite: CIS 505 or equivalent.
Different topics selected for each course offering.
Not scheduled to be offered 2009-2010
CIS 650 - ADVANCED TOPICS IN DATABASES more info
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.
Not scheduled to be offered 2009-2010
CIS 660 - ADVANCED TOPICS IN COMPUTER GRAPHICS & ANIMATION more info
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.
Offered Spring 2010
CIS 670 - ADVANCED TOPICS IN PROGRAMMING LANGUAGES more info

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.

Not scheduled to be offered 2009-2010
CIS 673 - COMPUTER-AIDED VERIFICATION more info
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.
Not scheduled to be offered 2009-2010
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.
Offered Fall 2009.
CIS 680 - ADVANCED TOPICS IN MACHINE PERCEPTION more info
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.
Not scheduled to be offered 2009-2010
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.
Offered Fall 2009.
CIS 700 - SPECIAL TOPICS  
One-time course offerings of special interest.
Offered Fall 2009 and Spring 2010
CIS 895 - TEACHING PRACTICUM  
Enrollment for students participating in Teaching Practicum.
Offered Fall 2009 and Spring 2010.
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.
Offered Fall 2009 and Spring 2010.
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.
Offered Fall 2009 and Spring 2010
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. 
Offered Fall 2009 and Spring 2010
CIS 996 - RESEARCH SEMINAR more info
Introduction to research being conducted in the department. Mandatory for first year doctoral students - taken as fifth course for no credit at no cost.
Offered Fall 2009
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.

Offered Fall 2009 and Spring 2010.
MCIT COURSES
 
CIT 590 -PROGRAMMING LANGUAGES AND TECHNIQUES more info

Prerequisite: none

Introduction to fundamental concepts of programming and computer science for students who have little or no experience in these areas. 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.   This course is for students who do not have an academic background in computer science and who are not pursuing the Master's in Computer Information Technology and who are not graduate students in the CIS Department.  Students in SEAS graduate programs such as EE, TCOM, BIOT, MEAM, & MSE, as well as students outside SEAS, such as those in Cell & Molecular Biology (CAMB) and Genomics & Computational Biology (GCB) in the Medical School, as well as graduate students from other disciplines in the University will find this course useful.

Offered Spring 2010
CIT 591 - PROGRAMMING LANGUAGES AND TECHNIQUES I more info
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.
Offered Fall 2009.
CIT 592 - MATHEMATICAL FOUNDATIONS OF COMPUTER SCIENCE more info
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.
Offered Fall 2009.
CIT 593 - INTRODUCTION TO COMPUTER ARCHITECTURE more info
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.
Offered Fall 2009.
CIT 594 - PROGRAMMING LANGUAGES AND TECHNIQUES II more info
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.
Offered Spring 2010
CIT 595 - DIGITAL SYSTEM ORGANIZATION AND DESIGN more info
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.
Offered Spring 2010
CIT 596 - THEORY OF COMPUTATION more info
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. 
Offered Spring 2010
CIT 597 - PROGRAMMING LANGUAGES AND TECHNIQUES III more info
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.

Offered Fall 2009

Semester of course offerings above may be subject to change due to departmental priorities, student needs, faculty availability, etc.

Return to CIS Graduate Program web page - www.cis.upenn.edu/grad/


 
 
CIS Home divider Penn Engineering divider PENN   spacer
  Send comments on this page to