Course Descriptions
Computer and Information Sciences

The course numbering system is alphanumeric beginning with a four-letter department name followed by a dash, a three-digit course number, and a zero. All courses are 3 credit hours unless otherwise indicated. Most of the courses have required prerequisites, some courses may have recommended but not required co-requisites that provide useful complementary information. Below are the four-letter subject codes for Computer and Information Sciences.

CISH    Computer and Information Sciences Hartford
CSCI    Computer Science

Suffix Numbers
4000-4990       Courses open for credit to both advanced undergraduate and graduate students
6000-6990       Courses designed for graduate credit

NOTE: Asterisk (*) denotes an "immigration" course which will not count towards the M.S. in Computer Science, M.S. in Information Technology, or M.Eng. in Computer and Systems Engineering degrees. Such courses may count towards other degrees but consult with you advisor before registering.

CISH - Computer and Information Sciences Hartford

CISH-4000 Computer Programming*
Course covers programming in a high-level popular programming language (typically Java or C). Syntax, semantics, data types and structures, flow of control, functions, other data and code abstractions (e.g., classes, objects, encapsulation, inheritance, polymorphism), input/output, recursion, macros, preprocessing, compiling, debugging, performance evaluation, time and space complexities, metaprogramming, programming paradigms are covered.

CISH-4010 Discrete Mathematics and Computer Theory*
Course covers foundations of discrete mathematics and fundamentals of computer theory. Topics include propositional logic, truth tables, quantifiers, sets, set operations, sequences, complexity of algorithms, divisibility, matrix manipulations, proofs, induction, recursion, counting and the pigeonhole principle, permutations, combinations, repeated trials, expectation, relations (properties, representation, equivalence, Warshall's algorithm), Boolean algebra, functions, logic gates, minimizing, Finite State Machines, Turing machines, Regular expressions, context free grammars, language recognizers, derivation trees, pushdown automata.

CISH-4020 Object Structures*
A study of object oriented software component design. This course introduces the object oriented paradigm and its use in organizing software structures including arrays, stack, queues, lists, trees, graphs, recursion, classes, objects, encapsulation, inheritance, polymorphism. Programming assignments require the use of an object oriented language. Prerequisite: CISH-4000.

CISH-4030 Structured Computer Architecture*
Introduction to computer architecture; the structure and function of a computer system consisting of processors, memory, I/O modules, and its internal interconnections. Primary focus on the attributes of a system visible to an assembly level programmer. Topics include: digital logic, VLSI components, instruction sets, addressing schemes, memory hierarchy, cache and virtual memories, integer and floating point arithmetic, control structures, buses, RISC vs. CISC, multiprocessor and vector processing (pipelining) organizations. Examples are drawn from contemporary (e.g. Intel Pentium, PowerPC) microcomputers.

CISH–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. Prerequisite: CISH-4020 and CISH-4030.

CISH–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 direction 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. Prerequisite: CISH-4020 or equivalent.

CISH-4960 Topics in Computer and Information Sciences
1 to 4 credit hours.

CISH-6150 Artificial Intelligence
Artificial Intelligence as study of rational resource-bounded agents, problem solving by search, adversarial and cooperative search, propositional and first-order logic, knowledge representation, expert systems, theorem proving, planning as search, uncertainty, probabilistic reasoning, fuzzy sets and rough sets, machine learning, communication, perception, computer vision, robotics. The course will culminate in the research project. Prerequisite: CISH-4010 and CISH-4020.

CISH-6160 Intelligent Systems (Evolutionary Computation or Neural Networks or Machine Learning)
The course in a 3-year rotation cycle will cover either machine learning, or neural networks, or evolutionary computation. Machine Learning topics: decision trees, Bayesian learning, PAC learning, Support Vector Machines, Hidden Markov Models, reinforcement learning. Neural Networks topics: artificial neurons, supervised and unsupervised learning, expressiveness, neurcomputers, Single-Layer Perceptron, Backpropagation, Hopfield associative memory, Boltzmann Machine, Adaptive Resonance Theory, Vector Quantization, Self-Organizing Feature Maps. Evolutionary Computations topics: foundations and historical perspective, Genetic Algorithms, Evolutions Strategies, Evolutionary Programming, Genetic Programming, representation, fitness, selection and variation operators, termination conditions, Evolutionary Artificial Neural Networks, coevolution, Particle Swarm Optimization, Ant Colony Optimization, Artficial Immune Systems, multiobjective optimization, evolutionary robotics and evolvable hardware. The course will culminate in the research project. Prerequisite: CISH-6150.

CISH-6170 Mobile Robotics
Introduction to embodied intelligent agents, cybernetics roots, inspiration from nature, robotic reactive, deliberative goal-based and utility-based architectures, interactions with environment under uncertainty, sensors and actuators, robots mobility, kinematics and dynamics, optimal problem solving as search under bounded resources, robot persistent memory, reinforcement and evolutionary learning, distributed robotics, interactive cooperating and competing multi-robot systems, ALife, problems of reproduction and universal construction, feelings, emotions and consciousness. The course will culminate in the research project. Prerequisite: CISH-6150.

CISH-6180 Data Mining, Search Engines & Distributed Databases
The course provides an in-depth treatment of the main topics in data mining and knowledge discovery in databases (KDD), including classification, clustering, association rules, sequence mining, similarity search, deviation detection. Emphasis will be on security and secure management and manipulation of data, as well as on applications such as Web mining, multimedia mining, bioinformatics, geographical informations systems, etc. Information retrieval, search engines, semantic web and some aspects of distributed and parallel databases will be covered. Prerequisite: CSCI-4380.

CISH-6240 Information Security
The course covers applied aspects of information security. An overview of techniques of information security will be discussed including protection mechanisms, authentication, malware, insider and outsider attacks, Trojan horses, viruses, worms, spyware, rootkits, firewalls, antivirus techniques and tools, computer forensics, legal and social issues of information security. This is a complementary course to CISH-6490 Cryptography and Network Security.

CISH-6250 Network Design and Cloud Computing
This is a comprehensive course in which the underpinning concepts, models, platforms and technologies of cloud computing are presented and analyzed mainly from a network design perspective. The course provides an in-depth treatment of the salient aspects of cloud computing and covers topics such as underpinning networking technologies and standards for cloud computing; cloud computing architecture, and network design and implementation strategies; Software as a Service (SaaS); Platform as a Service (PaaS); Infrastructure as a Service (IaaS). Participants will understand the decision-making process for adopting a cloud migration strategy and will be introduced to the capabilities of technologies and development tools (including Eclipse and other IDEs, Heroku, and Elastic Beanstalk) for cloud application building. Prerequisites: ECSE-4670 and CISH-6490.

CISH-6480 Compilers
The course will deal with theoretical and application aspects of compilation techniques. Topics covered include: design and application of compilation techniques; compilation phases; front-end and back-end; bootstrapping techniques; compiler construction tools; lexical analysis; syntax analysis; LL(k), LR(k) and LALR parsers; abstract syntax; semantic analysis; activation records; intermediate code generation; machine-independent code optimization; code generation; machine-dependent code optimization; selected advanced topics. The course will culminate in the research project designing a complete simple compiler. Prerequisite: CSCI-6050 and CISH-4020.

CISH-6490 Cryptography and Network Security
The course introduces the principles of number theory and the practice of network security and cryptographic algorithms. Topics include: primes, random numbers, modular arithmetic and discrete logarithms; conventional or symmetric encryption (DES, AES, Blowfish, Twofish, Rijndael) and public key or asymmetric encryption (RSA, Diffie-Hellman), key management, hash functions (MD5, SHA-1, RIPEMD-160, HMAC), digital signatures, certificates and authentication protocols (X.509, DSS, Kerberos), electronic mail security (PGP, S/MIME), web security and protocols for secure electronic commerce (IPSec, SSL, TLS, SET). Prerequisite: CISH-4010, CISH-4020, ECSE-4670.

CISH–6510 Web Application Design and Development
Students will learn approaches to the design, development, and maintenance of Web Sites. Students will study software and information architectures for the Web, design techniques for distributed Web-based applications, and methods and tools for the creation and maintenance of Web sites. Study will encompass the major components of a Web site including browsers and client applications, Internet protocols that link client to server, and server applications. Issues of performance, security, and usability will be examined. Prerequisite: CISH-4020 or CSCI-2300. Prior experience with HTML and Java. ECSE-4670 and CSCI-4380 recommended.

CISH-6520 Developing Enterprise Applications
Discussion of the architecture, design, and implementation of modern multi-tiered applications. Students will develop components that can be installed in containers provided by application servers, and learn how to access container-managed services like persistence, security, and distributed transactions. Asynchronous messaging through the use of message queues and topics will also be discussed. Web services and service oriented architectures will be examined as an integration mechanism for leveraging existing systems. Common design patterns will also be evaluated for large-scale system development. The course will use the Java 2 Enterprise Edition as an example of available API's and reference implementations. Prerequisite: CISH-6510 or equivalent Java experience.

CISH-6530 Contemporary Informatics
This course investigates the nature and role of informatics as a major enabler. We study modern informatics by analyzing the use of informatics in several exemplar fields such as biological sciences, finance, and health care. The course in a rotation cycle covers in successive years such important current or future areas such as bioinformatics, semantic web, social networks, computational economics, hypercomputing or quantum computing.

CISH–6780 Research Methods
Course will review the major considerations and tasks involved in conducting scientific research, particularly in the area of computer science. It introduces the essential aspects of designing, supporting and conducting a research project. Those who successfully complete the course will be able to: produce a well-developed research proposal; select an appropriate methodology with which to conduct the research and defend the methodology of their selection; understand the various tasks required to carry out the research; find the resources needed to guide them through the research process and the documentation of its findings.

CISH–6960 Topics in Computer and Information Sciences
Contact the Department of Engineering and Science for descriptions of recently offered special topic classes.
1 to 3 credit hours.

CISH–6980 Master's Project
Students select their Master Project topic with consultation with the project supervisor. The topic attempts to address and solve some open research problem and/or be applicable. It is required to present Master Project at the end of semester and to deliver Master Project document with details of implementation if applicable. In some justified circumstances it is possible to get an extension for one more semester. Details may be obtained from the Department of Engineering and Science. 3 credits. Prerequisite: CISH-6780.

CISH–6990 Master's Thesis
Master Thesis requires a more substantial research oriented and/or applied work than Master Project and typically is scheduled for two semesters. Students select their Master Thesis topic with consultation with the thesis supervisor. The topic can be theoretical and/or applied. The Master Thesis culminates in public presentation and Master Thesis document. In some justified circumstances it is possible to get an extension maximum for two more semesters. Details may be obtained from the Department of Engineering and Science. 6 credits. Prerequisite: CSCI-6050 or CSCI-6210 or CISH-6480.

CSCI - Computer Science

CSCI–6050 Computability and Complexity
This course discusses modern concepts of computability and computational complexity theories covering easy, hard and unsolvable problems. The topics covered include finite automata; regular expressions; pushdown automata; context-free grammars; Turing Machines; Church-Turing thesis,Variations of Turing Machines; Algorithms; Decidability; the Halting Problem; Reducibility; Recursively enumerable but not recursive languages; Non-recursively enumerable languages;The Recursion theorem; Time and Space Complexity; Intractability; NP, NPcompleteness and Cook's theorem; NP-hard, PSPACE; PSPACE-completeness; co-NP; RP, ZPP; reduction techniques for intractable problems. Prerequisite: CISH-4010. Co-requisite: CSCI-6210.

CSCI–6210 Design and Analysis of Algorithms
Theoretical and empirical analysis and design of algorithms; tools for on–line monitoring of the algorithm's performance. Advanced algorithms for polynomial and exponential problems: graph, greedy, divide and conquer, dynamic programming, network flow, NP, NP-complete, PSPACE, PSPACE-complete, approximate, local search and randomized algorithms. Problems include computation in discrete mathematics, number theory, linear algebra, graph theory, numerical and symbolic computing. Prerequisite: CISH-4010. Co-requisite: CSCI-6050.

CSCI-6360 Parallel Computing
The course deals with shared memory and message-passing parallel programming techniques on massively parallel and distributed computers. Topics covered include: basic concepts of concurrent programming; concurrent languages and environments; properties of parallel programs; testing, debugging and program correctness of parallel programs; processes and synchronization; shared-variable programming; locks; barriers; semaphores; monitors; distributed programming; message-passing; process algebras; Petri nets; RPC; MPI; sockets; RMI; Corba. Several programming assignments are assumed. Prerequisites: CISH-4210 and CISH-4020.

CSCI–6960 Topics in Computer and Information Sciences
Contact the Department of Engineering and Science for descriptions of recently offered special topic classes. 1 to 3 credit hours.

Program Enrichment
Additionally, subject to sufficient student demand the following courses can be offered at RPI Hartford: Numerical Methods; Operations Research; Hypercomputation; Functional & Logic Programming; Metaprogramming & Automatic Problem Solving; Computer Graphics & Human Computer Interaction; Massively Parallel Architectures; VLSI Design & Nanotechnology; Brain Information Processing; Natural Computing; Agent-Based Adaptive Autonomous Systems; Bioinformatics; Natural Language Processing; Expert Systems; Support Vector Machines & Kernel Machines; Dealing with Incompleteness & Uncertainty; Fault-Tolerant Computing; Real-Time Systems; Computability & Complexity of Economics; Big Data; Data Communications; Distributed Systems; Software Metrics; Software Testing; Parallel & Distributed Software Systems; Multimedia Databases.


Return to Catalog Table of Contents


Back to top


Updated: 2016-05-16, 15:33