The Catholic University of America

Course Descriptions

Computer Science (CSC) Undergraduate Courses

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.