View undergraduate course grid View graduate course grid
This course builds directly on the foundation developed in PAC I, covering the essentials of computer organization through the study of assembly language programming and C, as well as introducing the students to the analysis of algorithms. Topics include: (1) Assembly language programming for the Intel chip family, emphasizing computer organization, the Intel x86 instruction set, the logic of machine addressing, registers and the system stack. (2) Programming in the C language, a general-purpose programming language which also has low-level features for systems programming. (3) An introduction to algorithms, including searching, sorting, graph algorithms and asymptotic complexity. Examples and assignments reinforce and refine those first seen in PAC I and often connect directly to topics in the core computer science graduate courses, such as Programming Languages, Fundamental Algorithms, and Operating Systems
Reviews a number of important algorithms, with emphasis on correctness and efficiency. The topics covered include solution of recurrence equations, sorting algorithms, selection, binary search trees and balanced-tree strategies, tree traversal, partitioning, graphs, spanning trees, shortest paths, connectivity, depth-first and breadth-first search, dynamic programming, and divide-and-conquer techniques.
Reviews a number of important algorithms, with emphasis on correctness and efficiency. The topics covered include solution of recurrence equations, sorting algorithms, selection, binary search trees and balanced-tree strategies, tree traversal, partitioning, graphs, spanning trees, shortest paths, connectivity, depth-first and breadth-first search, dynamic programming, and divide-and-conquer techniques.
Discusses the design, use, and implementation of imperative, object-oriented, and functional programming languages. The topics covered include scoping, type systems, control structures, functions, modules, object orientation, exception handling, and concurrency. A variety of languages are studied, including C++, Java, Ada, Lisp, and ML, and concepts are reinforced by programming exercises.
Discusses the design, use, and implementation of imperative, object-oriented, and functional programming languages. The topics covered include scoping, type systems, control structures, functions, modules, object orientation, exception handling, and concurrency. A variety of languages are studied, including C++, Java, Ada, Lisp, and ML, and concepts are reinforced by programming exercises.
This course teaches the design and implementation techniques essential for engineering robust networks. Topics include networking principles, Transmission Control Protocol/Internet Protocol, naming and addressing (Domain Name System), data encoding/decoding techniques, link layer protocols, routing protocols, transport layer services, congestion control, quality of service, network services, programmable routers and overlay networks.
Problems and objectives of computer graphics. Vector, curve, and character generation. Interactive display devices. Construction of hierarchical image list. Graphic data structures and graphics languages. Hidden-line problems; windowing, shading, and perspective projection. Curved surface generation display.
Basic techniques of computer vision and image processing. General algorithms for image understanding problems. Study of binary image processing, edge detection, feature extraction, motion estimation, color processing, stereo vision, and elementary object recognition. Mathematical, signal processing, and image processing tools. Relation of computer vision algorithms to the human visual system.
This course introduces the fundamental concepts and methods of machine learning, including the description and analysis of several modern algorithms, their theoretical basis, and the illustration of their applications. Many of the algorithms described have been successfully used in text and speech processing, bioinformatics, and other areas in real-world products and services. The main topics covered are probability and general bounds; PAC model; VC dimension; perceptron, Winnow; support vector machines (SVMs); kernel methods; decision trees; boosting; regression problems and algorithms; ranking problems and algorithms; halving algorithm, weighted majority algorithm, mistake bounds; learning automata, Angluin-type algorithms; and reinforcement learning, Markov decision processes (MDPs).
Discusses the design of general and specialized Web search engines and the extraction of information from the results of Web search engines. Topics include Web crawlers, database design, query language, relevance ranking, document similarity and clustering, the “invisible” Web, specialized search engines, evaluation, natural language processing, data mining applied to the Web, and multimedia retrieval.
The design of systems that can learn by reading. Ontology and knowledge base. Principal processing components: text segmentation, lexical analysis, name recognition and classification, parsing and syntactic regularization, word sense disambiguation, predicate-argument analysis, reference resolution, discourse structure. Joint inference methods. Knowledge acquisition strategies.
This is a project-oriented, team-organized course in which students will take responsibility for one or two processing components: selecting methods, making class presentations, creating and maintaining code. A good working knowledge of corpus-trained methods for these components is required (using log-linear or deep models). Implementation will be in Java, so good programming skills in Java are needed, along with a commitment to meeting javadoc documentation standards.
The tentative target is to read articles from Wikipedia.
This is a capstone course. A course in computer networks and large-scale distributed systems. Teaches the design and implementation techniques essential for engineering both robust networks and Internet-scale distributed systems. The goal is to guide students so they can initiate and critique research ideas in networks and distributed systems and implement and evaluate a working system that can handle a real-world workload. Topics include routing protocols, network congestion control, wireless networking, peer-to-peer systems, overlay networks and applications, distributed storage systems, and network security.
Topics vary each semester.
Cross-listing for MATH-GA 2012.
Topics vary each semester.
Topics vary each semester.
Topics vary each semester.
Topics vary each semester.
Topics vary each semester.
Topics vary each semester.
Topics vary each semester.
This is a capstone course that connects students directly with real-world information technology problems. The goal of this course is to teach the skills needed for success in real-world information technology via a combination of classroom lectures and practical experience with large projects that have been specified by local “clients.” The typical clients are primarily companies, but can also be government agencies or nonprofit organizations. Each project lasts for the entire semester and is designed to involve the full software project life cycle. Examples of such projects are development of software to solve a business problem, including specifying requirements, writing and testing prototype code, and writing a final report; and evaluation of commercial software to be purchased to address a business problem, including gathering requirements, designing an architecture to connect the new software with existing systems, and assessing the suitability of available software products.
Large-scale programming project or research in cooperation with a faculty member.
Large-scale programming project or research in cooperation with a faculty member.
Large-scale programming project or research in cooperation with a faculty member.
Large-scale programming project or research in cooperation with a faculty member.
Large-scale programming project or research in cooperation with a faculty member.
Large-scale programming project or research in cooperation with a faculty member.
Large-scale programming project or research in cooperation with a faculty member.
Large-scale programming project or research in cooperation with a faculty member.
The need for floating-point arithmetic, the IEEE floating-point standard, and the importance of numerical computing in a wide variety of scientific applications. Fundamental types of numerical algorithms: direct methods (e.g., for systems of linear equations), iterative methods (e.g., for a nonlinear equation), and discretization methods (e.g., for a differential equation). Numerical errors: can you trust your answers? Uses graphics and software packages such as Matlab. Programming assignments.
Students majoring in the department are permitted to work on an individual basis under the supervision of a full-time faculty member in the department if they have maintained an overall GPA of 3.0 and a GPA of 3.5 in computer science and have a study proposal that is approved by the director of undergraduate studies. Students are expected to spend about three to six hours a week on their project.
Teaches mathematical concepts using the Python programming language. Introduces students to use the basic features of Python operations with numbers and strings, variables, Boolean logic, control structures, loops, and functions. These operations are then applied to the mathematical principles of growth and decay, geometric progressions, compound interest, exponentials, permutations, and probability.
Teaches mathematical concepts using the Python programming language. Introduces students to use the basic features of Python operations with numbers and strings, variables, Boolean logic, control structures, loops, and functions. These operations are then applied to the mathematical principles of growth and decay, geometric progressions, compound interest, exponentials, permutations, and probability.