Project on extensive image representation, transformation, and rendering. Theories and techniques. The background and foundations of AI, intelligent agent-based representation, problem solving and search algorithms, game playing, introduction to LISP, knowledge representation and knowledge-based systems. Introduction to other sub-areas such as: natural language processing, connectionist models and evolutionary algorithms. Robotic manipulation systems: geometric transformations in 3-D space, forward and inverse manipulator kinematics and dynamics, trajectory generation, open-loop kinematics based manipulation control, robotic languages, and AI applications to robotics.
Algorithms and architectural design principles involved in the development of a game and game engine. Advanced data structures and algorithms for pathfinding and collision detection, physics-based methods for modeling game dynamics, 3D transformations, data-driven design, quality issues for games and game engines, and methods of testing.
Prereq: CMPS or permission of instructor required.
Game engine development, graphics, user input, animation, sound, music and artificial intelligence, with an emphasis on 3D graphics. Prereq: CMPS or permission of instructor. Architecture and system models of networked computing components that coordinate through message passing. Many-core and many-task methods; grid, GPU-based, and cloud computing; programming systems and models including MPI, web services, and map reduce; virtualization. Abstract basis of machines and programming: automata, context free grammars and Turing machines; equivalence and non-equivalence of classes of devices; Chomsky hierarchy; incomputability; computational complexity.
Formal, functional, and practical issues of design and implementation of imperative, functional, and declarative languages; denotational semantics; data types and abstraction, control abstraction, separate compilation units, and concurrency. Introduction to compilers and language translation.
Aspects of lexical, syntactic and semantic analysis including language theory and implementation. Finite state machines, regular expressions, top-down, bottom-up parsing techniques. Code generation and optimization, subroutine calls, symbol table management, LL and LR parser generators. Human factors of interactive software and styles, design principles and considerations, development methods and tools, interface quality, and evaluation methods.
Software engineering ethics, software processes, project planning, requirement engineering, agile methods, system modeling, architectural design, testing, security, resilience, distributed software engineering, consideration of tradeoffs, and impact of software solutions. Process and thread management, concurrency, deadlock, CPU scheduling; memory management, virtual memory, file systems; virtualization, and protection and security.
Concepts, architecture, data models, design and implementation using entity-relationship model or class diagram. Declaration and manipulation of data using SQL. Advanced SQL, including stored procedures, triggers, and transactions. Embedded SQL and web-based database application development, normalization, optimization, and database security. Major software development project requiring integration and application of knowledge and skills acquired in algorithms, data structures, programming, and software design. Restriction: Permission of instructor required. A station is denoted by S i,j where i is either 1 or 2 and indicates the assembly line the station is on, and j indicates the number of the station.
The time taken per station is denoted by a i,j. Each station is dedicated to some sort of work like engine fitting, body fitting, painting and so on. So, a car chassis must pass through each of the n stations in order before exiting the factory. The parallel stations of the two assembly lines perform the same task. Continuing on the same line incurs no extra cost, but transferring from line i at station j — 1 to station j on the other line takes time t i,j.
Each assembly line takes an entry time e i and exit time x i which may be different for the two lines. Give an algorithm for computing the minimum time it will take to build a car chassis. The below figure presents the problem in a clear picture: The following information can be extracted from the problem statement to make it simpler:. Breaking the problem into smaller sub-problems: We can easily find the ith factorial if i-1 th factorial is known.
Can we apply the similar funda here? If the minimum time taken by the chassis to leave station S i, j-1 is known, the minimum time taken to leave station S i, j can be calculated quickly by combining a i, j and t i, j. T1 j indicates the minimum time taken by the car chassis to leave station j on assembly line 1. T2 j indicates the minimum time taken by the car chassis to leave station j on assembly line 2. Base cases: The entry time e i comes into picture only when the car chassis enters the car factory.
Recursive Relations: If we look at the problem statement, it quickly boils down to the below observations: The car chassis at station S 1,j can come either from station S 1, j-1 or station S 2, j PhD students who wish to take this course more than four times need to request a special permission and provide adequate academic justification. Prerequisites: None This course introduces students to the fundamentals of computer programming as students design, write, and debug computer programs using the programming language Python. Prerequisites: None Students study the principles of relational database design and learn to build, populate, manipulate and query databases using SQL on datasets relevant to their interests.
Prerequisites: None This course uses a project-based learning approach towards the study of web technologies and web programming.
BSC. COMPUTER SCIENCE
Prerequisites: None An accelerated introduction to the fundamental concepts of computer science for students who lack a formal background in the field. Prerequisites: None An introduction to theory, computational techniques, and applications of linear algebra, probability and statistics. These three areas of continuous mathematics are critical in many parts of computer science, including machine learning, scientific computing, computer vision, computational biology, natural language processing, and computer graphics.
The course teaches a specialized language for mathematical computation, such as Matlab, and discusses how the language can be used for computation and for graphical output. No prior knowledge of linear algebra, probability, or statistics is assumed. Methods for numerical applications in the physical and biological sciences, engineering, and finance. Basic principles and algorithms; specific problems from various application areas; use of standard software packages. This is a capstone course based on compilers and modern programming languages.
The topics covered include structure of one-pass and multiple-pass compilers; symbol table management; lexical analysis; traditional and automated parsing techniques, including recursive descent and LR parsing; syntax-directed translation and semantic analysis; run-time storage management; intermediate code generation; introduction to optimization; and code generation. The course includes a special compiler-related capstone project, which ties together concepts of algorithms, theory formal languages , programming languages, software engineering, computer architecture, and other subjects covered in the MS curriculum.
This project requires a substantial semester-long programming effort, such as construction of a language compilation or translation system that includes lexical and syntactic analyzers, a type checker, and a code generator. The theme of this course is an "applied case study" and focuses on fixed income markets.
Topics covered include an overview of the markets, the inner workings of an investment bank, the market players, and where software engineers fit in. Students will be grouped into small teams to build a financial application using practical software engineering principles. Each team will build a risk management framework, starting with basic components. In particular, we will present an overview of the Linux operating system, command line tools find, grep, sed , programming tools GIT, Eclipse, DTrace , web and database tools Apache, MySQL , and system administration tools.
We will also cover scripting languages such as shell and Python. Introduction to the central mathematical concepts that arise in computer science. Emphasis is on proof and abstraction. Topics include proof techniques; combinatorics; sets, functions, and relations; discrete structures; order of magnitude analysis; formal logic; formal languages and automata. There are no formal prerequisites, but the pace of the class requires that students can cope with a significant level of mathematical sophistication. Prerequisites: Corequisite: linear algebra. Numerical linear algebra.
Approximation theory. Quadrature rules and numerical integration. Nonlinear equations and optimization. Ordinary differential equations. Elliptic equations. Iterative methods for large, sparse systems.
Academic : Department of Computer Science : University of Pune
Parabolic and hyperbolic equations. Prerequisites: None Database system architecture. Modeling an application and logical database design. The relational model and relational data definition and data manipulation languages. Design of relational databases and normalization theory.
Physical database design. Concurrency and recovery. Query processing and optimization. This is a capstone course emphasizing large-scale database systems. This course studies the internals of database systems as an introduction to research and as a basis for rational performance tuning. Topics include concurrency control, fault tolerance, operating system interactions, query processing, and principles of tuning.
Database capstone projects involve topics such as design, concurrency control, interactions, and tuning. These projects include some or all of the following elements: formation of a small team, project proposal, literature review, interim report, project presentation, and final report. This course presents modern software engineering techniques and examines the software life cycle, including software specification, design, implementation, testing, and maintenance.
Object-oriented design methods are also considered. Software engineering projects involve creation of a large-scale software system and require some or all of the following elements: formation of a small team, project proposal, literature review, interim report, project presentation, and final report. Prerequisites: None The recent explosion in the availability of genome-wide data such as whole genome sequences and microarray data led to a vast increase in bioinformatics research and tool development. Bioinformatics is becoming a cornerstone for modern biology, especially in fields such as genomics.
It is thus crucial to understand the basic ideas and to learn fundamental bioinformatics techniques. The emphasis of this course is on developing not only an understanding of existing tools but also the programming and statistics skills that allow students to solve new problems in a creative way. Prerequisites: None There are many cognitive tasks that people do easily and almost unconsciously but that have proven extremely difficult to program on a computer. Artificial intelligence is the problem of developing computer systems that can carry out these tasks.
This course covers problem solving and state space search; automated reasoning; probabilistic reasoning; planning; and knowledge representation. Recommended: At least one advanced, proof-based mathematics course The course covers a wide variety of topics in machine learning, pattern recognition, statistical modeling, and neural computation. Prerequisites: DS-GA This course covers graphical models, causal inference, and advanced topics in statistical machine learning. The tentative target is to read articles from Wikipedia. Prerequisites: None The class will begin with introductory concepts of network protocols across different layers of the network stack including routing, transport, naming, addressing and connect them to the core building blocks of the Internet.
Examined from three points of view: 1 problems, appropriate assumptions, and algorithmic solutions; 2 linguistic constructs; and 3 some typical systems. Prerequisites: Topics determine prerequisites. Topics vary each semester. Prerequisites: None This class primarily concerns the design and analysis of Monte Carlo sam-pling techniques for the estimation of averages with respect to high dimen-sional probability distributions. Prerequisites: Prerequisites vary according to topic.
This course revolves around several problems new to computer science derived from games or puzzles in columns for Dr. The idea is to train students to face a new problem, read relevant literature, and come up with a solution. The solution entails winning a contest against other solutions. The winner receives candy. The course is for highly motivated, mathematically adept students. It is open to supported Ph. Class size has been around 10 in the past, and instructor and students have all gotten to know one another very well.
Algorithmic and programming knowledge is the main prerequisite. It also helps to be familiar with a rapid prototyping language such as Matlab, Mathematica, K, or Python, or to be completely fluent in some other language. Provides experience using a variety of advanced language systems and experimental system prototypes. Prerequisites: None This course first introduces the fundamental mathematical cryptographic algorithms, focusing on those that are used in current systems.
To the extent feasible, the mathematical properties of the cryptographic algorithms are justified, using elementary mathematical tools. Second, actual security mechanisms and protocols, mainly those employed for network traffic that rely on the previously introduced cryptographic algorithms, are presented. Prerequisites: Strong mathematical background The primary focus of this course is on definitions and constructions of various cryptographic objects, such as pseudorandom generators, encryption schemes, digital signature schemes, message authentication codes, block ciphers, and others, time permitting.
The class tries to understand what security properties are desirable in such objects, how to properly define these properties, and how to design objects that satisfy them. Once a good definition is established for a particular object, the emphasis will be on constructing examples that provably satisfy the definition. Thus, a main prerequisite of this course is mathematical maturity and a certain comfort level with proofs. Secondary topics, covered only briefly, are current cryptographic practice and the history of cryptography and cryptanalysis.
Basics of computational number theory for cryptography. Identification protocols. Digital signatures. Public-key encryption. Additional selected topics.