CATALOG HOME | UNDERGRADUATE | GRADUATE | DISTANCE LEARNING | ADMISSIONS | REGISTRAR | NJIT | CATALOG ARCHIVE
cs
Computer Science:  
 
UNDERGRADUATE COURSES:

CS 100 - Roadmap to Computing (3-0-3)
An introduction to programming and problem solving skills using Python or other very high level language. Topics include basic strategies for problem solving, constructs that control the flow of execution of a program and the use of high level data types such as lists, strings and dictionaries in problem representation. The course also presents an overview of selected topics in computing, such as networking and databases. Effective From: Fall 2010

CS 101 - Computer Programming and Problem Solving (3-0-3)
An introductory course in computer science and programming (using MATLAB, or other languages) and its use in solving engineering and scientific problems. The emphasis is on the logical analysis of a problem and the formulation of a computer program leading to its solution. Topics include basic concepts of computer systems, algorithm design, programming languages and data abstraction. Designed for students not specializing in computer science. Effective From: Fall 2009

CS 102*** - Computer Science with Problem Solving (3-1-3)
An introductory course in computer science, with applications to engineering and technology problems. Emphasis on programming methodology using a high level language (such as FORTRAN) as the vehicle to illustrate concepts. Topics include basic concepts of computer systems, software engineering, algorithm design, programming languages and data abstraction, with applications. Effective From: Fall 2006

CS 103*** - Computer Science with Business Problems (3-0-3)
An introductory course in computer science, with applications to business and managerial decision making. Topics include basic concepts of computer systems, software engineering, algorithm design, programming languages and abstraction, with applications. Effective From: Fall 2012

CS 104 - Computer Programming and Graphics Problems (3-0-3)
An introductory course in computer science with applications in computer graphics for architecture. Emphasis on programming methodology using a high level language as the vehicle to illustrate the concepts. Topics include basic concepts of computer systems, software engineering, algorithm design, programming languages and data abstraction, with applications. Effective From: Spring 2014

CS 106 - Roadmap to Computing Engineers (3-0-3)
An introduction to programming and problem solving skills for engineering majors using Python programming languages. Topics include basic strategies for problem solving, constructs that control the flow execution of a program and the use of high level data types such as lists, strings, and dictionaries in problem representation. The course also presents an overview of selected "big idea" topics in computing. Effective From: Spring 2012

CS 107 - Computing as a Career (1-0-1)
In this course, students will learn about time management, communication skills, and getting acclimated to NJIT. Through meetings with faculty, upperclassman students and current computing employers, students will explore CCS and learn about many exciting career opportunities within the computing field. Effective From: Fall 2010

CS 110 - Introduction to Computer Science IA (3-0-3)
First semester of a two course sequence, equivalent to CS 113. Introduces fundamentals of computer science, with emphasis on programming methodology and problem solving. Topics include basic concepts of computer systems, software engineering, algorithm design, programming languages and data abstraction, including the development environment, native types, expressions, objects, classes, decisions, iteration, and methods. A high level language (Java) is fully discussed and serves as the vehicle to illustrate many of the concepts. Effective From: Fall 2006 Until: Spring 2012

CS 110A - CS 110A Computer Science Lab for CS 111 ((0-1.5-0))
Laboratory module for the first course of the sequence equivalent to CS 113. Effective From: Fall 2006 Until: Spring 2012

CS 111 - Introduction to Computer Science IB (3-0-3)
Second semester of a two course sequence, equivalent to CS 113. Introduces fundamentals of computer science, with emphasis on programming methodology and problem solving. Topics include basic concepts of computer systems, software engineering, algorithm design, programming languages and data abstraction, including methods and classes, arrays, collections, inheritance and polymorphism, exceptions, recursion, testing and debugging. A high level language (Java) is fully discussed and serves as the vehicle to illustrate many of the concepts. Effective From: Fall 2006 Until: Spring 2012

CS 111A - CS111A Computer Science Lab for CS 111 ((0-1.5-0))
Laboratory module for the second course of the sequence equivalent to CS 113. Effective From: Fall 2006 Until: Spring 2012

CS 113 - Introduction to Computer Science (3-0-3)
Prerequisites: CS 100 with a grade C or better. Intensive introduction to computer science. Problem solving decomposition. Writing, debugging, and analyzing computer programs. Introduction to arrays and lists. Iteration and recursion. The Java language is introduced and used to highlight these concepts. A student receiving degree credit for CS 113 cannot receive degree credit for CS 115. Effective From: Fall 2012

CS 113A - Lab (0-1.5-0)
Lab for CS 113. Effective From: Fall 2006 Until: Spring 2012

CS 113H - Honors Introduction to Computer Science I (3-0-3)
Prerequisite: Satisfactory performance on placement exam and/or departmental approval. A course similar to CS 113, but material is covered in greater depth. Honors students contemplating a major in computer science, or who plan to take advanced electives in computer science, should take CS 113H instead of CS 101H. Students who receive degree credit for CS 113H cannot receive degree credit for CS 213. Effective From: Fall 2006

CS 114 - Introduction to Computer Science II (3-0-3)
Prerequisites:; CS 113 or completion of a required 100 level GUR course in CIS, plus an approved CIS 105. A study of advanced programming topics with logical structures of data, their physical representation, design and analysis of computer algorithms operating on the structures, and techniques for program development and debugging. Course covers program specifications, correctness and efficiency, data abstraction, basic aspects of simple data structures, internal searching and sorting, recursion and string processing. Algorithmic analysis is also discussed. Students receiving degree credit for CS 114 cannot receive degree credit for CIS 335 or CIS 505. Effective From: Fall 2006

CS 114A - Lab (0-1.5-0)
Lab for CS 114. Effective From: Fall 2006 Until: Spring 2012

CS 114H - Honors Introduction to Computer Science II (3-0-3)
Prerequisites: CS 113H or department approval; A course similar to CS 114, but material is covered in greater depth. Students receiving degree credit for CS 114H cannot receive degree credit for CS 335 or CS 505. Effective Until: Fall 2006

CS 115 - Intro. to CS I in C++ (3-0-3)
Fundamentals of computer science are introduced, with emphasis on programming methodology and problem solving. Topics include basic concepts of computer systems, software engineering, algorithm design, programming languages and data abstraction, with applications. The high level language C++ is fully discussed and serves as the vehicle to illustrate many of the concepts. CIS majors should enroll in CS 113. Effective From: Fall 2006

CS 115A - Computer Science I Lab/C++ (0-1.5-0)
Laboratory for CS 115. Effective From: Fall 2006 Until: Spring 2012

CS 116 - Intro. to Computer Science II/C++ (3-0-3)
Prerequisites: CS 115 or completion of a required 100 level GUR course in CS, plus an approved CS 105. A study of advanced programming topics with logical structures of data, their physical representation, design and analysis of computer algorithms operating on the structures, and techniques for program development and debugging. Course covers program specifications, correctness and efficiency, data abstraction, basic aspects of simple data structures, internal searching and sorting, recursion and string processing. Algorithmic analysis is also discussed. Students receiving degree credit for CS 116 cannot receive degree credit for CS 505. Effective From: Fall 2006

CS 116A - Computer Science II Lab/C++ (0-1.5-0)
Laboratory for CS 116. Effective From: Fall 2006 Until: Spring 2012

CS 207 - Computing and Effective Communication (1-0-1)
Prerequisites: CS 107. Through encouraging collaboration and communication, this course addresses how to best present oneself via verbal and nonverbal communication. Students will learn how to effectively network, create resumes, interview and best present ideas. The skills learned in this course prepare students for co-op/internship opportunities as well as future employment. Effective From: Fall 2010

CS 241 - Foundations of Computer Science I (3-0-3)
Prerequisites: CS 114 AND Math 112 OR CS 114 AND Math 133. An introduction to the foundations of computer science with emphasis on the development of techniques for the design and proof of correctness of algorithms and the analysis of their computational complexity. Reasoning techniques based on propositional and predicate logic and relational calculus operations with applications to databases will also be introduced. Auxiliary topics such as combinatorics of finite sets, functions and relations, and graph-theory definitions and graph storage alternatives will also be examined. Effective From: Fall 2006

CS 251 - Computer Organization (3-0-3)
Prerequisite: CS 113. An introduction to computer system structure and organization. Topics include representation of information, circuit analysis and design, register-transfer level, processor architecture and input/output. Effective From: Fall 2006 Until: Spring 2014

CS 252 - Computer Organization and Architecture (3-0-3)
Prerequisite: CS 113. An introduction to the organization and architecture of computer systems, including the standard Von Neumann model and more recent architectural concepts. Among the topics covered are numeric data representation, assembly language organization, memory addressing, memory systems, both real and virtual, coding and compression, input/output structures treated as programmed, interrupt, and direct memory access, and functional organization of the CPU and the computer system. Effective From: Spring 2006

CS 265 - Game Architecture and Design (3-0-3)
Prerequisite: IT 201 or equivalent. Course introduces students to the core concepts and design methodologies integral to designing and developing games and other Entertainment Software. Effective From: Spring 2007 Until: Spring 2014

CS 266 - Game Modification Development (3-0-3)
Prerequisites: IT 102 OR IT 114 OR CS 116, OR CS 114. This course introduces students to the basic concepts of game programming and development. Students will learn how to reprogram a professional game engine, or Modification (Mod) development as it is referred to in the industry. Students will work with C extensively. Students will work on their own game projects utilizing the professional game engine. Effective From: Fall 2007

CS 276 - 2D Game Development (3-0-3)
Prerequisites: CS 265 and CS 266 or IT 265 and IT 266. This course introduces students to the core concepts and skills necessary for the development of games utilizing 2D graphics. Students will learn how to set up and program their own 2D graphics based game engine. The engine will integrate 2D graphics, audio, input handling and network socket programming. Students will learn how to utilize their own custom 2D graphics and sounds into their projects. Once complete, students will have created two fully functional games. Effective From: Spring 2007

CS 280 - Programming Language Concepts (3-0-3)
Prerequisite: CS 114 OR CS 116 OR IT 114 OR IT 102. Conceptual study of programming language syntax, semantics and implementation. Course covers language definition structure, data types and structures, control structures and data flow, run-time consideration, and interpretative languages. Effective From: Fall 2006

CS 288 - Intensive Programming in Linux (3-0-3)
Prerequisite: CS 114. The course covers Linux programming with Apache Web and MySql database using Php/Python and C as primary languages. It consists of four stages: basic tools such as Bash and C programming; searching trees and matrix computing, end-to-end applications such as one that constantly presents top 100 stocks; and extending the applications to run on multiple machines. The course provides students with hands-on experience for programming relatively large applications. Effective From: Spring 2013

CS 310 - Co-op Work Experience I (3)
Prerequisites: completion of the sophomore year, approval of the department, and permission of the Office of Cooperative Education and Internships. Students gain major-related work experience and reinforcement of their academic program. Work assignments facilitated and approved by the Co-op office. Mandatory participation in seminars and completion of a report. Note: Normal grading applies to this COOP Experience Effective From: Spring 2013

CS 332 - Principles of Operating Systems (3-0-3)
Prerequisite: CS 114 OR CS 116 OR IT 114 OR IT 102. Organization of operating systems covering structure, process management and scheduling; interaction of concurrent processes; interrupts; I/O, device handling; memory and virtual memory management and file management. Effective From: Fall 2006

CS 332H - Honors Principles of Operating Systems (3-1-3)
Prerequisite: CS 114 or equivalent. A course similar to CS 332, with a project of greater depth and scope. Effective From: Fall 2006

CS 333 - Introduction to UNIX Operating Systems (3-0-3)
Prerequisite: CS 332 or equivalent and knowledge of C language. The course covers the UNIX system kernel including initialization, scheduling, context switching, process management, memory management, device management, and the file system. The course also includes the organization of shells, editors, utilities, and programming tools of the UNIX operating system. Effective From: Fall 2006

CS 337 - Performance Modeling in Computing (3-0-3)
Prerequisites: CS 114 and (Math 333 or Math 341). Introduction to probability models and techniques useful in computer science. Performance evaluation, discrete-event simulation, classification and optimization. Effective From: Fall 2012

CS 341 - Foundations of Computer Science II (3-0-3)
Prerequisites: (CS 241 or MATH 226) and CS 280. This course provides an introduction to automata theory, computability theory, and complexity theory. Theoretical models such as finite state machines, push-down stack machines, and Turing machines are developed and related to issues in programming language theory. Also, the course covers undecidability and complexity theory, including the classes P and NP. Effective From: Fall 2006

CS 341H - Honors Introduction to Logic and Automata (3-0-3)
Prerequisites: completion of a 100-level GUR course in CS; CS 280, Math 226 or Math 326. A course similar to CS 341, with a project of greater depth and scope. Effective From: Fall 2006

CS 345 - Web Search (3-0-3)
Prerequisites: CS 280 and CS 241 or CS 252. An introductory course on the web searching. The architecture of a search engine. Information vs. data retrieval. Web crawling. Processing text(tokenization, stemming, stopwords, link analysis). The indexing process and inverted indexes. Query processing. Ranking algorithms based on indexes and links (e.g. Kleinberg's HITS, Google's PAGERANK). Retrieval Models. Search engine evaluation. Case studies (e.g. Google cluster architecture). Effective From: Spring 2012

CS 352 - Parallel Computers and Programming (3-1-3)
Prerequisites: CS 252, CS 332. A course introducing parallel computers and parallel programming. General structures and design techniques of parallel computers are described. Programming paradigms and algorithm design considerations for parallel processors will be discussed. Effective From: Fall 2006

CS 353 - Advanced Computer Organization (3-0-3)
Prerequisite: CS 252 or instructor approved equivalent. This course emphasizes the basic design principles of various components in a computer, as well as how the components are organized to build a computer. Topics include: design methodology, arithmetic and logic unit design, control unit design, memory hierarchy, memory system design, input and output devices, peripheral devices, and interfacing computers using software. A software simulation package is used to help the learning process. By the end of the semester, students will have built simulated computer. Effective From: Fall 2006

CS 356 - Introduction to Computer Networks (3-0-3)
Computer Science students should take CS 288 before taking CS 356. This course provides an introduction to computer networks, with a special focus on the Internet architecture and protocols. Topics include layered network architectures, addressing, naming, forwarding, routing, communication reliability, the client-server model, web and email protocols. Besides the theoretical foundations, students aquire practical experience by programming reduced versions of real Internet protocols. Effective From: Fall 2011

CS 357 - Fundamentals of Network Security (3-0-3)
Prerequisite: CS 356 or IT 120. This course is designed for Computer Science and Information Technology students. They must have a networking course before taking CS 357. IT students take IT 120 and Computer Science students take CS 356. This course offers an in depth study of network security issues, types of computer and network attacks, and effective defenses. It provides both a theoretical foundation in the area of security and hands-on experience with various attack tools, firewalls, and intrusion detection systems. Topics include: network scanning, TCP/IP stack fingerprinting, system vulnerability analysis, buffer overflows, password cracking, session hijacking, denial of service attacks, intrusion detection. Effective From: Fall 2010

CS 366 - 3D Game Development (3-0-3)
This course introduces students to the core concepts and skills necessary for the development of games utilizing 3D graphics. Students will learn how to set up and program their own 3D graphics based game engine using OpenGL. Students will learn how to load and display custom 3D models created using existing 3D modeling tools. Once complete, students will have created two fully functional 3D games and tools to work with them. Effective From: Fall 2009

CS 370 - Introduction to Artificial Intelligence (3-1-3)
Prerequisites: CS 114 and (Math 226 or CS 241). An exploration of concepts, approaches and techniques of artificial intelligence. Emphasizes both underlying theory and applications. Topics include knowledge representation, parsing language, search, logic, adduction, uncertainty, and learning. LISP and Prolog programming languages used extensively. Students are required to do programming assignments, complete a programming term project and review case studies. Effective From: Fall 2006

CS 370H - Honors Introduction to Artificial Intelligence (3-1-3)
Prerequisites: CS 114, Math 226. A course similar to CS 370, with a project of greater depth and scope. Effective From: Fall 2006

CS 371 - Logic with Applications to Computer Science (3-0-3)
Prerequisites: CS 114, Math 211 and (Math 226 or CS 241). An introduction to both the syntax and semantics (basic model theory) of first-order logic, covering one set of inference rules, sequent calculus or a tableau system and prove the completeness theorem for the proof system. You will also cover a relatively modern (and simpler) form of Incompleteness theorems and relate it to computational issues such as the halting problem, as well as issues related to automating logical reasoning. These will include Herbrand's theorem, resolution, and logic programming. Effective From: Fall 2006 Until: Spring 2014

CS 371H - Honors Logic with Applications to Computer Science (3-0-3)
Prerequisites: CS 114; Math 211 and 226. A course similar to CS 371, with a project of greater depth and scope. Effective From: Fall 2006

CS 375 - Application Development for WWW (3-0-3)
Prerequisite: CIS 114. A state-of-the-art computer programming language/environment, such as Java and related tools, is studied and used as a vehicle to build applications that involve graphical user-interfaces, simple graphics, multithreading, images, animation, audio, database connectivity, remote objects, and networking. Effective From: Fall 2006 Until: Spring 2014

CS 407 - Professional Development in Computing (1-0-1)
Prerequisites: CS 107 and CS 207.This course is designed for final year students to reflect back on the college experience and to help plan for the future as a computing professional. The course will explore transitional issues that occur during the progression from student to professional through reflection on co-op and/or internship experiences. Through collaborative communication, students will reflect on global issues, explore how to best use new communication technologies and effectively communicate in the workplace. Effective From: Fall 2010

CS 408 - Cryptography and Internet Security (3-0-3)
Prerequisite: Math 226 or CS 241. Covers security require-ments for telecommunication over the Internet and other communication networks, various conventional and public-key encryption protocols, digital encryption standard, RSA and ElGamal cryptographic systems, digital signature algorithm and analysis of its cryptoimmunity, and access sharing schemes. Students receiving credit for CS 408 may not enroll in CIS 608. Effective From: Fall 2006

CS 410 - Co-op Work Experience II (3 additive credits)
Prerequisites: CS 310 or its equivalent, approval of the department, and permission of the Office of Cooperative Education and Internships. Provides major-related work experience as co-op/internship. Mandatory participation in seminars and completion of requirements that include a report and/or project. Note: Normal grading applies to this COOP Experience Effective From: Spring 2013

CS 421 - Numerical Algorithms (3-0-3)
Prerequisite: completion of a 100-level GUR course in CIS. Corequisite: Math 222. This course deals with fundamentals of numerical methods, including discussion of errors, interpolation and approximation, linear systems of equations, solution of nonlinear equations, and numerical solution of ordinary differential equations. The algorithmic approach and the efficient use of the computer are emphasized. Effective From: Fall 2006 Until: Spring 2014

CS 431 - Database System Design and Management (3-0-3)
Prerequisite: CS 114 or equivalent. Database system architecture; data modeling using the entity-relationship model; storage of databases; the hierarchical, network and relational data models; formal and commercial query languages; functional dependencies and normalization for relational database design; relation decomposition; concurrency control and transactions management. Student projects involve the use of a DBMS package. Effective From: Fall 2006

CS 431H - Honors Database System Design and Management (3-0-3)
Prerequisite: CS 114 or equivalent. A course similar to CS 431, with a project of greater depth and scope. Effective From: Fall 2006

CS 432 - Advanced Operating Systems (3-0-3)
Prerequisites: CS 252, CS 332. A survey of the design and implementation of distributed operating systems, both by introducing basic concepts and considering examples of current systems. Topics include: communication, synchronization, processor allocation, and distributed file systems. Effective From: Fall 2006 Until: Spring 2014

CS 433 - Introduction to Linux Kernel Programming (3-0-3)
An introductory study of how the Linux operating system is built from scratch. As a hands-on course, students will perform intensive programming using Linux kernel. The contents include booting, segmentation and paging, creating and destroying processes, process switching and scheduling, handling exceptions and interrupts, software interrupts, creating system calls, creating file systems, networking with TCP/IP, device driver writing and module programming, etc. At the end of the course, students will be able to modify the Linux operating system to create their own. Effective From: Spring 2010

CS 434 - Advanced Database Systems (3-0-3)
Prerequisites: CS 431. The course covers the basic concepts of traditional files and file processing, provides a "classic" introduction to the relational data model and its languages, and discusses database design methodology and application developments. Students are expected to learn the design of database application systems through a small project and to get some practical hands-on experience with commercial database management systems (DBMS) by writing application programs using the commercial DBMS query languages. Effective From: Fall 2006

CS 434H - Honors Advanced Database Systems (3-0-3)
Prerequisites: CS 431. A course similar to CS 434, with a project of greater depth and scope. Effective From: Fall 2006

CS 435 - Advanced Data Structures and Algorithm Design (3-1-3)
Prerequisite: CS 241 and CS 288. Advanced topics in data structures and algorithms, involving sequences, sets, and graphs such as searching, sorting, order statistics, balanced search tree operations, hash tables, graph traversals, graph connectivity and path problems. Algebraic and numeric algorithms. Performance measures, analysis techniques, and complexity of such algorithms. Effective From: Fall 2014

CS 435H - Honors Advanced Data Structures and Algorithm Design (3-0-3)
Prerequisite: CS 241 and CS 288. A course similar to CS 435, with a project of greater depth and scope. Effective From: Fall 2012

CS 438 - Interactive Computer Graphics (3-0-3)
Prerequisites: completion of a 100-level course in CIS, plus knowledge of a higher level language. This course introduces fundamental concepts of interactive graphics oriented toward computer-aided design systems. Such systems emerge in engineering, architecture, and manufacturing. Topics include computer data structures for representation of two- and three-dimensional objects and algorithms for definition, modification, and display of these objects in applications. This course will also discuss a selection of special topics in interactive graphics. Effective From: Fall 2006

CS 439 - Image Processing and Analysis (3-0-3)
Prerequisites: CS 114 and Math 333. This course is an intensive study of the fundamentals of image processing, analysis and understanding. Topics to be covered include: a brief review of the necessary mathematical tools, human visual perception, sampling and quantization, image transformation, enhancement, restoration, compression, reconstruction, image geometric transformation, matching, segmentation, feature extraction, representation and description, recognition and interpretation. Effective From: Fall 2006

CS 440 - Computer Vision (3-0-3)
Prerequisite: Math 333. This course introduces basic concepts and methodologies of computer vision, and focuses on material that is fundamental and has a broad scope of applications. Topics include contemporary developments in all mainstream areas of computer vision e.g., Image Formation, Feature Representation, Classification and Recognition, Motion Analysis, Camera Calibration, Stereo Vision, Shape From X (shading, texture, motion, etc.), and typical applications such as Biometrics. Effective From: Fall 2006

CS 441 - Database Programming (3-0-3)
Many technologies have been developed due to the interplay between World-Wide Web Development and Databases on one hand and the growth of Database applications in E-Commerce on the other hand. Today, practically every E-Commerce application has at least a Web component and a Database Component. Many languages have been developed in order to deal with these interactions. The proposed course will focus on accessing databases through the web but also mention new developments in the field. Effective From: Fall 2006

CS 451 - Network Technologies (3-0-3)
This course provides an in-depth study of the different transmission and network technologies that make up the Internet infrastructure. Topics include: physical layer technologies, multiplexing and switching, Wired and Wireless LANS, cellular networks, ATM networks, Multimedia formats and protocols, multicasting, traffic characteristics and measurements, QoS. Effective From: Spring 2009

CS 456 - Open Systems Networking (3-0-3)
Prerequisite: CS 114. An introduction to internetworking, including an in-depth study of the architecture of network interconnections, the internet services, and the protocols needed to provide these services. Topics include: architecture of interconnected networks, internet addresses and the address resolution problem, internet protocols, the domain name system, the socket interface, the client-server model of interaction, the OSI transport and application support protocols, and the TCP/IP application protocols. Effective From: Fall 2006 Until: Fall 2008

CS 458 - Technologies-Network Security (3-0-3)
Prerequisite: CS 356 or CS 456 or IT 420. This course provides both an in depth theoretical study and a practical exposure to technologies which are critical in providing secure communication over the Internet. Topics include: remote access security, web security, wireless security, e-mail security, spam and spam filtering techniques, computer viruses and internet worms, honeypots and honeynets, security liability issues and compliance. Effective From: Spring 2009

CS 467H - Honors Efficient Algorithm Design (3-0-3)
Prerequisite: CS 435 or CS 335; Math 333. The course focuses on presenting techniques for efficient sequential and parallel algorithm design. Algorithms for numerical and combinatorial problems will be discussed. The use of randomization in the solution of algorithmic problems will be explored. Applications to be considered include string matching, polynomials and FFT algorithms, sorting networks, algebraic computations and primality testing and factoring, matrix operations, randomized algorithms for sorting and selection, and data compression. Effective From: Fall 2006

CS 478 - Software Tools for Solving Problems (3-0-3)
Prerequisites: junior or senior standing, permission of instructor. Provides students with an opportunity to interact directly with industry and solve actual problems using various -information-systems software tools. At the beginning of the semester, company representatives present actual problems they are facing, and the students work in groups to develop a solution, which they present at the end of the term. Presentation skills, working in groups, and using software tools for problem solving are stressed. Effective From: Fall 2006 Until: Spring 2014

CS 482 - Data Mining (3-0-3)
Prerequisite: CS 431. The course covers the concepts and principles of advanced data mining systems design; presents methods for association and dependency analysis, classification; prediction; and clustering analysis. Effective From: Fall 2006

CS 485 - Special Topics in Computer Science/Information Systems (3-0-3)
Prerequisites: junior standing and/or department approval. The study of new and/or advanced topics in an area of computer science not regularly covered in any other CIS course. The precise topics to be covered in the course, along with prerequisites, will be announced in the semester prior to the offering of the course. A student may register for no more than two semesters of Special Topics. Effective From: Fall 2006

CS 486 - Topics in Computer Science/Information Systems (3-0-3)
Prerequisites: Same as for CS 485. A continuation of CS 485. Effective From: Fall 2006

CS 488 - Independent Study in Computer Science (3-0-3)
Prerequisites: open only to students in the Honors Program who are computer science majors and who have the prior approval of the department and the CIS faculty member who will guide the independent study. Independent studies, investigations, research, and reports on advanced topics in computer science. Students must prepare, in collaboration with their faculty mentor and in the semester prior to enrolling in this course, a detailed plan of topics and expected accomplishments for their independent study. This must have the approval of both the department and the faculty mentor. A student may register for no more than one semester of Independent Study. Effective From: Fall 2006

CS 488H - Honors Independent Study in Computer Science/Information Systems (3-0-3)
Prerequisites: honors college computer science or information systems majors who have the prior approval of the department and the CS faculty member who will guide the independent study. Independent studies, investi-gations, research, and reports on advanced topics in computer science. Students must prepare, in collaboration with their faculty mentor and in the semester prior to enrolling in this course, a detailed plan of topics and expected accomplishments for their independent study. This must have the approval of both the department and the faculty mentor. A student may register for no more than one semester of independent study Effective From: Fall 2006

CS 490 - Guided Design in Software Engineering (3-0-3)
Prerequisite: senior standing or departmental approval. This course focuses on the methodology for developing software systems. Methods and techniques for functional requirements analysis and specifications, design, coding, testing and proving, integration and maintenance are discussed. Effective From: Fall 2006

CS 491 - Senior Project (3-0-3)
Prerequisites: CS 490, senior standing and project proposal approval. An opportunity for the student to integrate the knowledge and skills gained in previous computer science work into a team-based project. The project involves investigation of current literature as well as computer implementation of either a part of a large program or the whole of a small system. Effective From: Fall 2006

CS 491H - Honors Computer Science Project (3-0-3)
Prerequisites: CS 490, senior standing in the Honors College and project proposal approval. A course similar to CS 491, with a project of greater depth and scope. Effective From: Fall 2006

CS 493 - Computing and Business Senior Project (3-0-3)
The Computing and Business Senior Project is intended to provide a real-world project-based learning experience for seniors in the Computing and Business and Business and Information Systems BS degrees. The overall objectives of this course are to investigate the nature and techniques of a business and computing development project. Projects are either provided by industry partners or proposed by students who wish to become entrepreneurs. Effective From: Fall 2008 Until: Spring 2014

GRADUATE COURSES:

CS 505 - Programming, Data Structures, and Algorithms (3 credits)
Prerequisite: knowledge of at least one procedure-oriented language such as PASCAL or C. Computer science students cannot use this course for graduate degree credit. Intensive introduction to computer science principles: a procedure-oriented language such as C++; program design techniques; introductory data structures (linked lists, stacks, sets, trees, graphs); and algorithms (sorting, searching, etc.) and their analysis. Programming assignments are included. Effective From: Fall 2006

CS 506 - Foundations of Computer Science (3 credits)
Prerequisite: knowledge of C/PASCAL. Corequisite: CS 505. Cannot be used for graduate credit towards the M.S. in Computer Science. Introduction to the concepts of iteration, asymptotic performance analysis of algorithms, recursion, recurrence relations, graphs, automata and logic, and also surveys the main data models used in computer science including trees, lists, sets, and relations. Programming assignments are given. Effective From: Fall 2006

CS 510 - Assembly Language Programming and Principles (3 credits)
Prerequisite: knowledge of at least one procedure-oriented language such as PASCAL, C, or C++. Computer Science students cannot use this course for graduate degree credit. An intensive course in assembly language programming including basic machine organization, the structure of instruction sets, program linkage, macros and macro libraries. Extensive programming assignments are included. Effective From: Fall 2006 Until: Spring 2009

CS 515 - Advanced Computer Programming for Engineers (3 credits)
Prerequisite: knowledge of at least one procedure-oriented language such as PASCAL, C, or FORTRAN. Students specializing in computer science may not take this course for credit. This course is designed for engineering students who require an extensive knowledge of programming for their project or thesis work. Topics include review of basic programming techniques, treatment of algorithm design, error analysis and debugging. As time permits, problem-oriented languages are examined. Effective From: Fall 2006

CS 540 - Fundamentals of Logic and Automata (3 credits)
Prerequisite: Math 226 or equivalent (see undergraduate catalog for description). Theory of logic and automata and their influence on the design of computer systems, languages, and algorithms. Covers the application of Boolean algebra to design of finite state machines; formal systems, symbolic logic, computability, halting problem, Church's thesis, and the main ideas of the theory of computation. Effective From: Fall 2006 Until: Spring 2009

CS 590 - Graduate Co-op Work Experience I (3 additive credits)
Prerequisite: students must have the approval of the co-op advisor for the CIS department. Provides on-the-job reinforcement and application of concepts presented in the undergraduate computer science curriculum. Work assignments are identified by the co-op office and developed and approved by the CIS department in conjunction with the student and employer. Students must submit, for CIS department approval, a proposal detailing the nature of the intended work. A report at the conclusion of each semester's work experience is required. Credits for this course may not be applied toward degree requirements for either the bachelor's or master's in computer science. Effective From: Fall 2006

CS 591 - Graduate Co-op Work Experience II (3 additive credits)
Prerequisite: students must have the approval of the co-op advisor for the CIS department. Provides on-the-job reinforcement and application of concepts presented in the undergraduate computer science curriculum. Work assignments are identified by the co-op office and developed and approved by the CIS department in conjunction with the student and employer. Students must submit, for CIS department approval, a proposal detailing the nature of the intended work. A report at the conclusion of the semester work experience is required. Credits for this course may not be applied toward degree requirements for either the bachelor's or master's in computer science. Effective From: Fall 2006

CS 592 - Graduate Co-op Work Experience III (3 additive credits)
Prerequisites: graduate standing, and acceptance by the CIS department and the Division of Career Development Services. Students must have the approval of the co-op advisor for the CIS department. Provides on-the-job reinforcement and application of concepts presented in the undergraduate or graduate computer science curriculum. Work assignments are identified by the co-op office and developed and approved by the CIS department in conjunction with the student and employer. Students must submit, for CIS department approval, a proposal detailing the nature of the intended work. A report at the conclusion of the semester work experience is required. Credits for this course may not be applied toward degree requirements for either the bachelor's or master's in computer science. Effective From: Fall 2006

CS 593 - Graduate Co-op Work Experience IV (0 credits)
Prerequisites: One immediately prior 3-credit registration for graduate co-op work experience with the same employer. Requires approval of departmental co-op advisor and the Division of Career Development Services. Must have accompanying registration in a minimum of 3 credits of course work. Effective From: Fall 2006

CS 601 - Object-Oriented Programming (3 credits)
Prerequisite: basic knowledge of C++. Covers the fundamentals of object-oriented programming. Includes object-oriented concepts such as data abstractions, encapsulation, inheritance, dynamic binding, and polymorphism, and uses C++ as the vehicle for illustrating and implementing these concepts. The object-oriented paradigm is systematically employed in the design of all concepts. Effects of this methodology on software maintenance, extensibility, and reuse. Significant programming/design projects. Effective From: Fall 2006 Until: Spring 2009

CS 602 - Java Programming (3 credits)
Prerequisite: advanced Web-based programming with an emphasis on the Java language and platform. No prior knowledge of Java is required but students are expected to have a good understanding of object-oriented programming concepts such as encapsulation, inheritance, and polymorphism, experience with C++. Basic constructs and syntax and then the core advanced features. Topics include: networking and sockets, remote method invocation (RMI), database connectivity (JDBC), Java Beans, multi-threading and lighweight components (Swing). Common gateway interface (CGI) languages and browser scripting (JavaScript and VBScript) are discussed when used as a complement to the functionality of the Java language. Emphasis is on the Java Development Kit version 1.1 (JDK1.1), both deprecated methods and newly introduced features are discussed. Effective From: Fall 2006

CS 603 - Advanced Programming Environments and Tools (3 credits)
Prerequisite: CS 601. Introduction to Graphical User Interface (GUI) Programming in the X Windows System environment. Design and implementation of the GUI at various levels of abstraction using industry standard software tools. Trade-offs between flexibility and ease of use inherent in GUI building tools. Best suited for the advanced programmer. Effective From: Fall 2006 Until: Spring 2009

CS 604 - Client/Server Computing (3 credits)
Prerequisites: CS 333 and CS 432 or instructor approval (see undergraduate catalog for descriptions). Fundamentals of client/server architecture as applied to the development of software systems. Concepts of distributed systems such as open systems, middleware, software reengineering, and distributed computing environments. Components of distributed client/server technologies such as X Windows Systems, DCE, CORBA, NFS, and ODBC. Case studies are used to illustrate how client/server techniques can be used in a variety of applications. The importance of standards and their role in client/server architecture, such as Posix, DCE, and COS. Requires creation of distributed applications. Effective From: Fall 2006 Until: Spring 2009

CS 605 - Discrete Event Dynamic Systems (3 credits)
Prerequisite: Math 630 or EE 601 or MnE 603 or equivalent. Covers discrete event dynamic system theory and its applications in modeling, control, analysis, validation, simulation, and performance evaluation of computer systems, flexible manufacturing systems, robotic systems, intelligent supervisory control systems, and communication networks. Emphasis on Petri net and automation based approaches. Effective From: Fall 2006 Until: Spring 2009

CS 608 - Cryptography and Security (3-1-3)
This course involves computational methods providing secure Internet communication. Among the topics covered are: Security threats in communication systems; conventional cryptography: substitution and transposition codes; distribution of secret key over the Internet; principles of public-key cryptography; RSA and other public-key cryptographic methods; and digital signature protocol. Effective From: Fall 2006

CS 610 - Data Structures and Algorithms (3 credits)
Prerequisite: CS 505 or CIS 335 or equivalents (see undergraduate catalog for description). Intensive study of the fundamentals of data structures and algorithms. Presents the definitions, representations, processing algorithms for data structures, general design and analysis techniques for algorithms. Covers a broad variety of data structures, algorithms and their applications including linked lists, various tree organizations, hash tables, strings, storage allocation, algorithms for searching and sorting, and a selected collection of other algorithms. Programs are assigned to give students experience in algorithms, data structure design and implementation. Effective From: Fall 2006

CS 611 - Introduction to Computability and Complexity (3 credits)
Prerequisites: mathematics bridge requirements. Introduces the theoretical fundamentals of computing, and provides an understanding of both the inherent capabilities and limitations of computation. The main models of computation are deterministic and non-deterministic Turing machines. Auxiliary models include partial and total recursive functions, first order logic, recursive and recursively enumerable sets, and symbol systems. Covers the essentials of computational theory: first order logic, Russel's Paradox, completeness and consistency, Goedel's Theorem, Church's Thesis, countable and uncountable sets, simulation and computation, diagonalization, dove-tailing, decidable and undecidable problems, reduction, recursion theory, Rice's Theorem, Recursion Theorem, execution time measures, P and NP, polynomial-time reduction, NP-completeness and NP-hardness and formal correctness semantics of programs. Effective From: Fall 2006

CS 621 - Numerical Analysis I (3 credits)
Prerequisite: Math 511 (see undergraduate catalog for description) or an introductory course in numerical methods. An introduction to computational aspects of scientific and engineering problems. Time-dependent phenomena and corresponding quantitative models. Numerical stability and conditioning. Approximation of functions. Interpolation, integration. Solution of nonlinear equations. Ordinary differential equations of the first order. Finite and iterative algorithms for solution of systems of linear equations. Emphasis on computer implementation of algorithms and application to variety of engineering problems. Effective From: Fall 2006

CS 622 - Numerical Analysis II (3 credits)
Prerequisite: Math 511 (see undergraduate catalog for description) or an introductory course in numerical methods. This course covers the theory and design of computer solutions to mathematical equations. Included are iterative methods for solving systems of linear and nonlinear equations, the numerical eigenvalue-eigenvector problem, and methods for solving ordinary and partial differential equations. Emphasis is on the control of errors generated by the computer. Effective From: Fall 2006 Until: Spring 2009

CS 630 - Operating System Design (3 credits)
Prerequisites: CS 332, CS 432 (see undergraduate catalog for descriptions) and CS 505. An intensive study of computer operating system design including multiprogramming, time-sharing, real-time processing, job and task control, synchronization of concurrent processes and processors, resource scheduling, protection, and management of hierarchical storage. Effective From: Fall 2006

CS 631 - Data Management System Design (3 credits)
Prerequisites: knowledge of C and data structures. Acquaintance with fundamental notions of relational database technology. Mathematical properties and usage of database programming languages. Methods of database design and conceptual modeling. Methods of physical storage for database information. Fundamental notions of concurrency control and recovery in database systems. Effective From: Fall 2006

CS 632 - Advanced Database System Design (3 credits)
Prerequisites: CS 631 and knowledge of C++. Covers the concepts and principles of object-oriented data modeling and database systems, parallel and distributed database systems, database machines, real time (database) systems, multimedia and text databases, and imprecise information retrieval systems. Emphasis is on advanced data modeling, query optimization, indexing techniques, concurrency control, crash recovery, distributed deadlock detection, real-time scheduling, vague retrieval and system performance. Effective From: Fall 2006

CS 633 - Distributed Systems (3 credits)
Prerequisites: completion of bridge requirements. Fundamental topics concerning the design and implementation of distributed computing systems are covered, including interprocess communication, remote procedure calls, authentication, protection, distributed file systems, distributed transactions, replicated data, reliable broadcast protocols, and specifications for distributed programs. All topics will be illustrated with case studies. Optional topics may include synchronization, deadlocks, virtual time, and load balancing. Effective From: Fall 2006

CS 634 - Data Mining (3 credits)
This course covers the principles of data mining system design and implementation. It presents methods for association and dependency analysis as well as classification, prediction, and clustering. Optional topics may include time series and graph mining, current trends in data mining, and data mining for scientific, medical and engineering applications. Effective From: Spring 2011

CS 635 - Computer Programming Languages (3 credits)
Prerequisites: CS 505 and CS 510. The theory and design of computer language systems; the formal theory of syntax and language classification; a survey of procedure and problem-oriented computer programming languages, their syntax rules, data structures, and operations; control structures and the appropriate environments and methods of their use; a survey of translator types. Effective From: Fall 2006

CS 636 - Compiling System Design (3 credits)
Prerequisite: CS 635. Compiler organization; interaction of language and compiler design. The front end scanning, parsing, and syntax-directed translation: theory, standard approaches, and techniques; front-end tools such as Lex and Yacc. Attribute grammars. Code generation, register allocation, and scheduling; interaction with the run-time environment. Introduction to static analysis and optimization. As time permits, topics in modern compilers: compiling for object-oriented languages such as C++ or Java, memory hierarchies, pipelining, parallelism. Includes a significant programming component. Effective From: Fall 2006 Until: Spring 2009

CS 637 - Real-Time Systems (3 credits)
Prerequisites: completion of bridge requirements. Theory and principles that govern real-time systems design, and mechanisms and methodologies that enable their construction and operation. All aspects of such systems will be covered, including scheduling, device and resource management, communications, machine architecture, kernel software, language design and implementation, specification and user interfaces, and performance analysis and verification techniques. Effective From: Fall 2006 Until: Spring 2009

CS 639 - Elec. Medical Records: Med Terminologies & Comp. Imp. (3 credits)
This course presents a graduate introduction to Medical Informatics for Computer Science students covering (1) the design, use and auditing of medical terminologies, such as the Unified Medical Language System (UMLS) and the Systematized Nomenclature of Medicine (SNOMED); and (2) principles of Electronic Medical Records (EMR), Electronic Health Records (EHR) and Personal Health Records (PHR), including issues of privacy and security. Effective From: Fall 2011

CS 640 - Recursive Function Theory (3 credits)
Prerequisite: CS 540 or equivalent. Review of basic computability theory. Topics include Church's thesis; unsolvability results; creative, productive, and simple sets; computational complexity; P=NP problem; and classification of solvable problems according to their complexity. Effective From: Fall 2006

CS 641 - Formal Languages and Automata (3 credits)
Prerequisite: Math 226 or equivalent (see undergraduate catalog for description). Fundamentals of automata and formal languages: hierarchy of abstract machines and languages; nondeterministic finite state machines; tape and pushdown automata; context-free and context-sensitive grammars. Effective From: Fall 2006

CS 643 - Cloud Computing (3 credits)
Prerequisites: CS 633 or CS 656. This course presents a top-down view of cloud computing, from applications and administration to programming and infrastructure. Its main focus is on parallel programming techniques for cloud computing and large scale distributed systems which form the cloud infrastructure. The topics include: overview of cloud computing, cloud systems, parallel processing in the cloud, distributed storage systems, virtualization, secure distributed computing, and multicore programming. Effective From: Fall 2011

CS 645 - Security and Privacy in Computer Systems (3-0-3)
Prerequisites: Students are expected to enter this course with a basic knowledge of operating systems, networking, algorithms, and data structures. Also, students should be able to program in Java and C/C++. The course covers fundamental principles of building secure systems and techniques to ensure data security and privacy. Topics include access control mechanisms, operating systems security, malicious code threats and software security, trusted computing, content protection, and database security . The course will also study existing technical approaches to protecting privacy, including Web anonymizers and ant-censorship tools, as well as policy and legal aspects of privacy. Effective From: Fall 2012

CS 646 - Network Protocols Security (3-0-3)
Prerequisites: CS 656 or ECE 637, and ability to program in Java and C/C++. This course covers the security of network protocols currently used on the internet. It seeks to familiarize students with common threats and network attacks, and provides an in-depth study of methods used to secure network communication. The course includes an applied component, which will help students gain practical experience in attacking and defending networked systems. Topics include authentication systems, and routing security, firewalls, intrusion detection, honeypots, wireless network security, malware, propagation and detection, and web security. Effective From: Spring 2014

CS 647 - Counter Hacking Techniques (3-0-3)
Prerequisites: CS 645 or CS 646 or CS 696 or ECE 638 or approval of the instructor. This course covers advanced techniques that can be used for offensive or defensive goals in network, computer systems and applications. The course follows a ?learning by doing? teaching approach through extensive use of virtual machines with vulnerable operating systems and applications. Topics covered include system memory organizations, CPU registers, assembly language fundamentals, GNU and Immunity debuggers, fuzzing based security testing development of local and remote Linux and Windows exploits, shellcode development, stealthy attacks, bypassing memory protection techniques, network and wireless hacking techniques, and ethical and legal implications of cyber-attacks. Effective From: Spring 2014

CS 650 - Computer Architecture (3 credits)
Prerequisites: CS 251 (see undergraduate catalog for description) and CIS 510. Exploiting instruction level parallelism (ILP) is central to designing modern computers. Presents design techniques used for such computers as IBM Power architectures, DEC Alpha, MIPS R4600, Intel P6, etc. Introduction of Instruction Set Architecture (ISA), various functional units, basic principles of pipelined computers. Modern techniques to ILP including superscalar, super-pipelining, software pipelining, loop unrolling, and VLIW. Memory hierarchy, including instruction cache, data cache, second level cache, and memory interleaving. Advanced computer architectures, including vector, array processors, interconnection technology, and ATM network of workstations. Hands-on experience designing a simple pipelined computer on screen and using CAD tools such as Cadence or ViewLogic. Effective From: Fall 2006

CS 651 - Data Communications (3 credits)
Prerequisite: Math 333 (see undergraduate catalog for description). Intensive study of the analytic tools required for the analysis and design of data communication systems. Topics include: birth-death queuing systems, Erlang's distribution, bulk-arrival and bulk-service systems, design and analysis of concentrators and multiplexers, elements of Renewal Theory, M/G/1 system, analysis of Time Division Multiplexing, priority queues, analysis of random access systems, time reversibility, open and closed queuing networks, mean value analysis, flow and congestion, control mechanisms, routing algorithms, flow models, and network topological design. Effective From: Fall 2006

CS 652 - Computer Networks-Architectures, Protocols and Standards (3 Credits)
Prerequisite: A high level programming language, Math 333 (see undergraduate catalog for description), or instructor approved equivalents. Intensive study of various network architecture and protocol standards; with emphasis on the Open Systems Interconnetion (OSI) model. Topics include: analog and digital transmission, circuit and packet switching, the Integrated Services Digital Network (ISDN), Frame Relay, Broadband ISDN, Cell Relay, SONET, Local Area Networks (CSMA/CD, Token Bus, Token Ring, switched and isochronous Ethernets), Metropolitan Area Networks (FDDI, FDDI-II, DQDB), wireless and satellite networks, synchronization and error control, routing and congestion control, X.25 standard. Effective From: Fall 2006

CS 653 - Microcomputers and Applications (3 credits)
Prerequisite: familiarity with an assembly level and higher-level language. An investigation of the personal computer based on the WinTEl architecture. Programming and use of the various input/output devices via operating system constructs. Use of computer in stand-alone (control) applications and networked applications. Investigation of non-Intel architectures and non-Windows systems as time permits. Effective From: Fall 2006 Until: Spring 2009

CS 654 - Telecommunication Networks Performance Analysis (3 credits)
Prerequisites: CS 651, CS 652, or instructor approved equivalents. Modeling and analysis of telecommunication networks; with emphasis on Local Area Networks (LANs) and Metropolitan Area Networks (MANs). Case studies will be presented and discussed, and the need for modeling and analysis will be established. Various types of LANs, and MANs will be modeled and analyzed. Problem sets and case studies will be assigned to facilitate understanding of the covered material. Effective From: Fall 2006 Until: Spring 2009

CS 656 - Internet and Higher-Layer Protocols (3 credits)
The course introduces the protocols and standards of the TCP/IP suite that govern the functioning of the Internet. The material covered in class is a top-down approach on introduction, discussion, and analysis of protocols from the data-link layer to the application layer. Alternative protocols to the TCP/IP suite and new protocols adopted by this suite are discussed. Numerical examples related to network planning and proocol functioning are analyzed. Effective From: Spring 2010

CS 657 - Principles of Interactive Computer Graphics (3 credits)
Prerequisites: CS 505 or familiarity with the organization of at least one computer system, and knowledge of a structured programming language such as C. Graduate-level introduction to computer graphics concepts, algorithms, and systems. Includes 2-D raster graphics, algorithms, 2-D and 3-D geometric transformations, 3-D viewing, curves and surfaces. Emphasis on PC-based graphics programming projects. Principles of interactive graphics systems in terms of the hardware, software and mathematics required for interactive image production. Effective From: Fall 2006

CS 659 - Image Processing and Analysis (3 credits)
Prerequisite: CS 505. Fundamentals of image processing, analysis and understanding. Topics include image representation, image data compression, image enhancement and restoration, feature extraction and shape analysis, region analysis, image sequence analysis and computer vision. Effective From: Fall 2006

CS 660 - Digital Watermarking (3)
Digital watermarking and steganography is important to ensure data security because of widely used digital multimedia and rapid growth of the Internet. Digital watermarking is a suitable tool to identify the source, creator, owner, distributor, or authorized consumer of a document or an image. Digital steganography aims at hiding digital information into covert channels, so one can conceal the information and prevent detection. This course intends to provide students an overview on different aspects of mechanisms and techniques for digital watermarking and steganography. Effective From: Spring 2009

CS 661 - Systems Simulation (3 credits)
Prerequisites: an undergraduate or graduate course in probability theory and statistics, and working knowledge of at least one higher-level language. An introduction to the simulation of systems, with emphasis on underlying probabilistic and statistical methodologies for discrete-event simulations. Design of simulation applications, and simulation programming in a high-level language. Algorithms for the generation of pseudorandom numbers. Algorithmic methodologies for the simulation of discrete and continuous probabilistic processes. Use of statistical tools. Simulation of queuing systems. Applications of simulation to a variety of system studies. The special purpose simulation language GPSS is studied in detail. Effective From: Fall 2006

CS 662 - Model Analysis and Simulation (3 credits)
Prerequisite: introductory course in simulation. Advanced topics in simulation methodology, including design of simulation experiments, variance reduction techniques, estimation procedures, validation, and analysis of simulation results. Queueing systems. Implementing a simulation with the SIMSCRIPT language. Models of continuous systems with applications to elementary socio-economic and industrial systems. Utilization of the DYNAMO II language. Effective From: Fall 2006 Until: Spring 2009

CS 665 - Algorithmic Graph Theory (3 credits)
Prerequisite: CS 610. The elements of the theory of graphs and directed graphs with motivating examples from communication networks, data structures, etc; shortest paths, depth first search, matching algorithms, parallel algorithms, minimum spanning trees, basic complexity theory, planarity, and other topics. Programming assignments are included. Effective From: Fall 2006

CS 666 - Simulation for Finance (3 credits)
Covers the use of Monte Carlo stochastic simulation for finance applications. Topics include generation of various random variables and stochastic processes (e.g., point processes, Brownian motion, diffusions), simulation methods for estimating quantities of interest (e.g., option prices, probabilities, expected values, quantiles), input modeling, and variance-reduction techniques. Students will write computer programs in C++. Students cannot receive credit for both CS 661 and CS/Math 666. Effective From: Spring 2010

CS 667 - Design Techniques for Algorithms (3 credits)
Prerequisite: CS 610. An introduction to the principles of major design techniques in algorithms. Examples from a variety of topics and problems in computer science are used to demonstrate these design techniques and their appropriate application. Effective From: Fall 2006

CS 668 - Parallel Algorithms (3 credits)
Prerequisites: CS 610 and CS 650. This course examines a variety of parallel algorithms and architectures. Shared memory algorithms and algorithms for special architectures (tree processors, grids, systolic arrays, butterflies) are considered. The basic theory of algorithm/architecture performance will be described. Effective From: Fall 2006

CS 669 - Computational Geometry (3 credits)
Prerequisite: CS 610 or permission of the instructor. Intensive study of the fundamentals of computational geometry data structures and algorithms. Emphasis is on the design of efficient algorithms and data structures, proofs of their correctness and complexity analysis. Fundamental topics including geometric searching, convex hull computation, nearest/farthest searching, Voronoi diagrams, Euclidean minimum spanning trees, planar triangulation, planar point location, arrangement of lines. Effective From: Fall 2006 Until: Spring 2009

CS 670 - Artificial Intelligence (3 credits)
Prerequisite: CS 610 and CS 631. Fundamental concepts and general techniques in artificial intelligence. Main topics include goal tree search, logic and deduction, adduction, uncertainty, fuzzy logic, knowledge representations, machine learning, vision, and action planning. The LISP programming language is used extensively. Students are required to do programming assignments, complete a programming term project, and review case studies. Effective From: Fall 2006

CS 671 - Knowledge-Based Systems (3 credits)
Prerequisite: CS 670 or equivalent. Deals with the underlying architectures of ?classical? knowledge-based systems, i.e., systems based on a knowledge representation formalism that are built by knowledge acquisition from a domain expert; and advanced database systems, especially object-oriented and deductive databases. Effective From: Fall 2006 Until: Spring 2009

CS 672 - Expert System Methods and Design (3 credits)
Prerequisite: CS 670. Deals with expert systems, expert system shells, programming of rule-based systems, selection of shells, verification and validation of expert systems, and knowledge acquisition techniques for extracting knowledge from domain experts. Effective From: Fall 2006 Until: Spring 2009

CS 673 - Software Design and Production Methodology (3 credits)
Prerequisite: CS 631. Modern techniques and methods employed in the development of large software systems, including a study of each of the major activities occurring during the lifetime of a software system, from conception to obsolescence and replacement. Topics include cost/performance evaluation, documentation requirements, system design and production techniques, system verification techniques, automated aids to system development, and project organization and management. Effective From: Fall 2006

CS 674 - Natural Language Processing (3 credits)
Prerequisite: CS 670. Deals with techniques of natural language understanding. Topics are syntax and parsing (top down and bottom up), semantics, pragmatics and use of world knowledge in language understanding. Augmented Transition Networks will be used as programming tool set. Good knowledge of LISP or PROLOG. Effective From: Fall 2006 Until: Spring 2009

CS 680 - Linux Kernel Programming (3)
An in-depth study of how the Linux operating system is built from scratch. As a hands-on course, students will perform intensive programming using Linux Kernel. The contents include machine booting, segmentation and paging memory management, creating and destroying processes, process switching and scheduling, handling exceptions and hardware interrupts, software interrupts, creating system calls, creating file systems, networking with TCP/IP, device driver writing and module programming, etc. At the end of the course, students will be able to modify Linux operating system to create their own. Effective From: Spring 2009

CS 681 - Computer Vision (3-0-3)
This course introduces computational models of computer vision and their implementation on computers, and focuses on material that is fundamental and has a broad scope of application. Topics include comtemporary developments in all mainstream areas of computer vision e.g., Image Formation, Feature Detection/Representation, Classification and Recognition, Motion Analysis, Camera Calibration, 3D/Stero Vision, Shape From X (motion, shading, texture, etc.), and typical applications such as Biometrics. Effective From: Fall 2010

CS 682 - Geometric Modeling (3 credits)
Prerequisite: CS 610. The techniques required to describe the shape of an object and to simulate dynamic processes; parametric geometry of curves, surfaces, and solids; and particular formulations for facilitating calculating geometric properties. Fundamentals of solid model construction and analysis are discussed extensively. Some applications in computer graphics, CAD, and CAM are also mentioned. Effective From: Fall 2006 Until: Spring 2009

CS 683 - Software Project Management (3-0-3)
This course gives the student the necessary background to allow her/him to manage software projects; this includes economic, managerial and organizational aspects. The essence of software engineering is not only to introduce a valuable software product, but to do so economically and competitively. Like any engineering discipline, software engineering depends critically on managerial, economic and organizational considerations. Students will learn software management technique, various software costing techniques including COCOMO and ROI, team organization and management, and various methods of software development including Cleanroom and Agile. Effective From: Spring 2012

CS 684 - Software Testing and Quality Assurance (3-0-3)
This course discusses software faults and techniques to reduce faults and improve software quality. Software systems are some of the most complex human artifacts ever built and also some of the most critical means to ensure our safety, well being, and prosperity. This course teaches techniques to ensure software systems perform their function correctly. Topics include software specifications, goals of testing, techniques of test data selection, test oracle design, test data analysis, test lifecycle and quality impacts of testing. Effective From: Spring 2012

CS 685 - Software Architecture (3-0-3)
The software architecture defines the structure and interactions of software modules. This course provides a working knowledge of the terms, principles and methods of software architecture and module design. It explains the constraints on the design and the properties of capacity, response time, and consistency. The "4+1" architecture model is taught with architectural styles, interface isolation, decoupling, reuse, agile design with software patterns, data structures, queuing effects, design simplification and refactoring. The non-functional requirements of reliability, performance and power consumption, component based design and good industry practices for documenting and managing the architectural process are taught. Effective From: Spring 2012

CS 688 - Programming for Interactive Environments (3 credits)
Prerequisite: knowledge of C++. A thorough study of the fundamental concepts and techniques of programming for modern interactive support environments, better known as graphical user interfaces (GUIs). A balanced blend of principle and practice, incorporating a general paradigm of interactive program development and numerous examples from, and projects in, the major GUI environments. Effective From: Fall 2006 Until: Spring 2009

CS 696 - Network Management and Security (3 credits)
Prerequisites: CS 652 or ECE 683, and CS 656. Thorough introduction to current network management technology and techniques, and emerging network management standards. In-depth study of the existing network security technology and the various practical techniques that have been implemented for protecting data from disclosure, for guaranteeing authenticity of messages, and for protecting systems from network-based attacks. SNMP family of standards including SNMP, SNMPv2, and RMON (Remote Monitoring), OSI systems management. Various types of security attacks (such as intruders, viruses, and worms). Conventional Encryption and Public Key Cryptology. Various security services and standards (such as Kerberos, Digital Signature Standard, Pretty Good Privacy, SNMPv2 security facility). Same as ECE 638. Effective From: Fall 2006

CS 697 - Principles of Broadband ISDN and ATM (3 credits)
Prerequisite: CS 652 or ECE 683 or equivalent. Study of the Broadband Integrated Services Digital Network (B-ISDN) architecture and services. In-depth study of the Asynchronous Transfer Mode (ATM), ATM Adaptation Layer (AAL), ATM switching architectures, SONET/SDH, ATM traffic control, broadband integrated traffic models, Operation Administration and Management (OAM) functions, TCP/IP over ATM, and ATM market. Same as ECE 639. Effective From: Fall 2006 Until: Spring 2009

CS 704 - Sequencing and Scheduling (3-0-3)
Advanced sequencing and scheduling for job shops, flow lines, and other general manufacturing and production systems are discussed in this course. Both deterministic and stochastic scheduling models are covered in detail. Heuristics and worst case analysis for "unsolvable" hard scheduling problems (NP-C problems) are introduced. Effective From: Fall 2006

CS 708 - Advanced Data Security and Privacy (3 credits)
Prerequisites: CS 608,CS 645, CS 696, or instructor approval. In-depth study of the security and privacy issues associated with the massive amount of data that is collected, stored, shared and distributed in today's society. New paradigms are needed to address the security/privacy challenges when data is outsourced at untrusted servers (such as in cloud computing), when data is anonymized in order to be shared among untrusted parties, or when copyrighted data needs to be protected from unauthorized use. Effective From: Fall 2013

CS 725 - Independent Study in Computer Science I, II (3 credits)
Prerequisites: graduate standing and department consent. Effective From: Fall 2006

CS 730 - Seminar in Database Management Topics (3 credits)
Prerequisite: CS 631. A seminar in which students pursue intensive study of specialized topics in the current literature of database management. Each topic is supported by an initial reading list covering current problems in theory and practice. Students present the results of their studies in class with faculty and invited specialists participating. Topics include, but are not limited to, advanced data modeling, object oriented databases, query languages, semantic optimization, database mapping and integration, physical database architecture, database/knowledge-base integration, distributed databases, database machines, database version control, logical and deductive databases. Effective From: Fall 2006

CS 731 - Applications of Database Systems (3 credits)
Prerequisites: IS 675 and CS 631. Restricted to students who are specializing in computer and information systems management. Comparative study of different models of database management systems and their applications. Emphasis on the functions of the database administrator. Includes a survey of physical and logical organization of data, methods of accessing data, characteristics of different models of generalized database management systems, and case studies using these systems from various applications. Student teams design database systems for class projects. Effective From: Fall 2006

CS 732 - Advanced Machine Learning (3-0-3)
Prerequisites: CS 634 or CS 670. This course presents advanced topics in the machine learning field, with a focus on recent learning techniques developed for analysis of high dimensional data such as a model selection by regularization and ensemble learning. The course also covers the theory of supervised, semi-supervised, unsupervised, transduction and reinforcement learning, as well as applications of these learning methods. Effective From: Spring 2014

CS 734 - Data Mining (3 credits)
Prerequisites: Permission from instructor. Covers the concepts and principles of advanced data mining systems design. Presents methods for association and dependency analysis, classification and predication, and clustering analysis. Optional topics may include Web and scientific data mining, knowledge discovery applications, and current trends in data mining. Effective From: Fall 2006 Until: Fall 2010

CS 741 - Communication Network Design (3 credits)
Prerequisites: CS 651 and CS 652. Basic problems of communication network design: analyzes their complexity and provides algorithms, heuristics and other techniques for their solution. Effective From: Fall 2006 Until: Spring 2009

CS 744 - Data Mining and Management in Bioinformatics (3 credits )
Prerequisites: CS 610 or permission of the instructor. Concepts and principles of bioinformatic data mining and management with focus on efficiency and scalability. Methods for indexing and querying biological databases, biological data mining, and algorithmic development for bimolecular and phlyogenetic data analysis. Trends and advances in areas such as functional genomics and proteomics, genetic engineering, and large-scale gene expression data analysis. Effective From: Fall 2006

CS 750 - High Performance Computing (3 credits)
Prerequisite: CS 650. An in-depth study of the state of the art in high performance computing. Topics parallel computer architectures, programming paradigms, and their applications. Parallel architectures include PC clusters, shared-memory multiprocessors, distributed-memory multiprocessors, and multithreaded architectures. Parallel programming paradigms include message passing interface (MPI), its second-generation MPI-2, and multithreaded programming. Applications include computational science and high performance Web and database servers for Internet-based electronic commerce. Students program a parallel machine in class projects. First-hand experience in stable, scalable, high performance computing for Internet-based electronic commerce. Effective From: Fall 2006

CS 752 - Communication Protocol Synthesis and Analysis (3 credits)
Prerequisite: CS 652 or basic familiarity with communication protocols. An in-depth study of the state of the art of protocol engineering. Enables students to apply the techniques of protocol design to real problems in communication protocols. Effective From: Fall 2006 Until: Spring 2009

CS 755 - Security and Privacy in Wireless Networks (3 credits)
This course covers selected topics on security and privacy in wireless networks and is intended for graduate students who are interested in network security. This course can help the students learn the state of the art and open challenges in wireless network security and privacy, thus enhancing their potential to perform research or pursue a career in this emerging area. Effective From: Spring 2011

CS 756 - Mobile Computing and Sensor Networks (3 credits)
This course provides an in-depth study of mobile computing and sensor networks, which are becoming major components of the transition from today's world of desktop computers to a world where computing is ubiquitous. The main topics include: techniques to handle mobility in the Internet and ad hoc networks; operating systems, programming languages, and protocols for sensor networks; applications, middleware, programming models, and security ubiquitous computing environments. Effective From: Spring 2008

CS 759 - Advanced Image Processing and Analysis (3 credits)
Prerequisite: CS 659. Advanced study of recent research in image processing, analysis, and understanding. Topics include all image processing techniques, high-level recognition approaches, and automated expert vision systems. Effective From: Fall 2006

CS 775 - Seminar in Software Engineering (3 credits)
Prerequisite: CS 673. A seminar in which students pursue intensive study of specialized topics in the current literature of software engineering. Each topic is supported by an initial reading list on current problems in theory and practice. The results of the studies are discussed in class with students, faculty and invited specialists. Effective From: Fall 2006

CS 777 - Seminar in Software Management and Production (3 credits)
Prerequisites: Ph.D. core courses. A seminar in which students pursue intensive study of specialized topics in the current literature of software management and production. Each topic is supported by an initial reading list covering current problems in theory and practice. The results of the studies are discussed in class with students, faculty, and invited specialists participating. Topics include, but are not limited to, theory of algorithm structure, analysis of algorithms and programs, hardware technology assessment, automated tools for software production, software measurements and quality, peripheral device interfaces, data communications, computer networks, distributed processing, software verification, implementation standards, documentation standards, system security, software copyright, and project control and organization. Effective From: Fall 2006

CS 780 - Computer Vision (3 credits )
Prerequisite: CS 505. This course introduces computational models of computer vision and their implementation on computers, and focuses on material that is fundamental and has a broad scope of application. Topics include contemporary development in all mainstream areas of computer vision e.g., Image Formation, Feature Representation, Classification and Recognition , Motion Analysis, Camera Calibration, 3D Vision, Shape From X, and typical applications such as Biometrics. Effective From: Fall 2006 Until: Fall 2010

CS 782 - Pattern Recognition and Applications (3 credits)
Prerequisite: CS 610. Study of recent advances in development of (statistical and syntactic) pattern algorithm, approximation, and estimation techniques. Topics include statistical estimation theory, classifier design, parameter estimation and unsupervised learning, bias vs. variance, nonparametric techniques, linear discriminant functions, tree classifiers, feature extraction, and clustering. Additional topics include Support Vector machines (SVM), Bayesian Learning, Hidden Markov Models (HMM), evolutionary computation, neural networks, with applications to signal interpretation, time-series prediction, and Biometrics. Effective From: Fall 2006

CS 785 - Seminar in Computer and Information Science I (3 credits)
Prerequisites: determined by nature of topic area. Advance notice of the topics to be covered is given. These seminars examine in depth a special interest area of computer and information science. It emphasizes recent work in area selected for the offering of the course. This course is for master's students and cannot apply toward master's degree credit. Effective From: Fall 2006

CS 786 - Special Topics (3 credits)
Prerequisites: same as for CS 785. A continuation of CS 785. Effective From: Fall 2006

CS 791 - Graduate Seminar (Non-credit)
Corequisite (for doctoral students only): CIS 790. A seminar in which faculty, students, and invited speakers will present summaries of advanced topics in computer and information systems management. In the course students and faculty will discuss research procedures, dissertation organization, and content. Students engaged in research will present their own problems and research progress for discussion and criticism. Effective From: Fall 2006

CS 792 - Pre-Doctoral Research (3 credits)
Prerequisite: permission from department chairperson. For students admitted to the doctoral program in computer and information science who have passed the field exam or the qualifying examination. Research is carried out under the supervision of a designated faculty member. Students identify a research problem and prepare a plan to solve the problem. A maximum of 6 credits of CS 792 may be applied to the CIS 790 requirement. Effective From: Fall 2006

CS 794 - Computer Science/Information Systems Colloquium (Non-credit)
Prerequisite: graduate standing with major in computer science. Colloquium in which national and international experts in the various fields of computer science are invited to present and discuss the results of their recent research. Effective From: Fall 2006