Course Information

Schedule Codes

At the end of each course description, information is provided to indicate when the course will be scheduled. The schedule codes are the following:

F =Scheduled Fall
FS = Scheduled Fall and Spring
S =Scheduled Spring
SU = Scheduled Summer
WI = Scheduled Winter Intersession
AY = Scheduled alternate years
N =Offered when needed

Please Note: Schedules are subject to change; consult the Office of the Dean prior to registration

CS 500. Introduction to Computer Science I
This course provides an introduction to problem solving, data representation, algorithm design, programming and applications. Programs of increasing complexity, requiring a variety of control and data structures are assigned to give students experience with problem analysis and solution design. Weekly laboratory. (4 credits) FS

CS 510. Foundations of Computer Science
An intensive introduction to the mathematical tools and techniques fundamental to computer science. Topics include number systems, formal logic, induction, recursion, digital design and analysis of combinational and sequential circuits, finite state machines, trees, graphs. Same as MTH 704. (3 credits) FS

CS 520. Computer Science II
An introduction to advanced programming, data structuring and encapsulation techniques. Emphasis is placed on problem solving and solution design incorporating modern design principles. The use of these principles to achieve clarity and ease of debugging is required in the programming assignments. Prerequisite: CS 500 or equivalent. ( 3 credits) FS

CS 530 Introduction to Computer Architecture and Operating Systems
An introduction to the architecture and organization of a modern computer system with emphasis on the interaction and interdependence between the computer hardware and the operating system. Topics include basic CPU design, memory systems, the inputoutput system, interrupts, process/thread scheduling and execution, memory and IO management, the file system, command interpreters. FS

CS 600. Data Structures
A study of abstract data types such as stacks, queues, lists, trees, heaps and graphs and the design of data structures, algorithms and their complexity. The use of these data structures in designing solutions to problems is emphasized. Prerequisite: CS 505 and CS 510 or equivalents. (3 credits) F

CS 610. Computer Architecture
An introduction to the architecture, organization and logic design of digital computers. Topics include a review of number systems, analysis and design of digital circuits, computer architecture, CPU organization and operation, advanced CPU implementation techniques, hierarchical memory system design, topics in input-output design, and assembly language programming. The interdependence between computer hardware, operating systems, and programming language compilers is emphasized throughout the course. Prerequisite: CS 500 or equivalent. (3 credits) S

CS 620. Database Systems
A study of database management systems including entity-relationship, relational, object-relational, object oriented and semi-structured models, logical and physical representation, normalization, data languages including relational algebra and SQL, data management structures, and ethical and social issues in database systems. Prerequisites: CS 600. (3 credits) F

CS 630. Programming Languages
A study of the design and organization of higher level programming languages: processing, data types and data flow, control structures, program units, storage management, binding strategies, language design criteria, formal language definition. Prerequisite: CS 600. (3 credits) S

CS 650. Design of Operating Systems
The course presents the fundamental concepts in the design and implementation of modern operating systems. The structure of a typical operating system is considered and the efficient design of its various components is studied. The impact of hardware and compiler technology on operating system design is examined throughout the course. Assignments include the design and implementation of a small simulated operating system. Prerequisites: CS 600, CS 610. (3 credits) F

CS 700. Analysis of Algorithms
A study of the design and analysis of computer algorithms and their complexity, including searching, sorting, selecting and graph algorithms. Topics include algorithm design methods such as greedy algorithms, divide-and-conquer and dynamic programming. The concepts of lower bounds, NPcompleteness and unsolvability are also addressed. Prerequisite: CS 600. (3 credits) N

CS 701. Algorithms for Computational Science
This course provides an introduction to algorithms and their application in Computational Science. The main objective of the course is to develop students' algorithmic thinking and problem solving skills by exploring solutions to a variety of problems of modern significance in Bioinformatics, Molecular Biology, Computational Chemistry and Physics, Astronomy and other areas of Computational Science. (3 credits) N

CS 708. Computability and Unsolvability
This course presents a theoretical study of the limits of computability. A number of approaches to computability are presented such as Turing machine computability, recursive function theory and lambda calculus. The relation of computability and unsolvability to formal logic is considered, leading to a discussion of major results such as Godel's incompleteness theorem, Tarski's definability of truth, and the arithmetic and analytic hierarchies. Prerequisites: CS 510 and CS 600. (3 credits) N

CS 710. Advanced Computer Architecture
A detailed study of efficient processor design and the integration of a processor into a computer system so that performance and cost are optimized. Topics include cost/performance analysis, advanced processor implementation techniques, optimal memory hierarchy design, efficient input-output devices and control. The mutual impact of processor, operating system, and programming language compiler designs is emphasized throughout the course. Prerequisite: CS 610. (3 credits) N

CS 720. Advanced Topics in Database
A study of problems and techniques in the design and implementation of database systems. Topics include logical and physical design considerations, query optimization, post-relational systems, security, integrity, concurrency control, backup and recovery techniques, reorganization problems, data warehousing, data mining, issues in the design of distributed systems, and ethical and social issues in database systems. Prerequisite: CS 620. (3 credits) AYS

CS 730. Compiler Design
A study of the principles and techniques of language translation: finite automata and lexical analysis, parsing of context free languages, symbol tables, storage administration, error diagnosis and introductory discussion of optimization and code generation techniques. A major project is assigned. Prerequisite: CS 630. (3 credits) AYF

CS 740. Modeling and Simulation
An introduction to the mathematical modeling and simulation of discrete and continuous phenomena. Topics include deterministic and probabilistic modeling and simulation techniques, discretization of continuous processes and systems, computational complexity and efficiency considerations. Application of these techniques to real-world systems and processes will be studied and assigned as programming projects throughout the course. Prerequisite: CS 600 and CS 510 or equivalents. (3 credits) N

CS 742. Computer Graphics
A study of the theory, applications, and current hardware/software trends in computer graphics. Topics include mathematical techniques for representation of 3-D objects, geometric transformation, projection, hidden surface removal, texture mapping, and ray tracing. Prerequisite: CS 600. (3 credits) N

CS 744. Design and Programming of User Interfaces
Theory and practice of creating event-driven graphical user interfaces. Students will design and implement user interfaces in an object-oriented setting. Prerequisite: CS 600. (3 credits) N

CS 750. Advanced Operating Systems
This course examines the internal structure and implementation of one or more real operating systems. Algorithms and data structures involved in scheduling, memory management, input-output and secondary storage management are discussed, and their interdependence and interaction is emphasized. The implementation of system calls for use in system programming and administration is also considered. Prerequisite: CS 650. (3 credits) S

CS 760. Artificial Intelligence
Using computer algorithms and programs as tools, and focusing on the notion of an intelligent agent, the course explores such topics as problem-solving using uninformed and heuristic search, stochastic methods, knowledge representation, reasoning processes, perception, machine learning, robotic, and philosophical foundations of artificial intelligence. Prerequisite: CS 600. (3 credits) N

CS 770. Web Applications Development
This course focuses on the techniques needed for interactive Web-based application development. A variety of tools for application development are investigated both for client-side and server-side programming, such as XHTML, CSS, and object oriented scripting languages. Issues such as clientserver communication, database access, security, user and server-authentication are discussed. Webbased programming assignments are an integral component of this course. Prerequisite: CS 505 or equivalent. (3 credits) N

CS 772. Parallel and Scientific Computing
The course is an introduction to Parallel and Scientific Computing. Topics include advantages, limitations, theory, and applications of parallel and distributed computing, modern trends in parallel hardware and software design, and parallel programming with scientific application. Several parallel programming projects will be assigned. Prerequisites: CS 600, CS 610. (3 credits) N

CS 774. Client-Server Systems and Technologies
An introduction to the theory, hardware and software aspects of client-server systems. Distributed hardware and operating systems. Implementing client-server software using sockets, streams, threads, messagepassing, RPC and other communication mechanisms. Prerequisites: CS 600, CS 610. Same as TEL 774. (3 credits) N

CS 776. Networking Fundamentals
A basic introduction to the principles and practice of networking and data communications. The course covers the theoretical foundations of networking and the infrastructure required to implement a data communication network. Topics include the principles of digital communication for voice, data and video, protocol architecture, media types, multiplexing and spread spectrum, flow and error control, media access control and network security principles. (3 credits) F

CS 778. Local Area Networks
A study of the fundamentals and theory of modern local area networking. The course covers both the basic theory of communication across local area networks, as well as the major LAN Standards. Basic switching and routing theory as it applies to a LAN will also be covered. Prerequisite: CS 776. (3 credits) S

CS 780. Introduction to Software Engineering
A study of the steps and techniques in creation of large software systems in object-oriented and classical frameworks. Topics include techniques for systems analysis, design, implementation, testing, project management and evaluations, and ethical and social issues in software engineering. Prerequisite: CS 600. (3 credits) F

CS 784. Software Design and Development Project
This course presents a formal approach to techniques in software design and development and provides means for students to apply these techniques. As part of the course, students work in teams on the organization, management and development of a large software project. Prerequisite: Completion of the core and matriculated status. (3 credits) S

CS 790 Numerical Methods
A survey of computer solutions of numerical problems including topics of approximation, optimization, computation of eigenvalues and eigenvectors, Fourier analysis and solution of simultaneous and differential equations, numerical evaluation of derivatives and integrals. Prerequisites: CS 505 and CS 510 or equivalents. (3 credits) N

CS 980. Thesis Preparation Seminar
This course provides students with the opportunity to work with adepartmental advisor in developing a proposal for a thesis on an approved topic. Required of students who choose the thesis option. Prerequisite: Completion of the core and permission of the program coordinator. (3 credits) N

CS 981. Thesis
This course provides students with the opportunity to complete and defend the thesis approved by an advisor in CS 980. Required of students who choose the thesis option. Prerequisites: CS 980 and permission of the program coordinator. (3 credits) N

CS 990-998. Special Topics in Computer Science
This course studies topics of current interest in computer science, which are not covered in a course offered by the department. The course is offered periodically as the needs and interests of students and faculty dictate. Lab fee may be required. Prerequisites: Completion of core and permission of the program director. (3 credits) N

CS 999. Independent Study
This course provides students with an opportunity to engage in direct research or analysis in a chosen area. The student must select an advisor from the department and submit, in writing, an outline of the proposed study prior to registration. An interim report will be followed by the submission of the final research project. Prerequisite: Completion of the core and permission of the program coordinator. (3 credits) N