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 108: Computer Science

3.00 Credits

no description available

CSC 113: Computer Programming

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: Computer Science I

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 Java 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 Java language: variables, types, expressions, control structures, method definition, parameters, arrays, strings, classes, and data abstraction. Prerequisites: None.

CSC 124: Computer Science II

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: CSC 123.

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 Structures

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. Prerequisites: A grade of C or better in CSC 124.

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

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

CSC 312: 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, 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 113, CSC 210.

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

CSC 363: Software Development

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

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 380: 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 390: Computer Organization

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: A grade of C or better in CSC 203.

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.

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

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 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 456: 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 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: Introduction to Computer Vision

3.00 Credits

This course covers basic principle of computer vision and various techniques in computer vision. Topics include (1) low-level computer vision: image formation, image sampling and quantization, image enhancement, filtering, and edge detection; (2) intermediate level computer vision: an introduction to 3-D cues like stereo, texture, shading and motion; and (3) high level computer vision: object recognition. Prerequisites: CSC 280 & CSC 311 or permission of instructor.

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 495: Computers in Society

3.00 Credits

Discussion of social, economic, and philosophical implications of computers in our society. The history of computer technology from early development to the present high-speed machines. Present and future applications of computers surveyed, including data communication, retrieval, mass storage, and artificial intelligence. Not open to students who completed this course under earlier numbering (595). Prerequisite: Junior standing.

CSC 497: 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.