| Computer Science (School of Science) |
| CSCI-1010 Introduction to Computer Programming Computer programming is a way of thinking. A successful programmer needs to take a word problem, generate a pseudocode algorithm, and convert it to the syntax of a specific programming language. This course is an alternative to CSCI-1100 and is intended for students who want an introduction to this programming process but do not intend to do further course work in programming or computer science. Emphasis will be on the generation of the algorithms. Rather than using the complex syntax of a production language such as C or C++, this course will use Visual Basic. This allows us to concentrate on the fundamentals and not get sidetracked by language complexity. It also affords students a tool for creating useful personal applications or prototypes in the future. (Students cannot get credit for this course if they have already taken any other CSCI course.) Spring term annually. 4 credit hours |
| CSCI-1100 Computer Science I An introduction to algorithm design and analysis, programming, and use of the World Wide Web for information dissemination and retrieval. Additional topics include basic computer organization; internal representation of scalar and array data; use of top- down design and subprograms to tackle complex problems; abstract data types. Enrichment material as time allows. Interdisciplinary case studies, numerical and nonnumerical applications. Prerequisites: none. Students who have passed CSCI-1200 cannot register for this course.Fall and spring terms annually. 4 credit hours |
| CSCI-1190 Beginning C Programming for Engineers This course will teach elementary programming concepts using the C language for engineering students with little or no prior programming experience. Students cannot get credit for this course and any other Computer Science course. No prerequisites. Fall and spring terms annually. 1 credit hour |
| CSCI-1200 Computer Science II Programming concepts: functions, parameter passing, pointers, arrays, strings, structs, classes, templates. Mathematical tools: sets, functions, and relations, O-notation, complexity of algorithms, proof by induction. Data structures and their representations: data abstraction and internal representation, sequences, trees, binary search trees, associative structures. Algorithms: searching and sorting, generic algorithms, iterative and recursive algorithms. Methods of testing correctness and measuring performance. Prerequisite: CSCI-1100 or permission of instructor. Fall and spring terms annually. 4 credit hours |
| CSCI-2210 Programming in LISP Introduction to programming in LISP. LISP is a functional language that is widely used in artificial intelligence applications. Topics include LISP primitives, lists, procedure abstraction and recursion, and the use of LISP in artificial intelligence. Prerequisite: CSCI-1200 or equivalent. Fall and spring terms annually. 2 credit hours |
| CSCI-2220 Programming in Java Introduction to programming in the Java language. Java is an object-oriented programming language widely used in developing World Wide Web applications. Topics include class declarations and definitions, graphics, threads, exceptions, and writing Web applets. Prerequisite: CSCI-1200 or equivalent. Fall and spring terms annually. 2 credit hours |
| CSCI-2230 Programming in Perl Introduction to programming in the Perl language. Perl is a programming language widely used for complex shell scripts, Common GateWay Interface programs for World Wide Web pages, and rapid prototyping in more general application areas. Topics include text manipulation facilities, associative arrays, Unix system-call facilities, and application to Web and systems programming. Prerequisite: CSCI-1200 or equivalent. Fall and spring terms annually. 2 credit hours |
| CSCI-2300 Data Structures and Algorithms Data structures and algorithms, and the mathematical techniques necessary to design and analyze them. Basic data structures: lists, associative structures, trees. Mathematical techniques for designing algorithms and analyzing worst-case and expected-case algorithm efficiency. Advanced data structures: balanced trees, tries, heaps, priority queues, graphs. Searching, sorting. Algorithm design techniques: dynamic programming, greedy algorithms, divide-and-conquer, backtracking. Example graph, string, geometric, and numeric algorithms. Prerequisites: CSCI-1200 and MATH-1010. Fall and spring terms annually. 4 credit hours |
| CSCI-2400 Models of Computation This course introduces conceptual tools for reasoning about computational processes and the languages with which they are prescribed. It bears directly upon language translation, program verification, and computability. Topics to be covered include formal languages, finite automata, pushdown automata, nondeterminism, regular expressions, context-free grammars; parsing, compiler design basics; computability, Turing machines, Churchs thesis, unsolvability and intractability. Prerequisites: CSCI-2300 and MATH-2800. Fall and spring terms annually. 4 credit hours |
| CSCI-2500 Computer Organization Introduction to computer organization, assembler language, and operating systems. Computer systems organization: processors, memory, I/O. Digital logic: gates, Boolean algebra, digital logic circuits, memory, buses. Microprogramming. Machine level: instruction formats, addressing modes, instruction types, flow of control. Operating systems: virtual memory, virtual I/O instructions, processes, interprocess communication. Numeric representation. Assembler language: the assembly process, macros, linking, loading. Advanced architectures: RISC architectures, parallel architectures. Prerequisite: CSCI-1200. Fall and spring terms annually. 4 credit hours |
| CSCI-4020 Computer Algorithms Basic algorithm design strategies such as greedy, dynamic programming, backtracking, and branch-and-bound; main approaches, including exact, probabilistic, approximate, and heuristic algorithms; sequential and parallel algorithms; algorithms for networks, string matching, matrix operations, and cryptography; learning algorithms. Prerequisite: CSCI-2300. Spring term annually. 4 credit hours |
| CSCI-4050 Computability and Complexity This course discusses concepts of languages defined by formal grammars, Turing machines and rewriting systems, computability, Church-Turing thesis, decidable and undecidable problems, computational complexity, polynomial reducibility, NP-completeness, and Cooks theorem. Prerequisite: CSCI-2400. Fall term annually. 4 credit hours |
| CSCI-4100 Machine and Computational Learning Introduction to the theory, algorithms, and applications of automated learning (supervised, reinforcement, and unsupervised), how much information and computation are needed to learn a task, and how to accomplish it. Emphasis will be given to unifying approaches coming from statistics, function approximation, optimization and pattern recognition. Topics include: Decision Trees, Neural Networks, RBFs, Bayesian Learning, PAC Learning, Support Vector Machines, Gaussian processes, Hidden Markov Models. Prerequisites: familiarity with probability, linear algebra, and calculus. Fall term annually. 4 credit hours |
| CSCI-4150 Introduction to Artificial Intelligence Topics and techniques of artificial intelligence using the language LISP. Topics include search, knowledge representation, expert systems, theorem proving, natural language interfaces, learning, game playing, and computer vision. Techniques include pattern matching, data-driven programming, substitution rules, frames, heuristic search, transition networks, neural networks, and evolutionary computation. Development of programming proficiency in LISP is emphasized. Prerequisite: CSCI-2300. Fall term annually. 4 credit hours |
| CSCI-4190 Introduction to Robotic Algorithms An introduction to algorithms for robotic systems with a focus on motion planning, processing sensor information, world modeling, and handling uncertainty. Discusses application of techniques to mobile robotics and robotic manipulations. Emphasizes practical algorithms and implementing them in the laboratory. Prerequisites: CSCI-2300, MATH-1020, and MATH-2800. Spring term even-numbered years. 4 credit hours |
| CSCI-4210 Operating Systems Discussion of various aspects of computer operating systems design and implementation. Topics include I/O programming, concurrent processes and synchronization problems, process management and scheduling of processes, virtual memory management, device management, file systems, deadlock problems, system calls, and interprocess communication. Programming projects are required. Prerequisites: CSCI-2300 and CSCI-2500. Fall and spring terms annually. 4 credit hours |
| CSCI-4220 Network Programming An overview of the principles of computer networks, including a detailed look at the OSI reference model and an overview of various popular network protocol suites. Concentration on Unix interprocess communication, network programming using TCP/ IP, and distributed objects using CORBA. Prerequisite: CSCI-4210. Spring term annually. 4 credit hours |
| CSCI-4250 Computer Architectures Basic principles of computer design, including such topics as instruction sets, memory hierarchy, arithmetic, pipelining, vector processing, interconnection networks, and multiprocessors. The course emphasizes fundamental concepts and presents examples from existing computer systems. Prerequisites: CSCI-2500 and CSCI-2300. Fall term annually. 4 credit hours |
| CSCI-4260 Graph Theory Fundamental concepts and methods of graph theory and its applications in various areas of computing and the social and natural sciences. Topics include graphs as models, representation of graphs, trees, distances, matchings, connectivity, flows in networks, graph colorings, Hamiltonian cycles, traveling salesman problem, planarity. All concepts, methods, and applications are presented through a sequence of exercises and problems, many of which are done with the help of novel software systems for combinatorial computing. (Cross listed as MATH-4150. Students cannot obtain credit for both this course and MATH-4150). Prerequisite: CSCI-2300. Spring term even-numbered years. 4 credit hours |
| CSCI-4290 Robot Motion Planning This course is an introduction to algorithmic techniques for robot motion planning. Topics include configuration space representations, roadmap methods, cell decomposition and potential field techniques, randomized path planning, collision detection, multiple robot coordination, nonholonomic motion planning, and manipulation planning. These techniques will be motivated by applications to robot manipulators and mobile robots, assembly planning, computer-aided design, computer graphics, and molecular modeling. Prerequisites: CSCI-2300 and MATH-2010. Fall term, odd-years. 4 credit hours |
| CSCI-4320 Parallel Programming Techniques and methods for parallel programming: models of parallel machines and programs, efficiency and complexity of parallel algorithms. Paradigms of parallel programming and corresponding extensions to sequential programming languages. Overview of parallel languages and coordination languages and models; programming on networks of workstations. Basic parallel algorithms: elementary computation, matrix multiplication, sorting; sample scientific application. Prerequisites: CSCI-2400 and CSCI-2500. Spring term annually. 4 credit hours |
| CSCI-4380 Database Systems Discussion of the state of practice in modern database systems, with an emphasis on relational systems. Topics include database design, database system architecture, SQL, normalization techniques, storage structures, query processing, concurrency control, recovery, security, and new directions such as object-oriented and distributed database systems. Students gain hands-on experience with commercial database systems and interface building tools. Programming projects are required. Prerequisites: CSCI-2300. Fall and spring terms annually. 4 credit hours |
| CSCI-4390 Database Mining This course will provide an introductory survey of the main topics in data mining and knowledge discovery in databases (KDD), including: classification, clustering, association rules, sequence mining, similarity search, deviation detection, and so on. Emphasis will be on the algorithmic and system issues in KDD, as well as on applications such as Web mining, multimedia mining, bioinformatics, geographical information systems, etc. Prerequisites: CSCI-2300 and MATH-2800. Fall term annually. 4 credit hours |
| CSCI-4430 Programming Languages This course is a study of the important concepts found in current programming languages. Topics include language processing (lexical analysis, parsing, type-checking, interpretation and compilation, run-time environment), the role of abstraction (data abstraction and control abstraction), programming paradigms (procedural, functional, object-oriented, logic-oriented, generic), and formal language definition. Prerequisite: CSCI-2400. Fall and spring terms annually. 4 credit hours |
| CSCI-4440 Software Design and Documentation Software system design methodology emphasizing use of object oriented modeling of application domains and of software systems, and emphasizing the roles of written and oral communication in software engineering. Project management and software testing. Individual and team projects include specification, software architecture, user interfaces, and documentation of the phases of a project. Prerequisite: CSCI-2300. Fall and spring terms annually. 4 credit hours |
| CSCI-4600 The Human-Computer Interface An exploration of the languages, techniques, and mechanisms used to define and enhance communication between people and computer applications, both for input and output, in the general case and for a variety of important special domains. Use of graphics in the interface; multimedia environments; alternative I/O devices; issues in interface design. Interactive in-class exercises and activities. Substantial programming projects are assigned in a number of languages and for a variety of platforms. Students also prepare oral presentations based on material from the current scientific literature. Spring term annually. 4 credit hours |
| CSCI-4800 Numerical Computing A survey of numerical methods for scientific and engineering problems. Topics include numerical solution of linear and nonlinear algebraic equations, interpolation and least squares approximations, numerical integration and differentiation, eigenvalue problems, and an introduction to the numerical solution of ordinary differential equations. Emphasis is placed on efficient computational procedures including the use of library and student written procedures using high-level software such as MATLAB. (Cross listed as MATH-4800. Students cannot obtain credit for both this course and MATH-4800). Prerequisites: CSCI-1100 and MATH-2010 or ENGR-1100. Corequisite: MATH-2400. Fall term annually. 4 credit hours |
| CSCI-4820 Introduction to Numerical Methods for Differential Equations Derivation, analysis, and use of computational procedures for solving differential equations. Topics covered include ordinary differential equations (both initial value and boundary value problems) and partial differential equations. Runge-Kutta and multistep methods for initial value problems. Finite difference methods for partial differential equations including techniques for heat conduction, wave propagation, and potential problems. Basic convergence and stability theory. (Cross listed as MATH-4820. Students cannot obtain credit for both this course and MATH-4820). Prerequisite: MATH-4800 or CSCI-4800. Spring term annually. 4 credit hours |
| CSCI-4940 Readings in Computer Science 1 to 4 credit hours |
| CSCI-4960 Topics in Computer Science 1 to 4 credit hours |
| CSCI-6050 Computability and Complexity This course discusses modern concepts of computability and computational complexity theories. The Church-Turing thesis; variations of Turing Machines; Algorithms; Decidability; The Halting Problem; Reducibility; The Recursion Theorem; The Concept of Information; Time and Space Complexity; Intractability; NP-completeness and Cooks theorem. Prerequisite: CSCI- 2400 or equivalent. Fall term annually. 3 credit hours |
| CSCI-6090 Generic Software Design Study of the generic programming approach to design and systematic classification of software components. Techniques for achieving correctness, efficiency, and generality of algorithms, data structures, and memory management. Methods of structuring a library of generic software components for maximum usability are practiced in a significant design and implementation project. Prerequisite: CSCI-2300 or equivalent. Fall term annually. 4 credit hours |
| CSCI-6100 Machine and Computational Learning Introduction to the theory, algorithms, and applications of automated learning (supervised, reinforcement, and unsupervised), how much information and computation are needed to learn a task, and how to accomplish it. Emphasis will be given to unifying approaches coming from statistics, function approximation, optimization, and pattern recognition. Topics include: Decision Trees, Neural Networks, RBFs, Bayesian Learning, PAC Learning, Support Vector Machines, Gaussian processes, Hidden Markov Models. Prerequisites: familiarity with probability, linear algebra, and calculus. Fall term annually. 3 credit hours |
| CSCI-6130 Distributed Operating Systems A detailed discussion of issues in distributed operating system design and in computer security. The topics discussed include distributed algorithms, distributed deadlock detection and recovery, distributed concurrency control and synchronization, cryptography, and computer security. If both CSCI-6130 and CSCI-6140 are to be taken, CSCI-6140 should be taken first. Prerequisite: CSCI-4210 or CSCI-6140. Spring term odd-numbered years. 3 credit hours |
| CSCI-6140 Computer Operating Systems Topics include analysis of multiprogramming systems, virtual memory, computer system performance, and queuing theory. The course also discusses tools for synchronization of parallel programs and algorithms for mutual exclusion. Prerequisite: CSCI-4210 or permission of instructor. Fall term annually. 3 credit hours |
| CSCI-6150 Artificial Intelligence and Heuristics A survey course of machine implementation of processes thought to underlie thinking and perceiving. Main areas studied are modeling and representation of knowledge. AI systems and languages, reasoning, and problem solving. Current literature is discussed. Applications are chosen from computer game-playing programs, English dialogue, theorem proving, computer vision, robot implementation, and automatic programming. Emphasis is on the limitations and performance of techniques. Certain topics are programmed. Prerequisites: CSCI-2300 or equivalent or permission of instructor. Offered on availability of instructor. 3 credit hours |
| CSCI-6210 Design and Analysis of Algorithms Theoretical and empirical analysis of algorithms; tools for on-line monitoring of the algorithms performance. Advanced algorithms for polynomial problems; randomized heuristic and approximate algorithms. Problems include computation in discrete mathematics, number theory, linear algebra, graph theory, numerical and symbolic computing. Prerequisite: CSCI-4020 or equivalent. Fall term annually. 3 credit hours |
| CSCI-6220 Parallel Algorithm Design Models of parallel computation; deterministic and probabilistic PRAM model; P-complete problems. Techniques for designing efficient parallel algorithms. Parallel sorting prefix and suffix computation, list ranking, DAG evaluation, solving linear systems, graph and combinatorial problems. Prerequisite: CSCI-4020 or equivalent. Offered on availability of instructor. 3 credit hours |
| CSCI-6270 Computational Vision Introduction to the problems and techniques of vision from a computational perspective. Discussion includes computational theories of vision and particular topics such as image formation, image processing, linear systems, Fourier transforms, mathematical morphology, edge and contour detection, shape from shading, stereo, motion, surface reconstruction, robust techniques, three-dimensional representation and reasoning, object recognition, and computational geometry. Prerequisites: CSCI-2300 or equivalent and programming experience. Fall term annually. 3 credit hours |
| CSCI-6280 Mobile Robotics An in-depth study of algorithms for mobile robots focusing on motion planning, localization, mapping, navigation, sensor fusion, and robot software architectures. The unifying themes of this course are navigation in known and unknown environments and structuring software to control mobile robots. Class activities include readings from the research literature and a series of programming projects. Prerequisites: CSCI-2300, and MATH-2010 or permission of instructor. Fall term, even-numbered years. 3 credit hours |
| CSCI-6290 Robot Motion Planning This course is an introduction to algorithmic techniques for robot motion planning. Topics include configuration space representations, roadmap methods, cell decomposition and potential field techniques, randomized path planning, collision detection, multiple robot coordination, nonholonomic motion planning, and manipulation planning. These techniques will be motivated by applications to robot manipulators and mobile robots, assembly planning, computer-aided design, computer graphics, and molecular modeling. Prerequisites: CSCI-2300 and MATH-2010. Fall term, odd-numbered years. 3 credit hours |
| CSCI-6320 Graphical User Interfaces Building graphical user interfaces, or GUIs, are the norm in modern computing. Once a user interface concept is designed and tested, it must be implemented by programming teams on specific hardware platforms. How the interface is specified is a real challenge. Likewise, a number of standards and tools exist that establish the look and feel of the interface. Introduces the history of GUIs; shows how they can be specified; presents the concept of event-driven programming upon which they are based, and discusses their current status, and compares todays standards such as Macintosh, Motif, and MS Windows. It also predicts the future based on current computer capabilities and interface trends. Prerequisite: CISH-6330 or user interface design experience. 3 credit hours |
| CSCI-6360 Parallel Computing A survey of fundamental issues in design of efficient programs for parallel computers. The topics discussed include models of parallel machines and programs, efficiency of parallel algorithms, programming styles for shared memory, message passing, data parallelism, and using MPI in scientific parallel programs. Parallel programming project required. Prerequisite: CSCI-4210 or equivalent. Offered on availability of instructor. 3 credit hours |
| CSCI-6390 Database Mining This course will provide an introductory survey of the main topics in data mining and knowledge discovery in databases (KDD), including: classification, clustering, association rules, sequence mining, similarity search, deviation detection, and so on. Emphasis will be on the algorithmic and system issues in KDD, as well as on applications such as Web mining, multimedia mining, bioinformatics, geographical information systems, etc. Prerequisites: CSCI-2300 Data Structures and Algorithms and MATH-2800 Discrete Structures. Fall term annually. 3 credit hours |
| CSCI-6460 Advanced Database Management Topics This course is a continuation of CSCI-4380 and presents a more theoretical approach to logical and physical database design. It covers such topics as algorithms for logical database design, primary and secondary indexing techniques, query processing and query optimization, and database security. Problems of interfacing a database system with an operating system and some of the issues in implementing distributed database systems are also discussed. Much of the material comes from recent research papers. A term paper may be required. Prerequisite: CSCI-4380. Offered on availability of instructor. 3 credit hours |
| CSCI-6470 Database Systems for Engineering Applications A survey of traditional database systems is followed by an examination of differences between applications of those systems and engineering applications. Database systems for engineering applications are described including the concepts of long transactions, version control, object-oriented support, and concurrent engineering. Prerequisite: CSCI-4380 or equivalent or permission of instructor. Offered on availability of instructor. 3 credit hours |
| CSCI-6480 Theory of Compiler Design The use of language theory and automata theory in the design of compilers. Syntax-directed compilers. Lexical analysis and computer implementation of finite state machines. Syntax analysis, parsing versus restructuring. Top-down and bottom-up parsing algorithms. TD(k) and LR(k) grammars. The Younges algorithm. Syntax-directed transducers. Prerequisites: CSCI-6050 or equivalent and knowledge of PASCAL, C, or LISP. Offered on availability of instructor. 3 credit hours |
| CSCI-6800 Computational Linear Algebra Gaussian elimination, special linear systems (such as positive definite, banded, or sparse), introduction to parallel computing, iterative methods for linear systems (such as conjugate gradient and preconditioning), QR factorization and least squares problems, and eigenvalue problems. (Cross listed as MATH-6800. Students cannot obtain credit for both this course and MATH-6800). Prerequisite: MATH-4800 or CSCI-4800 or permission of instructor. Fall term even-numbered years. 4 credit hours |
| CSCI-6820 Numerical Solution of Ordinary Differential Equations Numerical methods and analysis for ODEs with applications from mechanics, optics, and chaotic dynamics. Numerical methods for dynamic systems include Runge-Kutta, multistep and extrapolation techniques, methods for conservative and Hamiltonian systems, methods for stiff differential equations and for differential-algebraic systems. Methods for boundary value problems include shooting and orthogonalization, finite difference and collocation techniques, and special methods for problems with boundary or shock layers. (Cross listed as MATH-6820. Students cannot obtain credit for both this course and MATH-6820.) Prerequisite: MATH-4800 or CSCI-4800 or permission of instructor. Spring term odd-numbered years. 4 credit hours |
| CSCI-6840 Numerical Solution of Partial Differential Equations Numerical methods and analysis for linear and nonlinear PDEs with applications from heat conduction, wave propagation, solid and fluid mechanics, and other areas. Basic concepts of stability and convergence (Lax equivalence theorem, CFL condition, energy methods). Methods for parabolic problems (finite differences, method of lines, ADI, operator splitting), methods for hyperbolic problems (vector systems and characteristics, dissipation and dispersion, shocks capturing and tracking schemes), methods for elliptic problems (finite difference and finite volume methods). (Cross listed as MATH-6840. Students cannot obtain credit for both this course and MATH-6840). Prerequisite: MATH-4800 or CSCI-4800 or permission of instructor. Fall term odd-numbered years. 4 credit hours |
| CSCI-6860 Finite Element Analysis Galerkins method and extremal principles, finite element approximations (Lagrange, hierarchical and 3-D approximations, interpolation errors), mesh generation and assembly, adaptivity (h-, p-, hp-refinement). Error analysis and convergence rates. Perturbations resulting from boundary approximation, numerical integration, etc. Time dependent problems including parabolic and hyperbolic PDEs. Applications will be selected from several areas including heat conduction, wave propagation, potential theory, and solid and fluid mechanics. (Cross listed as MATH-6860. Students cannot obtain credit for both this course and MATH-6860.) Prerequisite: MATH-4800 or CSCI-4800 or permission of instructor. Spring term even-numbered years. 4 credit hours |
| CSCI-6900 Computer Science Seminar Presentation of current developments in computer science. Reports by students. 1 credit hour |
| CSCI-6940 Readings in Computer Science 1 to 3 credit hours |
| CSCI-6960 Topics in Computer Science 1 to 3 credit hours |
| CSCI-6980 Masters Project Active participation in a masters-level project under the supervision of a faculty adviser, leading to a masters project report. Grades of IP are assigned until the masters project has been approved by the faculty adviser. If recommended by the adviser, the masters project may be accepted by the Office of Graduate Education to be archived in the Library. Grades will then be listed as S. 1 to 9 credit hours |
| CSCI-6990 Masters Thesis Active participation in research, under the supervision of a faculty adviser, leading to a masters thesis. Grades of IP are assigned until the thesis has been approved by the faculty adviser and accepted by the Office of Graduate Education to be archived in a standard format in the library. Grades will then be listed as S. 1 to 9 credit hours |
| CSCI-9990 Dissertation Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of IP are assigned until the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education to be archived in a standard format in the library. Grades will then be listed as S. Variable credit hours |
|
Rensselaer Polytechnic Institute (RPI), 110 8th St., Troy, NY 12180. (518) 276-6000 Please direct questions regarding this site to catalog@rpi.edu. |