The Catholic University of America

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 course covers the fundamental concepts and algorithms for computer graphics, including representations for images, curves, surfaces, transformations, and projections, interpolation, clipping, visibility, ray tracing, shading, photon mapping, texture mapping, animation, and special effects. Students should have background in linear algebra and strong programming 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 527: Fundamentals of Neural Networks

3.00 Credits

Introduces basic concepts of neural networks using the general framework of parallel distributed processing. Deals with architecture, principles of operation, training algorithms and applications of a number of neural networks. Each part of the course includes computer exercises using MATLAB performed by the student to demonstrate and reinforce the concepts learned in the class.

CSC 530: Introduction to Data Analysis

3.00 Credits

This course introduces the computational methods for data analysis. Topics include signal processing, frequency filtering, feature extraction, principal component analysis, linear discriminant analysis, statistical tests, and current big data analysis approaches. Students will learn how to apply the data analysis techniques to data scientific research, starting from raw data filtering, going through feature selection and extraction, and finally concluding with data model construction and statistical inference. This course requires the background in probability, statistics, and linear algebra.

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 536: Distributed Computing and Networking

3.00 Credits

no description available

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 547: Artificial Intelligence

3.00 Credits

(Formerly 542) 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, security 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: Quantum Computing

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 protocols in computer and data security applications; Fundamentals of information hiding - Techniques and applications.

CSC 582: Computer Graphics and Game Programming

3.00 Credits

The course will study the makeup of a 3D game engine, surveying the computational aspects required in the production of its individual components. The engine of choice will be the jMonkeyEngine 3D game engine, an open-source, cross-platform, Java-based engine. The students will program a novel game of their own design using the engine while learning about the computational techniques involved in the programming of game engine components in general. Prerequisites: programming ability in C++ or C#, and understanding of basic linear algebra concepts such as vector and matrix.

CSC 583: Geometry Processing in Computer Graphics and Vision

3.00 Credits

no description available

CSC 584: Introduction to Machine Learning

3.00 Credits

no description available

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 Dijkstra'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. Topics include 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, and 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 693: Advanced Topics in Cyber Security

3.00 Credits

An overview of advanced and emerging cyber security topics relevant to the current cyber security environment. Cyber security topics, for the current security environment in government and industry on a global basis, will be the focus of this class. Topics include, but not limited to, cloud computing, Homeland Security, big data, and more. This class does not guarantee to repeat the same topics as class topics are based on the current cyber security environment. Prerequisites: CSC 565, Information Security.

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.