Close
Please Wait. Loading Menu...
top-slider-lt-corner.gif top-slider-rt-corner.gif
Computer Science

Courses Offered

CS 284 Computer Science I

Prerequisite: Level III placement on the Basic Math Skills inventory or MATH 120 (may be taken concurrently). (Both semesters/4 credits) 

An introduction to general programming techniques. Intended for students who have had some previous experience with computer programming. The course emphasizes strategies for good program design. Topics include: algorithmic problem solving, top-down design, object- oriented programming and design, and an introduction to abstract data types. Instruction will be in the high-level programming language Java.

 

CS 287 Computer Science II

Prerequisites: MATH 207 (may be taken concurrently) and CS 284 or permission of the instructor. (Both semesters/4 credits) 

An introduction to the structuring and manipulation of information with implementation in the high-level programming language Java. Topics include: linked lists, sets, stacks, queues and trees; basic manipulation techniques including sort/merge and search algorithms; an introduction to algorithm efficiency analysis.

 

CS 326 Computer Organization and Design

Prerequisites: CS 284 and MATH 207 or permission of the instructor. (Both semesters/ 3 credits) 

A comprehensive introduction to the general organization, architecture and functional characteristics of computer systems. Topics include machine level representation of data, assembly level machine organization, memory systems organization and architecture, alternative architectures and device interfaces.

 

CS 375 Independent Study

The study of selected topics in computer science, accomplished through readings, problem assignments and projects.

CS 398 Computer Science Tutorial

Prerequisite: Permission of instructor. (Offered as needed/1, 2 or 3 credits) 

An opportunity to work with a faculty member and a small group of students in a semester- long program of directed study.

 

CS 399 Internship in Computing

Prerequisites: 21 credits of computer science courses at the 200 level or above and permission of the department. (Either semester/3 to 15 credits) 

Supervised work in computer-related projects in a governmental, private-industrial or educational setting. In order to enroll in this course, a student must meet College internship requirements. Grading is on a satisfactory/unsatisfactory basis.

 

CS 419/519 Advanced Data Structures

Prerequisite: CS 287. (Both semesters/3 credits) 

An intensive introduction to object-oriented programming and advanced data structures. Topics will include such data structures as heaps, priority queues, hash tables, advanced tree structures including B+ or B* trees and graphs. The course will emphasize the relative advantages and disadvantages of various design and implementation choices, and the way these choices affect software quality. Integration of component-based methodologies into their software designs will be discussed. Instruction will be in the C++ programming language, including the C++ Standard Library.

 

CS 420/520 Algorithm Analysis

Prerequisites: MATH 201, MATH 207 (“C-” or better) and CS 419 or permission of the instructor. (Second semester/3 credits) 

An introduction to the analysis and design of algorithms. Topics include: sorting and searching, review of data structures, advanced tree structures, graph algorithms, network- flow problems, amortized analysis, divide-and-conquer, greedy algorithms and dynamic programming. Additional topics may include: combinatorial search algorithms, computational geometry, string algorithms, distributed algorithms, parallel algorithms and NP-Completeness.

 

CS 424/524 Principles of Software Engineering

Prerequisite: CS 287 or permission of the instructor. (First semester/3 credits) 

Prerequisite: CS 287 or permission of the instructor. (First semester/3 credits) This course will examine and discuss the life cycle of computer software. The major issues addressed are: analysis of the project, requirements specification, design, coding, testing and reliability and maintenance.

 

CS 428/528 Artificial Intelligence

Prerequisite: CS 419 or permission of the instructor. (First semester/3 credits) 

An introduction to the fundamental principles, techniques and tools of artificial intelligence, including significant past developments, current applications and future directions. In particular, expert systems will be studied as an example of a successful mainstream application of AI. Other topics will be chosen, as time permits, from among the following: state-space searching, knowledge representation, logic and deduction, LISP as a programming language for AI, natural language processing, neural networks, learning, vision, robotics and cognitive science. Topics will be treated at a level of depth and detail appropriate for a first course in AI.

 

CSIT 430/530 Applied Database Concepts

Prerequisite: CS 287 or permission of the instructor. (Second semester/3 credits) 

A study of the design and implementation of databases from a real world applications point of view. The course includes a review of database concepts such as basic architectural issues, the relational model, query processing, logical database design and normalization theory and data protection issues. The course will also address topics such as assessing end-user needs, developing specifications, designing functionally equivalent solutions and evaluating commercial database packages.

 

CS 443/543 Machine Learning

Prerequisite: CS 428 or permission of the instructor. (Second semester—even years/3 credits)

Introduction to the field of modeling learning with computers. Topics included are explorations of inductive learning, learning decision trees, ensemble learning, computational learning theory and statistical learning methods. 

CS 445/545 Robotics and Intelligent Systems

Prerequisite: CS 428 or permission of the instructor. (Second semester—odd years/3 credits) 

This course examines the fundamental theory and methods behind robot-building and the deployment of intelligent systems. Topics are divided between robot architectures and cognitive robotics (intelligent systems). Robot architecture topics include control paradigms, kinematics, sensors, actuators and navigation. Cognitive robotics topics include: learning, decision-making, coordination and cooperation. This is both a theoretical and hands-on course. Software simulation environments and physical robots will be extensively used during the semester as experimentation platforms to enforce student mastery of the material.

 

CS 450/550 Digital Logic and Switching Theory

Prerequisite: CS 326 or permission of the instructor. (Offered as needed/3 credits) 

Introduction to combinational and sequential circuit design. Topics include arithmetic circuits, decoders, flip-flops, counters, registers, memory systems and analog-to-digital conversion. Students will use integrated circuits to construct the circuits designed.

 

CS 453/553 Data Communication and Network Security

Prerequisites: CS 287 and 326 or permission of the instructor. (First semester/3 credits) 

This course is designed to provide a foundational understanding of networking technology and security. Essential networking concepts include: signaling and signal propagation, data and bit encoding, packetization, wiring, physical and logical topologies, network architectures and protocols (with special focus on TCS/IP and Ethernet) and layered models (OSI); network security will focus on the origin, axis and impacts of network related threats and the detection, correction and prevention of these threats. The focus is to highlight key principles that can be used for understanding, enabling, implementing, operating and reasoning about network applications and network security.

 

CS 461/561 Computer Architecture

Prerequisites: CS 326 and CS 419 or permission of the instructor. (First semester—odd years/3 credits) 

An in-depth study of architectural concepts and principles including performance-based design tradeoffs. Topics to be covered include: instruction set design, arithmetic algorithms, hardwired and microprogrammed control, memory hierarchy design, input/output, pipelines, RISC, CISC, vector processors, parallel processors and superscalar machines.

 

CS 464/564 Operating Systems

Prerequisites: CS 326 and CS 419 or permission of the instructor. (Second semester/3 credits) 

A comprehensive introduction to the fundamental principles of operating systems illustrated by examples from contemporary systems. This course emphasizes the design tradeoffs involved in operating system design. Topics include: process management; concurrency; deadlock; cpu scheduling; memory management; disk management; files systems; security; and distributed, real-time and multiprocessor operating systems.

 

CS 466/566 Parallel Computing

Prerequisite: CS 419 or permission of the instructor. (Course is offered as needed/3 credits) 

A comprehensive introduction to both the principles and the practice of parallel computing. Topics to be covered include: programming and architectural models, parallel algorithms and parallelizing compilers.

 

CS 471/571 Programming Languages: Their Design and Compilation

Prerequisites: CS 326 and CS 419. (First semester/3 credits) 

A survey of the major programming paradigms and their related languages, including procedural, functional, logic and object-oriented programming. Topics include: binding, exception handling, data sharing, scope, parameter passing, type checking, runtime storage management, lexical analysis, syntactic analysis, parsing, code generation and optimization.

 

CS 475 Senior Project

Prerequisites: CS 424. CS 584 and senior standing, or permission of the instructor. (Both semesters/3 credits) 

In this project-oriented course, students majoring in computer science complete a “capstone project,” serving as a culmination of their studies within the major. The project entails the development of a significant piece of software by a student team, supervised by a designated faculty member within the department and evaluated by a faculty committee. Appropriate topics for the project may synthesize or extend ideas/results from several areas of study from coursework, or develop a topic not normally covered in the curriculum. The senior project concludes with the submission of a “product” (i.e., software, documentation), or a written paper (thesis) and a public presentation.

 

CSIT 483/583 World Wide Web Programming

Prerequisite: CS 287 or permission of instructor. (Course is offered as needed/3 credits) 

Examination of issues and techniques in programming for World Wide Web applications. Topics include HTML and the HyperText Transfer Protocol, The Common Gateway Interface (CGI); Multipurpose Internet Mail Extensions (MIME); programming language options; CGI scripting (designing, building, testing and installing CGI applications); file and database access; and security issues. Perl will be used as the primary scripting language for the course. Class sessions will emphasize interactive exploration and discussion. Student teams will develop a working application as part of the course work.

 

CS 490 Assistantship in Computing

Prerequisites: 12 credits of CSCI at the 200 level or above and permission of the department. (Either semester/2 to 6 credits) 

This course provides an opportunity for students to participate in the operation of campus computer facilities, either in the department or elsewhere. Projects may include management of an operating system, development of services and software for various constituencies and preparation of user documentation.

The department also regularly offers special topics courses in various areas of computer science and information technology. Check the specific course schedule for a given semester to see what special topics courses may be offered that semester.

 

CS 474 Capstone Proseminar

Prerequisites: CSIT 430 and senior standing, or permission of the instructor. (Second semester/3 credits) 

To succeed in the areas of computing and information technology, technical knowledge of the field is certainly necessary but not sufficient. This course focuses on cultivating proficiency in technical communication, reinforcing the use of appropriate research methods, enhancing the ability to identify computational problems, properly state research questions, critically assess scientific literature, present data and results effectively, work in teams and improve technical writing and time management skills. Credits: 3.0. Prerequisites: CSIT 430 and Senior standing, or permission of the instructor.

 

CPSC 475 Senior Project in Computational Science

Prerequisite: Open to senior Computational Science majors with a 2.00 gpa or higher (Both semesters/3 credits) 

Working with an advisor from mathematics or computer science and an advisor from the student's major concentration, the student will use computational knowledge and skills to investigate a problem in another science.

 

CS 503 Algorithms and Programming I

Prerequisites: Either A minimum grade of “B-” in MATH 505 or concurrent enrollment in MATH 505, or permission of the instructor. Previous experience with a high-level programming language such as Ada, BASIC, C, C++, Fortran or Pascal is recommended. (Either semester/3 credits) 

Introduction to the basic techniques of program development including input, output, assignment, control structures, simple and aggregate data types and subprograms. All phases of the course will focus on problem-solving strategies, modular design and de-bugging techniques. Students will also learn a specific high-level programming language, which will be used to implement programming concepts and do programming assignments.

CS 504 Algorithms and Programming II

Prerequisites: A minimum grade of “B-” in both CS 503 and MATH 505, or permission of the instructor. (Both semesters/3 credits)  

A study of abstract data types and data structures such as stacks, queues, linked lists, trees, graphs and their implementations. Topics also include algorithms for hashing, sorting, searching and analysis of algorithm efficiency. Students will be required to use a high-level programming language at an advanced level in programming assignments.

CS 508 Computer Organization and Design

Prerequisites: A minimum grade of “B-” in both MATH 505 and CS 503, or permission of the instructor. (Both semesters/3 credits)  

A comprehensive introduction to the general organization, architecture, and functional characteristics of computer systems. Topics include machine level representation of data, assembly level machine organization, memory system organization and architecture, alternative architectures and device interfaces.

CS 519/419 Advanced Data Structures

Prerequisite: A minimum grade of “B-” in CS 504. (Both semesters/3 credits) 

An intensive introduction to object-oriented programming and advanced data structures. Topics will include such data structures as heaps, priority queues, hash tables, advanced tree structures including B+ or B* trees and graphs. The course will emphasize the relative advantages and disadvantages of various design and implementation choices, and the way these choices affect software quality. Integration of component-based methodologies into their software designs will be discussed. Instruction will be in the C++ programming language, including the C++ Standard Library.

CS 520/420 Algorithm Analysis

Prerequisites: MATH 505, Calculus and CS 519 (Second semester/3 credits) 

An introduction to the analysis and design of algorithms. Topics include: sorting and searching, review of data structures, advanced tree structures, graph algorithms network flow problems, amortized analysis, divide-and-conquer, greedy algorithms and dynamic programming. Additional topics may include: combinational search algorithms, computational geometry, string algorithms, distributed algorithms, parallel algorithms and NP-Completeness.

CS 524/424 Principles of Software Engineering

Prerequisite: A minimum of “B-” in CS 504, or permission of the instructor. (First semester/3 credits) 

This course will examine and discuss the life cycle of computer software. The major issues addressed are: analysis of the project, requirements specification, design, coding, testing and reliability and maintenance.

CS 525 Software Testing and Quality Assurance

Prerequisite: A minimum grade of “B-” in CS 524 or permission of the instructor. (Second semester—odd years/ 3 credits) 

This course examines the theory and practice behind software testing and quality assurance. Emphasis is placed on understanding the software testing process, planning, strategy, criteria and testing methods, as well as software quality assurance concepts and control process. Topics will include test models, test design techniques (black box and white-box testing), integration, regression, measurement, unit testing, slicing and debugging, inspection and software metrics. Emerging concepts and their impact on testing will also be examined. This is both a theoretical and hands-on course. Multiple software testing suites will be used during the semester to enforce student mastery of the material.

CS 528/428 Artificial Intelligence

Prerequisite: A minimum grade of “B-” in CS 504, or permission of the instructor. (First semester/ 3 credits) 

An introduction to the fundamental principles, techniques and tools of artificial intelligence, including significant past developments, current applications and future directions. In particular, expert systems will be studied as an example of a successful mainstream application of AI. Other topics will be chosen, as time permits, from among the following: state-space searching, knowledge representation, logic and deduction, LISP as a programming language for AI, natural language processing, neural networks, learning, vision, robotics, and cognitive science. Topics will be treated at a level of depth and detail appropriate for a first course in AI.

CSIT 530/430 Applied Database Concepts

Prerequisite: A minimum grade of “B-” in CS 504 (MS in CS students) or a minimum grade of “B-” in IT 514 (MS in CIS students), or permission of the instructor. (Second semester/3 credits) 

A study of the design and implementation of databases from a real world applications point of view. The course includes a review of database concepts such as basic architectural issues, the relational model, query processing, logical database design and normalization theory and data protection issues. The course will also address topics such as assessing end-user needs, developing specifications, designing functionally equivalent solutions and evaluating commercial database packages.

CSIT 532 Computer Forensics

Prerequisite: A minimum grade of “B-” in IT 518 or CS 524 or permission of the instructor. (First semester/3 credits)  

Computer forensics is the analysis of computing and networking equipment to determine if the equipment has been used for illegal, unauthorized or unusual activities. It also includes monitoring a network for the same purpose. The theory, skills and tools needed in intrusion detection and computer forensics are the major themes in this course. The course discusses techniques for identifying threats, attacks and the axis of these attacks, including the various types of malicious code. It also presents the conceptual and operational tools and techniques necessary for analysis and resolution of problems with respect to attack tracing, system recovery, continuity of operation, evidence collection, evidence analysis and prosecution. Additional content includes technique, for mitigating security risks, effective use of filters and firewalls, and for recognizing attack patterns.

CSIT 534 Network and Internet Security

Prerequisite: A minimum grade of “B-” in CSIT 555 or permission of the instructor. (3 credits)

This course provides a detailed examination of the pervasive security threats that are related to the Internet, data communications and networking. Network security deals with real-time or near real-time capture of information and the systematic tracking of transmissions. The focus of the course is on network-borne threats, their detection, preventions and analysis (network forensics) and the integration of the tools and techniques employed in this effort. The course includes a major emphasis on network security. It covers additional topics including: authentication; email, IP, and web security; security threats; information, risk and security management techniques and practices; malicious software; and firewalls. Limited practical application of these principles is provided through several software applications. The purpose of the course is to provide the student with a general understanding of the security field and discipline, and some practical knowledge of the application of these practices.

CSIT 537 Applied Encryption and Cryptology

Prerequisites: A minimum grade of “B-” in CSIT 555 or permission of the instructor. ((Second semester—odd years/3 credits) 

Introduction to cryptology, the science of making and breaking secret codes. Topics include encryption, basic cryptanalysis, public and secret key encryption, block ciphers and digital signatures. Classic and modern cryptography and encryption concepts will be introduced as tools and safeguards that need to be applied, implemented and evaluated in real-world scenarios to achieve security and information assurance objectives. This graduate course is for CS, IT and Security Certificate students.

CS 536 Web Services

Prerequisites: A minimum grade of “B-” in CS 519 and knowledge of HTML. (Offered as needed/3 credits) 

An introduction to the creation and use of Web Services. Students will learn how Web Services are used in systems integration and in facilitating B2B communication. Topics include: creating and consuming Web services, a study of the four pillars of Web Services (i.e. XML, SOAP, UDDI and WSDL); security; maintaining application and session state, alternative middleware technologies and business/management considerations whenimplementing Web Services.

CSIT 540 Human-Computer Interaction

Prerequisite: A minimum grade of “B-” in CS 504 (MS in CS students) or A minimum grade of “B-” in IT 514 (MS in CIS students) or permission of the instructor. (Second semester—even years/3 credits)  

Topics covered will be chosen from the relationships between people and computers and the role of human factors and psychology in those relationships; usability; interaction and interface design issues; command languages, menus, error messages and response time; physical interaction, I/O devices and interaction style and techniques; the design process and user models; interface evaluation, rapid prototyping and interactive refinement; natural language; integration of user interfaces with software engineering.

CS 542 Perception in Artificial Intelligence

Prerequisites: A minimum grade of “B-” in CS 504 and CS 528. (First semester—even years/3 credits) 

This course deals with the simulation of human perception. Specific topics investigated include methods for pattern recognition and employing neural networks in perceptual tasks.

CS 543/443 Machine Learning

Prerequisite: A minimum grade of “B-” in CS 528. (Second semester—even years/3 credits) 

Introduction into the field of modeling learning with computers. Topics included are explorations of inductive learning, learning decision trees, ensemble learning, computational learning theory and statistical learning methods.

CS 544 Knowledge Representation and Reasoning

Prerequisites: A minimum grade of “B-” in CS 504 and CS 528. (First semester—odd years/3 credits)  

This course provides a comprehensive examination of current approaches to knowledge representation. Topics covered will include first order logic, ontological engineering, reasoning systems and dealing with uncertainty.

CS 545/445 Robotics and Intelligent Systems

Prerequisite: A minimum grade of “B-” in CS 528, or permission of the instructor (Second semester—odd years/3 credits)  

This course examines the fundamental theory and methods behind robot-building and the deployment of intelligent systems. Topics are divided between robot architectures and cognitive robotics (intelligent systems). Robot architecture topics include control paradigms, kinematics, sensors, actuators and navigation. Cognitive robotics topics include: learning, decision-making, coordination and cooperation. This is both a theoretical and hands-on course. Software simulation environments and physical robots will be extensively used during the semester as experimentation platforms to enforce student mastery of the material.

CS 550/450 Digital Logic and Switching Theory

Prerequisite: A minimum grade of “B-” in MATH 505, or permission of the instructor. (Offered as needed/3 credits)  

Introduction to combinational and sequential circuit design. Topics include arithmetic circuits, decoders, flip-flops, counters, registers, memory systems and analog-to-digital conversion. Students will use integrated circuits to construct the circuits designed.

CS 553/453 Data Communications and Network Security

Prerequisites: A minimum grade of “B-” in both CS 504 and CS 508, or permission of the instructor. (First semester/3 credits)  

This course is designed to provide a foundational understanding of networking technology and security. Essential networking concepts include: signaling and signal propagation, data and bit encoding, packetization, wiring, physical and logical topologies, network architectures and protocols (with special focus on TCS/IP and Ethernet), and layered models (OSI), network security will focus on the origin, axis and impacts of network related threats and the detection, correction and prevention of these threats. The focus is to highlight key principles that can be used for understanding, enabling, implementing, operating, and reasoning about network applications and network security.

CSIT 555 Information Systems Security

Prerequisites: CSIT 530 and either IT 548 or CS 553, or permission of the instructor. (Second semester/3 credits)  

This course considers technical, operational and managerial issues of computer systems security in an operational environment. The course will address the threats to computer security including schemes for breaking security, and techniques for detecting and preventing security violations. Emphasis will be on instituting safeguards, examining the different types of security systems and applying the appropriate level of security for perceived risks.

CS 557 UNIX System Programming

Prerequisite: A minimum grade of “B-” in CS 519, or permission of the instructor. (Offered as needed/3 credits) 

This course will focus on the UNIX operating system and system level programming in the UNIX environment. Course includes an in-depth study of UNIX file handling, process structure, process control, process scheduling, memory management and inter-process communication. Other topics include shell programming, the system call interface to the UNIX kernel, use of system calls in the C language and an introduction to X Windows programming.

CS 561/461 Computer Architecture

Prerequisites: A minimum grade of “B-” in both CS 508 and CS 519, or permission of the instructor. (First semester—odd years/3 credits)  

An in-depth study of architectural concepts and principles including performance-based design tradeoffs. Topics to be covered include: instruction set design, arithmetic algorithms, hardwired and microprogrammed control, memory hierarchy design, input/output, pipelines, RISC, CISC, vector processors, parallel processors and superscalar machines.

CS 564/464 Operating Systems

Prerequisites: A minimum grade of “B-” in both CS 508 and CS 519, or permission of the instructor. (Second semester/3 credits)  

A comprehensive introduction to the fundamental principles of operating systems illustrated by examples from contemporary systems. This course emphasizes the design tradeoffs involved in operating system design. Topics include: process management; concurrency; deadlock; cpu scheduling; memory management; disk management; files systems; security; and distribureal-time and multiprocessor operating systems.

CS 565 Database System Concepts

Prerequisites: CS 519, CSIT 530 and CS 564, or permission of the instructor. (Offered as needed/3 credits)  

This course covers a range of database system concepts such as transaction processing, serializability, locking and timestamping protocols, logging techniques, implementation of backup and recovery, indexing, query processing and optimization, and various additional implementation techniques. These concepts are illustrated by examining the implemand application of object-oriented, parallel and distributed database systems.

CS 566/466 Parallel Computing

Prerequisite: A minimum grade of “B-” in CS 519 or permission of the instructor. (Offered as needed/ 3 credits)  

A comprehensive introduction to both the principles and the practice of parallel computing. Topics to be covered include: programming and architectural models, paralleparallelizing compilers.

CS 567 Distributed Computing

Prerequisite: A minimum grade of “B-” in CS 564. (Offered as needed/3 credits) 

An introduction to distributed systems and distributed operating systems. Topics will include interprocess communication, safety, liveness, remote procedure call, file and name services, distributed notions of time, shared data and concurrency control and distributed shared memory.

CS 571/471 Programming Languages: Their Design and Compilation

Prerequisites: A minimum grade of “B-” in both CS 508 and CS 519, or permission of the instructor. (First semester/3 credits)  

A survey of the major programming paradigms and their related languages, including procedural, functional, logic and object-oriented programming. Topics include: binding, exception handling, data sharing, scope, parameter passing, type checking, runtime storage management, lexical analysis, syntactic analysis, parsing, code generation and optimization.

CSIT 583/483 World Wide Web Programming

Prerequisites: IT 581 and CS 504, or permission of instructor. (Second semester—odd years/3 credits) 

Examination of issues and techniques in programming for World Wide Web applications. Topics include HTML and the HyperText Transfer Protocol, The Common Gateway Interface (CGI); Multipurpose Internet Mail Extensions (MIME); programming language options; CGI scripting (designing, building, testing and installing CGI applications); file and database access; and security issues. Perl will be used as the primary scripting language for the course. Class sessions will emphasize interactive exploration and discussion. Student teams will develop a working application as part of the course work.

CS 595 Software Engineering Project

Prerequisites: CS 524 and 18 credits of CS coursework beyond foundation level, and permission of department. (6 credits)  

Design, creation and documentation of an applications program. Required of all degree candidates who have requested and been accepted for the software engineering project option.

CS 503 Algorithms and Programming I

Prerequisites: Either A minimum grade of “B-” in MATH 505 or concurrent enrollment in MATH 505, or permission of the instructor. Previous experience with a high-level programming language such as Ada, BASIC, C, C++, Fortran or Pascal is recommended. (Either semester/3 credits) 

Introduction to the basic techniques of program development including input, output, assignment, control structures, simple and aggregate data types and subprograms. All phases of the course will focus on problem-solving strategies, modular design and de-bugging techniques. Students will also learn a specific high-level programming language, which will be used to implement programming concepts and do programming assignments.

CS 504 Algorithms and Programming II

Prerequisites: A minimum grade of “B-” in both CS 503 and MATH 505, or permission of the instructor. (Both semesters/3 credits)  

A study of abstract data types and data structures such as stacks, queues, linked lists, trees, graphs and their implementations. Topics also include algorithms for hashing, sorting, searching and analysis of algorithm efficiency. Students will be required to use a high-level programming language at an advanced level in programming assignments.

CS 508 Computer Organization and Design

Prerequisites: A minimum grade of “B-” in both MATH 505 and CS 503, or permission of the instructor. (Both semesters/3 credits)  

A comprehensive introduction to the general organization, architecture, and functional characteristics of computer systems. Topics include machine level representation of data, assembly level machine organization, memory system organization and architecture, alternative architectures and device interfaces.

CS 519/419 Advanced Data Structures

Prerequisite: A minimum grade of “B-” in CS 504. (Both semesters/3 credits) 

An intensive introduction to object-oriented programming and advanced data structures. Topics will include such data structures as heaps, priority queues, hash tables, advanced tree structures including B+ or B* trees and graphs. The course will emphasize the relative advantages and disadvantages of various design and implementation choices, and the way these choices affect software quality. Integration of component-based methodologies into their software designs will be discussed. Instruction will be in the C++ programming language, including the C++ Standard Library.

CS 520/420 Algorithm Analysis

Prerequisites: MATH 505, Calculus and CS 519 (Second semester/3 credits) 

An introduction to the analysis and design of algorithms. Topics include: sorting and searching, review of data structures, advanced tree structures, graph algorithms network flow problems, amortized analysis, divide-and-conquer, greedy algorithms and dynamic programming. Additional topics may include: combinational search algorithms, computational geometry, string algorithms, distributed algorithms, parallel algorithms and NP-Completeness.

CS 524/424 Principles of Software Engineering

Prerequisite: A minimum of “B-” in CS 504, or permission of the instructor. (First semester/3 credits) 

This course will examine and discuss the life cycle of computer software. The major issues addressed are: analysis of the project, requirements specification, design, coding, testing and reliability and maintenance.

CS 525 Software Testing and Quality Assurance

Prerequisite: A minimum grade of “B-” in CS 524 or permission of the instructor. (Second semester—odd years/ 3 credits) 

This course examines the theory and practice behind software testing and quality assurance. Emphasis is placed on understanding the software testing process, planning, strategy, criteria and testing methods, as well as software quality assurance concepts and control process. Topics will include test models, test design techniques (black box and white-box testing), integration, regression, measurement, unit testing, slicing and debugging, inspection and software metrics. Emerging concepts and their impact on testing will also be examined. This is both a theoretical and hands-on course. Multiple software testing suites will be used during the semester to enforce student mastery of the material.

CS 528/428 Artificial Intelligence

Prerequisite: A minimum grade of “B-” in CS 504, or permission of the instructor. (First semester/ 3 credits) 

An introduction to the fundamental principles, techniques and tools of artificial intelligence, including significant past developments, current applications and future directions. In particular, expert systems will be studied as an example of a successful mainstream application of AI. Other topics will be chosen, as time permits, from among the following: state-space searching, knowledge representation, logic and deduction, LISP as a programming language for AI, natural language processing, neural networks, learning, vision, robotics, and cognitive science. Topics will be treated at a level of depth and detail appropriate for a first course in AI.

CSIT 530/430 Applied Database Concepts

Prerequisite: A minimum grade of “B-” in CS 504 (MS in CS students) or a minimum grade of “B-” in IT 514 (MS in CIS students), or permission of the instructor. (Second semester/3 credits) 

A study of the design and implementation of databases from a real world applications point of view. The course includes a review of database concepts such as basic architectural issues, the relational model, query processing, logical database design and normalization theory and data protection issues. The course will also address topics such as assessing end-user needs, developing specifications, designing functionally equivalent solutions and evaluating commercial database packages.

CSIT 532 Computer Forensics

Prerequisite: A minimum grade of “B-” in IT 518 or CS 524 or permission of the instructor. (First semester/3 credits)  

Computer forensics is the analysis of computing and networking equipment to determine if the equipment has been used for illegal, unauthorized or unusual activities. It also includes monitoring a network for the same purpose. The theory, skills and tools needed in intrusion detection and computer forensics are the major themes in this course. The course discusses techniques for identifying threats, attacks and the axis of these attacks, including the various types of malicious code. It also presents the conceptual and operational tools and techniques necessary for analysis and resolution of problems with respect to attack tracing, system recovery, continuity of operation, evidence collection, evidence analysis and prosecution. Additional content includes technique, for mitigating security risks, effective use of filters and firewalls, and for recognizing attack patterns.

CSIT 534 Network and Internet Security

Prerequisite: A minimum grade of “B-” in CSIT 555 or permission of the instructor. (3 credits) 

An introduction to the creation and use of Web Services. Students will learn how Web Services This course provides a detailed examination of the pervasive security threats that are related to the Internet, data communications and networking. Network security deals with real-time or near real-time capture of information and the systematic tracking of transmissions. The focus of the course is on network-borne threats, their detection, preventions and analysis (network forensics) and the integration of the tools and techniques employed in this effort. The course includes a major emphasis on network security. It covers additional topics including: authentication; email, IP, and web security; security threats; information, risk and security management techniques and practices; malicious software; and firewalls. Limited practical application of these principles is provided through several software applications. The purpose of the course is to provide the student with a general understanding of the security field and discipline, and some practical knowledge of the application of these practices.

CSIT 537 Applied Encryption and Cryptology

Prerequisites: A minimum grade of “B-” in CSIT 555 or permission of the instructor. ((Second semester—odd years/3 credits) 

Introduction to cryptology, the science of making and breaking secret codes. Topics include encryption, basic cryptanalysis, public and secret key encryption, block ciphers and digital signatures. Classic and modern cryptography and encryption concepts will be introduced as tools and safeguards that need to be applied, implemented and evaluated in real-world scenarios to achieve security and information assurance objectives. This graduate course is for CS, IT and Security Certificate students.

CS 536 Web Services

Prerequisites: A minimum grade of “B-” in CS 519 and knowledge of HTML. (Offered as needed/3 credits) 

An introduction to the creation and use of Web Services. Students will learn how Web Services are used in systems integration and in facilitating B2B communication. Topics include: creating and consuming Web services, a study of the four pillars of Web Services (i.e. XML, SOAP, UDDI and WSDL); security; maintaining application and session state, alternative middleware technologies and business/management considerations whenimplementing Web Services.

CSIT 540 Human-Computer Interaction

Prerequisite: A minimum grade of “B-” in CS 504 (MS in CS students) or A minimum grade of “B-” in IT 514 (MS in CIS students) or permission of the instructor. (Second semester—even years/3 credits)  

Topics covered will be chosen from the relationships between people and computers and the role of human factors and psychology in those relationships; usability; interaction and interface design issues; command languages, menus, error messages and response time; physical interaction, I/O devices and interaction style and techniques; the design process and user models; interface evaluation, rapid prototyping and interactive refinement; natural language; integration of user interfaces with software engineering.

CS 542 Perception in Artificial Intelligence

Prerequisites: A minimum grade of “B-” in CS 504 and CS 528. (First semester—even years/3 credits) 

This course deals with the simulation of human perception. Specific topics investigated include methods for pattern recognition and employing neural networks in perceptual tasks.

CS 543/443 Machine Learning

Prerequisite: A minimum grade of “B-” in CS 528. (Second semester—even years/3 credits) 

Introduction into the field of modeling learning with computers. Topics included are explorations of inductive learning, learning decision trees, ensemble learning, computational learning theory and statistical learning methods.

CS 544 Knowledge Representation and Reasoning

Prerequisites: A minimum grade of “B-” in CS 504 and CS 528. (First semester—odd years/3 credits)  

This course provides a comprehensive examination of current approaches to knowledge representation. Topics covered will include first order logic, ontological engineering, reasoning systems and dealing with uncertainty.

CS 545/445 Robotics and Intelligent Systems

Prerequisite: A minimum grade of “B-” in CS 528, or permission of the instructor (Second semester—odd years/3 credits)  

This course examines the fundamental theory and methods behind robot-building and the deployment of intelligent systems. Topics are divided between robot architectures and cognitive robotics (intelligent systems). Robot architecture topics include control paradigms, kinematics, sensors, actuators and navigation. Cognitive robotics topics include: learning, decision-making, coordination and cooperation. This is both a theoretical and hands-on course. Software simulation environments and physical robots will be extensively used during the semester as experimentation platforms to enforce student mastery of the material.

CS 550/450 Digital Logic and Switching Theory

Prerequisite: A minimum grade of “B-” in MATH 505, or permission of the instructor. (Offered as needed/3 credits)  

Introduction to combinational and sequential circuit design. Topics include arithmetic circuits, decoders, flip-flops, counters, registers, memory systems and analog-to-digital conversion. Students will use integrated circuits to construct the circuits designed.

CS 553/453 Data Communications and Network Security

Prerequisites: A minimum grade of “B-” in both CS 504 and CS 508, or permission of the instructor. (First semester/3 credits)  

This course is designed to provide a foundational understanding of networking technology and security. Essential networking concepts include: signaling and signal propagation, data and bit encoding, packetization, wiring, physical and logical topologies, network architectures and protocols (with special focus on TCS/IP and Ethernet), and layered models (OSI), network security will focus on the origin, axis and impacts of network related threats and the detection, correction and prevention of these threats. The focus is to highlight key principles that can be used for understanding, enabling, implementing, operating, and reasoning about network applications and network security.

CSIT 555 Information Systems Security

Prerequisites: CSIT 530 and either IT 548 or CS 553, or permission of the instructor. (Second semester/3 credits)  

This course considers technical, operational and managerial issues of computer systems security in an operational environment. The course will address the threats to computer security including schemes for breaking security, and techniques for detecting and preventing security violations. Emphasis will be on instituting safeguards, examining the different types of security systems and applying the appropriate level of security for perceived risks.

CS 557 UNIX System Programming

Prerequisite: A minimum grade of “B-” in CS 519, or permission of the instructor. (Offered as needed/3 credits) 

This course will focus on the UNIX operating system and system level programming in the UNIX environment. Course includes an in-depth study of UNIX file handling, process structure, process control, process scheduling, memory management and inter-process communication. Other topics include shell programming, the system call interface to the UNIX kernel, use of system calls in the C language and an introduction to X Windows programming.

CS 561/461 Computer Architecture

Prerequisites: A minimum grade of “B-” in both CS 508 and CS 519, or permission of the instructor. (First semester—odd years/3 credits)  

An in-depth study of architectural concepts and principles including performance-based design tradeoffs. Topics to be covered include: instruction set design, arithmetic algorithms, hardwired and microprogrammed control, memory hierarchy design, input/output, pipelines, RISC, CISC, vector processors, parallel processors and superscalar machines.

CS 564/464 Operating Systems

Prerequisites: A minimum grade of “B-” in both CS 508 and CS 519, or permission of the instructor. (Second semester/3 credits)  

A comprehensive introduction to the fundamental principles of operating systems illustrated by examples from contemporary systems. This course emphasizes the design tradeoffs involved in operating system design. Topics include: process management; concurrency; deadlock; cpu scheduling; memory management; disk management; files systems; security; and distribureal-time and multiprocessor operating systems.

CS 565 Database System Concepts

Prerequisites: CS 519, CSIT 530 and CS 564, or permission of the instructor. (Offered as needed/3 credits)  

This course covers a range of database system concepts such as transaction processing, serializability, locking and timestamping protocols, logging techniques, implementation of backup and recovery, indexing, query processing and optimization, and various additional implementation techniques. These concepts are illustrated by examining the implemand application of object-oriented, parallel and distributed database systems.

CS 566/466 Parallel Computing

Prerequisite: A minimum grade of “B-” in CS 519 or permission of the instructor. (Offered as needed/ 3 credits)  

A comprehensive introduction to both the principles and the practice of parallel computing. Topics to be covered include: programming and architectural models, paralleparallelizing compilers.

CS 567 Distributed Computing

Prerequisite: A minimum grade of “B-” in CS 564. (Offered as needed/3 credits) 

An introduction to distributed systems and distributed operating systems. Topics will include interprocess communication, safety, liveness, remote procedure call, file and name services, distributed notions of time, shared data and concurrency control and distributed shared memory.

CS 571/471 Programming Languages: Their Design and Compilation

Prerequisites: A minimum grade of “B-” in both CS 508 and CS 519, or permission of the instructor. (First semester/3 credits)  

A survey of the major programming paradigms and their related languages, including procedural, functional, logic and object-oriented programming. Topics include: binding, exception handling, data sharing, scope, parameter passing, type checking, runtime storage management, lexical analysis, syntactic analysis, parsing, code generation and optimization.

CSIT 583/483 World Wide Web Programming

Prerequisites: IT 581 and CS 504, or permission of instructor. (Second semester—odd years/3 credits) 

Examination of issues and techniques in programming for World Wide Web applications. Topics include HTML and the HyperText Transfer Protocol, The Common Gateway Interface (CGI); Multipurpose Internet Mail Extensions (MIME); programming language options; CGI scripting (designing, building, testing and installing CGI applications); file and database access; and security issues. Perl will be used as the primary scripting language for the course. Class sessions will emphasize interactive exploration and discussion. Student teams will develop a working application as part of the course work.

CS 595 Software Engineering Project

Prerequisites: CS 524 and 18 credits of CS coursework beyond foundation level, and permission of department. (6 credits)  

Design, creation and documentation of an applications program. Required of all degree candidates who have requested and been accepted for the software engineering project option.