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
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.
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.
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.
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).
An introduction to natural language processing, with an emphasis on methods for creating structured knowledge from text. Basic syntactic structures of English; constituent and dependency representations and parsers. Hidden Markov Models and maximum entropy models for part-of-speech and name tagging. Finite-state grammars and partial parsing. Probabilistic parsing. Lexical semantics. Relation and event extraction. Reference resolution. Machine translation. Supervised, semi-supervised, and active learning of linguistic models. Neural network models. There will be several pencil-and-paper exercises, several computer exercises, a final project, and a final exam.
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.
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.
Studies social, political & ethical values embodied in computer & information systems, & new media. Students examine work in the philosophy & social study of technology to understand the rich & sometimes troubling relationship between values & technical design. Course will ask: Is technology neutral? Who should make key decisions? What is the role of scientists & engineers? The course examines specific cases, such as, the Internet, search engines, web- cookies, & data mining from philosophical, empirical, & technical perspectives.
Cross-listing for MCC-GE 2295.
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.
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.