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
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
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
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
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 203: Assembly Language Programming
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
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: None
CSC 212: Theory of Computing
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.
CSC 223: Object-Oriented Programming with Java
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
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
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
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
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
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 280
CSC 323: Introduction to Computer Networks
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
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
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
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
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
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
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 442: Introduction to Database Management
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 450: Fundamentals of Multimedia
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
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
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 480: Numerical Analysis and Optimization
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 491A: Senior Design I
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
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.