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 113: Introduction to Computer Programming with MATLAB [Course Coordinator: Dr. Plaku]

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 123: C/C++ Programming  [Course Coordinator: Dr. Choi]

3.00 Credits

Intended for computer science majors.  This is an introductory course in computer science.  Like most computer science classes, this is a class in problem solving. The C/C++ language is used as a problem solving tool. Students will learn techniques such as algorithm development, step-wise refinement, top-down design, object-oriented programming, and basic principles of software engineering. The course will cover the basics of C and C++ language: variables, types, expressions, control structures, method definition, parameters, arrays, strings, classes, and data abstraction.
Prerequisites: None.

CSC 210: Discrete Mathematics [Dr. Chang]

3.00 Credits

Review of set algebra, including mappings and relations; boolean algebra and propositional logic. Introduction to combinatorics, and basic algebraic structures, finite state systems, and Turing machines.

 

CSC 212: Theory of Computing [Course Coordinator: Dr. Plaku]

3.00 Credits

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

CSC 223: Object-Oriented Programming with Java [Course Coordinator: Dr. Choi]

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.

CSC 280: Data Structures [Course Coordinator: Dr. Choi]

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.

CSC 306: 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: Permission of instructor.

CSC 322: Introduction to Computer Graphics  [Course Coordinator: Dr. Choi]

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 albebra (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 123

CSC 323: Introduction to Computer Networks [Course Coordinator: Dr. Yang]

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 124.

CSC 363: Software Development  [Course Coordinator: Dr. Chang]

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. Prerequisites: CSC 124 or Permission of instructor.

CSC 370: Programming Languages  [Course Coordinator: Dr. Choi]

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.

CSC 390: Computer Organization [Course Coordinator: Dr. El-Araby]

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. 

 

CSC 411: Design & Analysis of Algorithms  [Course Coordinator: Dr. Chang]

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 or Permission of instructor.

 

CSC 412: 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: EE 326 Switching Circuits and Logic Design

CSC 442: Introduction to Database Management  [Course Coordinator: Dr. Chang]

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: Permission of instructor.

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. Prerequisite: Math 122; Recommended: Background in computer programming such as Visual Basic, C++ and/or MATLAB.

CSC 491: 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 492: 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 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 124 or equivalent.

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 513: Fundamentals of Computer Graphics [Course Coordinator: Dr. Choi]

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, Math 221

CSC 515: Mobile Programming  [Course Coordinator: Dr. Choi]

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 520: Topics in Computer Science  [Course Coordinator: Dr. Chang]

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 523: 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. Prerequisite: CSC 124 or equivalent.

CSC 524: Secure Programming [Course Coordinator: Dr. Yang]

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.

CSC 525: Embedded Systems Programming [Course Coordinator: Dr. El-Araby]

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.

CSC 526: Computer and Network Security [Course Coordinator: Dr. Yang]

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 or instructor's permission.

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 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 [Course Coordinator: Dr. Chang]

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 551: Pattern Recognition [Course Coordinator: Dr. Chang]

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: Software Engineering [Course Coordinator: Dr. Chang]

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: Permission of instructor.

CSC 569: Computer Security and Privacy [Course Coordinator: Dr. Yang]

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 576: Introduction to Robotics [Course Coordinator: Dr. Plaku]

3.00 Credits

This introductory course aims to make accessible to students fundamental principles in classical and modern approaches related to robot motion planning and the representation and use of geometric models acquired from sensor data. Two common themes will run throughout the course: (i)  How can the robot automatically plan and execute a sequence of motions that avoids collision with obstacles and accomplishes the assigned task? (ii) How can the robot use sensor-based information to determine its own state and model the world? These themes and the related algorithms will be presented in the context of practical applications arising in diverse areas such as mobile systems, navigation and exploration, robot manipulation, computer animation, video games, computational biology, and medicine.

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:Graduate or senior undergraduate standing.

CSC 582: Computer Graphics and Game Programming [Course Coordinator: Dr. Choi]

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 612: Analysis of Algorithms [Course Coordinator: Dr. Chang]

3.00 Credits

An advanced study in computer algorithms that encompasses several topics including dynamic programming, greedy algorithms, advanced data structures, graph algorithms, and approximation algorithms. The course also stresses the notion of algorithms complexity and NP-completeness. Prerequisites: CSC 311 or Permission of instructor.

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 641: Data Mining  [Course Coordinator: Dr. Chang]

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 642: Artificial Intelligence [Course Coordinator: Dr. Plaku]

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 696: Independent Study

3.00 Credits

Student may seek approval to undertake a research or performance project for academic credit on an "independent study" basis. All such projects are similar in that they cannot be completed by the student as part of an existing class but can be completed by the student working on an independent basis with guidance from a faculty advisor.

CSC 728: Visualization [Course Coordinator: Dr. Choi]

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 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.

CSC 997: Doctoral Dissertation

0.00 Credits

Dissertation Guidance