" This course covers concepts and techniques for the design and implementation of large software systems that can be adapted to uses not anticipated by the designer. Applications include compilers, computer-algebra systems, deductive systems, and some artificial intelligence applications. Topics include combinators, generic operations, pattern matching, pattern-directed invocation, rule systems, backtracking, dependencies, indeterminacy, memoization, constraint propagation, and incremental refinement. Substantial weekly programming Assignments and Labs are an integral part of the subject. There will be extensive programming Assignments and Labs, using MIT/GNU Scheme. Students should have significant programming experience in Scheme, Common Lisp, Haskell, CAML or some other "functional" language."
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 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 course presents fundamental software development and computational methods for engineering and scientific applications. Object-oriented software design and development is the focus of the course. Weekly programming problems cover programming concepts, graphical user interfaces, numerical methods, data structures, sorting and searching, computer graphics and selected advanced topics. Emphasis is on developing techniques for solving problems in engineering, science, management, and planning. The Java programming language is used.
This course examines fundamental software development and computational methods for engineering, scientific and managerial applications. Emphasis is placed on object-oriented software design and development. Students engage in active learning using laptop computers (available on loan). Assignments cover programming concepts, graphical user interfaces, numerical methods, data structures, sorting and searching, computer graphics and selected advanced topics. The Java® programming language is used.
This text excerpted from Beyond Engineering: How Society Shapes Technology by Robert Pool and reprinted on the FRONTLINE Web site looks at the impact of nuclear power.
Studies how randomization can be used to make algorithms simpler and more efficient via random sampling, random selection of witnesses, symmetry breaking, and Markov chains. Models of randomized computation. Data structures: hash tables, and skip lists. Graph algorithms: minimum spanning trees, shortest paths, and minimum cuts. Geometric algorithms: convex hulls, linear programming in fixed or arbitrary dimension. Approximate counting; parallel algorithms; online algorithms; derandomization techniques; and tools for probabilistic analysis of algorithms.
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.