View undergraduate course grid View graduate course grid
An accelerated introduction to the fundamental concepts of computer science for students who lack a formal background in the field. Topics include algorithm design and program development; data types; control structures; subprograms and parameter passing; recursion; data structures; searching and sorting; dynamic storage allocation and pointers; abstract data types, such as stacks, queues, lists, and tree structures; generic packages; and an introduction to the principles of object-oriented programming. The primary programming language used in the course will be Java. Students should expect an average of 12-16 hours of programming and related course work per week.
An accelerated introduction to the fundamental concepts of computer science for students who lack a formal background in the field. Topics include algorithm design and program development; data types; control structures; subprograms and parameter passing; recursion; data structures; searching and sorting; dynamic storage allocation and pointers; abstract data types, such as stacks, queues, lists, and tree structures; generic packages; and an introduction to the principles of object-oriented programming. The primary programming language used in the course will be Java. Students should expect an average of 12-16 hours of programming and related course work per week.
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.
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 gives students whose interest is in software an introduction to hardware and the logical design of digital computers. Topics include design of basic logic modules and arithmetic units; fixed and microprogrammable control structures; computer architecture; memory organization; and input-output organization. Nowadays programmers need to understand architectural features and how they can and will impact program efficiency. Examples of such features are caches, TLBs, microProcessor architecture (pipelined execution), branch prediction and multi-core design. After class completion the student should have learned the important organizational features of modern computer systems. He/she will also learned the interaction between software, compiled to assembler instrutions, and the underlying computer architecture.
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.
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.
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.
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.
Computational technology and methods lie at the core of modern science, commerce, entertainment, and, regrettably, war. There are very powerful ideas underlying the field that have roots in mathematics, linguistics, engineering, and even philosophy. Some of its greatest inventions were born in cafés or as responses to a puzzle. Some recent algorithmic methods come from studying ants and evolution. This course introduces computational thinking as it builds on logic, linguistics, heuristics, artificial intelligence, and biological computing. The learning style combines straight lecture, interactive discussions of puzzles and games, and short computer programs (in the programming language Python which you will learn). Students make a few presentations during the semester about topics such as the solutions to computationally motivated puzzles, the relative power of linguistic descriptions, and their very own simulations of either an auction or a multi-bank elevator. The goal is for students to learn to think about computation from multiple perspectives and to synthesize those perspectives when faced with unsolved challenges.
Computational technology and methods lie at the core of modern science, commerce, entertainment, and, regrettably, war. There are very powerful ideas underlying the field that have roots in mathematics, linguistics, engineering, and even philosophy. Some of its greatest inventions were born in cafés or as responses to a puzzle. Some recent algorithmic methods come from studying ants and evolution. This course introduces computational thinking as it builds on logic, linguistics, heuristics, artificial intelligence, and biological computing. The learning style combines straight lecture, interactive discussions of puzzles and games, and short computer programs (in the programming language Python which you will learn). Students make a few presentations during the semester about topics such as the solutions to computationally motivated puzzles, the relative power of linguistic descriptions, and their very own simulations of either an auction or a multi-bank elevator. The goal is for students to learn to think about computation from multiple perspectives and to synthesize those perspectives when faced with unsolved challenges.
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.