Explores a variety of models and optimization techniques for the solution of airline schedule planning problems. Schedule design, fleet assignment, aircraft maintenance routing, crew scheduling, robust planning, passenger mix, integrated schedule planning, and other topics. Solution techniques involving decomposition, e.g., Lagrangian relaxation, column generation and partitioning, and state-of-the-art applications of these techniques to airline problems. Explores a variety of models and optimization techniques for the solution of airline schedule planning and operations problems. Schedule design, fleet assignment, aircraft maintenance routing, crew scheduling, passenger mix, and other topics are covered. Recent models and algorithms addressing issues of model integration, robustness, and operations recovery are introduced. Modeling and solution techniques designed specifically for large-scale problems, and state-of-the-art applications of these techniques to airline problems are detailed.
The design of algorithms is studied, according to methodology and application. Methodologies include: divide and conquer, dynamic programming, and greedy strategies. Applications involve: sorting, ordering and searching, graph algorithms, geometric algorithms, mathematical (number theory, algebra and linear algebra) algorithms, and string matching algorithms. Analysis of algorithms is studied - worst case, average case, and amortized - with an emphasis on the close connection between the time complexity of an algorithm and the underlying data structures. NP-Completeness theory is examined along with methods of coping with intractability, such as approximation and probabilistic algorithms.
This course focuses on the fundamentals of computer algorithms, emphasizing methods useful in practice. Upon successful completion of this course, the student will be able to: explain and identify the importance of algorithms in modern computing systems and their place as a technology in the computing industry; indentify algorithms as a pseudo-code to solve some common problems; describe asymptotic notations for bounding algorithm running times from above and below; explain methods for solving recurrences useful in describing running times of recursive algorithms; explain the use of Master Theorem in describing running times of recursive algorithms; describe the divide-and-conquer recursive technique for solving a class of problems; describe sorting algorithms and their runtime complexity analysis; describe the dynamic programming technique for solving a class of problems; describe greedy algorithms and their applications; describe concepts in graph theory, graph-based algorithms, and their analysis; describe tree-based algorithms and their analysis; explain the classification of difficult computer science problems as belonging to P, NP, and NP-hard classes. (Computer Science 303)
In-depth study of an active research topic in computer graphics. Topics change each term. Readings from the literature, student presentations, short assignments, and a programming project. Animation is a compelling and effective form of expression; it engages viewers and makes difficult concepts easier to grasp. Today's animation industry creates films, special effects, and games with stunning visual detail and quality. This graduate class will investigate the algorithms that make these animations possible: keyframing, inverse kinematics, physical simulation, optimization, optimal control, motion capture, and data-driven methods. Our study will also reveal the shortcomings of these sophisticated tools. The students will propose improvements and explore new methods for computer animation in semester-long research projects. The course should appeal to both students with general interest in computer graphics and students interested in new applications of machine learning, robotics, biomechanics, physics, applied mathematics and scientific computing.
It is often necessary to have elements of an array sorted into ascending or descending order. There are several approaches or algorithms available for sorting unordered arrays. Choosing an appropriate algorithm may depend upon the situation, however, some well-known algorithms are just more efficient than others.
You will learn how to use an array to find a product. An array is a grid made with rows and columns. To use an array for multiplication, you use one factor to represent the number of rows you need, and the other factor to show how many columns you need.
" This course focuses on the algorithmic and machine learning foundations of computational biology, combining theory with practice. We study the principles of algorithm design for biological datasets, and analyze influential problems and techniques. We use these to analyze real datasets from large-scale studies in genomics and proteomics. The topics covered include: Genomes: biological sequence analysis, hidden Markov models, gene finding, RNA folding, sequence alignment, genome assembly Networks: gene expression analysis, regulatory motifs, graph algorithms, scale-free networks, network motifs, network evolution Evolution: comparative genomics, phylogenetics, genome duplication, genome rearrangements, evolutionary theory, rapid evolution "
16.225 is a graduate level course on Computational Mechanics of Materials. The primary focus of this course is on the teaching of state-of-the-art numerical methods for the analysis of the nonlinear continuum response of materials. The range of material behavior considered in this course will include: linear and finite deformation elasticity, inelasticity and dynamics. Numerical formulation and algorithms will include: Variational formulation and variational constitutive updates, finite element discretization, error estimation, constrained problems, time integration algorithms and convergence analysis. There will be a strong emphasis on the (parallel) computer implementation of algorithms in programming assignments. At the beginning of the course, the students will be given the source of a base code with all the elements of a finite element program which constitute overhead and do not contribute to the learning objectives of this course (assembly and equation-solving methods, etc.). Each assignment will consist of formulating and implementing on this basic platform, the increasingly complex algorithms resulting from the theory given in class, as well as in using the code to numerically solve specific problems. The application to real engineering applications and problems in engineering science will be stressed throughout.
Sequential decision-making via dynamic programming. Unified approach to optimal control of stochastic dynamic systems and Markovian decision problems. Applications in linear-quadratic control, inventory control, and resource allocation models. Optimal decision making under perfect and imperfect state information. Certainty equivalent and open loop-feedback control, and self-tuning controllers. Infinite horizon problems, successive approximation, and policy iteration. Discounted problems, stochastic shortest path problems, and average cost problems. Optimal stopping, scheduling, and control of queues. Approximations and neurodynamic programming.
This subject describes and illustrates computational approaches to solving problems in systems biology. A series of case-studies will be explored that demonstrate how an effective match between the statement of a biological problem and the selection of an appropriate algorithm or computational technique can lead to fundamental advances. The subject will cover several discrete and numerical algorithms used in simulation, feature extraction, and optimization for molecular, network, and systems models in biology.
Subject assesses the relationships between sequence, structure, and function in complex biological networks as well as progress in realistic modeling of quantitative, comprehensive functional-genomics analyses. Topics include: algorithmic, statistical, database, and simulation approaches; and practical applications to biotechnology, drug discovery, and genetic engineering. Future opportunities and current limitations critically assessed. Problem sets and project emphasize creative, hands-on analyses using these concepts. From the course home page: In addition to the regular lecture sessions, supplementary sections are scheduled to address issues related to Perl, Mathematica and biology.
This guide describes how to explain your research in a persuasive, well-organized paper modeled on those published in computer science journals. To illustrate specific elements of this type of paper, this guide refers to a published sample(Sagapyroon, A and Aloul, F.A., 2007. Using SAT-based techniques in power estimation. Microelectronics Journal 38, 706-715.) Access the full paper via the Rice proxy at http://www.elsevier.com/wps/find/journaldescription.cws_home/405904/description#description.
This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
This course is a continuation of the first-semester course titled Introduction to Computer Science I. It will introduce the student to a number of more advanced Computer Science topics, laying a strong foundation for future academic study in the discipline. The student will begin with a comparison between Java--the programming language utilized last semester--and C++, another popular, industry-standard programming language. The student will then discuss the fundamental building blocks of Object-Oriented Programming, reviewing what they have learned learned last semester and familiarizing themselves with some more advanced programming concepts. The remaining course units will be devoted to various advanced topics, including the Standard Template Library, Exceptions, Recursion, Searching and Sorting, and Template Classes. By the end of the class, the student will have a solid understanding of Java and C++ programming, as well as a familiarity with the major issues that programmers routinely address in a professional setting. Upon successful completion of this course, the student will be able to: Demonstrate an understanding of the concepts of Java and C++ and how they are used in Object-Oriented Programming; Demonstrate an understanding of the history and development of Object-Oriented Programming; Explain the importance of the C++ Standard Template Library and how basic components are used; Demonstrate a basic understanding of the importance of run-time analysis in programming; Demonstrate an understanding of important sorting and search routines in programming; Demonstrate an understanding of the generic usage of templates in programming for C++ and Java; Compare and contrast the features of Java and C++. (Computer Science 102; See also: Mathematics 303)
This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python programming language.
No restrictions on your remixing, redistributing, or making derivative works.
Give credit to the author, as required.
Your remixing, redistributing, or making derivatives works comes with some
restrictions, including how it is shared.
Your redistributing comes with some restrictions. Do not remix or make
derivative works.
Copyrighted materials, available under Fair Use and the TEACH Act for US-based
educators, or other custom arrangements. Go to the resource provider to see
their individual restrictions.