CIS Program

Course # Units (sem) Course Name Prerequisite Time Offered


CS 052 4 Introduction to Object-Oriented Programming One year of Calculus
CS 111 3 Discrete Mathematics
CS 121 4 Foundation of CIS – Data Structures & Algorithms CS 052 or equivalent
CS 130 3 Foundation of CIS – Computer Organization CS 052 or equivalent


CS 310 3 Theory of Computing None
CS 311 3 Theory of Algorithms CS 121, CS 111
CS 312 3 Object-Oriented Analysis & Design CS 121
CS 322 3 Software Engineering CS 121, CS 111
CS 323 3 Advanced Object Oriented Programming CS 052 or equivalent, CS 121
CS 331 3 Operating System Principles CS 130, CS 121
CS 350 3 Software Project Management None
CS 355 3 Entrepreneurship None


CS 314 3 Theory of Communication Networks
CS 315 3 Applied Cryptography and Internet Security None
CS 324 3 Internet Application, Design and Development CS 121, CS 322
CS 326 3 Database Systems CS 111, CS 121
CS 327 3 Parallel and High Performance Computing CS 311
CS 332 3 System Administration CS 331
CS 334 3 Performance Analysis of Computer Systems
CS 335 3 Introduction to EDA None
CS 399 3 Special Topics in CIS Consent of Instructor
CS 391 3 Individual Study Consent of Dean and Instructor


CS 395 3 Capstone Preparation Second-year standing
CS 396 3
Masters Thesis
CS 395
CS 390 3 Practicum in Software Engineering CS 395





CS 052  Introduction to Object-Oriented Programming

This is an introduction to object-oriented programming using Java and C++. It prepares students for the COMP121 Data Structures and Algorithms course, as well as other CS and CIS courses that rely on Java and C++ programming skills. The course covers main OOP concepts, Java and C++ syntax structures and classes.

CS 111    Discrete Mathematics

This is an introduction to discrete mathematics and discrete structures. The course examines topics including: propositional logic; Boolean algebra; introduction to set algebra; infinite sets; relations and functions; recurrences; proof techniques; introduction to number theory; elementary combinatorics and graph theory; applications to computer science. Students should be able to apply discrete numerical methods to solve problems which arise in computational sciences. Three hours of instructor-led class time per week 1 including discussions and problem sets.

CS 320 Data Structures and Algorithms
This is a foundation course that prepares for all subsequent CIS courses. Students will develop skills in design of algorithms and efficient implementation of Java programs for creating and processing data structures. The course covers principles of objectoriented programming through indepth discussion of linear and nonlinear data structures, such as linked lists, stacks, queues, trees, tables and graphs. The pivotal topics include recursion, dynamic memory management, searching and sorting algorithms. The course also focuses on further development of Java programming skills, including GUI components, exception handling, generic classes, collections, multithreading and basics of networking.
CS 130 Computer Organization
Functional organization and operation of digital computers. Coverage of assembly language, addressing, stacks, argument passing, arithmetic operations, decisions, macros, modularization, linkers, debuggers. Device drivers will be considered.


CS 310 Theory of Computing
Theory of computation comprises the fundamental mathematical properties of computer hardware, software, and applications. This theory deals with computational models (or abstract machines) and investigates computational power of these models. The finite automata, pushdown automata and Turing machines are the computational models that are widely used in applications and theoretical research. This course aims to provide students with a foundation for using these models both for practical and theoretical needs.
CS 311    Theory of Algorithms
Review of main abstract data types. Sorting algorithms: correctness, space and time complexity. Graph algorithms. Algorithmic Paradigms: divideandconquer, greedy, dynamic programming. NPcompleteness and approximation algorithms.   The course aims at providing students with the tools and techniques for designing efficient algorithms.
Prerequisites: CS 320, CS 111
CS 312 Object-Oriented Analysis & Design
The UP (Unified Process) and the principle of iterative and incremental software development, UP artifacts, usage of UML (Unified Modeling Language) notation for representation results of analysis and design, studying and applying of design patterns, usage of CASE (ComputerAssisted Software Engineering) tools to aid in analysis and design.
Prerequisites: CS 320
CS 322   Software Engineering
Software life cycle processes including analysis, design, modifying and documenting large software systems. Topics include software development paradigms, system engineering, functionbased analysis and design, and objectoriented analysis and design. Students will implement a working software system in a team environment.
Prerequisites: CS 320
CS 323    Advanced Object Oriented Programming
Basic principles of object oriented analysis and design utilizing UML, advanced object oriented programming principles, design patterns, frameworks and toolkits, Agile software design processes. Development of a midsize programming project working in teams.
Prerequisites: CS 320
CS 331 Operating System Principles
The organization and structure of modern operating systems. System level programming in Windows and Unix Operating Systems.
Prerequisites: CS 320, CS 330
CS 350 Software Project Management
Methods and procedures for managing a software development project. Includes notions of project planning, time, cost and resource estimation, project organizational types, staffing (team assembly) and training considerations, leading and motivating computer personnel, and methods for monitoring and controlling the progress of a project. Quality management and risk assessment are considered. Case Studies of successes and failures will be studied.
CS 355 Entrepreneurship
Seminar exploring the complexities of creating and sustaining an entrepreneurial venture. We concentrate on the impact of innovative behavior and its implication to decision making. The primary focus of the course is on the behaviors involved in forming new enterprises: recognizing and evaluating opportunities, developing a network of support, building an organization, acquiring resources, identifying customers, estimating demand, selling, writing and presenting a business plan, and exploring the ethical issues entrepreneurs face. The course consists of case studies and discussion, inclass exercises, readings, guest speakers, and an outside project.


CS 313 Advanced Topics in Algorithms

Course Description tailored to course content when offered.

Prerequisites: CS 311

CS 314 Theory of Communication Networks

This course investigates several communication problems in networks; one-to-all, all-to-all, one-to-many. Specific communication models are considered by placing constraints on the sets of messages, senders, and receivers, on the network’s topology, on the rules that govern message transmissions, and on the amount of information about the network known to individual network members. One goal is to design network structures which are inexpensive to construct yet allow fast communication. The second major goal is to design efficient communication algorithms for commonly used networks under different communication models. These require knowledge of graph theory, combinatorics, and design and analysis of algorithms. The students are required to complete theoretical problem sets and proofs in order to develop advanced knowledge of efficient communication algorithms and combinatorial properties of certain types of networks. Students will also complete and present in class a project based on recent research articles in order to develop advanced knowledge and research skills to formulate and investigate real research problems in the future. Some students may complete programming projects by implementing and comparing performances of different communication algorithms. Three hours of instructor-led class time per week including discussions and problem sets.

CS 315    Applied Cryptography
Introduction of basic principles and methods of modern applied cryptography. Demonstration how cryptography can help to solve information security problems and our focus will be basically internet security. Students will learn to understand and evaluate real life security problems that cryptography can solve. They will also discuss various open problems in applied cryptography. Finally, students will implement cryptographic primitives used in common real applications. Three hours of instructor-led class time per week including discussions and problem sets.
CS 318 Advanced Topics in the Theory of Computation

Course Description tailored to course content when offered.


CS 324 Internet Application, Design and Development

Issues in application design specific to Internet hardware, software and users. Students will develop a variety of projects and a final project. Topics will include HTML integration, CGI programming, XML, Java servlets, internationalization issues, clientserver and database connectivity.

Prerequisites: CS 320, CS 322

CS 325 Development of GeoCollaborative Applications
CS 326    Database Management Systems
Relational query languages. Semantic data models. Logical and physical database design. Privacy issues. Implementation techniques (catalogs, query optimization, concurrency control, security and integrity enforcement)
Prerequisites: CS 320
Corequisites: CS 311
CS 327 Parallel and High Performance Computing

The course examines topics including: parallel hardware architectures, distributed computing paradigms, parallelization strategies and basic parallel algorithmic techniques, parallel programming with OpenMP and MPI, HPC numerical libraries. Students should be able to demonstrate advanced knowledge related to contemporary methods in parallel and HP Computing. Students are required to draw upon investigative techniques related to this field in order to critically analyze and solve problems using advanced knowledge. Coursework will require students to develop faster codes that are highly optimized for modern multi-core processors and clusters. Three hours of instructor-led class time per week including discussions, lab work and problem sets.

CS 332    System Administration

Linux and Windows operating system administration. TCP/IP networking, OSI layers. Internet organization and services. Network administration. Security management. User administration. Operating system installation, tuning and control. Performance tuning and management.

Prerequisites: CS 331
CS 333Network Programming


Prerequisites: CS 320, CS 121

CS 334 Performance Analysis of Computer System
The course reviews basics of probability theory, stochastic processes, especially Markov chains, and Laplace and z-transforms before proceeding with the analysis of queueing systems. After introducing basic laws of queueing theory, such as Little’s result, the analysis of single- and multi-server quueing systems is dicsussed. Also product-form open and closed queueing network models and efficient methods for their analysis: the convolution algorithm and mean-value analysis. Principles of descrete simulation methods are discussed to deal with systems not lending themselves to queueing analysis. The emphasis of the course is gaining insight into the behavior of systems with various workloads.
CS 345 Bioinformatics

The course starts with a brief introduction to molecular biology. The course then investigates the main algorithms used in Bioinformatics. After a brief description of commonly used tools, algorithms, and databases in Bioinformatics, the course describes specific tasks that can be completed using combinations of the tools and Databases. The course then focuses on the algorithms behind the most successful tools, such as the local and global sequence alignment packages: BLAST, SmithWaterman, and the underlying methods used in fragment assembly packages.

CS 399    Special Topics in CIS

Advanced studies covering special topics selected on an annual basis.

CS 391 Independent Study

Special study of a particular problem under the direction of a faculty member. The student must present a written, detailed report of the work accomplished. Approval of the CIS Program Chair and the instructor is required.


CS 395 Capstone Preparation
CS 396  Capstone Thesis Writing
Prerequisites: CS 395
CS 390 Capstone Practicum in Software Engineering