Course Descriptions
Computer Science (CSC) Graduate Courses
To view the complete schedule of courses for
each semester, go to
Cardinal Station.
CSC 502: Engineering and Computer Science Management
3.00 Credits
This course is intended to provide students with an opportunity to merge the fundamentals of executive business analysis and decision making with their knowledge of computer science. The course will cover a brief historical view of the evolution of I/T innovation from the personal computer through today's cloud computing with a strong focus on the executive decisions that helped drive this innovation. Students will complete deep dives into past successes and failures within the I/T industry and will come to understand the importance of business strategy, project management and ROI analysis as it relates directly to I/T investments. They will look at current industry trends and will have an opportunity to drive research that can change/alter the future landscape of several technology areas. Prerequisites: Juniors, Seniors and Graduate students who have a firm understanding of technology, computer architecture, programming fundamentals, operating systems, relational databases and networking.
CSC 504: Compiler Construction
3.00 Credits
An in-depth study of the programming languages compilation process. The course encompasses various topics about programming languages including language structures, grammars, and parsing techniques. The course also studies the building blocks of a modern compiler, and the various stages of the compilation process from the language parsing to code generation and optimization. Prerequisite: CSC 306 or permission
CSC 507: Unix System Programming
3.00 Credits
Principles of object-oriented software development. Use of observer, strategy, composite, factory, and state patterns to build a framework for network protocol software. Discussion and implementation of several Client/Server communications methods: TCP sockets, Messages, and shared memory. Other topics include remote procedure calls (RPC) and multithreaded programming. Prerequisite: CSC 306
CSC 508: X Window Programming
3.00 Credits
An overview of the X Window System, explaining the network-transparent aspect of this windowing system, followed by the very basics needed to create an X Window Application: establishing a connection to the X server, creating windows, drawing, color, selecting fonts, and manipulating events. Explores the C language xlib interface to graphics, window manager, and events through several programming assignments. The advantage of using a toolkit, using the C language interface to several public domain toolkits with emphasis on Tcl/Tk or the Hush C++ API to Tcl/Tk, and v a C++ GUI framework.
CSC 509: Web Design &Programming
3.00 Credits
This course provides the conceptual foundation for the logical structures necessary to develop web pages and websites. Topics include logic structures, control structures, variables, design contemplations, I/O operations, and other web programming considerations. Student will learn the basics of creating web pages and combining these into a functional website as a group assignment. A brief introduction to several web-based programming languages and tools, such as XHTML, CSS, JavaScript, Java Applets, XML, XSLT, DOM, Perl, CGI, Apache, Java Servlets, JSP, PHP, ASP.NET, MYSQL, JDBC, and HTTP is provided. Student will also learn the necessary skills to build, maintain, and host web pages and websites. Other topics include Web server platform and architecture, client-side and server-side programming concepts, static and dynamic web pages, database and data warehousing, data access techniques, and security issues in web design. This course does not require any prior web design or programming knowledge.
CSC 511: Computational Complexity
3.00 Credits
Examination of computer algorithms from the point of view of computational complexity. Topics include polynomial algorithms, FFT and GCD; algorithms for vector and parallel machines, pipelines, and systolic arrays; NP completeness. Prerequisite: CSC 210.
CSC 513: Fundamentals of Computer Graphics
3.00 Credits
This is a web-based introductory course in Computer Graphics that uses a practical approach to explain the subject material. The computer graphics is spreading beyond the computer science discipline and graphics experts. A descriptive and process oriented treatment makes the subject more approachable for students from other disciplines. Students will learn and apply basic computer graphic skills with the help of latest tools. With the use of an excellent graphics API such as OpenGL, students can bypass many of the details of the algorithms and create effective images early in the course. Topics include viewing, OpenGL, color and blending, lighting and shading, event handling, texture mapping, rendering, animation, interpolation and spline modeling, etc. Pre-requisite: Basic computer skills
CSC 514: Introduction to Hardware Accelerated Computing
3.00 Credits
The past few years the High Performance Computing (HPC) community has witnessed a surge in the use of hardware acceleration, such as graphics processor units (GPU), field programmable gate arrays (FPGA), digital signal processors (DSP), cell processors, etc. This coincides at a time when conventional microprocessors are unable to keep up with Moore's Law, and become costly due to their increasing power requirements. This course is an introduction to hardware accelerated computational techniques and provides an introduction to FPGA and GPU-programming. Students are expected to have a strong understanding of programming in C, C++ or equivalent programming language. This course will enable students develop a solid understanding of the interaction between software and hardware, and gain hand-on experience in high performance computing. Prerequisite: CSC 113, EE326
CSC 515: Mobile Programming
3.00 Credits
Description: This course will teach fundamental programming principles with a focus on the mobile environment such as iOS and Android. The course will emphasize practical application of numerous academic concepts. Students should already have a familiarity with C and Java, an understanding of basic object-oriented programming, studied basic algorithms and data structures. Hands-on programming will be a big part of this course. Prerequisite: "Permission of Instructor"
CSC 519: Digital System Design
3.00 Credits
Comprises both lectures and labs, introduces the most important aspects of real-world digital design. Emphasis on practical, hands-on experience in building a system of medium complexity. Design synthesis highlights modern ASIC devices. Staff.
CSC 520: Topics in Computer Science
3.00 Credits
An individual topic from the area of computer science, investigated in detail with students examining accepted and proposed ideas relative to the topic. Sample topics include, but are not limited to, software testing, issues in large-scale software development, current issues in artificial intelligence, issues in safety-critical software, issues in business-oriented software, database design and advanced analysis of algorithms. May be repeated for credit with different topics. Prerequisite: Permission of instructor.
CSC 521: Programmable Logic Devices and HDL Design
3.00 Credits
This course covers the concepts, structure and programming characteristics of programmable logic devices (PLDs) such as Field-Programmable Gate Arrays (FPGAs). Hardware Description Languages (HDLs) are used to create designs that are tested on FPGA devices. In this course, students will learn how to design and implement general-purpose hardware components, such as computer arithmetic units and microprocessor data/control paths. Students will also learn how to design specialized hardware from different fields such as digital signal and image processing using techniques that are based on high-level environments, such as Matlab and Simulink, targeting FPGA devices. Pre-requisites EE / CSC 326 or instructor's permission.
CSC 522: Operating Systems
3.00 Credits
A study of the major concept areas of operating systems. Topics include operating systems structure, process and thread scheduling, process synchronization, deadlock management, memory management, file-systems, protection, I/O traffic controls and evaluation models. Prerequisite: 306 or Permission of Instructor.
CSC 524: Secure Programming
3.00 Credits
Introduction to Software Security, risk assessment, buffer overflows, design for security, security testing and auditing, security issues of open source and closed source software, guiding principles of software security, selection of appropriate technologies, access control, race conditions, trust management, input validation, and database security. Pre-req: CSC123
CSC 525: Embedded Systems Programming
3.00 Credits
CSC 525 Embedded Systems Programming gives an overview of embedded systems, including the concepts, design considerations and software development for an embedded computer system. The course will strive to cover embedded system design/development concepts, real world considerations in embedded system design and use, and platform-based Embedded System Design. At the end of this course, students will be able to develop the hardware and software required for designing an embedded system SoC on Xilinx FPGAs. Many of the concepts learnt during the lectures will be demonstrated in the lab exercises and final project. Use of platform based design for embedded systems is the current trend in embedded systems design, which will be helpful in industry as well as academic research. Prerequisites: CSC390 or CSC391 or permission
CSC 526: Computer and Network Security
3.00 Credits
This course will introduce the application of cryptographic concepts in the practical implementation of network security practices and techniques. The issues here are: What are the risks and vulnerabilities of computer, Internet, and multimedia data? What are the countermeasures to fight these back? How does cryptographic technique enforce protection? What is digital signature? What is steganography and how is it used for authentication and counterfeit detection? What the different network security technologies are as applied to electronic mail, e-commerce, web transaction, and IP networks? Prerequisite: CSC 323
CSC 531: Data Communications Networks
3.00 Credits
This course deals with basic principles of networking. More specifically it covers the following topics: Network Architectures and Protocols. OSI model and TCP/IP protocol suite. Transmission media. Protocols at the physical, data link, network and transport layers. Multiplexing, error and congestion control. Circuit and packet switching. Local and metropolitan area networks. ATM and frame relay. Network security and distributed applications. Prerequisite: EE 413 or equivalent.
CSC 532: System Simulation
3.00 Credits
Modeling and simulation of continuous and discrete systems, simulation languages, digital simulation techniques, Monte Carlo method, queuing models, design of simulation experiments and analysis of results, applications. Prerequisite: Permission of instructor.
CSC 533: Optimization
3.00 Credits
A survey of mathematical programming, combinatorial optimization, and weak optimization. Studies practicalities, convergence and efficiency of different optimization methods. Introduces contemporary methods such as Simulated Annealing and Genetic Algorithms. Considers applications in computer science, engineering, and business. Suitable for computer science, mathematics, engineering, and business majors. Prerequisites: CSC 124, MATH 122.
CSC 534: Communication and Computer Network Simulation
3.00 Credits
This course deals with simulation modeling, design and performance evaluation of communication and computer networks. It includes simulation of network elements and overall networks. Simulated network elements include point-to-point, multicast and broadcast links, wireless, satellite and radio links, queuing systems, circuit and packet switches and routers. Simulated overall networks include Local Area Networks (LAN), Internet, packet switched networks, Asynchronous Transfer Mode (ATM) and wireless networks. Development of simulation models for audio and video traffic sources and flow and congestion control algorithms are presented. Methods of presentation, analysis, interpretation and use of simulation results for design purposes are discussed. The course uses OPNET simulation software packages to provide hands-on experience in simulation. Prerequisite: CSC 531 or permission of instructor.
CSC 541: Database Systems
3.00 Credits
Principles of database system including database design, implementation, and management. Topics may include review of database language, data modeling, database security, advanced database concept, database connectivity with the internet and modern database management. Prerequisite: Permission of instructor.
CSC 542: Artificial Intelligence
3.00 Credits
Topics may include state space search, heuristic search, knowledge representation techniques, expert systems, automated reasoning, definitions of intelligence, computer problem solving, game playing, pattern recognition, theorem proving, semantic information, processing, evolutionary systems, and heuristic programming. Prerequisite: Instructor's permission.
CSC 551: Pattern Recognition
3.00 Credits
This course provides a broad introduction to pattern recognition. Topics include: Bayesian decision theory, density estimation, linear classifiers, nearest neighbor rules, decision trees, artificial neural networks, dimensionality reduction, feature extraction and feature selection, clustering. The course is directed towards advanced undergraduate and beginning graduate students. Prerequisite: background in probability, statistics, and linear algebra or permission of instructor.
CSC 564: Advanced Software Engineering
3.00 Credits
Examines the software development cycle with respect to the system life cycle. Topics include software size and cost estimation, relative effort and time distribution across software development phases, products of the major activities of the software development process, the various management techniques currently in use, and process models of software development. Review of the desired attributes of the software product (portability, reusability, maintainability, etc.) from the perspectives of benefits of the attribute and techniques for achieving the attribute. Prerequisites: CSC 370, CSC 280.
CSC 565: Information Security
3.00 Credits
Principles of Infosec, security planning, risk management, security technology, physical security, implementing information security, legal, ethical, and professional issues in infosec, securtity and personnel, information security maintenance etc. Prerequisite: Senior standing
CSC 569: Computer Security and Privacy
3.00 Credits
Importance of computer security and its effect on individual privacy. Topics include computers and their impact on privacy, data banks, physical security, administrative security, and computer systems and network security. Not open to students who completed this course under earlier numbering (597). Prerequisite: Junior standing.
CSC 575: Human-Computer Interface
3.00 Credits
no description available
CSC 576: Introduction to Robotics
3.00 Credits
Covers basic concepts in robotics such as robot arm kinematics, robot arm dynamics, trajectory planning, and control. Transformation between joint space and Cartesian space. Coordinate frames and homogeneous coordinate transformation. Solution of inverse kinematic problem and robot workspace. Differential motion and manipulator Jacobian matrix. Introduction to the control problem of robot manipulators. Prerequisite: Senior Engineering or Graduate Students
CSC 581: Cryptography and Steganography
3.00 Credits
Introductory concepts of cryptography and steganography; Classical and modern cryptographic algorithms - the underlying mathematics and analysis; Number theory; Cryptographic protocals in computer and data security applications; Fundamentals of information hiding - Techniques and applications. Prerequisite: CSC565
CSC 582: Computer Graphics and Game Programming
3.00 Credits
This is a 3-credit course, with the objective to initiate students to the fundamentals of the game programming using Microsoft XNA library, which you can deploy your game to Microsoft XBOX 360, Zune, or any personal computer. This course will particularly focus on the computer graphics aspect of computer games. Prerequisites: programming ability in C++ or C#, and understanding of basic linear algebra concepts such as vector and matrix.
CSC 611: Logic for Computing Scientists
3.00 Credits
Topics may include propositional logic, syntax and semantics, proof theory vs. model theory, soundness, consistency and completeness, first order logic, logical theories, automated theorem proving, ground resolution, pattern matching unification and resolution, Dijkstras logic, proof obligation, and program proving. Prerequisite: CSC 312
CSC 612: Analysis of Algorithms
3.00 Credits
An advanced study in computer algorithms that delves deeply into a selected problem: linear programming (simplex, revised simplex, complementary slackness, Khachian's ellipsoid, etc) and duality; in addition, the course also covers suffix trees, minimum spanning trees, Bellman-Ford and Djikstra's shortest paths algorithms, and computational geometry. Prerequisites: CSC 311 or Permission of Instructor.
CSC 613: Combinatorial Algorithms and Intractability
3.00 Credits
Topics may include combinatorial algorithms, nondeterministic algorithms, classes P and NP, NP-hard and NP-complete problems, and intractability, and design techniques for fast combinatorial algorithms. Prerequisite:CSC 311
CSC 620: Digital Forensics Technology
3.00 Credits
The primary objective of this course is to provide a broad understanding of the technologies and tools used to perform digital forensics for the detection and prevention of computer crimes. Various techniques of forensic evidence acquisition, detection, and classification will be introduced. Core principles of a few forensically-oriented data processing technologies such as compression, watermarking, steganography, steganalysis, cryptanalysis, and multiresolutional analysis will be studied. The course will also include different modalities of data such as binary, text, audio, image, and video, as applicable to different modalities of forensics such as hardware, software, computer, network, and memory.
CSC 621: Computer Networks
3.00 Credits
Topics may include physical layer basics; network protocol algorithms; error handling; flow control; multihop routing; network reliability, timing, and security; data compression; cryptography fundamentals; advanced network protocols and infrastructure; applications of high-performance networks to distributed systems; and high-performance computing and multimedia domains. Prerequisite: CSC 323 or instructor's permission.
CSC 623: Real-Time Systems
3.00 Credits
This course provides a theoretical and practical study of real-time systems, applications, and operating systems. It studies real-time applications, real-time systems, uni-processor scheduling, resource access control, multi-processor and distributed scheduling, and specific attributes of real-time network protocols and operating systems. Prerequisites: CSC 306 or permission of instructor.
CSC 633: Software Requirements & Specifications
3.00 Credits
Topics may include an examination of the definitional phase of software development; a survey of requirements and specification issues and techniques; and an analysis of specification representations and techniques emphasizing important application issues. Prerequisite:CSC 124 or equivalent
CSC 635: Software Verification, Validation, and Testing
3.00 Credits
Topics may include an examination of the test phase of software development; test planning; requirements-based and code-based testing techniques; tools; reliability models; and statistical testing.
CSC 636: Distributed Computing
3.00 Credits
Topics may include the principles underlying the design and implementation of distributed client-server software components; technologies for developing distributed software components, such as sockets, database connections, dynamic type inspection, security, events, and dynamically building function calls; and an introduction to middleware for programming distributed asynchronous systems, including an introduction to events, call-backs, and connections. Prerequisite: CSC 306 or equivalent.
CSC 641: Data Mining
3.00 Credits
Introduction to data mining techniques, including data preprocessing, data mining primitives, association rules, decision trees, cluster analysis, classification and machine learning, data visualization, and data warehousing. Applications from a wide variety of domains will be studied. Prerequisite: CSC 541 or Permission of instructor.
CSC 650: Intelligent Multimedia
3.00 Credits
Lecture Digital watermarking in multimedia applications, copyright protection, authentication, tracking, digital asset management, access control, information hiding in multimedia. Prerequisite: EE 634 or Instructor's permission.
CSC 651: Multimedia Processing and Information Retrieval
3.00 Credits
This course covers topics including multimedia systems, multimedia applications, image compression and processing, video compression and processing, content-based image retrieval, and content-based video indexing and retrieval. Prerequisite: EE 634 or Permission of instructor.
CSC 671: Cyber-Security Laws, Ethics and Policies
3.00 Credits
Enforcement, review, and analysis of computer and network crimes, Electronics Communications Privacy Act, HIPPA, SOX, critical infrastructure protection, computer espionage and foreign intelligence collection, direct and covet action in peace time, military action in time of war, and international responses to Cyber threats. Prerequisite: Permission of instructor.
CSC 675: Visual Intelligence and Computer Vision
3.00 Credits
An Introduction to Computer Vision. Image Functions and geometry. Imaging devices for computer vision. Generalized and Segmented images. Texture and motion. Representation of two dimensional and three dimensional Structures. Knowledge representation and use. Matching and inference. Prerequisite: Instructor's permission.
CSC 681: Security Architecture and Analysis
3.00 Credits
This course focuses on the analytical approach to system security and survivability. Topics may include Security Architectures, analysis and tradeoffs of different architectures, survivable system analysis, intrusion detection, vulnerability assessment, computer forensics, security protocols, firewalls, and VPNs.
CSC 691: Advanced Computer Architecture
3.00 Credits
An overview of advanced processor architectures, I/O subsystems, multiprocessor architectures and high performance networking. Advanced Pipelining and instruction level parallelism, memory hierarchy design, storage subsystems, interconnection networks, Multiprocessors. Prerequisite: CSC 391.
CSC 728: Visualization
3.00 Credits
The course focuses on visualization of scientific data. Both visualization principles and practical design issues are addressed. The course introduces the visualization pipeline. It covers the visualization of scalar data, vector data, and tensor data. It also covers image visualization, volume visualization and finally information visualization. It discusses the effective use of visualization in various areas of the natural sciences, and examples of application will be drawn from these areas. It emphasizes the importance of visualization in understanding observations, examining theories, and fostering new scientific hypothesis. representation and presentation, document visualization, and dynamic exploration Permission of instructor.
CSC 775: Human-Computer Interface
3.00 Credits
The ways in which humans interact with computers will change dramatically in the coming years. This course cover advanced topics in human-computer interface (HCI): (1) models and frameworks, (2) usability engineering, (3) user interface software tools, (4) HCI for collaborative applications, (5) HCI for multimedia and hypermedia and (6) integrating real and virtual worlds. Prerequisites: CSC 675, CSC 642 or Permission of instructor.
CSC 991: Graduate Design
3.00 Credits
Allows a graduate student to individually propose, design, implement, and document a research project under the guidance of a faculty member. The research project should allow the student to study a topic to a greater extent than would be possible in a classroom setting.



