The Catholic University of America
 

Course Descriptions

Computer Science (CSC)

To view the complete schedule of courses for
each semester, go to Cardinal Station.

CSC 104: Introduction to Computers I

3.00 Credits

Intended for liberal arts majors who want an introduction to computing history, computer concepts, hardware, software, and application software such as operating systems, graphics, word processing, databases and spreadsheets. Introduces general problem-solving techniques including the concepts of step-wise refinement applied to the development of algorithms. Elementary programming in a high-level language. Not open to students who have completed MIS 104. Faculty.

CSC 105: Introduction to Computers II

3.00 Credits

This course is intended as an introduction to computer programming using Visual Basic.NET. Powerful and easy to use, Visual Basic has become the tool of choice for developing user-friendly applications in today's business world. The student will learn the fundamentals of accurate, modern programming methodology, and how to use Visual Basic as a front end to major applications. The course also includes a module on data controls, database programming and introduction to SQL. A wealth of learning aids, including exercises and programming projects, and case studies are provided for students to enhance their learning and programming skills. The course is comprised of the following modules: An Introduction to Computers with Visual Basic, Problem Solving with Programming Tools, Fundamentals of Programming, Modular Design, Decisions and Logical Operators, Repetition, Arrays & Controls, Files and access, Object-Oriented Programming, Relational databases and SQL. Prerequisite CSC 104

CSC 106: Introduction to Computer Programming for Non-Engineers

3.00 Credits

Students will be provided with the basic knowledge and practical experience to understand computer programming. This will be accomplished by having the students learn the Python programming language. The course is intended to be beneficial to non-technical majors with little to no knowledge of computer programming but may also be useful to students with some programming experience that would simply like to learn Python. The course will help form a mental framework for students so they can not only understand some of the basic tools used by computer scientists but also how to use those tools themselves. By taking the course, students will understand basic computer science concepts such as variables, expressions, statements, functions, conditionals, recursion, strings and more. These concepts will be developed in a deep and significant way as students create their own programs using the popular and freely available Python programming language.

CSC 107: Introduction to Computer Security

3.00 Credits

CS 107 is an introduction to computer security, one of the "hottest" and most relevant areas of computing today. This is a course in the foundational aspects of security; not a course giving you practice in hacking. The student will develop an intuition about what computer security means, both in the abstract and in the context of real systems; be able to recognize potential threats to confidentiality, integrity and availability; be aware of some of the underlying formalisms and technologies that attempt to address these challenges; and be conversant with current security-related issues in the field.

CSC 108: Security and Privacy Cyber Concepts

3.00 Credits

no description available

CSC 113: Introduction to Computer Programming with MATLAB

3.00 Credits

Intended for engineering students and others who want a comprehensive introduction to fundamental programming concepts using a block-structured language. General problem-solving techniques, including the concept of step-wise refinement applied to the development of algorithms. Programming style, structure, documentation, and testing. Prerequisites: None.

CSC 113H: Introduction to Computer Programming with MATLAB (Honors)

3.00 Credits

Honors section. Intended for engineering students and others who want a comprehensive introduction to fundamental programming concepts using a block-structured language. General problem-solving techniques, including the concept of step-wise refinement applied to the development of algorithms. Programming style, structure, documentation, and testing.

CSC 120: Introduction to Computational Thinking

3.00 Credits

The course introduces students to the principles of computational thinking. The first half of the course is all about big ideas in Computational Thinking: how can we describe a complex problem, understand what the problem is, and develop possible solutions using a computer. The second half of the course will cover a range of applications of computational thinking in different disciplines. Major areas in Computer Science and major problems in each area will be introduced and discussed.

CSC 123: Introduction to Computer Programming

3.00 Credits

Intended for computer science majors, this is an introductory course in computer programming. The course will cover the fundamentals of structured programming, including variables, types, expressions, and control structures. In addition, the course will cover language mechanisms for control and type abstraction, including function definition, parameters, arrays, structures, type declarations, and their use in modeling abstract data types. Students will learn techniques in algorithm development and basic principles in software engineering, such as top-down design, step-wise refinement, and data encapsulation. The language of choice will be C++.

CSC 203: Assembly Language Programming

3.00 Credits

An introduction to assembly language programming. Creation, editing, loading, execution, and on-line debugging of assembly language programs. Topics include addressing schemes, assembler directives and macros, subroutine linkages, and assembler processing. . Prerequisite: A grade of C or better in CSC 124.

CSC 210: Discrete Mathematics

3.00 Credits

This course studies the mathematical elements of computer science including propositional logic, sets, functions and relations, probability and combinatorics, mathematical induction, algorithms, matrices, graphs, trees, and Boolean logic. During the semester students will learn to recognize and express the mathematical ideas graphically, numerically, symbolically, and in writing. They will become self-regulated learners and help other students become cooperative learners. Prerequisites: None

CSC 212: Theory of Computing

3.00 Credits

A systematic study of theory of computing. Topics include Finite Automata, Fundamentals of computer programming languages grammars, Regular Languages, Context-Free and Context-Sensitive Languages, Turing machines, and Computability Theory. The class introduces the concepts of Computer Problems, Decidability, Reducibility, Intractability, and Computational Complexity.

CSC 223: Object-Oriented Programming with Java

3.00 Credits

Intended for computer science majors. This course is a continuation of CSC 123, focusing on a disciplined approach to designing, coding and testing programs; implementation of data abstractions; and an introduction and analysis of search and sort algorithms. Prerequisite: none

CSC 280: Data Structures

3.00 Credits

Systematic study of data structures encountered in computing problems; methods of representing structured data and techniques for operating on them. Typical topics include arrays, lists, stacks, tree structures, files, string, and linked structures. Sorting and searching algorithms; set representations and hash tables. Prerequisites: CSC 123 or CSC 223

CSC 306: Introduction to Operating Systems

3.00 Credits

Major concept areas of operating system principles. Topics include job scheduling, concurrent processes, memory management, dynamic allocation, protection, I/O traffic controls and evaluation models. Prerequisite: CSC390 or CSC391

CSC 311: Design & Analysis of Algorithms

3.00 Credits

This course presents the fundamental techniques for designing efficient computer algorithm, providing their correctness, and analyzing their complexity. General topics include sorting, selection, graph algorithms, and basic algorithm design paradigms (such as divide-and-conquer, dynamic programming and greedy algorithms), lower bounds and NP-completeness. Prerequisite: CSC 280

CSC 312: Microprocessor Programming

3.00 Credits

This course presents the fundamentals of microprocessor architecture and interfacing. Topics include instruction set architecture, assembly language, debugging and IO device interfacing techniques. The PIC processor architecture will be studied, utilizing windows based integrated development environment and tools suite. A PIC hardware evaluation board is used as the basis for interfacing experiments. Software will be written in assembly language. The Pentium processor architecture and the PCI bus will be studied. A hardware/software project will be assigned toward the end of the course. The course is 50% lab and 50% lecture. Prerequisites: CSC326

CSC 322: Introduction to Computer Graphics

3.00 Credits

Description: This course teaches the fundamentals of 2D and 3D computer graphics. Students will learn OpenGL and standard graphics algorithms. This introductory course will not only cover fundamental computer graphics concepts including transformation, viewing, modeling, rendering, illumination, and textures, but also cover the basic linear algebra (vector and matrix arithmetic). The completion of this course will prepare students ready for any advanced computer graphics course. Students are expected to be familiar with C/C++ programming. Prerequisite: CSC 280

CSC 323: Introduction to Computer Networks

3.00 Credits

Introductory concepts of modern computer networks and its association with the Internet. Different protocol layers and architectures of a computer network. Particular emphasis will be given on application layer, transport layer, and network layer. Applications in multimedia networking and network management. Prerequisites: CSC 113 and CSC 123

CSC 326: Switching Circuits and Logic Design

3.00 Credits

Analysis and design of digital circuits, number systems, combinational and sequential circuits. Basic computer arithmetic, applications and implementation of logic design. Prerequisite: CSC327 (Co-req)

CSC 327: Switching Circuits and Logic Design Laboratory

1.00 Credits

This laboratory course is meant for students in an introductory digital electronics course that emphasizes logic circuit analysis, applications, and design. The lab work consists of circuit projects that range from investigating basic logic concepts to synthesizing circuits for new applications. Most digital design projects will be implemented using complex programmable logic devices (CPLDs) and/or field programmable gate arrays (FPGAs). The projects are intended to challenge students and to provide them with directed laboratory experience that develops insight into digital principles, applications, and techniques of logic circuit analysis and design. Prerequisites: CSC 326 (co-req)

CSC 363: Software Engineering

3.00 Credits

The course will offer a wide perspective on software development, including: requirements analysis, technical design, estimating, modeling using UML, programming style, testing, and management issues. Hands-on practice through a team programming project using object-oriented programming language such as Java will be employed to promote learning and to produce high-quality software in an efficient and predictable manner.

CSC 370: Concepts of Programming Languages

3.00 Credits

This course is an introduction to concepts of programming languages, design and implementation of programming languages. This class will also cover C++ programming as it is one of the most efficient languages and broadly used in many areas. Prerequisites: CSC280

CSC 390: Computer Organization and Architecture

3.00 Credits

An introduction to digital logic design including combinational And sequential circuits; synthesis of memory and computation Operations; illustrations of the organization of major hardware Components of a digital computer. Prerequisite: CSC326

CSC 391: Computer Systems Architecture

3.00 Credits

An overview of advanced architectures, microprocessor structure, I/O subsystems, multiprocessor architecture, intra-system communication, buses, caches, memory hierarchies, addressing modes, microprogramming, parallelism, and pipelining. Prerequisites: CSC113 or CSC123

CSC 407: Unix Systems Programming

3.00 Credits

no description available

CSC 411: Analysis of Algorithms

3.00 Credits

This course presents the fundamental techniques for designing and analyzing computer algorithms, providing their correctness, and analyzing their time complexity. Topics include sorting and selection algorithms, and basic algorithm design paradigms including brute force, ivide-and-conquer, greedy technique, dynamic programming, and basic graph algorithms. Prerequisite: CSC 280

CSC 426: 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 427: 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 431: Data Communication Networks

3.00 Credits

no description available

CSC 434: 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 436: Distributed Computing and Networking

3.00 Credits

no description available

CSC 442: Introduction to Database Management

3.00 Credits

The course covers the fundamentals of database systems. The course will provide the student with the foundation of knowledge necessary to design, implementation, and management of database systems. Topics to be covered include file systems and database concepts, database models, relational database model, introduction to SQL, database design and implementation, database integrity, and normalization of database tables. Implementation techniques using commercial DBMS will be considered. The course includes individual database application programming projects. Prerequisite: CSC363

CSC 447: 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 450: Fundamentals of Multimedia

3.00 Credits

Introduction to Multimedia; multimedia authoring and tools; Basics of digital audio, image, video, and graphics - their representation, design, and simple processing; Multimedia Data compression - algorithms, standards, and techniques; Issues in multimedia communication and networking. Prerequisite: Senior Standing

CSC 471: JAVA, OOP, Network Programming

3.00 Credits

Principles and techniques of OOP and network programming presented in the Java programming environment. Explores advanced features of Java through programming projects. Topics include Objects and Classes, graphics programming with AWT, designing user interfaces with AWT, Applets, data structures, exceptions and debugging, input and output, multithreading, and networking. Prerequisite: 113 or 124 or permission of instructor.

CSC 475: Quantum Computing

3.00 Credits

The course deals with a new field of computer computation called: quantum computation. This computation is based on quantum mechanical principles. In the 1980's the physicist Richard Feynman noticed that quantum physics cannot be efficiently simulated on classical computers. This was taken as an indication that computers which exploit quantum physics could be substantially more powerful than computers build on the basis of classical physics. The essential reason for this potential efficiency is the fact that quantum systems can use superposition, entanglement, and nonlocality as a way to compute quasi in parallel. Since the development of real-world quantum computers requires enormous resources, theoretical computer science finds itself in the responsible situation to explore the possible benefits and limitations of such systems beforehand. Upon successful completion of the course, students ' will be able to understand what Quantum computing and quantum circuits are about, why they matter, and what the scientific prospects concerning are. ' will be familiar with the structural understanding of some basic computer science complexities and why quantum algorithms and Quantum protocol concepts, such as Deutsch oracle, Shore, Grover algorithms, Quantum Fourier transform, and some important protocols such as quantum teleportation can deal with complexities ' and also become familiar with such important nano devices like QCA (Quantum Cellular Automata, so called: Transistor without current).

CSC 476: Introduction to Robotics

3.00 Credits

no description available

CSC 480: Numerical Analysis and Optimization

3.00 Credits

Numerical Analysis and Optimization methods to solve practical problems in computer science, business, engineering and science. Practical problem solving based on analyzing empirical, experimental or measured data where the precise mathematical model is approximated or not necessarily known. Limitations, trade-offs and margins of error are evaluated for various practical examples such as network traffic, engineering, science and business applications. MATLAB and/or C++ are used for computational problem solving. Suitable for computer science, mathematics, engineering, and business majors. Pre-requisites:ENGR222&CSC280

CSC 484: Introduction to Machine Learning

3.00 Credits

no description available

CSC 491A: Senior Design I

2.00 Credits

Systematic steps towards writing a research/development project proposal including background research, problem identification, requirement analysis, specifications, and design for developing a significant software system. The course will also introduce principles and case studies of computing ethics and professional practices.

CSC 491B: Senior Design II

3.00 Credits

Continuation of CSC 491. Implementation, testing, and presentation of the design done in CSC 491. The course wraps up with a final demonstration of the project.

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

The course deals with a new field of computer computation called: quantum computation. This computation is based on quantum mechanical principles. In the 1980's the physicist Richard Feynman noticed that quantum physics cannot be efficiently simulated on classical computers. This was taken as an indication that computers which exploit quantum physics could be substantially more powerful than computers build on the basis of classical physics. The essential reason for this potential efficiency is the fact that quantum systems can use superposition, entanglement, and nonlocality as a way to compute quasi in parallel. Since the development of real-world quantum computers requires enormous resources, theoretical computer science finds itself in the responsible situation to explore the possible benefits and limitations of such systems beforehand. Upon successful completion of the course, students ' will be able to understand what Quantum computing and quantum circuits are about, why they matter, and what the scientific prospects concerning are. ' will be familiar with the structural understanding of some basic computer science complexities and why quantum algorithms and Quantum protocol concepts, such as Deutsch oracle, Shore, Grover algorithms, Quantum Fourier transform, and some important protocols such as quantum teleportation can deal with complexities ' and also become familiar with such important nano devices like QCA (Quantum Cellular Automata, so called: Transistor without current).

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.